From eb99c30bd050281aa064771de037a44227139d2c Mon Sep 17 00:00:00 2001 From: Nico Vermaas <vermaas@astron.nl> Date: Mon, 7 Feb 2022 15:10:43 +0100 Subject: [PATCH] apply filter button to dashboard add 'clear filter' button --- atdb/taskdatabase/services/algorithms.py | 15 ++++------ .../templates/dashboard/toggles.html | 30 ++++++++++++++++++- .../templates/taskdatabase/base.html | 2 +- .../templates/taskdatabase/index.html | 2 +- atdb/taskdatabase/views.py | 20 ++++++------- 5 files changed, 45 insertions(+), 24 deletions(-) diff --git a/atdb/taskdatabase/services/algorithms.py b/atdb/taskdatabase/services/algorithms.py index 0489a857..3db3fa83 100644 --- a/atdb/taskdatabase/services/algorithms.py +++ b/atdb/taskdatabase/services/algorithms.py @@ -472,13 +472,6 @@ def highlight_value(values, value_to_highlight): def construct_tasks_per_workflow_html(request, workflow_results): - try: - query_list_of_ids = request.session['query_list_of_ids'] - current_query_params = request.session['current_query_params'] - except: - pass - - # --- Progress of tasks per active workflow --- results_tasks = "<p>Progress of tasks per workflow</p>" @@ -618,11 +611,13 @@ def construct_logs_per_workflow_html(request, workflow_results): def construct_dashboard_html(request, selection): # gather and construct the dashboard based on the requested selection + filtered_tasks = Task.objects.all() try: - filtered_tasks_as_list = request.session['filtered_tasks_as_list'] - filtered_tasks = Task.objects.filter(id__in=filtered_tasks_as_list) + if 'applyfilter' in selection: + filtered_tasks_as_list = request.session['filtered_tasks_as_list'] + filtered_tasks = Task.objects.filter(id__in=filtered_tasks_as_list) except: - filtered_tasks = Task.objects.all() + pass # --- Progress of tasks per active workflow --- workflow_results = aggregate_resources_tasks(request, selection, filtered_tasks) diff --git a/atdb/taskdatabase/templates/dashboard/toggles.html b/atdb/taskdatabase/templates/dashboard/toggles.html index 1cdf43c1..07829575 100644 --- a/atdb/taskdatabase/templates/dashboard/toggles.html +++ b/atdb/taskdatabase/templates/dashboard/toggles.html @@ -9,7 +9,7 @@ data-onstyle="warning" data-offstyle="primary" data-style - {% if not 'active' in toggle_selection %} checked {% endif %} + {% if not 'active' in selection %} checked {% endif %} > <input type="checkbox" @@ -24,6 +24,17 @@ {% if 'resources' in selection %} checked {% endif %} > + <input type="checkbox" + id = "apply_filter" + name="apply_filter" + data-on="Latest Filter Applied" + data-off="No Filter Applied" + data-toggle="toggle" + data-onstyle="primary" + data-offstyle="secondary" + data-style + {% if 'applyfilter' in selection %} checked {% endif %} + > <script> $(function() { @@ -58,4 +69,21 @@ }) }) </script> + + <script> + $(function() { + $('#apply_filter').change(function() { + + let url = location.href + if ($(this).prop('checked')) { + url = url.replace('nofilter','applyfilter'); + location.assign(url); + } else { + url = url.replace('applyfilter','nofilter'); + location.assign(url); + } + + }) + }) + </script> </table> \ No newline at end of file diff --git a/atdb/taskdatabase/templates/taskdatabase/base.html b/atdb/taskdatabase/templates/taskdatabase/base.html index 1ca7e614..2e7799d6 100644 --- a/atdb/taskdatabase/templates/taskdatabase/base.html +++ b/atdb/taskdatabase/templates/taskdatabase/base.html @@ -52,7 +52,7 @@ <li><a class="nav-link" href="{% url 'quality' %}">Quality</a></li> {% endif %} - <li><a class="nav-link" href="{% url 'dashboard' 'active_nores' %}">Dashboard</a></li> + <li><a class="nav-link" href="{% url 'dashboard' 'active_nores_nofilter' %}">Dashboard</a></li> <li><a class="nav-link" href="{% url 'query' %}">Filter</a></li> diff --git a/atdb/taskdatabase/templates/taskdatabase/index.html b/atdb/taskdatabase/templates/taskdatabase/index.html index 1abdb6fe..1187bbc5 100644 --- a/atdb/taskdatabase/templates/taskdatabase/index.html +++ b/atdb/taskdatabase/templates/taskdatabase/index.html @@ -34,7 +34,7 @@ {% include 'taskdatabase/pagination.html' %} </div> </div> - <p class="footer"> Version 1.0.0 (7 feb 2021 - 14:00) + <p class="footer"> Version 1.0.0 (7 feb 2021 - 15:00) </div> diff --git a/atdb/taskdatabase/views.py b/atdb/taskdatabase/views.py index 203c6361..2b06e3b2 100644 --- a/atdb/taskdatabase/views.py +++ b/atdb/taskdatabase/views.py @@ -178,7 +178,6 @@ class QueryView(SingleTableMixin, FilterView): # store on the session self.request.session['filtered_tasks_as_list'] = filtered_tasks_as_list - self.request.session['query_list_of_ids'] = query_list_of_ids return self.object_list @@ -488,7 +487,7 @@ def ShowDashboard(request, selection): return render(request, "dashboard/dashboard.html", {'results_tasks': results_tasks, 'results_logs': results_logs, - 'toggle_selection': selection}) + 'selection': selection}) def WorkflowDetails(request, id): @@ -812,7 +811,6 @@ def TaskClearFilter(request): request.session['task_filter'] = 'all' request.session['task_onhold_filter'] = None request.session['filtered_tasks_as_list'] = None - request.session['query_list_of_ids'] = None request.session['search_box'] = '' return redirect('/atdb/?page=1') @@ -881,13 +879,13 @@ def TaskSetStatusTables2(request, pk, new_status, query_params): @login_required def TaskMultiStatus(request, new_status, query_params): # get the list of id's from the session - query_list_of_ids = request.session['query_list_of_ids'] - count = len(query_list_of_ids) + filtered_tasks_as_list = request.session['filtered_tasks_as_list'] + count = len(filtered_tasks_as_list) if request.method == "POST": - for id in query_list_of_ids: - task = Task.objects.get(id=id[0]) + for id in filtered_tasks_as_list: + task = Task.objects.get(id=id) task.new_status = new_status task.save() @@ -905,13 +903,13 @@ def TaskMultiStatus(request, new_status, query_params): @login_required def TaskMultiHold(request, onhold, query_params): # get the list of id's from the session - query_list_of_ids = request.session['query_list_of_ids'] - count = len(query_list_of_ids) + filtered_tasks_as_list = request.session['filtered_tasks_as_list'] + count = len(filtered_tasks_as_list) if request.method == "POST": - for id in query_list_of_ids: - task = Task.objects.get(id=id[0]) + for id in filtered_tasks_as_list: + task = Task.objects.get(id=id) task.resume = (onhold == 'resume') task.save() -- GitLab