Skip to content
Snippets Groups Projects
Commit 4cdd9d6f authored by Piotr Gawron's avatar Piotr Gawron
Browse files

Merge branch '326-graphics-export-does-not-export-active-overlays' into 'main'

Resolve "Graphics export does not export active overlays"

See merge request !332
parents 44c9e001 972c905e
No related branches found
No related tags found
2 merge requests!341Resolve "Export graphics - add "Current view"",!332Resolve "Graphics export does not export active overlays"
Pipeline #99128 passed
minerva-front (18.0.7) stable; urgency=medium
* Bug fix: export to image did not include overlays (#326)
-- Piotr Gawron <piotr.gawron@uni.lu> Wed, 11 Dec 2024 13:00:00 +0200
minerva-front (18.0.6) stable; urgency=medium
* No changes in frontend
......
......@@ -5,6 +5,7 @@ import { useAppDispatch } from '@/redux/hooks/useAppDispatch';
import { useAppSelector } from '@/redux/hooks/useAppSelector';
import { modelsDataSelector, modelsIdsSelector } from '@/redux/models/models.selectors';
import { ReactNode, useCallback, useMemo, useState } from 'react';
import { activeOverlaysIdSelector } from '@/redux/overlayBioEntity/overlayBioEntity.selector';
import { CheckboxItem } from '../CheckboxFilter/CheckboxFilter.types';
import { Annotations } from './Annotations';
import { DownloadElements } from './DownloadElements/DownloadElements';
......@@ -33,6 +34,7 @@ export const Export = ({ children }: ExportProps): JSX.Element => {
const modelIds = useAppSelector(modelsIdsSelector);
const currentModels = useAppSelector(modelsDataSelector);
const currentBackground = useAppSelector(currentBackgroundSelector);
const overlays = useAppSelector(activeOverlaysIdSelector);
const [annotations, setAnnotations] = useState<CheckboxItem[]>([]);
const [includedCompartmentPathways, setIncludedCompartmentPathways] = useState<CheckboxItem[]>(
[],
......@@ -76,6 +78,7 @@ export const Export = ({ children }: ExportProps): JSX.Element => {
modelId: models?.[FIRST_ARRAY_ELEMENT]?.id,
handler: imageFormats?.[FIRST_ARRAY_ELEMENT]?.id,
zoom: getModelExportZoom(imageSize.width, model),
overlayIds: overlays.map(overlayId => `${overlayId}`),
});
if (url) {
......
......@@ -3,10 +3,11 @@ import { GetGraphicsDownloadUrlProps, getGraphicsDownloadUrl } from './getGraphi
describe('getGraphicsDownloadUrl - util', () => {
const cases: [GetGraphicsDownloadUrlProps, string | undefined][] = [
[{}, undefined],
[{ overlayIds: [] }, undefined],
[
{
backgroundId: 50,
overlayIds: [],
},
undefined,
],
......@@ -14,6 +15,7 @@ describe('getGraphicsDownloadUrl - util', () => {
{
backgroundId: 50,
modelId: '30',
overlayIds: [],
},
undefined,
],
......@@ -22,6 +24,7 @@ describe('getGraphicsDownloadUrl - util', () => {
backgroundId: 50,
modelId: '30',
handler: 'any.handler.image',
overlayIds: [],
},
undefined,
],
......@@ -31,8 +34,9 @@ describe('getGraphicsDownloadUrl - util', () => {
modelId: '30',
handler: 'any.handler.image',
zoom: 7,
overlayIds: ['107'],
},
`${BASE_API_URL}/projects/${PROJECT_ID}/models/30:downloadImage?backgroundOverlayId=50&handlerClass=any.handler.image&zoomLevel=7`,
`${BASE_API_URL}/projects/${PROJECT_ID}/models/30:downloadImage?backgroundOverlayId=50&handlerClass=any.handler.image&zoomLevel=7&overlayIds=107`,
],
];
......
......@@ -5,6 +5,7 @@ export interface GetGraphicsDownloadUrlProps {
modelId?: string;
handler?: string;
zoom?: number;
overlayIds: string[];
}
export const getGraphicsDownloadUrl = ({
......@@ -12,6 +13,7 @@ export const getGraphicsDownloadUrl = ({
modelId,
handler,
zoom,
overlayIds,
}: GetGraphicsDownloadUrlProps): string | undefined => {
const isAllElementsTruthy = [backgroundId, modelId, handler, zoom].reduce(
(a, b) => Boolean(a) && Boolean(b),
......@@ -22,5 +24,7 @@ export const getGraphicsDownloadUrl = ({
return undefined;
}
return `${BASE_API_URL}/projects/${PROJECT_ID}/models/${modelId}:downloadImage?backgroundOverlayId=${backgroundId}&handlerClass=${handler}&zoomLevel=${zoom}`;
const overlays = overlayIds.join(',');
return `${BASE_API_URL}/projects/${PROJECT_ID}/models/${modelId}:downloadImage?backgroundOverlayId=${backgroundId}&handlerClass=${handler}&zoomLevel=${zoom}&overlayIds=${overlays}`;
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment