From 15179878d57addb010b5afeadd4bde8b62ef3acb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jarka=20Kadlecov=C3=A1?= Date: Mon, 16 Jul 2018 15:35:19 +0200 Subject: Revert "Revert "Merge branch 'ee-5481-epic-todos' into 'master'"" This reverts commit 8717c7dad9b5a8fa21ec9a652c54718a6b4c2175. --- .../pages/dashboard/todos/index/todos.js | 12 +- .../sidebar/components/todo_toggle/todo.vue | 98 +++++++++++++ .../components/sidebar/toggle_sidebar.vue | 7 + app/assets/stylesheets/pages/issuable.scss | 1 + app/assets/stylesheets/pages/todos.scss | 16 +++ app/controllers/concerns/todos_actions.rb | 12 ++ app/controllers/dashboard/todos_controller.rb | 2 +- app/controllers/projects/todos_controller.rb | 14 +- app/finders/todos_finder.rb | 52 +++++-- app/helpers/issuables_helper.rb | 13 ++ app/helpers/todos_helper.rb | 10 +- app/models/concerns/issuable.rb | 6 + app/models/group.rb | 8 ++ app/models/issue.rb | 4 - app/models/note.rb | 4 + app/models/todo.rb | 11 +- app/services/todo_service.rb | 30 ++-- app/views/dashboard/todos/index.html.haml | 48 ++++--- db/migrate/20180608091413_add_group_to_todos.rb | 32 +++++ db/schema.rb | 5 +- doc/api/todos.md | 1 + doc/workflow/todos.md | 1 + lib/api/entities.rb | 13 +- spec/controllers/projects/todos_controller_spec.rb | 133 +++-------------- spec/factories/todos.rb | 4 +- spec/finders/todos_finder_spec.rb | 64 +++++++++ spec/helpers/issuables_helper_spec.rb | 21 +++ spec/javascripts/sidebar/todo_spec.js | 158 +++++++++++++++++++++ spec/models/todo_spec.rb | 1 + .../controllers/todos_shared_examples.rb | 43 ++++++ 30 files changed, 640 insertions(+), 184 deletions(-) create mode 100644 app/assets/javascripts/sidebar/components/todo_toggle/todo.vue create mode 100644 app/controllers/concerns/todos_actions.rb create mode 100644 db/migrate/20180608091413_add_group_to_todos.rb create mode 100644 spec/javascripts/sidebar/todo_spec.js create mode 100644 spec/support/shared_examples/controllers/todos_shared_examples.rb diff --git a/app/assets/javascripts/pages/dashboard/todos/index/todos.js b/app/assets/javascripts/pages/dashboard/todos/index/todos.js index ff19b9a9c30..9aa83ce6269 100644 --- a/app/assets/javascripts/pages/dashboard/todos/index/todos.js +++ b/app/assets/javascripts/pages/dashboard/todos/index/todos.js @@ -39,6 +39,7 @@ export default class Todos { } initFilters() { + this.initFilterDropdown($('.js-group-search'), 'group_id', ['text']); this.initFilterDropdown($('.js-project-search'), 'project_id', ['text']); this.initFilterDropdown($('.js-type-search'), 'type'); this.initFilterDropdown($('.js-action-search'), 'action_id'); @@ -53,7 +54,16 @@ export default class Todos { filterable: searchFields ? true : false, search: { fields: searchFields }, data: $dropdown.data('data'), - clicked: () => $dropdown.closest('form.filter-form').submit(), + clicked: () => { + const $formEl = $dropdown.closest('form.filter-form'); + const mutexDropdowns = { + group_id: 'project_id', + project_id: 'group_id', + }; + + $formEl.find(`input[name="${mutexDropdowns[fieldName]}"]`).remove(); + $formEl.submit(); + }, }); } diff --git a/app/assets/javascripts/sidebar/components/todo_toggle/todo.vue b/app/assets/javascripts/sidebar/components/todo_toggle/todo.vue new file mode 100644 index 00000000000..ffaed9c7193 --- /dev/null +++ b/app/assets/javascripts/sidebar/components/todo_toggle/todo.vue @@ -0,0 +1,98 @@ + + + diff --git a/app/assets/javascripts/vue_shared/components/sidebar/toggle_sidebar.vue b/app/assets/javascripts/vue_shared/components/sidebar/toggle_sidebar.vue index ac2e99abe77..80dc7d3557c 100644 --- a/app/assets/javascripts/vue_shared/components/sidebar/toggle_sidebar.vue +++ b/app/assets/javascripts/vue_shared/components/sidebar/toggle_sidebar.vue @@ -12,6 +12,11 @@ export default { type: Boolean, required: true, }, + cssClasses: { + type: String, + required: false, + default: '', + }, }, computed: { tooltipLabel() { @@ -30,10 +35,12 @@ export default {