diff --git a/atlas/static/atlas/js/markup_inserter.js b/atlas/static/atlas/js/markup_inserter.js index d58db45c..f60dfbfc 100644 --- a/atlas/static/atlas/js/markup_inserter.js +++ b/atlas/static/atlas/js/markup_inserter.js @@ -293,9 +293,9 @@ function getDetailUrl(type, pk){ if(!type || !pk) return null; - if(type === 'seriesfinding') return window.location.origin + '/atlas/series_finding/' + pk + '/details/'; + if(type === 'seriesfinding') return window.location.origin + '/atlas/series_finding/' + pk + '/preview/'; if(type === 'finding') return window.location.origin + '/atlas/finding/' + pk; - if(type === 'displayset') return window.location.origin + '/' + 'atlas/' + pk + '/display_sets/detail'; + if(type === 'displayset') return window.location.origin + '/atlas/displayset/' + pk + '/preview/'; if(type === 'case') return window.location.origin + '/atlas/case/' + pk + '/'; return null; } diff --git a/atlas/templates/atlas/partials/_displayset_preview.html b/atlas/templates/atlas/partials/_displayset_preview.html new file mode 100644 index 00000000..1c14985b --- /dev/null +++ b/atlas/templates/atlas/partials/_displayset_preview.html @@ -0,0 +1,12 @@ +
+
Display Set
+
Case: {{ ds.case.title }}
+
Name: {{ ds.name|default:'(unnamed)' }}
+ {% if ds.description %} +
{{ ds.description }}
+ {% endif %} +
+ Open full + +
+
diff --git a/atlas/templates/atlas/partials/_seriesfinding_preview.html b/atlas/templates/atlas/partials/_seriesfinding_preview.html new file mode 100644 index 00000000..41ead413 --- /dev/null +++ b/atlas/templates/atlas/partials/_seriesfinding_preview.html @@ -0,0 +1,18 @@ +
+
Series Finding
+
Series: {% if finding.series %}{{ finding.series.get_block|truncatechars:80 }}{% else %}—{% endif %}
+
{{ finding.description|default:'(no description)' }}
+ {% if finding.findings.all %} +
Findings: + +
+ {% endif %} +
+ Open full + Open series +
+
diff --git a/atlas/urls.py b/atlas/urls.py index 9645a34f..a825ba1d 100755 --- a/atlas/urls.py +++ b/atlas/urls.py @@ -397,6 +397,7 @@ urlpatterns = [ path("/display_sets/edit", views.case_displaysets_edit, name="case_displaysets_edit"), path("/display_sets/detail", views.case_displaysets_detail, name="case_displaysets_detail"), path("/display_sets/modal", views.case_displaysets_modal, name="case_displaysets_modal"), + path('displayset//preview/', views.displayset_preview, name='displayset_preview'), path("/display_sets/delete", views.case_displaysets_delete, name="case_displaysets_delete"), path( "case//dicom_json", @@ -433,6 +434,7 @@ urlpatterns = [ path('series///remove-from-case/', views.remove_series_from_case, name='remove_series_from_case'), path('series/bulk-delete/', views.series_bulk_delete, name='series_bulk_delete'), path('series_finding//details/', views.series_finding_details, name='series_finding_details'), + path('series_finding//preview/', views.series_finding_preview, name='series_finding_preview'), path('series_finding/migration-status/', views.seriesfinding_migration_status, name='seriesfinding_migration_status'), path("uncategorised_dicoms/", views.uncategorised_dicoms, name="uncategorised_dicoms_view"), path("question_schema/", views.QuestionSchemaView.as_view(), name="question_schema_overview"), diff --git a/atlas/views.py b/atlas/views.py index 299b2caf..3812eb58 100755 --- a/atlas/views.py +++ b/atlas/views.py @@ -725,6 +725,12 @@ def case_displaysets_modal(request, pk): can_edit = False return render(request, 'atlas/case_displayset_modal.html', {'ds': displayset, 'can_edit': can_edit}) + +def displayset_preview(request, pk): + """Return a compact HTML fragment summarising a CaseDisplaySet for popups/modals.""" + displayset = get_object_or_404(CaseDisplaySet, pk=pk) + return render(request, 'atlas/partials/_displayset_preview.html', {'ds': displayset}) + def case_displaysets_delete(request, pk): try: displayset = CaseDisplaySet.objects.get(pk=pk) @@ -6157,6 +6163,13 @@ def series_finding_details(request, finding_id): finding = get_object_or_404(SeriesFinding, pk=finding_id) return render(request, 'atlas/series_finding_details.html', {'finding': finding}) + +@login_required +def series_finding_preview(request, finding_id): + """Return a small HTML fragment summarising a SeriesFinding for popups/modals.""" + finding = get_object_or_404(SeriesFinding, pk=finding_id) + return render(request, 'atlas/partials/_seriesfinding_preview.html', {'finding': finding}) + @login_required def series_finding_related(request, series_id): series = get_object_or_404(Series, pk=series_id)