nextcloud / calendar

📆 Calendar app for Nextcloud
https://apps.nextcloud.com/apps/calendar
GNU Affero General Public License v3.0
976 stars 239 forks source link

multiMonthYear view unusable with even a *moderate* amount of entries #5717

Closed netzpolitikorg closed 6 months ago

netzpolitikorg commented 8 months ago

Steps to reproduce

  1. Create a group with 5–10 users
  2. Share a few calendars with each other
  3. Create around 5 recurring weekly events plus a dozen singular events throughout the year
  4. Click on Year in the "range selector" (/apps/calendar/multiMonthYear/now)
  5. See Firefox asking if you want to Stop the website

Expected behavior

An overview of all the months, and all the days in the year.

Actual behaviour

An unresponsive website.

Bonus behaviour: When loading long enough, Nextcloud saves multiMonthYear as currentView in the user's oc_preferences: select * from oc_preferences where configkey='currentView' and appid='calendar' and configvalue='multiMonthYear';

So closing the tab, and opening the calendar in a new tab may lead to an unresponsive browser again.

Calendar app version

4.6.4

CalDAV-clients used

none

Browser

Firefox 122, Chromium 121, various others

Client operating system

Ubuntu 22.04

Server operating system

Ubuntu 22.04

Web server

Nginx

Database engine version

PostgreSQL

PHP engine version

PHP 8.2

Nextcloud version

28.0.1

Updated from an older installed version or fresh install

Updated from an older version

List of activated apps

default apps + `user_oidc`

Nextcloud configuration

default config

Web server error log

no errors in web server log (it's a javascript performance issue, isn't it?)

Log file

no related nextcloud.log entries

Browser log

JQMIGRATE: Migrate is installed, version 3.4.1 jquery-migrate.min.js:2:980
Global search initialized! GlobalSearch.vue:51
You need to fill either the text or the ariaLabel props in the button component. 
Object { text: undefined, ariaLabel: null }

Object { _uid: 24, _isVue: true, __v_skip: true, _scope: {…}, "$options": {…}, _renderProxy: {…}, _self: {…}, "$parent": {…}, "$root": {…}, "$children": [], … }
index.module.js:2:811376
You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation. NcInputField.js:2:29731
@nextcloud/calendar-js app is using version 2.2023c of the timezone database index.es.mjs:13553:12
Fallback to locale en moment.js:93:11
session heartbeat polling started session-heartbeat.js:103:9
You need to fill either the text or the ariaLabel props in the button component. 
Object { text: undefined, ariaLabel: null }

Object { _uid: 24, _isVue: true, __v_skip: true, _scope: {…}, "$options": {…}, _renderProxy: {…}, _self: {…}, "$parent": {…}, "$root": {…}, "$children": (1) […], … }
index.module.js:2:811376
Proxying an event bus of version 3.1.0 with 1.3.0 index.es.js:2337:14
Registering notifications container as a menu NotificationsApp.vue:219
Notifications permissions granted NotificationsApp.vue:453
Polling interval updated to 30000 NotificationsApp.vue:416
Started background fetcher as session_keepalive is enabled NotificationsApp.vue:275
Search providers 
Array(15) [ {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, … ]
GlobalSearchModal.vue:243
Contacts 
Array(19) [ {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, … ]
GlobalSearchModal.vue:247
Got notification data, restoring default polling interval. NotificationsApp.vue:376
calendar home scanned 
Array(20) [ {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, … ]

Array [ {…} ]

Array []
calendars.js:596:10
The `name` prop is required. Please migrate away from the deprecated `title` prop. 2 index.module.js:2:857755
The `name` prop is required. Please migrate away from the deprecated `title` prop. index.module.js:2:857755
The `name` prop is required. Please migrate away from the deprecated `title` prop. index.module.js:2:857755
The `name` prop is required. Please migrate away from the deprecated `title` prop. 17 index.module.js:2:857755
The `name` prop is required. Please migrate away from the deprecated `title` prop. index.module.js:2:857755
You need to fill either the text or the ariaLabel props in the button component. 
Object { text: undefined, ariaLabel: null }

Object { _uid: 24, _isVue: true, __v_skip: true, _scope: {…}, "$options": {…}, _renderProxy: {…}, _self: {…}, "$parent": {…}, "$root": {…}, "$children": (1) […], … }
index.module.js:2:811376


### Additional info

We understand that optimizing javascript can become more effort than is worth it pretty fast, so we'd be happy with a way to simply hide the "Year"/multiMonthYear option from the user interface completely.
ErikKrause commented 8 months ago

Same here, also updated from an older version. NC 28.0.2, PHP 8.2, Apache, MySQL But other than the original poster we need the year view.

Alex13280815 commented 8 months ago

Same here, fresh install on Debian12, PHP 8.2, MariaDB, Apache, NC 28.0.2.

vacy commented 8 months ago

same here, it was working fine with nc 28.0.1 for me, updated to 28.0.2 today. both with calendar 4.6.4 - > issue started popping up today.

@netzpolitikorg thanks for the sql part!

cghanke commented 6 months ago

Just some more info: (Nextcloud 28.0.3, Calendar-App 4.6.6)

ChristophWurst commented 6 months ago

Please try again with v4.6.7. We merged a bugfix in the upstream fullcalendar lib: https://github.com/nextcloud/calendar/pull/5783.

netzpolitikorg commented 6 months ago

Thank you so much! Fixed!