Merge pull request #1823 from OHIF/fix/minor-defects

fix: sort number of instances | format date in study panel
This commit is contained in:
Danny Brown 2020-06-29 12:45:56 -04:00 committed by GitHub
commit 0594525301
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 51 additions and 18 deletions

View File

@ -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);

View File

@ -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,

View File

@ -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);

View File

@ -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,

View File

@ -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"
} }

View 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);
};

View File

@ -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,

View File

@ -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}

View File

@ -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,
}, },
]; ];