diff --git a/app/__init__.py b/app/__init__.py index 76f3664cd..2a22fb841 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -33,6 +33,7 @@ from app.asset_fingerprinter import asset_fingerprinter from app.config import configs from app.extensions import redis_client from app.formatters import ( + convert_time_unixtimestamp, convert_markdown_template, convert_to_boolean, format_auth_type, diff --git a/app/assets/javascripts/sortAlphanumeric.js b/app/assets/javascripts/sortAlphanumeric.js new file mode 100644 index 000000000..726f7b2cd --- /dev/null +++ b/app/assets/javascripts/sortAlphanumeric.js @@ -0,0 +1,14 @@ +(function (window) { + // document.addEventListener("DOMContentLoaded", function() { + // const rows = document.querySelectorAll('td.table-field.file-name'); + + // rows.forEach(row => { + // let sortValue = row.getAttribute('data-sort-value'); + // if (sortValue) { + // // Remove non-numeric characters to ensure numerical comparison + // sortValue = sortValue.replace(/\D/g, ''); + // row.setAttribute('data-sort-value', sortValue); + // } + // }); + // }); +})(window); diff --git a/app/formatters.py b/app/formatters.py index 5cb3feeaf..c427c2a9a 100644 --- a/app/formatters.py +++ b/app/formatters.py @@ -231,6 +231,11 @@ def naturaltime_without_indefinite_article(date): ) +def convert_time_unixtimestamp(date_string): + dt = datetime.fromisoformat(date_string) + return int(dt.timestamp()) + + def format_delta(date): # This method assumes that date is in UTC date = parse_naive_dt(date) diff --git a/app/main/views/activity.py b/app/main/views/activity.py index f8e0f8dba..a415dc4d5 100644 --- a/app/main/views/activity.py +++ b/app/main/views/activity.py @@ -3,7 +3,7 @@ from flask_login import current_user from werkzeug.utils import redirect from app import current_service, job_api_client -from app.formatters import get_time_left +from app.formatters import get_time_left, convert_time_unixtimestamp from app.main import main from app.utils.pagination import ( generate_next_dict, @@ -35,7 +35,8 @@ def all_jobs_activity(service_id): service_data_retention_days=service_data_retention_days, next_page=next_page, prev_page=prev_page, - pagination=pagination + pagination=pagination, + jobs=jobs ) @@ -56,10 +57,16 @@ def generate_job_dict(jobs): return [ { "job_id": job["id"], + "sort_value": hashlib.sha1(job["id"].encode("utf-8")).hexdigest(), + "job_sort_value": job["id"].replace("-", ""), "time_left": get_time_left(job["created_at"]), "download_link": url_for(".view_job_csv", service_id=current_service.id, job_id=job["id"]), "view_job_link": url_for(".view_job", service_id=current_service.id, job_id=job["id"]), "created_at": job["created_at"], + "time_sent_data_value": convert_time_unixtimestamp(job["processing_finished"] if job["processing_finished"] else job["processing_started"] + if job["processing_started"] else job["created_at"]), + "processing_finished": job["processing_finished"], + "processing_started": job["processing_started"], "notification_count": job["notification_count"], "created_by": job["created_by"], "template_name": job["template_name"] diff --git a/app/templates/views/activity/all-activity.html b/app/templates/views/activity/all-activity.html index 8a48b6050..ad98dd9c6 100644 --- a/app/templates/views/activity/all-activity.html +++ b/app/templates/views/activity/all-activity.html @@ -65,45 +65,36 @@ {% block maincolumn_content %} -
| + | Job ID# | Template | - Status + Time sent | Sender | - Reports - | -- # of Recipients - | -- Message parts used - | -- Delivery rate + Report |
|---|---|---|---|---|---|---|---|---|
| + | ||||||||
| + + {{ job.job_id if job.job_id else 'Manually entered number' }} + | +{{ job.template_name }} | -- {{ job.created_at | format_datetime_table }} + | + {{ (job.processing_finished if job.processing_finished else job.processing_started + if job.processing_started else job.created_at)|format_datetime_table }} |
{{ job.created_by.name }}
@@ -130,25 +128,19 @@
{% if job.time_left != "Data no longer available" %}
|
- - {{ job.notification_count}} - | |||
- Note: Report data is only available for 7 days after your message has been sent -
+ +Note: Report data is only available for 7 days after your message has been sent