Refactor code structure for improved readability and maintainability
This commit is contained in:
@@ -351,6 +351,7 @@
|
|||||||
</aside>
|
</aside>
|
||||||
|
|
||||||
<aside id="viewerSidebar" class="viewer-sidebar" aria-label="Viewer sidebar">
|
<aside id="viewerSidebar" class="viewer-sidebar" aria-label="Viewer sidebar">
|
||||||
|
<div id="viewer-sidebar-resize-handle" class="viewer-sidebar-resize-handle" title="Drag to resize sidebar" aria-hidden="true"></div>
|
||||||
<div class="viewer-sidebar-header">
|
<div class="viewer-sidebar-header">
|
||||||
<span class="fw-semibold">Viewer</span>
|
<span class="fw-semibold">Viewer</span>
|
||||||
<button type="button" class="btn btn-sm btn-outline-secondary" id="viewer-sidebar-close-btn">Close</button>
|
<button type="button" class="btn btn-sm btn-outline-secondary" id="viewer-sidebar-close-btn">Close</button>
|
||||||
@@ -545,6 +546,18 @@
|
|||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.viewer-sidebar-resize-handle {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 10px;
|
||||||
|
height: 100%;
|
||||||
|
cursor: ew-resize;
|
||||||
|
z-index: 3;
|
||||||
|
background: linear-gradient(to right, rgba(100,181,246,0.28), rgba(100,181,246,0));
|
||||||
|
touch-action: none;
|
||||||
|
}
|
||||||
|
|
||||||
.viewer-sidebar.open {
|
.viewer-sidebar.open {
|
||||||
transform: translateX(0);
|
transform: translateX(0);
|
||||||
}
|
}
|
||||||
@@ -990,6 +1003,7 @@
|
|||||||
var sidebarBody = document.getElementById('viewerSidebarBody');
|
var sidebarBody = document.getElementById('viewerSidebarBody');
|
||||||
var sidebarBtn = document.getElementById('viewer-sidebar-btn');
|
var sidebarBtn = document.getElementById('viewer-sidebar-btn');
|
||||||
var sidebarCloseBtn = document.getElementById('viewer-sidebar-close-btn');
|
var sidebarCloseBtn = document.getElementById('viewer-sidebar-close-btn');
|
||||||
|
var sidebarResizeHandle = document.getElementById('viewer-sidebar-resize-handle');
|
||||||
var popoutBtn = document.getElementById('viewer-popout-btn');
|
var popoutBtn = document.getElementById('viewer-popout-btn');
|
||||||
var mainViewerEl = document.getElementById('main_viewer');
|
var mainViewerEl = document.getElementById('main_viewer');
|
||||||
var rootStyle = document.documentElement.style;
|
var rootStyle = document.documentElement.style;
|
||||||
@@ -1031,6 +1045,41 @@
|
|||||||
sidebarResizeObserver.observe(sidebarEl);
|
sidebarResizeObserver.observe(sidebarEl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sidebarResizeHandle && sidebarEl) {
|
||||||
|
var sidebarResizing = false;
|
||||||
|
var sidebarStartX = 0;
|
||||||
|
var sidebarStartWidth = 0;
|
||||||
|
|
||||||
|
var onSidebarPointerMove = function (event) {
|
||||||
|
if (!sidebarResizing) return;
|
||||||
|
var delta = sidebarStartX - event.clientX;
|
||||||
|
var nextWidth = sidebarStartWidth + delta;
|
||||||
|
applySidebarWidth(nextWidth);
|
||||||
|
};
|
||||||
|
|
||||||
|
var stopSidebarResize = function () {
|
||||||
|
if (!sidebarResizing) return;
|
||||||
|
sidebarResizing = false;
|
||||||
|
document.body.style.cursor = '';
|
||||||
|
document.body.style.userSelect = '';
|
||||||
|
var width = Math.round(sidebarEl.getBoundingClientRect().width);
|
||||||
|
localStorage.setItem(SIDEBAR_W_KEY, width);
|
||||||
|
};
|
||||||
|
|
||||||
|
sidebarResizeHandle.addEventListener('pointerdown', function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
sidebarResizing = true;
|
||||||
|
sidebarStartX = event.clientX;
|
||||||
|
sidebarStartWidth = sidebarEl.getBoundingClientRect().width;
|
||||||
|
document.body.style.cursor = 'ew-resize';
|
||||||
|
document.body.style.userSelect = 'none';
|
||||||
|
});
|
||||||
|
|
||||||
|
window.addEventListener('pointermove', onSidebarPointerMove);
|
||||||
|
window.addEventListener('pointerup', stopSidebarResize);
|
||||||
|
window.addEventListener('pointercancel', stopSidebarResize);
|
||||||
|
}
|
||||||
|
|
||||||
var persistHeight = function () {
|
var persistHeight = function () {
|
||||||
localStorage.setItem(HEIGHT_KEY, Math.round(container.getBoundingClientRect().height));
|
localStorage.setItem(HEIGHT_KEY, Math.round(container.getBoundingClientRect().height));
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -7866,6 +7866,22 @@ def collection_case_view(request, pk, case_number=None, case_id=None):
|
|||||||
casedetail = CaseDetail.objects.get(case=case, collection=collection)
|
casedetail = CaseDetail.objects.get(case=case, collection=collection)
|
||||||
|
|
||||||
series_list = case.series.all().prefetch_related("images", "examination", "plane")
|
series_list = case.series.all().prefetch_related("images", "examination", "plane")
|
||||||
|
ordered_series = list(getattr(case, "ordered_series", case.get_ordered_series()))
|
||||||
|
for series in ordered_series:
|
||||||
|
prefetched_images = getattr(series, "_prefetched_objects_cache", {}).get("images")
|
||||||
|
if prefetched_images is not None:
|
||||||
|
series.visible_image_count = len(prefetched_images)
|
||||||
|
else:
|
||||||
|
series.visible_image_count = series.images.filter(removed=False).count()
|
||||||
|
|
||||||
|
move_series_form = MoveSelectedSeriesForm(user=request.user, source_case=case)
|
||||||
|
move_series_recent_cases = list(
|
||||||
|
get_cases_available_to_user(request.user)
|
||||||
|
.exclude(pk=case.pk)
|
||||||
|
.filter(author=request.user)
|
||||||
|
.order_by("-created_date")
|
||||||
|
.prefetch_related("author", "condition", "presentation", "subspecialty")[:5]
|
||||||
|
)
|
||||||
|
|
||||||
previous = collection.get_previous_case(casedetail.case)
|
previous = collection.get_previous_case(casedetail.case)
|
||||||
next = collection.get_next_case(casedetail.case)
|
next = collection.get_next_case(casedetail.case)
|
||||||
@@ -7881,12 +7897,17 @@ def collection_case_view(request, pk, case_number=None, case_id=None):
|
|||||||
"case": case,
|
"case": case,
|
||||||
"casedetail": casedetail,
|
"casedetail": casedetail,
|
||||||
"series_list": series_list,
|
"series_list": series_list,
|
||||||
|
"ordered_series": ordered_series,
|
||||||
"case_number": case_number,
|
"case_number": case_number,
|
||||||
"previous": previous,
|
"previous": previous,
|
||||||
"next": next,
|
"next": next,
|
||||||
"can_edit": can_edit,
|
"can_edit": can_edit,
|
||||||
|
"move_series_form": move_series_form,
|
||||||
|
"move_series_recent_cases": move_series_recent_cases,
|
||||||
"answer": answer,
|
"answer": answer,
|
||||||
"cimar_sid": request.user.userprofile.cimar_sid,
|
"cimar_sid": request.user.userprofile.cimar_sid,
|
||||||
|
"site_queryset": Site.objects.all(),
|
||||||
|
"subspecialty_queryset": Subspecialty.objects.all(),
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
+192
-192
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user