diff --git a/atdb/atdb/static/taskdatabase/style.css b/atdb/atdb/static/taskdatabase/style.css index b8cd66eb0f20cc2334faf2e99bb7a853f4c23499..37d988b1e6c50054db44b60a3216a3b10a530bb9 100644 --- a/atdb/atdb/static/taskdatabase/style.css +++ b/atdb/atdb/static/taskdatabase/style.css @@ -118,4 +118,8 @@ p.title { .modal-content { overflow: scroll !important; +} + +.form-flex { + display: flex; } \ No newline at end of file diff --git a/atdb/taskdatabase/forms.py b/atdb/taskdatabase/forms.py index 8df61fe653fbda58e10c943611c6ca5f817c7976..c6c3ec4eda3308820bb9627564f16b492443bef8 100644 --- a/atdb/taskdatabase/forms.py +++ b/atdb/taskdatabase/forms.py @@ -1,10 +1,9 @@ from django import forms -STATUS_CHOICES = [('defined','defined'), - ('scheduled','scheduled'), - ('running','running'), - ('removed','removed'), - ('error','error') - ] -class FilterForm(forms.Form): - status = forms.MultipleChoiceField(required=True, widget=forms.CheckboxSelectMultiple, choices=STATUS_CHOICES) +class QualityAnnotationForm(forms.Form): + annotation = forms.CharField(label='', + widget=forms.Textarea( + attrs={'rows': 12,'cols': 85} + ), + max_length=1000) + return_to_page = forms.IntegerField(widget=forms.HiddenInput) diff --git a/atdb/taskdatabase/models.py b/atdb/taskdatabase/models.py index 88e892afc80f2f05cb1376f8ef6484a2a2a1dc2a..6d78b2b92dff08a1f6d37b42fa2edfe8e3912a05 100644 --- a/atdb/taskdatabase/models.py +++ b/atdb/taskdatabase/models.py @@ -25,10 +25,7 @@ def convert_quality_to_list_for_template(task): list.append(str(task.quality_json['uv-coverage'])) list.append(str(task.quality_json['sensitivity'])) list.append(str(task.quality_json['observing-conditions'])) - list.append("-") - list.append("-") - list.append("-") - list.append("-") + #list.append("-") except Exception as err: pass @@ -109,6 +106,7 @@ class Task(models.Model): quality = self.outputs['quality'] return True except: + return False try: quality = self.outputs[0]['quality'] return True @@ -121,11 +119,19 @@ class Task(models.Model): try: return self.outputs['quality'] except: + return None try: return self.outputs[0]['quality'] except: return None + @property + def get_quality_remarks(self): + try: + return self.remarks['quality'] + except: + return None + @property def quality_as_list(self): try: diff --git a/atdb/taskdatabase/serializers.py b/atdb/taskdatabase/serializers.py index 45bbd2823f400d25956676c681fc5fbaff4b5e61..a260c1d888ef2cffa1114cd55d1f8d71efae3a49 100644 --- a/atdb/taskdatabase/serializers.py +++ b/atdb/taskdatabase/serializers.py @@ -98,7 +98,7 @@ class TaskReadSerializer(serializers.ModelSerializer): 'workflow', 'stage_request_id', 'status','new_status','quality', - 'inputs','outputs','metrics','status_history', + 'inputs','outputs','metrics','remarks','status_history', 'size_to_process', 'size_processed', 'total_processing_time', 'log_entries','meta_scheduling','environment' ] diff --git a/atdb/taskdatabase/services/algorithms.py b/atdb/taskdatabase/services/algorithms.py index 958cb43db886d35571ff52b4efe8072a6907e662..69b58e5014466e92d5e186848d4eda41661d27e0 100644 --- a/atdb/taskdatabase/services/algorithms.py +++ b/atdb/taskdatabase/services/algorithms.py @@ -138,9 +138,9 @@ def convert_quality_to_html(task): pass results += "<tr><td><b>QA diagnostic plots</b></td><td>" + "-" + "</td></tr>" - results += "<tr><td><b>Workflow summary parset</b></td><td>" + "-" + "</td></tr>" - results += "<tr><td><b>Summary logs</b></td><td>" + "-" + "</td></tr>" - results += "<tr><td><b>QA summary.hf5</b></td><td>" + "-" + "</td></tr>" + #results += "<tr><td><b>Workflow summary parset</b></td><td>" + "-" + "</td></tr>" + #results += "<tr><td><b>Summary logs</b></td><td>" + "-" + "</td></tr>" + #results += "<tr><td><b>QA summary.hf5</b></td><td>" + "-" + "</td></tr>" except Exception as err: results = "<tr><td>" + str(err) + "</td></tr>" diff --git a/atdb/taskdatabase/static/taskdatabase/style.css b/atdb/taskdatabase/static/taskdatabase/style.css index b8cd66eb0f20cc2334faf2e99bb7a853f4c23499..37d988b1e6c50054db44b60a3216a3b10a530bb9 100644 --- a/atdb/taskdatabase/static/taskdatabase/style.css +++ b/atdb/taskdatabase/static/taskdatabase/style.css @@ -118,4 +118,8 @@ p.title { .modal-content { overflow: scroll !important; +} + +.form-flex { + display: flex; } \ No newline at end of file diff --git a/atdb/taskdatabase/tables.py b/atdb/taskdatabase/tables.py index a3fed15a22f4b0d647d9ec73f555677a52952b51..94769e0ac7d3bc7e51d03c7aff473ee657cfe1e9 100644 --- a/atdb/taskdatabase/tables.py +++ b/atdb/taskdatabase/tables.py @@ -32,10 +32,10 @@ class TaskTable(tables.Table): #resume = ResumeColumn() actions = tables.TemplateColumn(verbose_name='Details', - template_name='query/action_buttons_per_row.html', + template_name='taskdatabase/query/action_buttons_per_row.html', orderable=False) # orderable not sortable buttons = tables.TemplateColumn(verbose_name='Set Status', - template_name='query/status_buttons_per_row.html', + template_name='taskdatabase/query/status_buttons_per_row.html', orderable=False) # orderable not sortable diff --git a/atdb/taskdatabase/templates/query/status_buttons_per_row.html b/atdb/taskdatabase/templates/query/status_buttons_per_row.html deleted file mode 100644 index 72f2e697972bf3ef43bf1715f3de3a48eed023ca..0000000000000000000000000000000000000000 --- a/atdb/taskdatabase/templates/query/status_buttons_per_row.html +++ /dev/null @@ -1,13 +0,0 @@ - -{% if user.is_staff %} - <a href="{% url 'task-setstatus' record.pk 'defined' request.GET %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> defined</a> - <a href="{% url 'task-setstatus' record.pk 'staged' request.GET %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> staged</a> - <a href="{% url 'task-setstatus' record.pk 'fetched' request.GET %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> fetched</a> - <a href="{% url 'task-setstatus' record.pk 'processed' request.GET %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> processed</a> - <a href="{% url 'task-setstatus' record.pk 'stored' request.GET %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> stored</a> - <a href="{% url 'task-setstatus' record.pk 'validated' request.GET %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> validated</a> - <a href="{% url 'task-setstatus' record.pk 'scrubbed' request.GET %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> scrubbed</a> - <a href="{% url 'task-setstatus' record.pk 'archived' request.GET %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> archived</a> - <a href="{% url 'task-setstatus' record.pk 'finished' request.GET %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> finished</a> - -{% endif %} diff --git a/atdb/taskdatabase/templates/dashboard/dashboard.html b/atdb/taskdatabase/templates/taskdatabase/dashboard/dashboard.html similarity index 87% rename from atdb/taskdatabase/templates/dashboard/dashboard.html rename to atdb/taskdatabase/templates/taskdatabase/dashboard/dashboard.html index db35bb3c566dc7d111bb7b88eca4a7fee7205ddf..e6f1394b7516cc213c3f95d097312a9a97bd1c6b 100644 --- a/atdb/taskdatabase/templates/dashboard/dashboard.html +++ b/atdb/taskdatabase/templates/taskdatabase/dashboard/dashboard.html @@ -13,7 +13,7 @@ <h4>Dashboard</h4> </div> <div class="col-4"> - {% include "dashboard/toggles.html" %} + {% include "taskdatabase/dashboard/toggles.html" %} </div> </div> </div> @@ -33,6 +33,6 @@ {% include "taskdatabase/modal/modal_script.html" %} {% include "taskdatabase/modal/modal.html" %} -{% include 'taskdatabase/localstorage_scripts.html' %} +{% include 'taskdatabase/refresh.html' %} {% endblock %} \ No newline at end of file diff --git a/atdb/taskdatabase/templates/dashboard/toggles.html b/atdb/taskdatabase/templates/taskdatabase/dashboard/toggles.html similarity index 100% rename from atdb/taskdatabase/templates/dashboard/toggles.html rename to atdb/taskdatabase/templates/taskdatabase/dashboard/toggles.html diff --git a/atdb/taskdatabase/templates/taskdatabase/failures/failures_page.html b/atdb/taskdatabase/templates/taskdatabase/failures/failures_page.html index fa53f4e8248850abeba9a28b0a2ae0f1c5e0ce49..15d5493c8beb43cd12c41dc111fbe39298682160 100644 --- a/atdb/taskdatabase/templates/taskdatabase/failures/failures_page.html +++ b/atdb/taskdatabase/templates/taskdatabase/failures/failures_page.html @@ -45,7 +45,7 @@ </div> </div> -{% include 'taskdatabase/localstorage_scripts.html' %} +{% include 'taskdatabase/no_refresh.html' %} {% endblock %} diff --git a/atdb/taskdatabase/templates/taskdatabase/failures/retry_buttons.html b/atdb/taskdatabase/templates/taskdatabase/failures/retry_buttons.html new file mode 100644 index 0000000000000000000000000000000000000000..3a82fed5947d0a236d4da144c004456085656b09 --- /dev/null +++ b/atdb/taskdatabase/templates/taskdatabase/failures/retry_buttons.html @@ -0,0 +1,18 @@ + {% if task.status == "staged_failed" or task.status == "staging_failed" %} + <a href="{% url 'task-retry-view' task.pk 'defined' my_tasks.number %}" class="btn btn-warning btn-sm" role="button"><b><i class="fas fa-sync-alt"></i> Retry</b></a> + {% endif %} + {% if task.status == "fetched_failed" or task.status == "fetching_failed" %} + <a href="{% url 'task-retry-view' task.pk 'staged' my_tasks.number %}" class="btn btn-warning btn-sm" role="button"><b><i class="fas fa-sync-alt"></i> Retry</b></a> + {% endif %} + {% if task.status == "processed_failed" or task.status == "processing_failed" %} + <a href="{% url 'task-retry-view' task.pk 'fetched' my_tasks.number %}" class="btn btn-warning btn-sm" role="button"><b><i class="fas fa-sync-alt"></i> Retry</b></a> + {% endif %} + {% if task.status == "stored_failed" or task.status == "storing_failed" %} + <a href="{% url 'task-retry-view' task.pk 'processed' my_tasks.number %}" class="btn btn-warning btn-sm" role="button"><b><i class="fas fa-sync-alt"></i> Retry</b></a> + {% endif %} + {% if task.status == "scrubbed_failed" or task.status == "scrubbing_failed" %} + <a href="{% url 'task-retry-view' task.pk 'validated' my_tasks.number %}" class="btn btn-warning btn-sm" role="button"><b><i class="fas fa-sync-alt"></i> Retry</b></a> + {% endif %} + {% if task.status == "archived_failed" or task.status == "archiving_failed" %} + <a href="{% url 'task-retry-view' task.pk 'scrubbed' my_tasks.number %}" class="btn btn-warning btn-sm" role="button"><b><i class="fas fa-sync-alt"></i> Retry</b></a> + {% endif %} \ No newline at end of file diff --git a/atdb/taskdatabase/templates/taskdatabase/failures/tasks_failures.html b/atdb/taskdatabase/templates/taskdatabase/failures/tasks_failures.html index 817f4405af2f60f30e83df0771cb2bc80a95fe1f..51bd7cabba1fc72a5ae5fea04e123f93f51f29f8 100644 --- a/atdb/taskdatabase/templates/taskdatabase/failures/tasks_failures.html +++ b/atdb/taskdatabase/templates/taskdatabase/failures/tasks_failures.html @@ -37,37 +37,8 @@ <td>{{ task.filter }} </td> - {% if task.status == "staged_failed" or task.status == "staging_failed" %} - <td> - <a href="{% url 'task-retry-view' task.pk 'defined' my_tasks.number %}" class="btn btn-warning btn-sm" role="button"><b><i class="fas fa-sync-alt"></i> Retry</b></a> - </td> - {% endif %} - {% if task.status == "fetched_failed" or task.status == "fetching_failed" %} - <td> - <a href="{% url 'task-retry-view' task.pk 'staged' my_tasks.number %}" class="btn btn-warning btn-sm" role="button"><b><i class="fas fa-sync-alt"></i> Retry</b></a> - </td> - {% endif %} - {% if task.status == "processed_failed" or task.status == "processing_failed" %} - <td> - <a href="{% url 'task-retry-view' task.pk 'fetched' my_tasks.number %}" class="btn btn-warning btn-sm" role="button"><b><i class="fas fa-sync-alt"></i> Retry</b></a> - </td> - {% endif %} - {% if task.status == "stored_failed" or task.status == "storing_failed" %} - <td> - <a href="{% url 'task-retry-view' task.pk 'processed' my_tasks.number %}" class="btn btn-warning btn-sm" role="button"><b><i class="fas fa-sync-alt"></i> Retry</b></a> - </td> - {% endif %} - {% if task.status == "scrubbed_failed" or task.status == "scrubbing_failed" %} - <td> - <a href="{% url 'task-retry-view' task.pk 'validated' my_tasks.number %}" class="btn btn-warning btn-sm" role="button"><b><i class="fas fa-sync-alt"></i> Retry</b></a> - </td> - {% endif %} - {% if task.status == "archived_failed" or task.status == "archiving_failed" %} - <td> - <a href="{% url 'task-retry-view' task.pk 'scrubbed' my_tasks.number %}" class="btn btn-warning btn-sm" role="button"><b><i class="fas fa-sync-alt"></i> Retry</b></a> - </td> - {% endif %} - <td> + + <td>{% include "taskdatabase/failures/retry_buttons.html" %}</td> </tr> </div> diff --git a/atdb/taskdatabase/templates/taskdatabase/failures/tasks_failures_headers.html b/atdb/taskdatabase/templates/taskdatabase/failures/tasks_failures_headers.html index 5bf48b688419c58da166d4d53495647c43c4726c..4e06b0e06dd4f0b43c8e3485b18c62b33f679a8a 100644 --- a/atdb/taskdatabase/templates/taskdatabase/failures/tasks_failures_headers.html +++ b/atdb/taskdatabase/templates/taskdatabase/failures/tasks_failures_headers.html @@ -1,10 +1,29 @@ <tr> - <th>ID</th> + <th> + <a href="{% url 'sort-tasks' '-pk' 'failures' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-up"></i></a> + ID + <a href="{% url 'sort-tasks' 'id' 'failures' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-down"></i></a> + </th> <th>Details</th> - - <th>Status</th> - <th>Project</th> - <th>SAS_ID</th> - <th>filter</th> + <th> + <a href="{% url 'sort-tasks' '-status' 'failures' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-up"></i></a> + Status + <a href="{% url 'sort-tasks' 'status' 'failures' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-down"></i></a> + </th> + <th> + <a href="{% url 'sort-tasks' '-project' 'failures' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-up"></i></a> + Project + <a href="{% url 'sort-tasks' 'project' 'failures' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-down"></i></a> + </th> + <th> + <a href="{% url 'sort-tasks' '-sas_id' 'failures' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-up"></i></a> + SAS_ID + <a href="{% url 'sort-tasks' 'sas_id' 'failures' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-down"></i></a> + </th> + <th> + <a href="{% url 'sort-tasks' '-filter' 'failures' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-up"></i></a> + Filter + <a href="{% url 'sort-tasks' 'filter' 'failures' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-down"></i></a> + </th> <th>Actions</th> </tr> \ No newline at end of file diff --git a/atdb/taskdatabase/templates/taskdatabase/filter/clear_filter_button.html b/atdb/taskdatabase/templates/taskdatabase/filter/clear_filter_button.html index 3f103a32e3666bab3fa9eeb6ea0cf909298051f3..bcbe5e9e891f810fd3105f9ac01d4cde2fc9cb43 100644 --- a/atdb/taskdatabase/templates/taskdatabase/filter/clear_filter_button.html +++ b/atdb/taskdatabase/templates/taskdatabase/filter/clear_filter_button.html @@ -1 +1 @@ -<a href="{% url 'clear-filter' %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-window-close"></i> Clear Filter</a> +<a href="{% url 'clear-filter' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-window-close"></i> Clear Filter</a> diff --git a/atdb/taskdatabase/templates/taskdatabase/filter/filter_buttons.html b/atdb/taskdatabase/templates/taskdatabase/filter/filter_buttons.html index cd5dcca5b893cf809a32256abc77da0d8e395298..0c20c6763060d10f62aa6155a090c639519b66d7 100644 --- a/atdb/taskdatabase/templates/taskdatabase/filter/filter_buttons.html +++ b/atdb/taskdatabase/templates/taskdatabase/filter/filter_buttons.html @@ -7,27 +7,25 @@ <tr> <td> {% include "taskdatabase/filter/clear_filter_button.html" %} - <a href="{% url 'task-set-active-filter' %}" class="btn btn-success btn-sm" role="button"><i class="fas fa-layer-group"></i> Active</a> - <a href="{% url 'task-set-filter' 'failed' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-layer-group"></i> Failed</a> - <a href="{% url 'task-set-onhold-filter' True %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-layer-group"></i> On Hold</a> - <!-- - <a href="{% url 'task-set-filter' 'defining' %}" class="btn btn-secondary btn-sm" role="button">defining</a> - --> - <a href="{% url 'task-set-filter' 'defined' %}" class="btn btn-primary btn-sm" role="button">defined</a> - <a href="{% url 'task-set-filter' 'staging' %}" class="btn btn-secondary btn-sm" role="button">staging</a> - <a href="{% url 'task-set-filter' 'staged' %}" class="btn btn-primary btn-sm" role="button">staged</a> - <a href="{% url 'task-set-filter' 'fetching' %}" class="btn btn-secondary btn-sm" role="button">fetching</a> - <a href="{% url 'task-set-filter' 'fetched' %}" class="btn btn-primary btn-sm" role="button">fetched</a> - <a href="{% url 'task-set-filter' 'processing' %}" class="btn btn-secondary btn-sm" role="button">processing</a> - <a href="{% url 'task-set-filter' 'processed' %}" class="btn btn-primary btn-sm" role="button">processed</a> - <a href="{% url 'task-set-filter' 'storing' %}" class="btn btn-secondary btn-sm" role="button">storing</a> - <a href="{% url 'task-set-filter' 'stored' %}" class="btn btn-success btn-sm" role="button">stored</a> - <a href="{% url 'task-set-filter' 'validated' %}" class="btn btn-primary btn-sm" role="button">validated</a> - <a href="{% url 'task-set-filter' 'scrubbing' %}" class="btn btn-secondary btn-sm" role="button">scrubbing</a> - <a href="{% url 'task-set-filter' 'scrubbed' %}" class="btn btn-primary btn-sm" role="button">scrubbed</a> - <a href="{% url 'task-set-filter' 'archiving' %}" class="btn btn-secondary btn-sm" role="button">archiving</a> - <a href="{% url 'task-set-filter' 'archived' %}" class="btn btn-primary btn-sm" role="button">archived</a> - <a href="{% url 'task-set-filter' 'finished' %}" class="btn btn-primary btn-sm" role="button">finished</a> + <a href="{% url 'task-set-active-filter' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-layer-group"></i> Active</a> + <a href="{% url 'task-set-filter' 'failed' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-layer-group"></i> Failed</a> + <a href="{% url 'task-set-onhold-filter' True %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-layer-group"></i> On Hold</a> + + <a href="{% url 'task-set-filter' 'defined' %}" class="btn btn-secondary btn-sm" role="button">defined</a> + <a href="{% url 'task-set-filter' 'staging' %}" class="btn btn-secondary btn-sm" role="button"><i>staging</i></a> + <a href="{% url 'task-set-filter' 'staged' %}" class="btn btn-secondary btn-sm" role="button">staged</a> + <a href="{% url 'task-set-filter' 'fetching' %}" class="btn btn-secondary btn-sm" role="button"><i>fetching</i></a> + <a href="{% url 'task-set-filter' 'fetched' %}" class="btn btn-secondary btn-sm" role="button">fetched</a> + <a href="{% url 'task-set-filter' 'processing' %}" class="btn btn-secondary btn-sm" role="button"><i>processing</i></a> + <a href="{% url 'task-set-filter' 'processed' %}" class="btn btn-secondary btn-sm" role="button">processed</a> + <a href="{% url 'task-set-filter' 'storing' %}" class="btn btn-secondary btn-sm" role="button"><i>storing</i></a> + <a href="{% url 'task-set-filter' 'stored' %}" class="btn btn-secondary btn-sm" role="button">stored</a> + <a href="{% url 'task-set-filter' 'validated' %}" class="btn btn-secondary btn-sm" role="button">validated</a> + <a href="{% url 'task-set-filter' 'scrubbing' %}" class="btn btn-secondary btn-sm" role="button"><i>scrubbing</i></a> + <a href="{% url 'task-set-filter' 'scrubbed' %}" class="btn btn-secondary btn-sm" role="button">scrubbed</a> + <a href="{% url 'task-set-filter' 'archiving' %}" class="btn btn-secondary btn-sm" role="button"><i>archiving</i></a> + <a href="{% url 'task-set-filter' 'archived' %}" class="btn btn-secondary btn-sm" role="button">archived</a> + <a href="{% url 'task-set-filter' 'finished' %}" class="btn btn-secondary btn-sm" role="button">finished</a> </td> <td> diff --git a/atdb/taskdatabase/templates/taskdatabase/filter/filter_xxx.html b/atdb/taskdatabase/templates/taskdatabase/filter/filter_xxx.html deleted file mode 100644 index 891cdf93906dc5916dd5ceb3a665b170b9cdfd9b..0000000000000000000000000000000000000000 --- a/atdb/taskdatabase/templates/taskdatabase/filter/filter_xxx.html +++ /dev/null @@ -1,4 +0,0 @@ -<form action="/atdb/filter" method="get"> - {{ my_form }} - <input type="submit" value="Filter"> -</form> \ No newline at end of file diff --git a/atdb/taskdatabase/templates/taskdatabase/filter/search.html b/atdb/taskdatabase/templates/taskdatabase/filter/search.html index 5ad2d5a56518ac9fc1bbffee7041fd9bf00ffa4f..86f8a87defd33185a262c8933347a4f6f7151d55 100644 --- a/atdb/taskdatabase/templates/taskdatabase/filter/search.html +++ b/atdb/taskdatabase/templates/taskdatabase/filter/search.html @@ -1,4 +1,3 @@ -<!-- note the rerouting to '/query', which is captured by urls.py --> <form class="navbar-form navbar-left" role="Search" onsubmit="writeToLocalStorage('search_box')" method="get" action=""> <div class="form-group"> diff --git a/atdb/taskdatabase/templates/taskdatabase/index.html b/atdb/taskdatabase/templates/taskdatabase/index.html index fdbdeee83358306f4093137a8a09e74e7305d096..c6aab8e246ae48332c528e5b278316f936f35ebc 100644 --- a/atdb/taskdatabase/templates/taskdatabase/index.html +++ b/atdb/taskdatabase/templates/taskdatabase/index.html @@ -34,11 +34,11 @@ {% include 'taskdatabase/pagination.html' %} </div> </div> - <p class="footer"> Version 1.0.0 (2 apr 2021 - 6:00) + <p class="footer"> Version 1.0.0 (8 apr 2021 - 14:00) </div> -{% include 'taskdatabase/localstorage_scripts.html' %} +{% include 'taskdatabase/refresh.html' %} {% endblock %} diff --git a/atdb/taskdatabase/templates/taskdatabase/modal/modal_no_close.html b/atdb/taskdatabase/templates/taskdatabase/modal/modal_no_close.html new file mode 100644 index 0000000000000000000000000000000000000000..e153f3a89d91a2477b871effb5c390233d98fe82 --- /dev/null +++ b/atdb/taskdatabase/templates/taskdatabase/modal/modal_no_close.html @@ -0,0 +1,8 @@ + +<div id="popup" class="modal fade" role="dialog"> + <div class="modal-dialog modal-lg"> + <div class="modal-content"> + <div class="modal-body"></div> + </div> + </div> +</div> \ No newline at end of file diff --git a/atdb/taskdatabase/templates/taskdatabase/modal/modal_script.html b/atdb/taskdatabase/templates/taskdatabase/modal/modal_script.html index 1c0d5006e22de81d0a943b69510fbf8ba88c4a63..52cff4d42b8d10e61a4b4e05e3d8090da4492426 100644 --- a/atdb/taskdatabase/templates/taskdatabase/modal/modal_script.html +++ b/atdb/taskdatabase/templates/taskdatabase/modal/modal_script.html @@ -8,4 +8,4 @@ $popup.modal("show"); }); }); -</script> \ No newline at end of file +</script> diff --git a/atdb/taskdatabase/templates/taskdatabase/monitoring_page.html b/atdb/taskdatabase/templates/taskdatabase/monitoring_page.html index 6da4454a4bd42cee537b8fad34682ccca7f68961..98a438e6b996fd37c8e0544531cdf8bc961399fd 100644 --- a/atdb/taskdatabase/templates/taskdatabase/monitoring_page.html +++ b/atdb/taskdatabase/templates/taskdatabase/monitoring_page.html @@ -37,6 +37,6 @@ </div> </div> -{% include 'taskdatabase/localstorage_scripts.html' %} +{% include 'taskdatabase/refresh.html' %} {% endblock %} diff --git a/atdb/taskdatabase/templates/taskdatabase/no_refresh.html b/atdb/taskdatabase/templates/taskdatabase/no_refresh.html new file mode 100644 index 0000000000000000000000000000000000000000..3d99cd33d73204f3c7cdb0acff96aa49d084d58d --- /dev/null +++ b/atdb/taskdatabase/templates/taskdatabase/no_refresh.html @@ -0,0 +1,16 @@ + +<script type="text/javascript"> + function readFromLocalStorage(id) { + var s = localStorage.getItem(id); + if (s !== null) { + document.getElementById(id).value = s; + } + } +</script> + +<script type="text/javascript"> +function writeToLocalStorage(id) { + var s = document.getElementById(id).value + localStorage.setItem(id, s); +} +</script> \ No newline at end of file diff --git a/atdb/taskdatabase/templates/taskdatabase/postprocessing.html b/atdb/taskdatabase/templates/taskdatabase/postprocessing.html index 276050d311900953d1aa60ba736094572b4ce31a..7d22fe92b13763e5f83e9a74be53adffad701bf0 100644 --- a/atdb/taskdatabase/templates/taskdatabase/postprocessing.html +++ b/atdb/taskdatabase/templates/taskdatabase/postprocessing.html @@ -84,7 +84,7 @@ </div> -{% include 'taskdatabase/localstorage_scripts.html' %} +{% include 'taskdatabase/refresh.html' %} {% endblock %} diff --git a/atdb/taskdatabase/templates/taskdatabase/quality/quality_page.html b/atdb/taskdatabase/templates/taskdatabase/quality/quality_page.html index 6d3b8881cef4dc1a1a301f1dd9ad9e1609b3543c..01c9c4c745b45dc14407811aa7655a6fed2972f6 100644 --- a/atdb/taskdatabase/templates/taskdatabase/quality/quality_page.html +++ b/atdb/taskdatabase/templates/taskdatabase/quality/quality_page.html @@ -7,10 +7,11 @@ <div class="card"> <div class="card-body"> <div class="row"> - <div class="col-8"> + <div class="col-12"> <h3>Quality Diagnostics</h3> This overview shows the Quality Diagnostics of all the task that have this information. <hr> + {% include 'taskdatabase/filter/filter_buttons.html' %} </div> </div> <div class="row"> @@ -43,7 +44,7 @@ </div> </div> -{% include 'taskdatabase/localstorage_scripts.html' %} +{% include 'taskdatabase/no_refresh.html' %} {% endblock %} diff --git a/atdb/taskdatabase/templates/taskdatabase/quality/tasks_quality.html b/atdb/taskdatabase/templates/taskdatabase/quality/tasks_quality.html index 77cf0330ef08c95c1fad10b231f5fade70674f5b..cd46879c0006006c3276ceac1b53eba160d90c58 100644 --- a/atdb/taskdatabase/templates/taskdatabase/quality/tasks_quality.html +++ b/atdb/taskdatabase/templates/taskdatabase/quality/tasks_quality.html @@ -38,13 +38,33 @@ <td>{{ task.filter }} </td> {% if task.has_quality %} - {% for value in task.quality_as_list %} - <td>{{value}}</td> - {% endfor %} + {% for value in task.quality_as_list %} + <td>{{value}}</td> + {% endfor %} + <td> + <a href="" + class="btn btn-primary btn-sm" role="button" target="_blank"><img src="{% static 'taskdatabase/surfsara.jpg' %}" height="20" alt="this is a placeholder, links to plots will follow"></a> + </td> + {% else %} + <td>-</td><td>-</td><td>-</td><td>-</td> {% endif %} - <td> + {% if task.get_quality_remarks %} + <a class="open-modal btn btn-warning btn-sm" + href="{% url 'annotate-quality' task.id my_tasks.number %}" + data-popup-url="{% url 'annotate-quality' task.id my_tasks.number %}"> + <i class="fas fa-pen-alt"></i> + </a> + {% else %} + <a class="open-modal btn btn-secondary btn-sm" + href="{% url 'annotate-quality' task.id my_tasks.number %}" + data-popup-url="{% url 'annotate-quality' task.id my_tasks.number %}"> + <i class="fas fa-pen-alt"></i> + </a> + {% endif %} + </td> + <td>{{ task.quality|default_if_none:"-" }}</td> </tr> </div> diff --git a/atdb/taskdatabase/templates/taskdatabase/quality/tasks_quality_headers.html b/atdb/taskdatabase/templates/taskdatabase/quality/tasks_quality_headers.html index cd699a598401ff3848aa79ade6099795e5574dc3..dfbaafffa00569caa3939019e38222b688f15b91 100644 --- a/atdb/taskdatabase/templates/taskdatabase/quality/tasks_quality_headers.html +++ b/atdb/taskdatabase/templates/taskdatabase/quality/tasks_quality_headers.html @@ -1,16 +1,34 @@ <tr> - <th>ID</th> + <th> + <a href="{% url 'sort-tasks' '-pk' 'quality' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-up"></i></a> + ID + <a href="{% url 'sort-tasks' 'id' 'quality' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-down"></i></a> + </th> <th>Details</th> - - <th>Status</th> - <th>Project</th> - <th>SAS_ID</th> - <th>filter</th> + <th> + <a href="{% url 'sort-tasks' '-status' 'quality' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-up"></i></a> + Status + <a href="{% url 'sort-tasks' 'status' 'quality' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-down"></i></a> + </th> + <th> + <a href="{% url 'sort-tasks' '-project' 'quality' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-up"></i></a> + Project + <a href="{% url 'sort-tasks' 'project' 'quality' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-down"></i></a> + </th> + <th> + <a href="{% url 'sort-tasks' '-sas_id' 'quality' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-up"></i></a> + SAS_ID + <a href="{% url 'sort-tasks' 'sas_id' 'quality' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-down"></i></a> + </th> + <th> + <a href="{% url 'sort-tasks' '-filter' 'quality' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-up"></i></a> + Filter + <a href="{% url 'sort-tasks' 'filter' 'quality' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-down"></i></a> + </th> <th>uv-coverage</th> <th>Sensitivity</th> <th>Conditions</th> - <th>Diagnostic plots</th> - <th>Summary parset</th> - <th>Summary logs</th> - <th>Summary hf5</th> + <th>Plots</th> + <th>Annotate</th> + <th>Quality</th> </tr> \ No newline at end of file diff --git a/atdb/taskdatabase/templates/query/action_buttons_per_row.html b/atdb/taskdatabase/templates/taskdatabase/query/action_buttons_per_row.html similarity index 100% rename from atdb/taskdatabase/templates/query/action_buttons_per_row.html rename to atdb/taskdatabase/templates/taskdatabase/query/action_buttons_per_row.html diff --git a/atdb/taskdatabase/templates/query/confirm_multi_change.html b/atdb/taskdatabase/templates/taskdatabase/query/confirm_multi_change.html similarity index 100% rename from atdb/taskdatabase/templates/query/confirm_multi_change.html rename to atdb/taskdatabase/templates/taskdatabase/query/confirm_multi_change.html diff --git a/atdb/taskdatabase/templates/query/index.html b/atdb/taskdatabase/templates/taskdatabase/query/index.html similarity index 75% rename from atdb/taskdatabase/templates/query/index.html rename to atdb/taskdatabase/templates/taskdatabase/query/index.html index a37ce6095dfdd596ec649d451389317df4c1c16a..de6aedab3d3926b07f06bf70007604ef3d2c6359 100644 --- a/atdb/taskdatabase/templates/query/index.html +++ b/atdb/taskdatabase/templates/taskdatabase/query/index.html @@ -14,13 +14,13 @@ <div class="card"> <form action="" method="get" class="form form-inline"> {% bootstrap_form filter.form layout='inline' %} - <button type="submit" class="btn-success btn-sm" title="Filter"><i class="fas fa-filter"></i> Filter</button> + <button type="submit" class="btn-secondary btn-sm" title="Filter"><i class="fas fa-filter"></i> Filter</button> {% include "taskdatabase/filter/clear_filter_button.html" %} </form> </div> {% endif %} - {% include "query/set_multi_status_panel.html" %} + {% include "taskdatabase/query/set_multi_status_panel.html" %} {% render_table table 'django_tables2/bootstrap4.html' %} diff --git a/atdb/taskdatabase/templates/query/query.html b/atdb/taskdatabase/templates/taskdatabase/query/query.html similarity index 100% rename from atdb/taskdatabase/templates/query/query.html rename to atdb/taskdatabase/templates/taskdatabase/query/query.html diff --git a/atdb/taskdatabase/templates/query/set_multi_status_panel.html b/atdb/taskdatabase/templates/taskdatabase/query/set_multi_status_panel.html similarity index 79% rename from atdb/taskdatabase/templates/query/set_multi_status_panel.html rename to atdb/taskdatabase/templates/taskdatabase/query/set_multi_status_panel.html index 2328da1a792cdc2525614ce06c3a190b5af6a88d..212fba09695287bc1661a4be59e507dbc47e2cfc 100644 --- a/atdb/taskdatabase/templates/query/set_multi_status_panel.html +++ b/atdb/taskdatabase/templates/taskdatabase/query/set_multi_status_panel.html @@ -10,11 +10,12 @@ <tr> <a href="{% url 'task-multi-hold' 'hold' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-pause"></i> hold</a> <a href="{% url 'task-multi-hold' 'resume' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-play"></i> start</a> - <a href="{% url 'task-multi-setstatus' 'defined' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> defined</a> <a href="{% url 'task-multi-setstatus' 'staged' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> staged</a> + <a href="{% url 'task-multi-setstatus' 'fetched' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> fetched</a> <a href="{% url 'task-multi-setstatus' 'processed' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> processed</a> - <a href="{% url 'task-multi-setstatus' 'validated' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> validated</a> + <a href="{% url 'task-multi-setstatus' 'stored' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> stored</a> + <a href="{% url 'task-multi-setstatus' 'validated' request.GET %}" class="btn btn-success btn-sm" role="button"><i class="fas fa-sync-alt"></i> validated</a> <a href="{% url 'task-multi-setstatus' 'scrubbed' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> scrubbed</a> <a href="{% url 'task-multi-setstatus' 'archived' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> archived</a> <a href="{% url 'task-multi-setstatus' 'finished' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> finished</a> diff --git a/atdb/taskdatabase/templates/taskdatabase/query/status_buttons_per_row.html b/atdb/taskdatabase/templates/taskdatabase/query/status_buttons_per_row.html new file mode 100644 index 0000000000000000000000000000000000000000..a5f3852760f997115badeaf9369dac51bec64c50 --- /dev/null +++ b/atdb/taskdatabase/templates/taskdatabase/query/status_buttons_per_row.html @@ -0,0 +1,14 @@ + + +{% if user.is_staff %} + <a href="{% url 'task-setstatus' record.pk 'defined' request.GET %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-sync-alt"></i> defined</a> + <a href="{% url 'task-setstatus' record.pk 'staged' request.GET %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-sync-alt"></i> staged</a> + <a href="{% url 'task-setstatus' record.pk 'fetched' request.GET %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-sync-alt"></i> fetched</a> + <a href="{% url 'task-setstatus' record.pk 'processed' request.GET %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-sync-alt"></i> processed</a> + <a href="{% url 'task-setstatus' record.pk 'stored' request.GET %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-sync-alt"></i> stored</a> + <a href="{% url 'task-setstatus' record.pk 'validated' request.GET %}" class="btn btn-success btn-sm" role="button"><i class="fas fa-sync-alt"></i> validated</a> + <a href="{% url 'task-setstatus' record.pk 'scrubbed' request.GET %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-sync-alt"></i> scrubbed</a> + <a href="{% url 'task-setstatus' record.pk 'archived' request.GET %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-sync-alt"></i> archived</a> + <a href="{% url 'task-setstatus' record.pk 'finished' request.GET %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-sync-alt"></i> finished</a> + +{% endif %} diff --git a/atdb/taskdatabase/templates/taskdatabase/localstorage_scripts.html b/atdb/taskdatabase/templates/taskdatabase/refresh.html similarity index 55% rename from atdb/taskdatabase/templates/taskdatabase/localstorage_scripts.html rename to atdb/taskdatabase/templates/taskdatabase/refresh.html index a95e03d8cb656fc18a3b66803b65e798aedf3e57..f0a067e624f92f706c27cf62fdfb0dbea47972d6 100644 --- a/atdb/taskdatabase/templates/taskdatabase/localstorage_scripts.html +++ b/atdb/taskdatabase/templates/taskdatabase/refresh.html @@ -14,20 +14,3 @@ }(30)); </script> - - -<script type="text/javascript"> - function readFromLocalStorage(id) { - var s = localStorage.getItem(id); - if (s !== null) { - document.getElementById(id).value = s; - } - } -</script> - -<script type="text/javascript"> -function writeToLocalStorage(id) { - var s = document.getElementById(id).value - localStorage.setItem(id, s); -} -</script> \ No newline at end of file diff --git a/atdb/taskdatabase/templates/taskdatabase/tasks.html b/atdb/taskdatabase/templates/taskdatabase/tasks.html index a9486cfd7d50d78ae22ce5e91deeebc2dffbc109..6aacb705d5498377b213dfa4d2707d59e50be156 100644 --- a/atdb/taskdatabase/templates/taskdatabase/tasks.html +++ b/atdb/taskdatabase/templates/taskdatabase/tasks.html @@ -50,6 +50,7 @@ <td>{{ task.project }}</td> <td>{{ task.sas_id }}</td> + <td>{{ task.filter }} </td> <td>{{ task.creationTime|date:"Y-m-d H:i:s" }} </td> <td>{{ task.size_to_process|filesizeformat }} </td> @@ -71,9 +72,11 @@ <a href="{% url 'task-setstatus-view' task.pk 'validated' my_tasks.number %}" class="btn btn-success btn-sm" role="button"><i class="fas fa-check"></i> validate</a> {% endif %} {% endif %} - </td> - </tr> + {% include "taskdatabase/failures/retry_buttons.html" %} + + </td> + </tr> </div> {% endif %} {% endfor %} diff --git a/atdb/taskdatabase/templates/taskdatabase/tasks/set_status_buttons.html b/atdb/taskdatabase/templates/taskdatabase/tasks/set_status_buttons.html index 151f0117fd36690b2f633aef28310540a51ba0a8..b33c6262098380ddf27a7e850bf2a38249790f01 100644 --- a/atdb/taskdatabase/templates/taskdatabase/tasks/set_status_buttons.html +++ b/atdb/taskdatabase/templates/taskdatabase/tasks/set_status_buttons.html @@ -1,11 +1,11 @@ <a href="{% url 'task-details-setstatus' task.pk 'defining' %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-undo"></i> defining</a> -<a href="{% url 'task-details-setstatus' task.pk 'defined' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> defined</a> -<a href="{% url 'task-details-setstatus' task.pk 'staged' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> staged</a> -<a href="{% url 'task-details-setstatus' task.pk 'fetched' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> fetched</a></td> -<a href="{% url 'task-details-setstatus' task.pk 'processed' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> processed</a></td> -<a href="{% url 'task-details-setstatus' task.pk 'stored' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> stored</a></td> -<a href="{% url 'task-details-setstatus' task.pk 'validated' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> validated</a> -<a href="{% url 'task-details-setstatus' task.pk 'scrubbed' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> scrubbed</a> -<a href="{% url 'task-details-setstatus' task.pk 'archived' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> archived</a> -<a href="{% url 'task-details-setstatus' task.pk 'finished' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> finished</a> -<a href="{% url 'task-details-setstatus' task.pk 'failed (manual)' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> failed (manual)</a> +<a href="{% url 'task-details-setstatus' task.pk 'defined' %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-sync-alt"></i> defined</a> +<a href="{% url 'task-details-setstatus' task.pk 'staged' %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-sync-alt"></i> staged</a> +<a href="{% url 'task-details-setstatus' task.pk 'fetched' %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-sync-alt"></i> fetched</a></td> +<a href="{% url 'task-details-setstatus' task.pk 'processed' %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-sync-alt"></i> processed</a></td> +<a href="{% url 'task-details-setstatus' task.pk 'stored' %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-sync-alt"></i> stored</a></td> +<a href="{% url 'task-details-setstatus' task.pk 'validated' %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-sync-alt"></i> validated</a> +<a href="{% url 'task-details-setstatus' task.pk 'scrubbed' %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-sync-alt"></i> scrubbed</a> +<a href="{% url 'task-details-setstatus' task.pk 'archived' %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-sync-alt"></i> archived</a> +<a href="{% url 'task-details-setstatus' task.pk 'finished' %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-sync-alt"></i> finished</a> +<a href="{% url 'task-details-setstatus' task.pk 'failed (manual)' %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-sync-alt"></i> failed (manual)</a> diff --git a/atdb/taskdatabase/templates/taskdatabase/tasks_headers.html b/atdb/taskdatabase/templates/taskdatabase/tasks_headers.html index d2250230ad212678dc17515a20188904fb4a11ae..638e9c8f637421ae56f2f2705a24b33da98ec439 100644 --- a/atdb/taskdatabase/templates/taskdatabase/tasks_headers.html +++ b/atdb/taskdatabase/templates/taskdatabase/tasks_headers.html @@ -31,6 +31,11 @@ SAS_ID <a href="{% url 'sort-tasks' 'sas_id' 'atdb' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-down"></i></a> </th> + <th> + <a href="{% url 'sort-tasks' '-filter' 'atdb' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-up"></i></a> + Filter + <a href="{% url 'sort-tasks' 'filter' 'atdb' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-down"></i></a> + </th> <th> <a href="{% url 'sort-tasks' '-creationTime' 'atdb' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-up"></i></a> CreationTime diff --git a/atdb/taskdatabase/templates/taskdatabase/validation/annotate_quality.html b/atdb/taskdatabase/templates/taskdatabase/validation/annotate_quality.html new file mode 100644 index 0000000000000000000000000000000000000000..dd0fc8cb4787be3fdca4c936a58fc364e10bafc1 --- /dev/null +++ b/atdb/taskdatabase/templates/taskdatabase/validation/annotate_quality.html @@ -0,0 +1,27 @@ + +{% block myBlock %} +<div class="container-fluid details-container"> + + + <div class="card"> + <div class="card-body"> + <h4>Quality Annotation</h4> + + <form class="post-form" action="{% url 'annotate-quality' task.id %}" method="POST"> + {% csrf_token %} + <div> + {{ form }} + </div> + <div><button class="btn btn-success btn-sm" type="submit"><i class="fas fa-check"></i> OK</button> + <a href="{% url 'validation' %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-times-circle"></i> Cancel</a>  + </div> + </form> + + </div> + </div> +</div> +{% endblock %} + + +{% include "taskdatabase/modal/modal_script.html" %} +{% include "taskdatabase/modal/modal.html" %} \ No newline at end of file diff --git a/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation.html b/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation.html index 01be4de30dbfeb43a0ce38af3bbf06dba9e11ed7..bb8927c18512d14cee2c54c5b126c3ec205e75d8 100644 --- a/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation.html +++ b/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation.html @@ -31,31 +31,40 @@ <td>{{ task.filter }} </td> {% if task.has_quality %} - {% for value in task.quality_as_shortlist %} + {% for value in task.quality_as_list %} <td>{{value}}</td> {% endfor %} <td> - <a href="https://ganglia.grid.surfsara.nl/dcache.php?vo=Lofar&r=day" - class="btn btn-info btn-sm" role="button" target="_blank"><img src="{% static 'taskdatabase/surfsara.jpg' %}" height="20" alt=""></a> + <a href="" + class="btn btn-primary btn-sm" role="button" target="_blank"><img src="{% static 'taskdatabase/surfsara.jpg' %}" height="20" alt="this is a placeholder, links to plots will follow"></a> </td> {% else %} <td>-</td><td>-</td><td>-</td><td>-</td> {% endif %} - - <td>{{ task.quality|default_if_none:"-" }}</td> <td> - <a href="{% url 'task-validate-view' task.pk 'poor' 'validated' my_tasks.number %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-check"></i> P</a> - <a href="{% url 'task-validate-view' task.pk 'moderate' 'validated' my_tasks.number %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-check"></i> M</a> - <a href="{% url 'task-validate-view' task.pk 'good' 'validated' my_tasks.number %}" class="btn btn-success btn-sm" role="button"><i class="fas fa-check"></i> G</a> - + {% if task.get_quality_remarks %} + <a class="open-modal btn btn-warning btn-sm" + href="{% url 'annotate-quality' task.id my_tasks.number %}" + data-popup-url="{% url 'annotate-quality' task.id my_tasks.number %}"> + <i class="fas fa-pen-alt"></i> + </a> + {% else %} + <a class="open-modal btn btn-secondary btn-sm" + href="{% url 'annotate-quality' task.id my_tasks.number %}" + data-popup-url="{% url 'annotate-quality' task.id my_tasks.number %}"> + <i class="fas fa-pen-alt"></i> + </a> + {% endif %} </td> + <td>{{ task.quality|default_if_none:"-" }}</td> + <td>{% include "taskdatabase/validation/validation_buttons.html" %}</td> - </tr> - </div> + </tr> + </div> {% endif %} {% endfor %} {% include "taskdatabase/modal/modal_script.html" %} -{% include "taskdatabase/modal/modal.html" %} \ No newline at end of file +{% include "taskdatabase/modal/modal_no_close.html" %} \ No newline at end of file diff --git a/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation_headers.html b/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation_headers.html index e6911c18081cebeddeff56897b42b10d9c8fe8e5..279efc63cf5d05183408bca39270087dd48b5943 100644 --- a/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation_headers.html +++ b/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation_headers.html @@ -25,6 +25,7 @@ <th>Sensitivity</th> <th>Conditions</th> <th>Plots</th> - <th>Current Q</th> - <th>Choose</th> + <th>Annotate</th> + <th>Quality</th> + <th>Validate (choose a Q)</th> </tr> \ No newline at end of file diff --git a/atdb/taskdatabase/templates/taskdatabase/validation/validation_buttons.html b/atdb/taskdatabase/templates/taskdatabase/validation/validation_buttons.html new file mode 100644 index 0000000000000000000000000000000000000000..70b6c62fa718dc18bd557e7b7ff032953056c7c8 --- /dev/null +++ b/atdb/taskdatabase/templates/taskdatabase/validation/validation_buttons.html @@ -0,0 +1,3 @@ + <a href="{% url 'task-validate-view' task.pk 'poor' 'validated' my_tasks.number %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-check"></i> P</a> + <a href="{% url 'task-validate-view' task.pk 'moderate' 'validated' my_tasks.number %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-check"></i> M</a> + <a href="{% url 'task-validate-view' task.pk 'good' 'validated' my_tasks.number %}" class="btn btn-success btn-sm" role="button"><i class="fas fa-check"></i> G</a> diff --git a/atdb/taskdatabase/templates/taskdatabase/validation/validation_page.html b/atdb/taskdatabase/templates/taskdatabase/validation/validation_page.html index 88a9b12ab2b51ec097c0bbecc311f33e1c9dda52..904b6883c7111725eafd5d58ea7c9c2c95f671b8 100644 --- a/atdb/taskdatabase/templates/taskdatabase/validation/validation_page.html +++ b/atdb/taskdatabase/templates/taskdatabase/validation/validation_page.html @@ -4,13 +4,17 @@ {% block myBlock %} <div class="container-fluid details-container"> + <div class="card"> <div class="card-body"> <div class="row"> - <div class="col-8"> + <div class="col-12"> <h3>Validation</h3> - These are the tasks in status 'stored' that can be validated. Click one of the quality buttons to validate. + + These are the tasks in status <b>stored</b> that can be validated. Click one of the quality buttons to validate. + <td>{% include 'taskdatabase/filter/search.html' %}</td> + <hr> </div> </div> @@ -44,7 +48,7 @@ </div> </div> -{% include 'taskdatabase/localstorage_scripts.html' %} +{% include 'taskdatabase/no_refresh.html' %} {% endblock %} diff --git a/atdb/taskdatabase/urls.py b/atdb/taskdatabase/urls.py index fa5b2c7d4bb9a5e9e210c7e600b455cbde793a21..9d0a5aaa55a15fcbb52c3b10fbfd3bbbc041e1d1 100644 --- a/atdb/taskdatabase/urls.py +++ b/atdb/taskdatabase/urls.py @@ -21,8 +21,11 @@ urlpatterns = [ path('task_details/<int:id>/<page>', views.TaskDetails, name='task-details'), path('task_details/', views.TaskDetails, name='task-details'), - path('task_quality/<int:id>/<page>', views.TaskQuality, name='task-quality'), - path('task_quality/', views.TaskQuality, name='task-quality'), + path('task_quality/<int:id>/<page>', views.ShowTaskQuality, name='task-quality'), + path('task_quality/', views.ShowTaskQuality, name='task-quality'), + path('annotate_quality/<int:id>/<page>', views.AnnotateQuality, name='annotate-quality'), + path('annotate_quality/<int:id>', views.AnnotateQuality, name='annotate-quality'), + path('annotate_quality/', views.AnnotateQuality, name='annotate-quality'), path('show-inputs/<int:id>/', views.ShowInputs, name='show-inputs'), path('show-outputs/<int:id>/', views.ShowOutputs, name='show-outputs'), diff --git a/atdb/taskdatabase/views.py b/atdb/taskdatabase/views.py index 30cd37630cc91c5b53b826e9f3dab116ec14cd42..0fc33ba7a9836c4b4adcfc2dc68553caf270ae45 100644 --- a/atdb/taskdatabase/views.py +++ b/atdb/taskdatabase/views.py @@ -27,6 +27,7 @@ from rest_framework.request import Request from django.conf import settings from .models import Task, Status, Workflow, LogEntry, Configuration, Job, PostProcessingRule, Monitor, LatestMonitor from .tables import TaskTable +from .forms import QualityAnnotationForm from django.db.models import Q from .serializers import \ @@ -161,7 +162,7 @@ class QueryView(SingleTableMixin, FilterView): model = Task # queryset = Task.objects.filter(task_type='regular') queryset = Task.objects.all() - template_name = "query/index.html" + template_name = "taskdatabase/query/index.html" filterset_class = TaskFilterQueryPage def get_table_data(self): @@ -361,7 +362,6 @@ class ShowQualityPage(ListView): tasks = get_filtered_tasks(search_box, sort) # exclude the tasks without quality information - #tasks = tasks.exclude(outputs__isnull=True) tasks = tasks.exclude(outputs__quality__isnull=True) #tasks = tasks.exclude(outputs__0__quality__isnull=True) @@ -421,7 +421,7 @@ class ShowValidationPage(ListView): if (search_box is not None): tasks = get_filtered_tasks(search_box, sort, stored_tasks) - # exclude the tasks without quality information + # exclude the failed tasks tasks = tasks.exclude(status__icontains="failed") paginator = Paginator(tasks, config.TASKS_PER_PAGE) # Show 50 tasks per page @@ -525,7 +525,7 @@ def get_filtered_tasks(search, sort, tasks=None): class TaskTables2View(SingleTableView): model = Task table_class = TaskTable - template_name = 'query/query.html' + template_name = 'taskdatabase/query/query.html' def TaskDetails(request, id=0, page=0): @@ -554,7 +554,7 @@ def TaskDetails(request, id=0, page=0): return render(request, "taskdatabase/tasks/task_details.html", {'task': task, 'logentries': logentries_html}) -def TaskQuality(request, id=0, page=0): +def ShowTaskQuality(request, id=0, page=0): try: task = Task.objects.get(id=id) @@ -579,6 +579,35 @@ def TaskQuality(request, id=0, page=0): return render(request, "taskdatabase/tasks/task_quality.html", {'task': task, 'quality': quality_html}) +def AnnotateQuality(request, id=0, page=0, new_remark=""): + + # a POST means that the form is filled in and should be stored in the database + if request.method == "POST": + + form = QualityAnnotationForm(request.POST) + + if form.is_valid(): + task = Task.objects.get(id=id) + try: + task.remarks['quality'] = request.POST.get("annotation","") + except: + task.remarks = {} + task.remarks['quality'] = request.POST.get("annotation","") + + task.save() + return redirect('/atdb/validation?page='+request.POST.get("return_to_page",1)) + + else: + # a GET means that the form should be presented to be filled in + task = Task.objects.get(id=id) + try: + quality_remarks = task.remarks['quality'] + except: + quality_remarks = "" + + form = QualityAnnotationForm(initial={'annotation': quality_remarks, 'return_to_page': page}) + return render(request, "taskdatabase/validation/annotate_quality.html", {'task': task, 'page': page, 'form':form}) + def ShowInputs(request, id): task = Task.objects.get(id=id) @@ -614,7 +643,7 @@ def ShowConfig(request): def ShowDashboard(request, selection): # gather the results results_tasks, results_logs = algorithms.construct_dashboard_html(request, selection) - return render(request, "dashboard/dashboard.html", + return render(request, "taskdatabase/dashboard/dashboard.html", {'results_tasks': results_tasks, 'results_logs': results_logs, 'selection': selection}) @@ -1062,7 +1091,7 @@ def TaskMultiStatus(request, new_status, query_params): current_query_params = convert_query_params_to_url(query_params) request.session['current_query_params'] = current_query_params - return render(request, "query/confirm_multi_change.html", {'new_value': new_status, 'count': count}) + return render(request, "taskdatabase/query/confirm_multi_change.html", {'new_value': new_status, 'count': count}) @login_required @@ -1086,7 +1115,7 @@ def TaskMultiHold(request, onhold, query_params): current_query_params = convert_query_params_to_url(query_params) request.session['current_query_params'] = current_query_params - return render(request, "query/confirm_multi_change.html", {'new_value': onhold, 'count': count}) + return render(request, "taskdatabase/query/confirm_multi_change.html", {'new_value': onhold, 'count': count}) # /atdb/get_size?status__in=defined,staged