diff --git a/app/assets/javascripts/dashboard/current_tasks.js b/app/assets/javascripts/dashboard/current_tasks.js index b5954d4a2..0cf83b3e6 100644 --- a/app/assets/javascripts/dashboard/current_tasks.js +++ b/app/assets/javascripts/dashboard/current_tasks.js @@ -3,7 +3,7 @@ var DasboardCurrentTasksWidget = (function() { var sortFilter = '.curent-tasks-filters .sort-filter'; - var viewFilter = '.curent-tasks-filters .view-filter'; + var statusFilter = '.curent-tasks-filters .view-filter'; var projectFilter = '.curent-tasks-filters .project-filter'; var experimentFilter = '.curent-tasks-filters .experiment-filter'; @@ -35,7 +35,7 @@ var DasboardCurrentTasksWidget = (function() { params.project_id = dropdownSelector.getValues(projectFilter); params.experiment_id = dropdownSelector.getValues(experimentFilter); params.sort = dropdownSelector.getValues(sortFilter); - params.view = dropdownSelector.getValues(viewFilter); + params.statuses = dropdownSelector.getValues(statusFilter); params.query = $('.current-tasks-widget .task-search-field').val(); params.mode = $('.current-tasks-navbar .active').data('mode'); return params; @@ -47,7 +47,6 @@ var DasboardCurrentTasksWidget = (function() { return dropdownSelector.getValues(experimentFilter) || dropdownSelector.getValues(projectFilter) || $('.current-tasks-widget .task-search-field').val().length > 0 - || dropdownSelector.getValues(viewFilter) !== 'uncompleted'; } function loadCurrentTasksList(newList) { @@ -56,7 +55,7 @@ var DasboardCurrentTasksWidget = (function() { project_id: dropdownSelector.getValues(projectFilter), experiment_id: dropdownSelector.getValues(experimentFilter), sort: dropdownSelector.getValues(sortFilter), - view: dropdownSelector.getValues(viewFilter), + statuses: dropdownSelector.getValues(statusFilter), query: $('.current-tasks-widget .task-search-field').val(), mode: $('.current-tasks-navbar .active').data('mode') }; @@ -97,12 +96,9 @@ var DasboardCurrentTasksWidget = (function() { disableSearch: true }); - dropdownSelector.init(viewFilter, { - noEmptyOption: true, - singleSelect: true, - closeOnSelect: true, + dropdownSelector.init(statusFilter, { selectAppearance: 'simple', - disableSearch: true + optionClass: 'checkbox-icon' }); dropdownSelector.init(projectFilter, { @@ -142,7 +138,7 @@ var DasboardCurrentTasksWidget = (function() { e.stopPropagation(); e.preventDefault(); dropdownSelector.closeDropdown(sortFilter); - dropdownSelector.closeDropdown(viewFilter); + dropdownSelector.closeDropdown(statusFilter); dropdownSelector.closeDropdown(projectFilter); dropdownSelector.closeDropdown(experimentFilter); }); diff --git a/app/assets/javascripts/sitewide/dropdown_selector.js b/app/assets/javascripts/sitewide/dropdown_selector.js index 9497c6b69..f4d7ef7ae 100644 --- a/app/assets/javascripts/sitewide/dropdown_selector.js +++ b/app/assets/javascripts/sitewide/dropdown_selector.js @@ -434,7 +434,7 @@ var dropdownSelector = (function() { // Select default value if (!selectElement.data('ajax-url')) { - addSelectedOption(selectElement, dropdownContainer); + addSelectedOptions(selectElement, dropdownContainer); } // Enable simple mode for dropdown selector diff --git a/app/controllers/dashboard/current_tasks_controller.rb b/app/controllers/dashboard/current_tasks_controller.rb index 3da93e6cf..0cf31fdda 100644 --- a/app/controllers/dashboard/current_tasks_controller.rb +++ b/app/controllers/dashboard/current_tasks_controller.rb @@ -25,7 +25,7 @@ module Dashboard tasks = tasks.left_outer_joins(:user_my_modules).where(user_my_modules: { user_id: current_user.id }) end - tasks = filter_by_state(tasks) + tasks = tasks.where(my_module_status_id: task_filters[:statuses]) case task_filters[:sort] when 'start_date' @@ -92,10 +92,6 @@ module Dashboard private - def filter_by_state(tasks) - tasks.where(my_modules: { state: task_filters[:view] }) - end - def prepare_due_date(task) if task.due_date.present? due_date_formatted = I18n.l(task.due_date, format: :full_date) @@ -113,7 +109,7 @@ module Dashboard end def task_filters - params.permit(:project_id, :experiment_id, :mode, :view, :sort, :query, :page) + params.permit(:project_id, :experiment_id, :mode, :sort, :query, :page, statuses: []) end def load_project diff --git a/config/locales/dashboard/en.yml b/config/locales/dashboard/en.yml index 0d2ba5749..e102ed33e 100644 --- a/config/locales/dashboard/en.yml +++ b/config/locales/dashboard/en.yml @@ -14,7 +14,11 @@ en: due_date: "Due date" atoz: "From A to Z" ztoa: "From Z to A" - display: "Display" + display: "Display statuses" + statuses: + placeholder: "Select statuses" + all_selected: "All selected" + selected: "selected" uncompleted_tasks: "Tasks in progress" completed_tasks: "Tasks completed" project: "Project" diff --git a/db/migrate/20200826143431_migrate_task_status.rb b/db/migrate/20200826143431_migrate_task_status.rb new file mode 100644 index 000000000..e75b9de62 --- /dev/null +++ b/db/migrate/20200826143431_migrate_task_status.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +class MigrateTaskStatus < ActiveRecord::Migration[6.0] + def up + MyModuleStatusFlow.ensure_default + + in_progress_status = execute("SELECT id FROM my_module_statuses WHERE name = 'In progress' LIMIT 1").to_a[0] + completed_status = execute("SELECT id FROM my_module_statuses WHERE name = 'Completed' LIMIT 1").to_a[0] + + if in_progress_status + execute("UPDATE my_modules + SET my_module_status_id = #{in_progress_status['id']} WHERE state = 0") + end + + if completed_status + execute("UPDATE my_modules + SET my_module_status_id = #{completed_status['id']} WHERE state = 1") + end + end +end diff --git a/db/structure.sql b/db/structure.sql index 1efe7eb1c..64b55a4aa 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -7625,4 +7625,7 @@ INSERT INTO "schema_migrations" (version) VALUES ('20200622155632'), ('20200709142830'), ('20200713142353'), -('20200714082503'); +('20200714082503'), +('20200826143431'); + +