OHIF-149: Apply default sort of Study Date descending (most recent -> oldest) when < 101 studies (#1850)
* Add dynamic default sorting * Use different approach to sort * Switch strategy to one that works even when filters are applied, but sort is not (there is no dicomweb sort/orderby) Co-authored-by: dannyrb <danny.ri.brown@gmail.com>
This commit is contained in:
1 parent
491afaa43d
commit
920c3e9455
4 files changed
+38
-41
No files matched your search
@@ -48,7 +48,12 @@ function WorkList({ history, data: studies, isLoadingData, dataSource }) {
|
||||
.sort((s1, s2) => {
|
||||
const noSortApplied = sortBy === '' || !sortBy;
|
||||
const sortModifier = sortDirection === 'descending' ? 1 : -1;
|
||||
if (noSortApplied) {
|
||||
|
||||
if (noSortApplied && studies.length < 101) {
|
||||
const ascendingSortModifier = -1;
|
||||
|
||||
return _sortStringDates(s1, s2, ascendingSortModifier);
|
||||
} else if (noSortApplied) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -64,20 +69,7 @@ function WorkList({ history, data: studies, isLoadingData, dataSource }) {
|
||||
} else if (!s2Prop && s1Prop) {
|
||||
return 1 * sortModifier;
|
||||
} else if (sortBy === 'studyDate') {
|
||||
// TODO: Delimiters are non-standard. Should we support them?
|
||||
const s1Date = moment(s1.date, ['YYYYMMDD', 'YYYY.MM.DD'], true);
|
||||
const s2Date = moment(s2.date, ['YYYYMMDD', 'YYYY.MM.DD'], true);
|
||||
|
||||
if (s1Date.isValid() && s2Date.isValid()) {
|
||||
return (
|
||||
(s1Date.toISOString() > s2Date.toISOString() ? 1 : -1) *
|
||||
sortModifier
|
||||
);
|
||||
} else if (s1Date.isValid()) {
|
||||
return sortModifier;
|
||||
} else if (s2Date.isValid()) {
|
||||
return -1 * sortModifier;
|
||||
}
|
||||
return _sortStringDates(s1, s2, sortModifier);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -176,13 +168,12 @@ function WorkList({ history, data: studies, isLoadingData, dataSource }) {
|
||||
// Note: expanded rows index begins at 1
|
||||
for (let z = 0; z < expandedRows.length; z++) {
|
||||
const expandedRowIndex = expandedRows[z] - 1;
|
||||
console.log(sortedStudies[expandedRowIndex]);
|
||||
const studyInstanceUid = sortedStudies[expandedRowIndex].studyInstanceUid;
|
||||
|
||||
if (studiesWithSeriesData.includes(studyInstanceUid)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
console.log(`fetching for ${expandedRowIndex}`);
|
||||
fetchSeries(studyInstanceUid);
|
||||
}
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
@@ -470,4 +461,20 @@ function _getQueryFilterValues(query) {
|
||||
}
|
||||
}
|
||||
|
||||
function _sortStringDates(s1, s2, sortModifier) {
|
||||
// TODO: Delimiters are non-standard. Should we support them?
|
||||
const s1Date = moment(s1.date, ['YYYYMMDD', 'YYYY.MM.DD'], true);
|
||||
const s2Date = moment(s2.date, ['YYYYMMDD', 'YYYY.MM.DD'], true);
|
||||
|
||||
if (s1Date.isValid() && s2Date.isValid()) {
|
||||
return (
|
||||
(s1Date.toISOString() > s2Date.toISOString() ? 1 : -1) * sortModifier
|
||||
);
|
||||
} else if (s1Date.isValid()) {
|
||||
return sortModifier;
|
||||
} else if (s2Date.isValid()) {
|
||||
return -1 * sortModifier;
|
||||
}
|
||||
}
|
||||
|
||||
export default WorkList;
|
||||
Reference in new issue
Block a user