-
Notifications
You must be signed in to change notification settings - Fork 241
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Calendar 2.0 - Vue #926
Calendar 2.0 - Vue #926
Conversation
What is |
View would be agendaDay, agendaWeek, month. So /month/2018-10 would open October in month view |
.eslintrc.js
Outdated
'plugin:node/recommended', | ||
'plugin:vue/essential', | ||
'plugin:vue/recommended', | ||
'standard' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not so fond of standard
(but no worries). Maybe it it should be - or not - inside Nextcloud coding style ? Do you want me to open an issue on server ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just copy pasted the basic stuff from the contacts app, happy to change it
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@tcitworld The overall edits I made on the standard really feels like what we usually encounter on the nextcloud apps :)
Could you take a look at the contacts app?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@tcitworld btw, if you decide for a better settings that fit the way we usually use on our apps (we globally have a similar coding style between our apps 😉) could you ping me so I can take a look and also update the contacts app to the same settings?
How can we use webpack in dev mode since eval is now disabled (nextcloud/server#11028) ? |
Good question :) |
Let me leave this right here: https://blog.wuc.me/2018/10/18/nextcloud-vue-csp.html |
I should actually read articles instead of archiving them for later. Thanks ! 😀 |
name: 'TodayButton', | ||
computed: { | ||
labelAgendaDay() { | ||
return t('calendar', 'Day') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What do you think of a basic translation component ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
cc @skjnldsv ^
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well, we have the translate function used all over nextcloud and linked to the transifex component. I think it's working really well, so I don't think changing it is a good idea. It's easier to have the same solution all over nextcloud :)
First implementation of Settings area: @skjnldsv Some CSS love is always appreciated 😉 |
The renaming of
EDIT: all the file renaming give me this. Investigating… |
Ahah! Well, we still have no standard for the settings area, so I cannot really help. On a side note, why is there two different caldav url for mac and others? Shall I do the same on contacts? |
@tcitworld @skjnldsv How should we store events in vuex? Right now (in this PR) we have this Even after importing 10000 events, it doesn't make sense to keep them all in memory if only 5 of them have to be displayed by the current view. Use-cases where we need to access events:
I was thinking about having an editEvent store, that's usually empty and only stores the data of one Does that make sense? |
If the server is not configured correctly (
Yes :) |
Also cc @raimund-schluessler |
Yes, contacts and events behave very differently. I don't think you should indeed keep all the events in the storage. Though it could be interesting to think about the most common use case. How often a user go back in time? How often the user checks the next month? And the Month after that? I would say preloading the month with the full data and then only get the simplest data like day, hour, duration for the next incoming months is a nice idea. Then, like contacts, fetch the full data depending on how full the current view displays the events? I'm not the best qualified on VEVENTS and associated entries since it's not my field, but I'd say there is some optimisation to think about. |
We haven't actually done this partial retrieval in the past, but i don't think it makes sense for the Calendar app. We need many properties to render including And unlike contacts it's very uncommon to have huge blobs of base64 encoded data in ics. |
@georgehrke then the idea of preloading still stands, but not on the props but on the quantity I guess :) |
For the Tasks app I will keep the strategy I currently use. On app load all VTODOs which are not completed are loaded like so
This is necessary in order to calculate the number of tasks due today/this week/which are important. When you open the details of a task, all subtasks which are already completed are loaded as well:
(On a side note: I haven't checked if this is easily possible with the cdav-library already. If not, would be good to add it.) I store all tasks in the Vuex store. And I also save the subtasks of a task in the tasks properties (as of nextcloud/tasks@ecdcb82). Otherwise all tasks would be re-rendered when one changes. I think for Tasks, this is the best strategy. Loading all tasks would absolutely not work fast enough. For calendar, loading all VEVENTs is not a good idea either, I agree. Your strategy sounds fine. Maybe preloading the events for the previous and next week could be an option to speed up navigation. Loading more is not necessary in my opinion. Storing them in the Vuex store would be ok, but maybe not necessary if you have another idea. Side note 2:
on This helped a lot in speeding up the Tasks app. Although rendering a list with 60 tasks still takes ~400 ms. |
Agreed with always fetching events for previous, current, and next period (same for days and months). |
3db4443
to
983412c
Compare
I had an idea about the caching thing that i would like to get some feedback on:
Any opinion @tcitworld @skjnldsv @raimund-schluessler |
Seems like a nice idea!! |
There is still nextcloud/cdav-library#9 and nextcloud/cdav-library#10. Maybe we should just keep this caching out of the calendar app after all. |
I decided to implement our own FullCalendar 4 Timezone implementation: 8e9aa9e#diff-51210ecedb0c511ac616572de6c0bf45 Moment Timezone with all timezones is 917KB and we already have all the timezone data inside our icalendar VTimezone provider, so it's great we can now live without moment timezone in FullCalendar 4. |
Signed-off-by: Georg Ehrke <developer@georgehrke.com>
I branched off master and turned it into a protected branch: https://github.com/nextcloud/calendar/tree/stable1.7 |
Is there any roadmap for the release of this version ? |
That was quick! Thanks. |
Hi, great app and needful updates! |
use https://nextcloud.example.com/apps/calendar/embed/xxxxxxxxxxxxxxxxx/listMonth/now for list view. |
Components
Sidebar
calendar grid
editor
Routes
ToDo:
@tcitworld Do these routes make sense?
Related tickets
fixes #787
fixes #540
fixes #22
fixes #313
fixes #336
fixes #280
fixes #377
fixes #486
fixes #536
fixes #555
fixes #569
fixes #575
fixes #585
fixes #678
fixes #860
fixes #33
fixes #37
fixes #342
fixes #420
fixes #445
fixes #879
fixes #809
fixes #914
fixes #901
fixes #532
fixes #703
fixes #277
fixes #976
fixes #554
fixes #861
fixes #985
fixes #7
fixes #875
fixes #1263
fixes #1316
fixes #318
fixes #1297
fixes #848
fixes #570
fixes #1374
fixes #899
fixes #790
fixes #168
fixes #497
fixes #576
fixes #619
fixes #881