ohif-viewer/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking.tsx

98 lines
3.3 KiB
TypeScript
Raw Normal View History

2024-11-06 13:15:27 +01:00
import React, { useEffect, useState } from 'react';
import { DicomMetadataStore, utils } from '@ohif/core';
import { useViewportGrid } from '@ohif/ui-next';
2024-11-06 13:15:27 +01:00
import { Button, Icons } from '@ohif/ui-next';
import { PanelMeasurement, StudySummaryFromMetadata } from '@ohif/extension-cornerstone';
2024-11-06 13:15:27 +01:00
import { useTrackedMeasurements } from '../getContextModule';
const { filterAnd, filterPlanarMeasurement, filterAny, filterMeasurementsBySeriesUID } =
utils.MeasurementFilters;
2024-11-06 13:15:27 +01:00
function PanelMeasurementTableTracking({
servicesManager,
extensionManager,
commandsManager,
}: withAppTypes) {
const [viewportGrid] = useViewportGrid();
const { customizationService } = servicesManager.services;
2024-11-06 13:15:27 +01:00
const [trackedMeasurements, sendTrackedMeasurementsEvent] = useTrackedMeasurements();
const { trackedStudy, trackedSeries } = trackedMeasurements.context;
const measurementFilter = trackedStudy
? filterAnd(filterPlanarMeasurement, filterMeasurementsBySeriesUID(trackedSeries))
: filterPlanarMeasurement;
2024-11-06 13:15:27 +01:00
const { disableEditing } = customizationService.getCustomization(
'PanelMeasurement.disableEditing',
{
id: 'default.disableEditing',
disableEditing: false,
}
);
return (
<>
<StudySummaryFromMetadata StudyInstanceUID={trackedStudy} />
2024-11-06 13:15:27 +01:00
<PanelMeasurement
servicesManager={servicesManager}
extensionManager={extensionManager}
commandsManager={commandsManager}
measurementFilter={measurementFilter}
2024-11-06 13:15:27 +01:00
customHeader={({ additionalFindings, measurements }) => {
const disabled = additionalFindings.length === 0 && measurements.length === 0;
if (disableEditing || disabled) {
return null;
}
return (
<div className="bg-background flex h-9 w-full items-center rounded pr-0.5">
<div className="flex space-x-1">
<Button
size="sm"
variant="ghost"
className="pl-1.5"
onClick={() => {
commandsManager.runCommand('downloadCSVMeasurementsReport', {
measurementFilter,
});
2024-11-06 13:15:27 +01:00
}}
>
<Icons.Download className="h-5 w-5" />
2024-11-06 13:15:27 +01:00
<span className="pl-1">CSV</span>
</Button>
<Button
size="sm"
variant="ghost"
className="pl-0.5"
onClick={() => {
sendTrackedMeasurementsEvent('SAVE_REPORT', {
viewportId: viewportGrid.activeViewportId,
isBackupSave: true,
});
}}
>
<Icons.Add />
Create SR
</Button>
<Button
size="sm"
variant="ghost"
className="pl-0.5"
onClick={() => {
commandsManager.runCommand('clearMeasurements', { measurementFilter });
}}
>
<Icons.Delete />
Delete All
2024-11-06 13:15:27 +01:00
</Button>
</div>
</div>
);
}}
></PanelMeasurement>
</>
);
}
export default PanelMeasurementTableTracking;