Enhance case description and presentation styles with dark mode support

This commit is contained in:
Ross
2026-03-09 11:40:50 +00:00
parent 996ef4877c
commit 42bffc0c07
+100 -72
View File
@@ -147,6 +147,32 @@
.case-meta-value { display: flex; align-items: center; gap: .5rem; justify-content: flex-end; } .case-meta-value { display: flex; align-items: center; gap: .5rem; justify-content: flex-end; }
.case-meta-item .badge { display: inline-block; margin-left: .25rem; margin-right: 0; } .case-meta-item .badge { display: inline-block; margin-left: .25rem; margin-right: 0; }
.case-meta-item > .case-meta-value > div { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .case-meta-item > .case-meta-value > div { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
}
/* Description & Presentation visual improvements */
.case-description { background: #eef3f73d; border: 1px solid rgba(0,0,0,0.08); padding: .75rem; border-radius: .375rem; }
.case-description strong { font-size: 1.05rem; margin-right: .5rem; }
.case-description .case-inline-field { margin-top: .5rem; }
.case-presentation ul { list-style: none; padding-left: 0; margin: .25rem 0 0 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.case-presentation li { background: rgba(13,110,253,0.12); color: #0b5ed7; padding: .25rem .5rem; border-radius: .25rem; font-size: .9rem; }
.case-presentation b { margin-right: .5rem; }
/* Dark mode adjustments */
@media (prefers-color-scheme: dark) {
.case-description {
background: #0f1720;
border: 1px solid rgba(255,255,255,0.06);
color: #e6eef8;
}
.case-description strong { color: #ffffff; }
.case-description .case-inline-field { color: #e6eef8; }
.case-presentation li { background: rgba(255,255,255,0.03); color: #9ec5ff; }
.quick-edit-wrap .quick-edit-button,
.case-meta-item .quick-edit-button {
background: rgba(255,255,255,0.04) !important;
color: #9ec5ff !important;
border: 1px solid rgba(255,255,255,0.06);
}
} }
</style> </style>
@@ -286,11 +312,83 @@
data-named-stacks='{{case.get_case_named_stacks}}' data-named-stacks='{{case.get_case_named_stacks}}'
></div> ></div>
</details> </details>
<div class="pre-whitespace multi-image-block"><b>Series:</b>
<form>
<div class="d-flex flex-wrap gap-2 align-items-start" id="case-series-row">
{% partial case-series %}
</div>
</form>
<span>
<button type="button"
class="btn btn-info"
onclick="window.location.href='{% url 'atlas:user_uploads_case' case_id=case.pk %}'">
Import new uploads
</button><br />
<details class="series-actions" id="series-actions">
<summary>
<button type="button" class="btn btn-primary" title="Click to manage series" onclick="this.closest('details').open = !this.closest('details').open;">
Manage Series
</button>
</summary>
<a href="{% url 'atlas:series_id_create' pk=case.pk %}">Create and add new series</a><br />
<button hx-get="{% url 'atlas:case_order_dicom' pk=case.pk %}"
title="order dicom by slice location"
hx-target="#series-action-results"
hx-swap="innerHTML"
hx-confirm="This will reorder all case series based upon slice location"
>
Order dicoms by slice location
</button>
<button hx-post="{% url 'atlas:combine_series' %}"
title="merge series"
hx-include="[name='series-ids']"
hx-target="#series-action-results"
hx-swap="innerHTML"
hx-confirm="This will merge all selected series into one"
>
Merge selected series
</button>
<button hx-post="{% url 'atlas:use_dates_as_descriptions' case.pk %}"
title="merge series"
hx-include="[name='series-ids']"
hx-target="#series-action-results"
hx-swap="innerHTML"
hx-confirm="This will use the dicom date as the series description"
>
Use dates as description
</button>
<button hx-post="{% url 'atlas:remove_selected_series_from_case' case.pk %}"
title="remove selected series from this case"
hx-include="[name='series-ids']:checked"
hx-target="#series-action-results"
hx-swap="innerHTML"
hx-confirm="Are you sure you want to remove the selected series from this case? They will not be deleted from the database."
class="btn btn-warning mt-2"
type="button"
>
Remove selected series from case
</button>
<button type="button"
class="btn btn-secondary mt-2"
data-bs-toggle="modal"
data-bs-target="#reorderSeriesModal">
Reorder series
</button>
<br/>
<div class="alert alert-info mt-2" id="series-action-alert" style="display:none;">
<span id="series-action-results" ></span>
</div>
</details>
</span>
</div>
<div class="container"> <div class="container">
<div class="row g-3 mb-3"> <div class="row g-3 mb-3">
<div class="col-12 col-md-8"> <div class="col-12 col-md-8">
<div class="mb-3"> <div class="mb-3 case-description">
<div class="d-flex align-items-start justify-content-between quick-edit-wrap"> <div class="d-flex align-items-start justify-content-between quick-edit-wrap">
<div class="d-flex align-items-start flex-grow-1"> <div class="d-flex align-items-start flex-grow-1">
<span class="section-icon description" aria-hidden="true"></span> <span class="section-icon description" aria-hidden="true"></span>
@@ -309,7 +407,7 @@
</div> </div>
</div> </div>
<div class="mb-3"> <div class="mb-3 case-presentation">
<p> <p>
<span class="section-icon presentation" aria-hidden="true"></span> <span class="section-icon presentation" aria-hidden="true"></span>
<b>Presentation:</b> <b>Presentation:</b>
@@ -461,76 +559,6 @@
</div> </div>
</div> </div>
<div class="pre-whitespace multi-image-block"><b>Series:</b>
<form>
<div class="d-flex flex-wrap gap-2 align-items-start" id="case-series-row">
{% partial case-series %}
</div>
</form>
<span>
<button type="button"
class="btn btn-info"
onclick="window.location.href='{% url 'atlas:user_uploads_case' case_id=case.pk %}'">
Import new uploads
</button><br />
<details class="series-actions" id="series-actions">
<summary>
<button type="button" class="btn btn-primary" title="Click to manage series" onclick="this.closest('details').open = !this.closest('details').open;">
Manage Series
</button>
</summary>
<a href="{% url 'atlas:series_id_create' pk=case.pk %}">Create and add new series</a><br />
<button hx-get="{% url 'atlas:case_order_dicom' pk=case.pk %}"
title="order dicom by slice location"
hx-target="#series-action-results"
hx-swap="innerHTML"
hx-confirm="This will reorder all case series based upon slice location"
>
Order dicoms by slice location
</button>
<button hx-post="{% url 'atlas:combine_series' %}"
title="merge series"
hx-include="[name='series-ids']"
hx-target="#series-action-results"
hx-swap="innerHTML"
hx-confirm="This will merge all selected series into one"
>
Merge selected series
</button>
<button hx-post="{% url 'atlas:use_dates_as_descriptions' case.pk %}"
title="merge series"
hx-include="[name='series-ids']"
hx-target="#series-action-results"
hx-swap="innerHTML"
hx-confirm="This will use the dicom date as the series description"
>
Use dates as description
</button>
<button hx-post="{% url 'atlas:remove_selected_series_from_case' case.pk %}"
title="remove selected series from this case"
hx-include="[name='series-ids']:checked"
hx-target="#series-action-results"
hx-swap="innerHTML"
hx-confirm="Are you sure you want to remove the selected series from this case? They will not be deleted from the database."
class="btn btn-warning mt-2"
type="button"
>
Remove selected series from case
</button>
<button type="button"
class="btn btn-secondary mt-2"
data-bs-toggle="modal"
data-bs-target="#reorderSeriesModal">
Reorder series
</button>
<br/>
<div class="alert alert-info mt-2" id="series-action-alert" style="display:none;">
<span id="series-action-results" ></span>
</div>
</details>
</span>
</div>
{% comment %} <p><b>Scrapped:</b> {{ case.scrapped }} <a {% comment %} <p><b>Scrapped:</b> {{ case.scrapped }} <a
href="{% url 'atlas:case_scrap' pk=case.pk %}">(toggle)</a> {% endcomment %} href="{% url 'atlas:case_scrap' pk=case.pk %}">(toggle)</a> {% endcomment %}