Skip to content
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

Move app to Vue.js #194

Merged
merged 253 commits into from
Jan 25, 2019
Merged

Move app to Vue.js #194

merged 253 commits into from
Jan 25, 2019

Conversation

raimund-schluessler
Copy link
Member

@raimund-schluessler raimund-schluessler commented Aug 29, 2018

I started migrating the app to Vue.js now.

Basically nothing is functional at the moment, but the build is working and the store and the router are in place and operative. Furthermore, all templates are rudimentary moved to vue (the angular attributes are still present as a memory aid) and the collections are loaded from the server.

Any feedback is appreciated, especially on:

  • how to load the tasks from the server (shared caldav library?)
  • how to keep the tasks in the store

I guess @skjnldsv and @georgehrke might want to have a look ;)

Things left to do for feature parity with the angular version:

  • Only show root tasks as root tasks, not all tasks in a calendar
  • Implement sorting the tasks
  • Check that sort direction is the same as in master
  • Fix sorting by priority
  • Implement standard sort order
  • Actually load tasks from server, store changes there (create, edit and delete)
  • Actually load calendars from server, store changes there (create, edit and delete)
  • Only show calendars with VTODO property set
  • Specify color on calendar creation
  • Check that a calendar name is only used once
  • Create calendars with VTODO component only
  • Get the correct readOnly state from the server
  • Only load uncompleted tasks on initial app load
  • Load completed subtasks when opening task details view
  • Allow to select date and time for due and start date (needs date- and timepickers for Vue)
  • Directly copy the url of a calendar on click (don't show an input element)
  • Implement client-side search
  • Implement drag- and drop of tasks to other tasks or calendars
  • Implement week view
  • Show categories/tags in the details view
  • Linkify links in the summary and note
  • Fix this warning: @babel/polyfill is loaded more than once on this page. This is probably not desirable/intended and may have consequences if different versions of the polyfills are applied sequentially. If you do need to load the polyfill more than once, use @babel/polyfill/noConflict instead to bypass the warning.
  • Check performance of Array.filter()
  • Check size of bundle https://chrisbateman.github.io/webpack-visualizer/

Things to improve over the previous version:

@skjnldsv
Copy link
Member

skjnldsv commented Aug 30, 2018

Quick look and feedbacks :)

  • you should use the same makefile functiosn names than the other nc app for clarification accross all of our apps. Easier for people to understand ;)
  • Please also ouse the same directory structure than the other. You can find a vue template here and a vue nc app example here (very rough one we used as a sandbox, but maybe you will find this interesting :)

You can also take a look at the contacts migration, we set up very strict coding rules and config files to make sure e have the cleanest app possible: https://github.com/nextcloud/contacts/tree/vue 🤗

Questions:

  • why still use gulp, webpack should be enough? I'm not the most expert in gulp, so I have no idea of the advantages of having both :)

@raimund-schluessler
Copy link
Member Author

Thanks for the feedback. 😃

you should use the same makefile functiosn names than the other nc app for clarification accross all of our apps. Easier for people to understand ;)

I will have a look.

Please also ouse the same directory structure than the other.

Means, the vue/js files should be in src?

why still use gulp, webpack should be enough?

I would like to get rid of it as well. It currently is used to compile the sprite file and concat the scss files. I will have a look how to do this with webpack only.

@skjnldsv
Copy link
Member

Means, the vue/js files should be in src?

Yes :)

I would like to get rid of it as well. It currently is used to compile the sprite file and concat the scss files. I will have a look how to do this with webpack only.

Well, you can create a single tasks.scss app which import all the other scss, the server will then compile a single file ;)
For the sprite file, I have no idea :(

@raimund-schluessler
Copy link
Member Author

I improved the webpack configuration, basically copied your webpack config from contacts. I couldn't get rid of gulp completely yet, but it might be possible by using a plain npm module. I still have to adjust the makefile, though.

@skjnldsv
Copy link
Member

skjnldsv commented Aug 30, 2018

I couldn't get rid of gulp completely yet, but it might be possible by using a plain npm module. I still have to adjust the makefile, though.

Maybe it's just required for your setup then :)
It's not necessarily a pasbad thing ;)

@raimund-schluessler
Copy link
Member Author

I could get rid of Gulp, svg-sprite is used as a plain node module now. The config looks quite a bit cleaner now.

src/components/TheList.vue Outdated Show resolved Hide resolved
src/app.vue Show resolved Hide resolved
@raimund-schluessler
Copy link
Member Author

raimund-schluessler commented Oct 20, 2018

Moved to #194 (comment).

@raimund-schluessler raimund-schluessler added this to the 1.0.0 milestone Oct 23, 2018
Copy link
Member Author

@raimund-schluessler raimund-schluessler left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@skjnldsv @georgehrke Is this a good solution to filter VTODO calendars or should this be in the CDAV library?

@skjnldsv
Copy link
Member

Congrats!!! 🎉

@nachoparker
Copy link
Member

Many thanks for this! can't wait to try it out

@dmp1ce
Copy link

dmp1ce commented May 9, 2019

Wow! I just received v0.10.0 and I can now use my tasks tab again. Thank you and nice work!

@Orhideous
Copy link

Works like a charm. Thank you!

@nachoparker
Copy link
Member

thank you, it works very well. Just two little points that I'll address in other issues but performance is so much better

@michalroxorpl
Copy link

michalroxorpl commented May 18, 2020

Hello everyone, this modification is absolute awesome :-), thank you for making my live better with it.
I only wish, there would be a better support for subtasks / markdown understanding in terms of how new subtasks are recognized.
The nextcloud tasks addon requires following format of subtasks:
- [ ] description
However, the OpenTasks android application supported by nextcloud / dav sync uses following format:
[ ] description

This small difference makes what is added in an OpenTasks app as a subtask visible as text on the nextcloud tasks subpage, on the other hand inserting a Markdown formatted subtask / internal task on nextcloud tasks subpage produces a non-formatted string with square brackets, that is not understood as subtask and not rendered correctly by OpenTasks.

I am not sure if I should request any modification here or on OpenTasks's project page; if I knew what and where to modify I could test it immediately on my NC installation.

I tought it might be somewhere in tasks.js file, but it looks too complicated for me.
I'll be grateful for any suggestions.

@raimund-schluessler
Copy link
Member Author

@michalroxorpl Could you please create a separate issue for this? Maybe we can adjust the configuration of the Markdown plugin we use to also recognize tasks without the leading dash.

@raimund-schluessler
Copy link
Member Author

@michalroxorpl I just had a quick look at the markdown-it documentation and it seems a list item has to start with -, + or * (and tasks are list items as well).

So while all of this

- [ ] Test0
+ [ ] Test1
* [ ] Test2

will be a task item, omitting the leading -, + or * is not following the markdown standard. So it would be best to adjust the behaviour of OpenTasks. Please file an issue there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

9 participants