Skip to content

Commit cfb50e8

Browse files
committed
Merge Raw vis into Scalar vis
1 parent 468c51d commit cfb50e8

23 files changed

+115
-202
lines changed

packages/app/src/__tests__/CorePack.test.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import { Vis } from '../vis-packs/core/visualizations';
77
test('visualize raw dataset', async () => {
88
const { selectExplorerNode } = await renderApp('/entities/raw');
99

10-
expect(getVisTabs()).toEqual([Vis.Raw]);
11-
expect(getSelectedVisTab()).toBe(Vis.Raw);
10+
expect(getVisTabs()).toEqual([Vis.Scalar]);
11+
expect(getSelectedVisTab()).toBe(Vis.Scalar);
1212
expect(screen.getByText(/"int": 42/)).toBeVisible();
1313

1414
await selectExplorerNode('raw_large');
@@ -18,8 +18,8 @@ test('visualize raw dataset', async () => {
1818
test('visualize raw image dataset', async () => {
1919
await renderApp('/entities/raw_png');
2020

21-
expect(getVisTabs()).toEqual([Vis.Raw]);
22-
expect(getSelectedVisTab()).toBe(Vis.Raw);
21+
expect(getVisTabs()).toEqual([Vis.Scalar]);
22+
expect(getSelectedVisTab()).toBe(Vis.Scalar);
2323
expect(screen.getByAltText('raw_png')).toBeVisible();
2424
});
2525

packages/app/src/vis-packs/core/array/ArrayVisContainer.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import { useValuesInCache } from '../../../dimension-mapper/hooks';
55
import { useDimMappingState } from '../../../dimension-mapper/store';
66
import { type VisContainerProps } from '../../models';
77
import VisBoundary from '../../VisBoundary';
8-
import { useRawConfig } from '../raw/config';
9-
import MappedRawVis from '../raw/MappedRawVis';
8+
import { useScalarConfig } from '../scalar/config';
9+
import MappedScalarVis from '../scalar/MappedScalarVis';
1010
import { getSliceSelection } from '../utils';
1111
import ValueFetcher from '../ValueFetcher';
1212

@@ -18,7 +18,7 @@ function ArrayVisContainer(props: VisContainerProps) {
1818
const { shape: dims } = entity;
1919
const [dimMapping, setDimMapping] = useDimMappingState(dims, 0); // no axes, slicing only
2020

21-
const config = useRawConfig();
21+
const config = useScalarConfig();
2222
const selection = getSliceSelection(dimMapping);
2323

2424
return (
@@ -34,7 +34,7 @@ function ArrayVisContainer(props: VisContainerProps) {
3434
dataset={entity}
3535
selection={selection}
3636
render={(value) => (
37-
<MappedRawVis
37+
<MappedScalarVis
3838
dataset={entity}
3939
value={value}
4040
toolbarContainer={toolbarContainer}

packages/app/src/vis-packs/core/configs.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export { RawConfigProvider } from './raw/config';
1+
export { ScalarConfigProvider } from './scalar/config';
22
export { MatrixConfigProvider } from './matrix/config';
33
export { LineConfigProvider } from './line/config';
44
export { HeatmapConfigProvider } from './heatmap/config';

packages/app/src/vis-packs/core/containers.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
export { default as RawVisContainer } from './raw/RawVisContainer';
21
export { default as ScalarVisContainer } from './scalar/ScalarVisContainer';
32
export { default as ArrayVisContainer } from './array/ArrayVisContainer';
43
export { default as MatrixVisContainer } from './matrix/MatrixVisContainer';

packages/app/src/vis-packs/core/raw/RawVisContainer.tsx

Lines changed: 0 additions & 33 deletions
This file was deleted.

packages/app/src/vis-packs/core/raw/utils.ts

Lines changed: 0 additions & 10 deletions
This file was deleted.

packages/app/src/vis-packs/core/raw/MappedRawVis.tsx renamed to packages/app/src/vis-packs/core/scalar/MappedScalarVis.tsx

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { RawImageVis, RawVis } from '@h5web/lib';
1+
import { BinaryImageVis, ScalarVis } from '@h5web/lib';
22
import {
33
type ArrayShape,
44
type Dataset,
@@ -8,31 +8,32 @@ import { createPortal } from 'react-dom';
88

99
import visualizerStyles from '../../../visualizer/Visualizer.module.css';
1010
import { useExportEntries } from '../hooks';
11-
import { type RawConfig } from './config';
12-
import RawToolbar from './RawToolbar';
13-
import { isBinaryImage } from './utils';
11+
import { type ScalarConfig } from './config';
12+
import ScalarToolbar from './ScalarToolbar';
13+
import { getFormatter, isBinaryImage } from './utils';
1414

1515
interface Props {
1616
dataset: Dataset<ScalarShape | ArrayShape>;
1717
value: unknown;
1818
toolbarContainer?: HTMLDivElement | undefined;
19-
config: RawConfig;
19+
config: ScalarConfig;
2020
}
2121

22-
function MappedRawVis(props: Props) {
22+
function MappedScalarVis(props: Props) {
2323
const { dataset, value, toolbarContainer, config } = props;
2424

25-
const isImage = value instanceof Uint8Array && isBinaryImage(value);
26-
2725
const exportEntries = useExportEntries(['json'], dataset, undefined, {
2826
json: () => JSON.stringify(value, null, 2),
2927
});
3028

29+
const isImage = value instanceof Uint8Array && isBinaryImage(value);
30+
const formatter = getFormatter(dataset.type);
31+
3132
return (
3233
<>
3334
{toolbarContainer &&
3435
createPortal(
35-
<RawToolbar
36+
<ScalarToolbar
3637
isImage={isImage}
3738
config={config}
3839
exportEntries={exportEntries}
@@ -41,17 +42,17 @@ function MappedRawVis(props: Props) {
4142
)}
4243

4344
{isImage ? (
44-
<RawImageVis
45+
<BinaryImageVis
4546
className={visualizerStyles.vis}
4647
value={value}
4748
title={dataset.name}
4849
fit={config.fitImage}
4950
/>
5051
) : (
51-
<RawVis className={visualizerStyles.vis} value={value} />
52+
<ScalarVis className={visualizerStyles.vis} value={formatter(value)} />
5253
)}
5354
</>
5455
);
5556
}
5657

57-
export default MappedRawVis;
58+
export default MappedScalarVis;

packages/app/src/vis-packs/core/raw/RawToolbar.tsx renamed to packages/app/src/vis-packs/core/scalar/ScalarToolbar.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ import { ExportMenu, Separator, ToggleBtn, Toolbar } from '@h5web/lib';
22
import { type ExportEntry } from '@h5web/shared/vis-models';
33
import { MdOutlineFitScreen } from 'react-icons/md';
44

5-
import { type RawConfig } from './config';
5+
import { type ScalarConfig } from './config';
66

77
interface Props {
88
isImage: boolean;
9-
config: RawConfig;
9+
config: ScalarConfig;
1010
exportEntries: ExportEntry[];
1111
}
1212

13-
function RawToolbar(props: Props) {
13+
function ScalarToolbar(props: Props) {
1414
const { isImage, config, exportEntries } = props;
1515
const { fitImage, toggleFitImage } = config;
1616

@@ -34,4 +34,4 @@ function RawToolbar(props: Props) {
3434
);
3535
}
3636

37-
export default RawToolbar;
37+
export default ScalarToolbar;

packages/app/src/vis-packs/core/scalar/ScalarVisContainer.tsx

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,28 @@
1-
import { ScalarVis } from '@h5web/lib';
2-
import {
3-
assertDataset,
4-
assertPrintableType,
5-
assertScalarShape,
6-
} from '@h5web/shared/guards';
1+
import { assertDataset, assertScalarShape } from '@h5web/shared/guards';
72

8-
import visualizerStyles from '../../../visualizer/Visualizer.module.css';
93
import { type VisContainerProps } from '../../models';
104
import VisBoundary from '../../VisBoundary';
115
import ValueFetcher from '../ValueFetcher';
12-
import { getFormatter } from './utils';
6+
import { useScalarConfig } from './config';
7+
import MappedScalarVis from './MappedScalarVis';
138

149
function ScalarVisContainer(props: VisContainerProps) {
15-
const { entity } = props;
10+
const { entity, toolbarContainer } = props;
1611
assertDataset(entity);
1712
assertScalarShape(entity);
18-
assertPrintableType(entity);
1913

20-
const formatter = getFormatter(entity);
14+
const config = useScalarConfig();
2115

2216
return (
2317
<VisBoundary>
2418
<ValueFetcher
2519
dataset={entity}
2620
render={(value) => (
27-
<ScalarVis
28-
className={visualizerStyles.vis}
29-
value={formatter(value)}
21+
<MappedScalarVis
22+
dataset={entity}
23+
value={value}
24+
toolbarContainer={toolbarContainer}
25+
config={config}
3026
/>
3127
)}
3228
/>

packages/app/src/vis-packs/core/raw/config.tsx renamed to packages/app/src/vis-packs/core/scalar/config.tsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,38 +4,38 @@ import { persist } from 'zustand/middleware';
44

55
import { type ConfigProviderProps } from '../../models';
66

7-
export interface RawConfig {
7+
export interface ScalarConfig {
88
fitImage: boolean;
99
toggleFitImage: () => void;
1010
}
1111

12-
function createRawConfigStore() {
13-
return createStore<RawConfig>()(
12+
function createScalarConfigStore() {
13+
return createStore<ScalarConfig>()(
1414
persist(
15-
(set): RawConfig => ({
15+
(set): ScalarConfig => ({
1616
fitImage: true,
1717
toggleFitImage: () => set((state) => ({ fitImage: !state.fitImage })),
1818
}),
1919
{
20-
name: 'h5web:raw',
20+
name: 'h5web:scalar',
2121
version: 1,
2222
},
2323
),
2424
);
2525
}
2626

27-
const StoreContext = createContext({} as StoreApi<RawConfig>);
27+
const StoreContext = createContext({} as StoreApi<ScalarConfig>);
2828

29-
export function RawConfigProvider(props: ConfigProviderProps) {
29+
export function ScalarConfigProvider(props: ConfigProviderProps) {
3030
const { children } = props;
3131

32-
const [store] = useState(createRawConfigStore);
32+
const [store] = useState(createScalarConfigStore);
3333

3434
return (
3535
<StoreContext.Provider value={store}>{children}</StoreContext.Provider>
3636
);
3737
}
3838

39-
export function useRawConfig(): RawConfig {
39+
export function useScalarConfig(): ScalarConfig {
4040
return useStore(useContext(StoreContext));
4141
}

0 commit comments

Comments
 (0)