Merge pull request #1823 from OHIF/fix/minor-defects
fix: sort number of instances | format date in study panel
This commit is contained in:
commit
0594525301
@ -1,6 +1,9 @@
|
|||||||
import React, { useState, useEffect } from 'react';
|
import React, { useState, useEffect } from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { StudyBrowser, useImageViewer } from '@ohif/ui';
|
import { StudyBrowser, useImageViewer } from '@ohif/ui';
|
||||||
|
import { utils } from '@ohif/core';
|
||||||
|
|
||||||
|
const { formatDate } = utils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -37,7 +40,7 @@ function PanelStudyBrowser({
|
|||||||
const actuallyMappedStudies = mappedStudies.map(qidoStudy => {
|
const actuallyMappedStudies = mappedStudies.map(qidoStudy => {
|
||||||
return {
|
return {
|
||||||
studyInstanceUid: qidoStudy.StudyInstanceUID,
|
studyInstanceUid: qidoStudy.StudyInstanceUID,
|
||||||
date: qidoStudy.StudyDate,
|
date: formatDate(qidoStudy.StudyDate),
|
||||||
description: qidoStudy.StudyDescription,
|
description: qidoStudy.StudyDescription,
|
||||||
modalities: qidoStudy.ModalitiesInStudy,
|
modalities: qidoStudy.ModalitiesInStudy,
|
||||||
numInstances: qidoStudy.NumInstances,
|
numInstances: qidoStudy.NumInstances,
|
||||||
@ -151,11 +154,11 @@ function PanelStudyBrowser({
|
|||||||
);
|
);
|
||||||
const updatedExpandedStudyInstanceUIDs = shouldCollapseStudy
|
const updatedExpandedStudyInstanceUIDs = shouldCollapseStudy
|
||||||
? // eslint-disable-next-line prettier/prettier
|
? // eslint-disable-next-line prettier/prettier
|
||||||
[
|
[
|
||||||
...expandedStudyInstanceUIDs.filter(
|
...expandedStudyInstanceUIDs.filter(
|
||||||
stdyUid => stdyUid !== StudyInstanceUID
|
stdyUid => stdyUid !== StudyInstanceUID
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
: [...expandedStudyInstanceUIDs, StudyInstanceUID];
|
: [...expandedStudyInstanceUIDs, StudyInstanceUID];
|
||||||
|
|
||||||
setExpandedStudyInstanceUIDs(updatedExpandedStudyInstanceUIDs);
|
setExpandedStudyInstanceUIDs(updatedExpandedStudyInstanceUIDs);
|
||||||
|
|||||||
@ -4,11 +4,12 @@ import cornerstoneTools from 'cornerstone-tools';
|
|||||||
import cornerstone from 'cornerstone-core';
|
import cornerstone from 'cornerstone-core';
|
||||||
|
|
||||||
import CornerstoneViewport from 'react-cornerstone-viewport';
|
import CornerstoneViewport from 'react-cornerstone-viewport';
|
||||||
import OHIF from '@ohif/core';
|
import OHIF, { utils } from '@ohif/core';
|
||||||
import { ViewportActionBar, useViewportGrid } from '@ohif/ui';
|
import { ViewportActionBar, useViewportGrid } from '@ohif/ui';
|
||||||
import TOOL_NAMES from './constants/toolNames';
|
import TOOL_NAMES from './constants/toolNames';
|
||||||
import id from './id';
|
import id from './id';
|
||||||
|
|
||||||
|
const { formatDate } = utils;
|
||||||
const scrollToIndex = cornerstoneTools.importInternal('util/scrollToIndex');
|
const scrollToIndex = cornerstoneTools.importInternal('util/scrollToIndex');
|
||||||
|
|
||||||
// const cine = viewportSpecificData.cine;
|
// const cine = viewportSpecificData.cine;
|
||||||
@ -244,7 +245,7 @@ function OHIFCornerstoneSRViewport({
|
|||||||
label: _viewportLabels[firstViewportIndexWithMatchingDisplaySetUid],
|
label: _viewportLabels[firstViewportIndexWithMatchingDisplaySetUid],
|
||||||
isTracked: false,
|
isTracked: false,
|
||||||
isLocked: false,
|
isLocked: false,
|
||||||
studyDate: StudyDate,
|
studyDate: formatDate(StudyDate),
|
||||||
currentSeries: SeriesNumber,
|
currentSeries: SeriesNumber,
|
||||||
seriesDescription: SeriesDescription,
|
seriesDescription: SeriesDescription,
|
||||||
modality: Modality,
|
modality: Modality,
|
||||||
|
|||||||
@ -1,8 +1,11 @@
|
|||||||
import React, { useState, useEffect } from 'react';
|
import React, { useState, useEffect } from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
|
import { utils } from '@ohif/core';
|
||||||
import { StudyBrowser, useImageViewer, useViewportGrid } from '@ohif/ui';
|
import { StudyBrowser, useImageViewer, useViewportGrid } from '@ohif/ui';
|
||||||
import { useTrackedMeasurements } from '../../getContextModule';
|
import { useTrackedMeasurements } from '../../getContextModule';
|
||||||
|
|
||||||
|
const { formatDate } = utils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param {*} param0
|
* @param {*} param0
|
||||||
@ -68,7 +71,7 @@ function PanelStudyBrowserTracking({
|
|||||||
const actuallyMappedStudies = mappedStudies.map(qidoStudy => {
|
const actuallyMappedStudies = mappedStudies.map(qidoStudy => {
|
||||||
return {
|
return {
|
||||||
studyInstanceUid: qidoStudy.StudyInstanceUID,
|
studyInstanceUid: qidoStudy.StudyInstanceUID,
|
||||||
date: qidoStudy.StudyDate,
|
date: formatDate(qidoStudy.StudyDate),
|
||||||
description: qidoStudy.StudyDescription,
|
description: qidoStudy.StudyDescription,
|
||||||
modalities: qidoStudy.ModalitiesInStudy,
|
modalities: qidoStudy.ModalitiesInStudy,
|
||||||
numInstances: qidoStudy.NumInstances,
|
numInstances: qidoStudy.NumInstances,
|
||||||
@ -198,10 +201,10 @@ function PanelStudyBrowserTracking({
|
|||||||
);
|
);
|
||||||
const updatedExpandedStudyInstanceUIDs = shouldCollapseStudy
|
const updatedExpandedStudyInstanceUIDs = shouldCollapseStudy
|
||||||
? [
|
? [
|
||||||
...expandedStudyInstanceUIDs.filter(
|
...expandedStudyInstanceUIDs.filter(
|
||||||
stdyUid => stdyUid !== StudyInstanceUID
|
stdyUid => stdyUid !== StudyInstanceUID
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
: [...expandedStudyInstanceUIDs, StudyInstanceUID];
|
: [...expandedStudyInstanceUIDs, StudyInstanceUID];
|
||||||
|
|
||||||
setExpandedStudyInstanceUIDs(updatedExpandedStudyInstanceUIDs);
|
setExpandedStudyInstanceUIDs(updatedExpandedStudyInstanceUIDs);
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
|
|||||||
import cornerstone from 'cornerstone-core';
|
import cornerstone from 'cornerstone-core';
|
||||||
import cornerstoneTools from 'cornerstone-tools';
|
import cornerstoneTools from 'cornerstone-tools';
|
||||||
import CornerstoneViewport from 'react-cornerstone-viewport';
|
import CornerstoneViewport from 'react-cornerstone-viewport';
|
||||||
import OHIF, { DicomMetadataStore } from '@ohif/core';
|
import OHIF, { DicomMetadataStore, utils } from '@ohif/core';
|
||||||
import {
|
import {
|
||||||
Notification,
|
Notification,
|
||||||
ViewportActionBar,
|
ViewportActionBar,
|
||||||
@ -12,6 +12,8 @@ import {
|
|||||||
} from '@ohif/ui';
|
} from '@ohif/ui';
|
||||||
import { useTrackedMeasurements } from './../getContextModule';
|
import { useTrackedMeasurements } from './../getContextModule';
|
||||||
|
|
||||||
|
const { formatDate } = utils;
|
||||||
|
|
||||||
// TODO -> Get this list from the list of tracked measurements.
|
// TODO -> Get this list from the list of tracked measurements.
|
||||||
const {
|
const {
|
||||||
ArrowAnnotateTool,
|
ArrowAnnotateTool,
|
||||||
@ -239,7 +241,7 @@ function TrackedCornerstoneViewport({
|
|||||||
label: _viewportLabels[firstViewportIndexWithMatchingDisplaySetUid],
|
label: _viewportLabels[firstViewportIndexWithMatchingDisplaySetUid],
|
||||||
isTracked: trackedSeries.includes(SeriesInstanceUID),
|
isTracked: trackedSeries.includes(SeriesInstanceUID),
|
||||||
isLocked: false,
|
isLocked: false,
|
||||||
studyDate: SeriesDate, // TODO: This is series date. Is that ok?
|
studyDate: formatDate(SeriesDate), // TODO: This is series date. Is that ok?
|
||||||
currentSeries: SeriesNumber,
|
currentSeries: SeriesNumber,
|
||||||
seriesDescription: SeriesDescription,
|
seriesDescription: SeriesDescription,
|
||||||
modality: Modality,
|
modality: Modality,
|
||||||
|
|||||||
@ -44,6 +44,7 @@
|
|||||||
"isomorphic-base64": "^1.0.2",
|
"isomorphic-base64": "^1.0.2",
|
||||||
"lodash.clonedeep": "^4.5.0",
|
"lodash.clonedeep": "^4.5.0",
|
||||||
"lodash.merge": "^4.6.1",
|
"lodash.merge": "^4.6.1",
|
||||||
|
"moment": "^2.24.0",
|
||||||
"mousetrap": "^1.6.3",
|
"mousetrap": "^1.6.3",
|
||||||
"validate.js": "^0.12.0"
|
"validate.js": "^0.12.0"
|
||||||
}
|
}
|
||||||
|
|||||||
12
platform/core/src/utils/formatDate.js
Normal file
12
platform/core/src/utils/formatDate.js
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
import moment from 'moment';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Format date
|
||||||
|
*
|
||||||
|
* @param {string} date Date to be formatted
|
||||||
|
* @param {string} format Desired date format
|
||||||
|
* @returns {string} Formatted date
|
||||||
|
*/
|
||||||
|
export default (date, format = 'DD-MMM-YYYY') => {
|
||||||
|
return moment(date).format(format);
|
||||||
|
};
|
||||||
@ -15,6 +15,7 @@ import makeCancelable from './makeCancelable';
|
|||||||
import hotkeys from './hotkeys';
|
import hotkeys from './hotkeys';
|
||||||
import Queue from './Queue';
|
import Queue from './Queue';
|
||||||
import isDicomUid from './isDicomUid';
|
import isDicomUid from './isDicomUid';
|
||||||
|
import formatDate from './formatDate';
|
||||||
import formatPN from './formatPN';
|
import formatPN from './formatPN';
|
||||||
import resolveObjectPath from './resolveObjectPath';
|
import resolveObjectPath from './resolveObjectPath';
|
||||||
import * as hierarchicalListUtils from './hierarchicalListUtils';
|
import * as hierarchicalListUtils from './hierarchicalListUtils';
|
||||||
@ -27,6 +28,7 @@ const utils = {
|
|||||||
addServers,
|
addServers,
|
||||||
sortBy,
|
sortBy,
|
||||||
writeScript,
|
writeScript,
|
||||||
|
formatDate,
|
||||||
formatPN,
|
formatPN,
|
||||||
b64toBlob,
|
b64toBlob,
|
||||||
StackManager,
|
StackManager,
|
||||||
@ -50,6 +52,7 @@ export {
|
|||||||
absoluteUrl,
|
absoluteUrl,
|
||||||
addServers,
|
addServers,
|
||||||
sortBy,
|
sortBy,
|
||||||
|
formatDate,
|
||||||
writeScript,
|
writeScript,
|
||||||
b64toBlob,
|
b64toBlob,
|
||||||
StackManager,
|
StackManager,
|
||||||
|
|||||||
@ -21,13 +21,21 @@ const InputLabelWrapper = ({
|
|||||||
className,
|
className,
|
||||||
children,
|
children,
|
||||||
}) => {
|
}) => {
|
||||||
|
const onClickHandler = e => {
|
||||||
|
if (!isSortable) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
onLabelClick(e);
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<label className={classnames(baseLabelClassName, className)}>
|
<label className={classnames(baseLabelClassName, className)}>
|
||||||
<span
|
<span
|
||||||
role="button"
|
role="button"
|
||||||
className={spanClassName}
|
className={spanClassName}
|
||||||
onClick={onLabelClick}
|
onClick={onClickHandler}
|
||||||
onKeyDown={onLabelClick}
|
onKeyDown={onClickHandler}
|
||||||
tabIndex="0"
|
tabIndex="0"
|
||||||
>
|
>
|
||||||
{label}
|
{label}
|
||||||
|
|||||||
@ -53,7 +53,7 @@ const filtersMeta = [
|
|||||||
name: 'instances',
|
name: 'instances',
|
||||||
displayName: 'Instances',
|
displayName: 'Instances',
|
||||||
inputType: 'None',
|
inputType: 'None',
|
||||||
isSortable: true,
|
isSortable: false,
|
||||||
gridCol: 2,
|
gridCol: 2,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user