From d74cfe73e0d46b683d2ad18487ba74c5b6f40908 Mon Sep 17 00:00:00 2001 From: Ross Date: Thu, 28 May 2026 23:10:27 +0100 Subject: [PATCH] Enhance case size rendering and update form field attributes for better UI integration --- atlas/tables.py | 7 ++++++- atlas/templates/atlas/user_uploads.html | 24 ++++++++++++++++++++++-- atlas/views.py | 12 ++++++++++++ 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/atlas/tables.py b/atlas/tables.py index 01e06eab..c5ad1df0 100755 --- a/atlas/tables.py +++ b/atlas/tables.py @@ -160,7 +160,12 @@ class CaseTable(SelectionTable): return mark_safe(", ".join(links)) return "No collections" - def render_case_size(self, value): + def render_case_size(self, value, record): + if value is None: + try: + value = record.get_total_series_images_size() + except Exception: + value = None if value is None: return "-" return filesizeformat(value) diff --git a/atlas/templates/atlas/user_uploads.html b/atlas/templates/atlas/user_uploads.html index d8376e5a..ee98856b 100644 --- a/atlas/templates/atlas/user_uploads.html +++ b/atlas/templates/atlas/user_uploads.html @@ -174,7 +174,7 @@ class="btn btn-primary" >Import {% if case %}into case{% endif %} - +
@@ -250,7 +250,11 @@ @@ -468,6 +472,8 @@ if (caseSeriesForm) { caseSeriesForm.addEventListener('submit', async function (event) { event.preventDefault(); + const submitBtn = document.getElementById('case-series-submit-button'); + const submitLoading = document.getElementById('case-series-submit-loading'); const selectedSeries = getSelectedSeriesUids(); const selectedStudies = getSelectedStudyUids(); if (!selectedSeries.length || selectedStudies.size < 2) { @@ -484,6 +490,13 @@ } setImportButtonsDisabled(true); + if (submitBtn) { + submitBtn.classList.add('d-none'); + submitBtn.disabled = true; + } + if (submitLoading) { + submitLoading.classList.remove('d-none'); + } try { const response = await fetch("{% url 'atlas:uploads_import_case_series_htmx' %}", { method: 'POST', @@ -505,6 +518,13 @@ } catch (error) { appendImportStatus(`
Linked case import failed. ${error?.message || ''}
`); } finally { + if (submitLoading) { + submitLoading.classList.add('d-none'); + } + if (submitBtn) { + submitBtn.classList.remove('d-none'); + submitBtn.disabled = false; + } setImportButtonsDisabled(false); updateSelectionCount(); } diff --git a/atlas/views.py b/atlas/views.py index 5583923c..ef053f12 100755 --- a/atlas/views.py +++ b/atlas/views.py @@ -3451,6 +3451,18 @@ def user_uploads( case_series_form = CaseForm(user=request.user) case_series_form.fields["previous_case"].required = False case_series_form.fields["previous_case"].widget = HiddenInput() + for field_name in ("condition", "presentation", "procedures"): + field = case_series_form.fields.get(field_name) + if field is None: + continue + attrs = dict(getattr(field.widget, "attrs", {}) or {}) + attrs.update( + { + "data-dropdown-parent": "#caseSeriesModal", + "data-width": "100%", + } + ) + field.widget.attrs = attrs return render( request,