Enhance case size rendering and update form field attributes for better UI integration

This commit is contained in:
Ross
2026-05-28 23:10:27 +01:00
parent c1005712e0
commit d74cfe73e0
3 changed files with 40 additions and 3 deletions
+6 -1
View File
@@ -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)
+22 -2
View File
@@ -174,7 +174,7 @@
class="btn btn-primary"
>Import {% if case %}into case{% endif %}</button>
<button id="import-into-case-button" type="button" class="btn btn-outline-primary" data-bs-toggle="modal" data-bs-target="#caseSelectModal">Import into case…</button>
<button id="import-case-series-button" type="button" class="btn btn-outline-success" data-bs-toggle="modal" data-bs-target="#caseSeriesModal" disabled>Import as case series…</button>
<button id="import-case-series-button" type="button" class="btn btn-outline-success" data-bs-toggle="modal" data-bs-target="#caseSeriesModal" disabled>Import as case series…</button>
</div>
<div id="import-status" class="mt-3"></div>
@@ -250,7 +250,11 @@
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-success">Create linked cases</button>
<div id="case-series-submit-loading" class="d-none text-muted small me-2">
<span class="spinner-border spinner-border-sm me-1" role="status" aria-hidden="true"></span>
Creating linked cases...
</div>
<button id="case-series-submit-button" type="submit" class="btn btn-success">Create linked cases</button>
</div>
</form>
</div>
@@ -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(`<div class="alert alert-danger mb-0">Linked case import failed. ${error?.message || ''}</div>`);
} finally {
if (submitLoading) {
submitLoading.classList.add('d-none');
}
if (submitBtn) {
submitBtn.classList.remove('d-none');
submitBtn.disabled = false;
}
setImportButtonsDisabled(false);
updateSelectionCount();
}
+12
View File
@@ -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,