From 7b8872b873b0f7f5e44bc856b11532540cd2740a Mon Sep 17 00:00:00 2001 From: 2427021 <s.a.vink@students.uu.nl> Date: Thu, 28 Mar 2024 21:25:19 +0100 Subject: [PATCH] feat(visManager): cleanup of folders --- apps/web/src/app/app.tsx | 8 +- .../lib/components/icon/icon.stories.tsx | 19 ++- .../selectors/axis.stories.tsx | 0 .../selectors/axis.tsx | 2 +- .../selectors/color.stories.tsx | 0 .../selectors/color.tsx | 2 +- .../selectors}/encodings.types.ts | 2 +- .../selectors/index.ts | 0 .../selectors/opacity.stories.tsx | 0 .../selectors/opacity.tsx | 2 +- .../selectors/shape.stories.tsx | 0 .../selectors/shape.tsx | 2 +- .../selectors/size.stories.tsx | 0 .../selectors/size.tsx | 2 +- libs/shared/lib/components/tooltip/index.tsx | 48 ------- .../data-access/store/visualizationSlice.ts | 2 +- libs/shared/lib/vis/{ => components}/bar.tsx | 9 +- .../config}/components.tsx | 0 .../config}/index.tsx | 0 .../config}/panel.tsx | 39 +++--- .../shared/lib/vis/{ => components}/panel.tsx | 4 +- libs/shared/lib/vis/encodings/accessor.tsx | 61 -------- libs/shared/lib/vis/encodings/index.ts | 1 - libs/shared/lib/vis/encodings/selector.tsx | 54 ------- libs/shared/lib/vis/hooks/index.ts | 1 + .../useVisualizationManager.tsx} | 4 +- libs/shared/lib/vis/index.ts | 2 +- libs/shared/lib/vis/manager/index.ts | 2 - libs/shared/lib/vis/manager/manager.types.tsx | 12 -- .../lib/vis/shared/AttributeDataType.test.tsx | 69 --------- .../lib/vis/shared/AttributeDataType.tsx | 119 ---------------- libs/shared/lib/vis/shared/InputDataTypes.tsx | 52 ------- .../shared/ResultNodeLinkParserUseCase.tsx | 132 ------------------ .../lib/vis/shared/SchemaResultType.test.tsx | 87 ------------ .../lib/vis/shared/SchemaResultType.tsx | 46 ------ libs/shared/lib/vis/shared/Types.tsx | 119 ---------------- .../shared/VisConfigPanel/ArrowRightIcon.svg | 1 - .../VisConfigPanel/QuestionMarkIcon.svg | 5 - .../VisConfigPanel/VisConfigPanel.module.scss | 99 ------------- .../VisConfigPanel.module.scss.d.ts | 9 -- .../shared/VisConfigPanel/VisConfigPanel.tsx | 44 ------ .../lib/vis/{screens => views}/index.tsx | 0 .../lib/vis/{screens => views}/noData.tsx | 0 .../lib/vis/{screens => views}/querying.tsx | 0 .../vis/{screens => views}/recommender.tsx | 0 .../vis/{types.ts => visualization.types.ts} | 13 +- .../visualizations/mapvis/mapvis.stories.tsx | 2 +- .../lib/vis/visualizations/mapvis/mapvis.tsx | 2 +- .../matrixvis/components/MatrixPixi.tsx | 2 +- .../matrixvis/matrix.stories.tsx | 2 +- .../visualizations/matrixvis/matrixvis.tsx | 4 +- .../nodelinkvis/components/NLPixi.tsx | 2 +- .../nodelinkvis/nodelinkvis.stories.tsx | 2 +- .../nodelinkvis/nodelinkvis.tsx | 4 +- .../paohvis/paohvis.stories.tsx | 2 +- .../vis/visualizations/paohvis/paohvis.tsx | 4 +- .../rawjsonvis/rawjsonvis.stories.tsx | 2 +- .../visualizations/rawjsonvis/rawjsonvis.tsx | 4 +- .../semanticsubstrates.stories.tsx | 2 +- .../tablevis/tablevis.stories.tsx | 2 +- .../vis/visualizations/tablevis/tablevis.tsx | 4 +- 61 files changed, 83 insertions(+), 1030 deletions(-) rename libs/shared/lib/{vis/encodings => components}/selectors/axis.stories.tsx (100%) rename libs/shared/lib/{vis/encodings => components}/selectors/axis.tsx (85%) rename libs/shared/lib/{vis/encodings => components}/selectors/color.stories.tsx (100%) rename libs/shared/lib/{vis/encodings => components}/selectors/color.tsx (92%) rename libs/shared/lib/{vis/encodings => components/selectors}/encodings.types.ts (94%) rename libs/shared/lib/{vis/encodings => components}/selectors/index.ts (100%) rename libs/shared/lib/{vis/encodings => components}/selectors/opacity.stories.tsx (100%) rename libs/shared/lib/{vis/encodings => components}/selectors/opacity.tsx (92%) rename libs/shared/lib/{vis/encodings => components}/selectors/shape.stories.tsx (100%) rename libs/shared/lib/{vis/encodings => components}/selectors/shape.tsx (74%) rename libs/shared/lib/{vis/encodings => components}/selectors/size.stories.tsx (100%) rename libs/shared/lib/{vis/encodings => components}/selectors/size.tsx (91%) rename libs/shared/lib/vis/{ => components}/bar.tsx (94%) rename libs/shared/lib/vis/{configuration => components/config}/components.tsx (100%) rename libs/shared/lib/vis/{configuration => components/config}/index.tsx (100%) rename libs/shared/lib/vis/{configuration => components/config}/panel.tsx (84%) rename libs/shared/lib/vis/{ => components}/panel.tsx (89%) delete mode 100644 libs/shared/lib/vis/encodings/accessor.tsx delete mode 100644 libs/shared/lib/vis/encodings/index.ts delete mode 100644 libs/shared/lib/vis/encodings/selector.tsx create mode 100644 libs/shared/lib/vis/hooks/index.ts rename libs/shared/lib/vis/{manager/manager.tsx => hooks/useVisualizationManager.tsx} (98%) delete mode 100644 libs/shared/lib/vis/manager/index.ts delete mode 100644 libs/shared/lib/vis/manager/manager.types.tsx delete mode 100644 libs/shared/lib/vis/shared/AttributeDataType.test.tsx delete mode 100644 libs/shared/lib/vis/shared/AttributeDataType.tsx delete mode 100644 libs/shared/lib/vis/shared/InputDataTypes.tsx delete mode 100644 libs/shared/lib/vis/shared/ResultNodeLinkParserUseCase.tsx delete mode 100644 libs/shared/lib/vis/shared/SchemaResultType.test.tsx delete mode 100644 libs/shared/lib/vis/shared/SchemaResultType.tsx delete mode 100644 libs/shared/lib/vis/shared/Types.tsx delete mode 100644 libs/shared/lib/vis/shared/VisConfigPanel/ArrowRightIcon.svg delete mode 100644 libs/shared/lib/vis/shared/VisConfigPanel/QuestionMarkIcon.svg delete mode 100644 libs/shared/lib/vis/shared/VisConfigPanel/VisConfigPanel.module.scss delete mode 100644 libs/shared/lib/vis/shared/VisConfigPanel/VisConfigPanel.module.scss.d.ts delete mode 100644 libs/shared/lib/vis/shared/VisConfigPanel/VisConfigPanel.tsx rename libs/shared/lib/vis/{screens => views}/index.tsx (100%) rename libs/shared/lib/vis/{screens => views}/noData.tsx (100%) rename libs/shared/lib/vis/{screens => views}/querying.tsx (100%) rename libs/shared/lib/vis/{screens => views}/recommender.tsx (100%) rename libs/shared/lib/vis/{types.ts => visualization.types.ts} (61%) diff --git a/apps/web/src/app/app.tsx b/apps/web/src/app/app.tsx index 90a1046f6..f77bd93e0 100644 --- a/apps/web/src/app/app.tsx +++ b/apps/web/src/app/app.tsx @@ -16,15 +16,11 @@ import { EventBus } from '@graphpolaris/shared/lib/data-access/api/eventBus'; import Onboarding from '../components/onboarding/onboarding'; import { wsQueryRequest } from '@graphpolaris/shared/lib/data-access/broker'; import { URLParams, setParam } from '@graphpolaris/shared/lib/data-access/api/url'; - import { VisualizationPanel } from '@graphpolaris/shared/lib/vis'; import { QueryBuilder } from '@graphpolaris/shared/lib/querybuilder'; import DataViewer from '@graphpolaris/shared/lib/data-viewer'; -import { useVisualizationManager } from '@graphpolaris/shared/lib/vis/manager'; -import { ConfigPanel } from '@graphpolaris/shared/lib/vis/configuration'; -// const Schema = React.lazy(() => import('@graphpolaris/shared/lib/schema/panel')); -// const VisualizationPanel = React.lazy(() => import('@graphpolaris/shared/lib/vis')); -// const QueryBuilder = React.lazy(() => import('@graphpolaris/shared/lib/querybuilder')); +import { useVisualizationManager } from '@graphpolaris/shared/lib/vis/hooks'; +import { ConfigPanel } from '@graphpolaris/shared/lib/vis/components/config'; export type App = { load?: string; diff --git a/libs/shared/lib/components/icon/icon.stories.tsx b/libs/shared/lib/components/icon/icon.stories.tsx index 1b506cf2e..b57f7c09e 100644 --- a/libs/shared/lib/components/icon/icon.stories.tsx +++ b/libs/shared/lib/components/icon/icon.stories.tsx @@ -2,10 +2,9 @@ import { StoryObj, Meta } from '@storybook/react'; import Icon from '../icon'; import { ArrowBack, DeleteOutline, KeyboardArrowLeft, Settings } from '@mui/icons-material'; -export default { +const Component: Meta<typeof Icon> = { title: 'Components/Icon', component: Icon, - decorators: [(Story) => <div className="p-5">{Story()}</div>], argTypes: { component: { control: 'select', @@ -16,14 +15,14 @@ export default { options: [16, 20, 24, 28, 32, 40], }, }, -} as Meta; -type Story = StoryObj<typeof Icon>; + decorators: [(Story) => <div className="p-5">{Story()}</div>], +}; -const BaseIcon: Story = { - args: { - name: 'ArrowBack', - size: 24, - }, +export default Component; +type Story = StoryObj<typeof Component>; + +export const BaseIcon: Story = (args: any) => { + return <Icon component={<ArrowBack />} size={24} {...args} />; }; -export const Default = { ...BaseIcon }; +BaseIcon.args = {}; diff --git a/libs/shared/lib/vis/encodings/selectors/axis.stories.tsx b/libs/shared/lib/components/selectors/axis.stories.tsx similarity index 100% rename from libs/shared/lib/vis/encodings/selectors/axis.stories.tsx rename to libs/shared/lib/components/selectors/axis.stories.tsx diff --git a/libs/shared/lib/vis/encodings/selectors/axis.tsx b/libs/shared/lib/components/selectors/axis.tsx similarity index 85% rename from libs/shared/lib/vis/encodings/selectors/axis.tsx rename to libs/shared/lib/components/selectors/axis.tsx index bd987f71d..a31413955 100644 --- a/libs/shared/lib/vis/encodings/selectors/axis.tsx +++ b/libs/shared/lib/components/selectors/axis.tsx @@ -1,6 +1,6 @@ import React from 'react'; import Input from '@graphpolaris/shared/lib/components/inputs'; -import { SelectorProps } from '../encodings.types'; +import { SelectorProps } from './encodings.types'; export default function Axis({ marking, onChange }: SelectorProps) { return ( diff --git a/libs/shared/lib/vis/encodings/selectors/color.stories.tsx b/libs/shared/lib/components/selectors/color.stories.tsx similarity index 100% rename from libs/shared/lib/vis/encodings/selectors/color.stories.tsx rename to libs/shared/lib/components/selectors/color.stories.tsx diff --git a/libs/shared/lib/vis/encodings/selectors/color.tsx b/libs/shared/lib/components/selectors/color.tsx similarity index 92% rename from libs/shared/lib/vis/encodings/selectors/color.tsx rename to libs/shared/lib/components/selectors/color.tsx index e67a6059e..fe7fb8631 100644 --- a/libs/shared/lib/vis/encodings/selectors/color.tsx +++ b/libs/shared/lib/components/selectors/color.tsx @@ -1,5 +1,5 @@ import React, { useState } from 'react'; -import { SelectorProps } from '../encodings.types'; +import { SelectorProps } from './encodings.types'; import DropdownColorLegend from '@graphpolaris/shared/lib/components/colorComponents/colorDropdown'; import Input from '@graphpolaris/shared/lib/components/inputs'; diff --git a/libs/shared/lib/vis/encodings/encodings.types.ts b/libs/shared/lib/components/selectors/encodings.types.ts similarity index 94% rename from libs/shared/lib/vis/encodings/encodings.types.ts rename to libs/shared/lib/components/selectors/encodings.types.ts index 6b1b367b6..38ee8f0df 100644 --- a/libs/shared/lib/vis/encodings/encodings.types.ts +++ b/libs/shared/lib/components/selectors/encodings.types.ts @@ -1,5 +1,5 @@ import { DimensionType } from '@graphpolaris/shared/lib/schema'; -import { EncodingSelector } from './selectors'; +import { EncodingSelector } from '.'; import { ElementStats } from '@graphpolaris/shared/lib/data-access/statistics'; export type SelectorType = keyof typeof EncodingSelector; diff --git a/libs/shared/lib/vis/encodings/selectors/index.ts b/libs/shared/lib/components/selectors/index.ts similarity index 100% rename from libs/shared/lib/vis/encodings/selectors/index.ts rename to libs/shared/lib/components/selectors/index.ts diff --git a/libs/shared/lib/vis/encodings/selectors/opacity.stories.tsx b/libs/shared/lib/components/selectors/opacity.stories.tsx similarity index 100% rename from libs/shared/lib/vis/encodings/selectors/opacity.stories.tsx rename to libs/shared/lib/components/selectors/opacity.stories.tsx diff --git a/libs/shared/lib/vis/encodings/selectors/opacity.tsx b/libs/shared/lib/components/selectors/opacity.tsx similarity index 92% rename from libs/shared/lib/vis/encodings/selectors/opacity.tsx rename to libs/shared/lib/components/selectors/opacity.tsx index 2d16f8a76..160a7adb5 100644 --- a/libs/shared/lib/vis/encodings/selectors/opacity.tsx +++ b/libs/shared/lib/components/selectors/opacity.tsx @@ -1,6 +1,6 @@ import React, { useState } from 'react'; import Input from '@graphpolaris/shared/lib/components/inputs'; -import { SelectorProps } from '../encodings.types'; +import { SelectorProps } from './encodings.types'; export default function Opacity({ marking, onChange, statistics, dimension }: SelectorProps) { const [custom, setCustom] = useState<boolean>(false); diff --git a/libs/shared/lib/vis/encodings/selectors/shape.stories.tsx b/libs/shared/lib/components/selectors/shape.stories.tsx similarity index 100% rename from libs/shared/lib/vis/encodings/selectors/shape.stories.tsx rename to libs/shared/lib/components/selectors/shape.stories.tsx diff --git a/libs/shared/lib/vis/encodings/selectors/shape.tsx b/libs/shared/lib/components/selectors/shape.tsx similarity index 74% rename from libs/shared/lib/vis/encodings/selectors/shape.tsx rename to libs/shared/lib/components/selectors/shape.tsx index 1f0b38809..9238fc83e 100644 --- a/libs/shared/lib/vis/encodings/selectors/shape.tsx +++ b/libs/shared/lib/components/selectors/shape.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { SelectorProps } from '../encodings.types'; +import { SelectorProps } from './encodings.types'; export default function Shape({ marking, onChange, statistics, dimension }: SelectorProps) { return <div>shape</div>; diff --git a/libs/shared/lib/vis/encodings/selectors/size.stories.tsx b/libs/shared/lib/components/selectors/size.stories.tsx similarity index 100% rename from libs/shared/lib/vis/encodings/selectors/size.stories.tsx rename to libs/shared/lib/components/selectors/size.stories.tsx diff --git a/libs/shared/lib/vis/encodings/selectors/size.tsx b/libs/shared/lib/components/selectors/size.tsx similarity index 91% rename from libs/shared/lib/vis/encodings/selectors/size.tsx rename to libs/shared/lib/components/selectors/size.tsx index e5f68f47b..085f5c318 100644 --- a/libs/shared/lib/vis/encodings/selectors/size.tsx +++ b/libs/shared/lib/components/selectors/size.tsx @@ -1,6 +1,6 @@ import React, { useState } from 'react'; import Input from '@graphpolaris/shared/lib/components/inputs'; -import { SelectorProps } from '../encodings.types'; +import { SelectorProps } from './encodings.types'; export default function Size({ marking, onChange, statistics, dimension }: SelectorProps) { const [item, setItem] = useState<string>(''); diff --git a/libs/shared/lib/components/tooltip/index.tsx b/libs/shared/lib/components/tooltip/index.tsx index 79e5bfe88..4d3d7c991 100644 --- a/libs/shared/lib/components/tooltip/index.tsx +++ b/libs/shared/lib/components/tooltip/index.tsx @@ -55,51 +55,3 @@ const TooltipContent = React.forwardRef< TooltipContent.displayName = TooltipPrimitive.Content.displayName; export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }; - -// Old Tooltip - -export type TooltipProps2 = { - position?: 'top' | 'bottom' | 'left' | 'right'; - children: ReactNode; - tooltip: string; - disabled?: boolean; -}; -export default function Tooltip2({ position = 'bottom', children, tooltip, disabled = false }: TooltipProps2) { - return ( - <div className="group relative cursor-pointer"> - <div className="">{children}</div> - {!disabled && ( - <div className="z-50"> - <span - className={`absolute hidden group-hover:inline-block bg-neutral-900 text-white text-xs p-2 whitespace-nowrap rounded ${ - position === 'top' ? 'left-1/2 -translate-x-1/2 bottom-[calc(100%+5px)]' : '' - } ${position === 'bottom' ? 'left-1/2 -translate-x-1/2 top-[calc(100%+5px)]' : ''} ${ - position === 'left' ? 'top-1/2 -translate-y-1/2 right-[calc(100%+5px)]' : '' - } ${position === 'right' ? 'top-1/2 -translate-y-1/2 left-[calc(100%+5px)]' : ''} `} - > - {tooltip} - </span> - <span - className={`absolute hidden group-hover:inline-block border-[6px] ${ - position === 'top' - ? 'left-1/2 -translate-x-1/2 bottom-full border-l-transparent border-r-transparent border-b-0 border-t-neutral-900' - : '' - } ${ - position === 'bottom' - ? 'left-1/2 -translate-x-1/2 top-full border-l-transparent border-r-transparent border-t-0 border-b-neutral-900' - : '' - } ${ - position === 'left' - ? 'top-1/2 -translate-y-1/2 right-full border-t-transparent border-b-transparent border-r-0 border-l-neutral-900' - : '' - } ${ - position === 'right' - ? 'top-1/2 -translate-y-1/2 left-full border-t-transparent border-b-transparent border-l-0 border-r-neutral-900' - : '' - } `} - ></span> - </div> - )} - </div> - ); -} diff --git a/libs/shared/lib/data-access/store/visualizationSlice.ts b/libs/shared/lib/data-access/store/visualizationSlice.ts index a07aabeb4..1299b0488 100644 --- a/libs/shared/lib/data-access/store/visualizationSlice.ts +++ b/libs/shared/lib/data-access/store/visualizationSlice.ts @@ -1,6 +1,6 @@ import { createSlice, PayloadAction } from '@reduxjs/toolkit'; import type { RootState } from './store'; -import { VisualizationConfiguration } from '../../vis/types'; +import { VisualizationConfiguration } from '../../vis/visualization.types'; import { isEqual } from 'lodash-es'; export type VisStateSettings = { diff --git a/libs/shared/lib/vis/bar.tsx b/libs/shared/lib/vis/components/bar.tsx similarity index 94% rename from libs/shared/lib/vis/bar.tsx rename to libs/shared/lib/vis/components/bar.tsx index 884157e82..72736b772 100644 --- a/libs/shared/lib/vis/bar.tsx +++ b/libs/shared/lib/vis/components/bar.tsx @@ -1,10 +1,11 @@ import React, { useState } from 'react'; -import { Button, Icon } from '../components'; -import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/tooltip'; +import { Button } from '../../components'; +import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../../components/tooltip'; import * as DropdownMenu from '@radix-ui/react-dropdown-menu'; import { Add, Close, Fullscreen } from '@mui/icons-material'; -import ControlContainer from '../components/controls'; -import { Visualizations, VisualizationManager } from './manager'; +import ControlContainer from '../../components/controls'; +import { Visualizations } from '../hooks'; +import { VisualizationManager } from '../visualization.types'; type Props = { manager: VisualizationManager; diff --git a/libs/shared/lib/vis/configuration/components.tsx b/libs/shared/lib/vis/components/config/components.tsx similarity index 100% rename from libs/shared/lib/vis/configuration/components.tsx rename to libs/shared/lib/vis/components/config/components.tsx diff --git a/libs/shared/lib/vis/configuration/index.tsx b/libs/shared/lib/vis/components/config/index.tsx similarity index 100% rename from libs/shared/lib/vis/configuration/index.tsx rename to libs/shared/lib/vis/components/config/index.tsx diff --git a/libs/shared/lib/vis/configuration/panel.tsx b/libs/shared/lib/vis/components/config/panel.tsx similarity index 84% rename from libs/shared/lib/vis/configuration/panel.tsx rename to libs/shared/lib/vis/components/config/panel.tsx index fdd0fffdb..2ffd79642 100644 --- a/libs/shared/lib/vis/configuration/panel.tsx +++ b/libs/shared/lib/vis/components/config/panel.tsx @@ -1,10 +1,11 @@ import React from 'react'; -import { Button, Icon } from '../../components'; +import { Button, Icon } from '../../../components'; import { Delete, Person } from '@mui/icons-material'; -import Input from '../../components/inputs'; -import { VISUALIZATION_TYPES, VisualizationManager } from '../manager'; +import Input from '../../../components/inputs'; +import { VISUALIZATION_TYPES } from '../../hooks'; +import { VisualizationManager } from '../../visualization.types'; import { SettingsHeader } from './components'; -import { useSessionCache } from '../../data-access'; +import { useSessionCache } from '../../../data-access'; type Props = { manager: VisualizationManager; @@ -13,6 +14,8 @@ type Props = { export function ConfigPanel({ manager }: Props) { const session = useSessionCache(); + const buildInfo = import.meta.env.GRAPHPOLARIS_VERSION; + return ( <div className="w-full h-full flex flex-col border justify-between"> <div> @@ -86,19 +89,21 @@ export function ConfigPanel({ manager }: Props) { )} </div> - <Button - type="primary" - variant="outline" - size="xs" - label="Report an issue" - onClick={() => - window.open( - 'https://app.asana.com/-/login?u=https%3A%2F%2Fform.asana.com%2F%3Fk%3D2QEC88Dl7ETs2wYYWjkMXg%26d%3D1206648675960041&error=01', - '_blank', - ) - } - additionalClasses="m-2" - /> + {buildInfo === 'dev' && ( + <Button + type="primary" + variant="outline" + size="xs" + label="Report an issue" + onClick={() => + window.open( + 'https://app.asana.com/-/login?u=https%3A%2F%2Fform.asana.com%2F%3Fk%3D2QEC88Dl7ETs2wYYWjkMXg%26d%3D1206648675960041&error=01', + '_blank', + ) + } + additionalClasses="m-2" + /> + )} </div> ); } diff --git a/libs/shared/lib/vis/panel.tsx b/libs/shared/lib/vis/components/panel.tsx similarity index 89% rename from libs/shared/lib/vis/panel.tsx rename to libs/shared/lib/vis/components/panel.tsx index 158830b99..1e9260879 100644 --- a/libs/shared/lib/vis/panel.tsx +++ b/libs/shared/lib/vis/components/panel.tsx @@ -1,8 +1,8 @@ import React from 'react'; import { useGraphQueryResult, useQuerybuilderGraph } from '@graphpolaris/shared/lib/data-access'; import VisualizationBar from './bar'; -import { VisualizationManager } from './manager'; -import { Recommender, NoData, Querying } from './screens'; +import { VisualizationManager } from '../visualization.types'; +import { Recommender, NoData, Querying } from '../views'; export const VisualizationPanel = ({ manager }: { manager: VisualizationManager }) => { const query = useQuerybuilderGraph(); diff --git a/libs/shared/lib/vis/encodings/accessor.tsx b/libs/shared/lib/vis/encodings/accessor.tsx deleted file mode 100644 index 63db7d674..000000000 --- a/libs/shared/lib/vis/encodings/accessor.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import Input from '@graphpolaris/shared/lib/components/inputs'; -import { useGraphQueryResultMeta } from '@graphpolaris/shared/lib/data-access'; -import { DimensionType } from '@graphpolaris/shared/lib/schema'; -import { CompressedElement } from '@graphpolaris/shared/lib/data-access/statistics'; - -type Props = { - value: string | undefined; - onChange: (val: string | number) => void; - element: 'node' | 'edge'; - dimension?: DimensionType[]; - disabled?: boolean; -}; - -const extractAttributesByDimension = (summaryGraph: CompressedElement, dimensions: DimensionType[]): string[] => { - const selectedAttributes: { [label: string]: string[] } = {}; - - Object.keys(summaryGraph.types).map((label) => { - selectedAttributes[label] = []; - Object.keys(summaryGraph.types[label].attributes).map((attribute) => { - const dim: DimensionType = summaryGraph.types[label]?.attributes[attribute].dimension as DimensionType; - dimensions.includes(dim) && selectedAttributes[label].push(attribute); - }); - }); - - let commonAttributes: Set<string> = new Set(); - Object.values(selectedAttributes).forEach((attributes) => { - if (commonAttributes.size === 0) { - commonAttributes = new Set(attributes); - } else { - commonAttributes = new Set([...commonAttributes].filter((attr) => attributes.includes(attr))); - } - }); - - return commonAttributes ? Array.from(commonAttributes) : []; -}; - -export default function Accessor({ value, onChange, element, dimension, disabled = false }: Props) { - const resultStatistics = useGraphQueryResultMeta(); - const [options, setOptions] = useState<string[]>([]); - const [loading, setLoading] = useState<boolean>(true); - - useEffect(() => { - setLoading(Object.keys(resultStatistics.nodes.types).length === 0 && Object.keys(resultStatistics.edges.types).length === 0); - }, [resultStatistics]); - - useEffect(() => { - if (!loading) { - setOptions(extractAttributesByDimension(resultStatistics[element === 'node' ? 'nodes' : 'edges'], dimension || ['categorical'])); - disabled = true; - } else { - disabled = false; - } - }, [resultStatistics, loading, element, dimension]); - - return ( - <div className="mb-2"> - <Input type="dropdown" value={value} onChange={(val: string | number) => onChange(val)} options={options} disabled={disabled} /> - </div> - ); -} diff --git a/libs/shared/lib/vis/encodings/index.ts b/libs/shared/lib/vis/encodings/index.ts deleted file mode 100644 index ea02a9951..000000000 --- a/libs/shared/lib/vis/encodings/index.ts +++ /dev/null @@ -1 +0,0 @@ -export type { Encoding, EncodingTypes, EncodingProps } from './encodings.types'; diff --git a/libs/shared/lib/vis/encodings/selector.tsx b/libs/shared/lib/vis/encodings/selector.tsx deleted file mode 100644 index cc8e31c3c..000000000 --- a/libs/shared/lib/vis/encodings/selector.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import { EncodingSelector } from './selectors'; -import { useGraphQueryResultMeta } from '@graphpolaris/shared/lib/data-access'; -import { ElementType } from './encodings.types'; -import { DimensionType } from '@graphpolaris/shared/lib/schema'; - -type Props = { - selectorType: keyof typeof EncodingSelector; - marking: any; - elementType: ElementType; - onChange: (val: any) => void; - accessorPath: string; -}; - -export default function Selector({ selectorType, elementType, marking, onChange, accessorPath }: Props) { - const graphStatistics = useGraphQueryResultMeta(); - const SelectorComponent = EncodingSelector[selectorType]; - const [statistics, setStatistics] = useState<any>(); - const [dimension, setDimension] = useState<DimensionType>('categorical'); - - useEffect(() => { - const group = graphStatistics[elementType === 'node' ? 'nodes' : 'edges']; - - const combinedValues = Array.from( - new Set( - Object.keys(group.types).flatMap((label) => { - const obj = group.types[label].attributes[accessorPath]; - const { dimension } = obj; - setDimension(dimension); - - if (dimension === 'categorical') { - const { values } = obj; - return values || []; - } else if (dimension === 'numerical') { - console.log(obj); - const { min, max } = obj.statistics; - return [min, max]; - } else if (dimension === 'temporal') { - const { minDate, maxDate } = obj.statistics; - return [minDate, maxDate]; - } else if (dimension === 'spatial') { - const { boundingBox } = obj.statistics; - return boundingBox; - } - return []; - }), - ), - ); - - setStatistics(combinedValues); - }, [accessorPath]); - - return <SelectorComponent marking={marking} onChange={onChange} dimension={dimension} statistics={statistics} />; -} diff --git a/libs/shared/lib/vis/hooks/index.ts b/libs/shared/lib/vis/hooks/index.ts new file mode 100644 index 000000000..917f8727a --- /dev/null +++ b/libs/shared/lib/vis/hooks/index.ts @@ -0,0 +1 @@ +export { useVisualizationManager, Visualizations, VISUALIZATION_TYPES } from './useVisualizationManager'; diff --git a/libs/shared/lib/vis/manager/manager.tsx b/libs/shared/lib/vis/hooks/useVisualizationManager.tsx similarity index 98% rename from libs/shared/lib/vis/manager/manager.tsx rename to libs/shared/lib/vis/hooks/useVisualizationManager.tsx index f53ce861b..c2ebee597 100644 --- a/libs/shared/lib/vis/manager/manager.tsx +++ b/libs/shared/lib/vis/hooks/useVisualizationManager.tsx @@ -1,5 +1,5 @@ import React, { useState, useEffect, Suspense } from 'react'; -import { VISComponentType, VisualizationConfiguration } from '../types'; +import { VISComponentType, VisualizationConfiguration } from '../visualization.types'; import { removeVisualization, reorderVisState, @@ -15,7 +15,7 @@ import { useSessionCache, useVisualization, } from '../../data-access'; -import { VisualizationManager } from './manager.types'; +import { VisualizationManager } from '../visualization.types'; import { HoverType, SelectType, addHover, addSelect } from '../../data-access/store/interactionSlice'; export const Visualizations: Record<string, Function> = { diff --git a/libs/shared/lib/vis/index.ts b/libs/shared/lib/vis/index.ts index 56e72b21f..ac473812c 100644 --- a/libs/shared/lib/vis/index.ts +++ b/libs/shared/lib/vis/index.ts @@ -1 +1 @@ -export * from './panel'; +export * from './components/panel'; diff --git a/libs/shared/lib/vis/manager/index.ts b/libs/shared/lib/vis/manager/index.ts deleted file mode 100644 index 0c29b4efb..000000000 --- a/libs/shared/lib/vis/manager/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export type { VisualizationManager } from './manager.types'; -export { useVisualizationManager, Visualizations, VISUALIZATION_TYPES } from './manager'; diff --git a/libs/shared/lib/vis/manager/manager.types.tsx b/libs/shared/lib/vis/manager/manager.types.tsx deleted file mode 100644 index f53318a09..000000000 --- a/libs/shared/lib/vis/manager/manager.types.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react'; - -export interface VisualizationManager { - renderComponent: () => React.ReactNode; - renderSettings: () => React.ReactNode; - active: string | undefined; - activeType: string | undefined; - tabs: string[]; - changeActive: (id: string) => void; - reorderVisualizations: (args: { draggedVisId: string; dropVisId: string }) => void; - deleteVisualization: (id: string) => void; -} diff --git a/libs/shared/lib/vis/shared/AttributeDataType.test.tsx b/libs/shared/lib/vis/shared/AttributeDataType.test.tsx deleted file mode 100644 index 43f9fe1b4..000000000 --- a/libs/shared/lib/vis/shared/AttributeDataType.test.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import { assert, describe, expect, it } from 'vitest'; - -import { isAttributeDataEntity } from './AttributeDataType'; - -describe('AttributeDataType', () => { - it('true', () => { - expect(true).toEqual(true); - }); -}); - -// /** -// * This program has been developed by students from the bachelor Computer Science at -// * Utrecht University within the Software Project course. -// * © Copyright Utrecht University (Department of Information and Computing Sciences) -// */ -// -// import { isAttributeDataEntity, isAttributeDataRelation } from './AttributeDataType'; -// import { -// mockAttributeDataNLDifferentTypes1, -// mockAttributeDataNLDifferentTypes2, -// mockAttributeDataNLDifferentTypes3, -// mockAttributeDataNLEdge1, -// mockAttributeDataNLInvalidLengthNumerical, -// mockAttributeDataNLInvalidType, -// mockAttributeDataNLNode1, -// mockAttributeDataNLNode1AttributeArrayIsNoArray, -// mockAttributeDataNLUniqueCategoricalValuesIsNoArray, -// mockAttributeDataNLUniqueCategoricalValuesLengthIsZero, -// } from '@graphpolaris/shared/lib/mock-data/schema/MockAttributeDataBatchedNL'; -// -// describe('AttributeDataType', () => { -// it('should return true for a valid attributeData object with an entity', () => { -// expect(isAttributeDataEntity(mockAttributeDataNLNode1)).toEqual(true); -// }); -// -// it('should return true for a valid attributeData object with an relation', () => { -// expect(isAttributeDataRelation(mockAttributeDataNLEdge1)).toEqual(true); -// }); -// -// it('should return false if the attributes array is no array', () => { -// expect(isAttributeDataEntity(mockAttributeDataNLNode1AttributeArrayIsNoArray)).toEqual(false); -// }); -// -// it('should return false if the unique-categorical-values array is no array', () => { -// expect(isAttributeDataEntity(mockAttributeDataNLUniqueCategoricalValuesIsNoArray)).toEqual( -// false, -// ); -// }); -// -// it('should return false if the unique-categorical-values array has length 0, while having "Categorical" type', () => { -// expect(isAttributeDataEntity(mockAttributeDataNLUniqueCategoricalValuesLengthIsZero)).toEqual( -// false, -// ); -// }); -// -// it('should return false if the unique-categorical-values have different types', () => { -// expect(isAttributeDataEntity(mockAttributeDataNLDifferentTypes1)).toEqual(false); -// expect(isAttributeDataEntity(mockAttributeDataNLDifferentTypes2)).toEqual(false); -// expect(isAttributeDataEntity(mockAttributeDataNLDifferentTypes3)).toEqual(false); -// }); -// -// it('should return false if the unique-categorical-values array has an element with an invalid type', () => { -// expect(isAttributeDataEntity(mockAttributeDataNLInvalidType)).toEqual(false); -// }); -// -// it('should return false if the unique-categorical-values array contains an element while the category is not "Categorical', () => { -// expect(isAttributeDataEntity(mockAttributeDataNLInvalidLengthNumerical)).toEqual(false); -// }); -// }); diff --git a/libs/shared/lib/vis/shared/AttributeDataType.tsx b/libs/shared/lib/vis/shared/AttributeDataType.tsx deleted file mode 100644 index 2ba60eea0..000000000 --- a/libs/shared/lib/vis/shared/AttributeDataType.tsx +++ /dev/null @@ -1,119 +0,0 @@ -/** - * This program has been developed by students from the bachelor Computer Science at - * Utrecht University within the Software Project course. - * © Copyright Utrecht University (Department of Information and Computing Sciences) - */ -import { AttributeData, AttributeFromAttributeData } from './InputDataTypes'; - -/** - * Checks if an object has all the properties of an attributeData type. If true, the object will be casted to attributeDataType - * @param {any} object The object to check if it is an attributeData object. - * @returns If true, the object is a of type attributeDataType. - */ -export function isAttributeDataEntity(object: any): object is AttributeData { - if ( - typeof object === 'object' && - 'id' in object && - object.id != undefined && - 'length' in object && - object.length != undefined && - 'connectedRatio' in object && - object.connectedRatio != undefined && - 'summedNullAmount' in object && - object.summedNullAmount != undefined && - 'attributes' in object && - object.attributes != undefined - ) { - // Check the structure of a node. - return ( - typeof object.id == 'string' && - typeof object.length == 'number' && - typeof object.connectedRatio == 'number' && - typeof object.summedNullAmount == 'number' && - isAttributeArray(object.attributes) - ); - } - return false; -} - -/** - * Checks if an object has all the properties of an attributeData type. If true, the object will be casted to attributeDataType - * @param {any} object The object to check if it is an attributeData object. - * @returns If true, the object is a of type attributeDataType. - */ -export function isAttributeDataRelation(object: any): object is AttributeData { - if ( - typeof object === 'object' && - 'id' in object && - object.id != undefined && - 'length' in object && - object.length != undefined && - 'fromRatio' in object && - object.fromRatio != undefined && - 'toRatio' in object && - object.toRatio != undefined && - 'summedNullAmount' in object && - object.summedNullAmount != undefined && - 'attributes' in object && - object.attributes != undefined - ) { - // Check the structure of a edge. - return ( - typeof object.id == 'string' && - typeof object.length == 'number' && - typeof object.fromRatio == 'number' && - typeof object.toRatio == 'number' && - typeof object.summedNullAmount == 'number' && - isAttributeArray(object.attributes) - ); - } - return false; -} -/** - * Checks if an object has the correct structure of an attribute from AttributeData. - * @param {any} object The object to check. - * @returns If true, the object has the correct structure of an attribute from AttributeData. - */ -function isAttributeArray(object: any): object is AttributeFromAttributeData[] { - if (!Array.isArray(object)) return false; - - return object.every( - (attribute: AttributeFromAttributeData) => - typeof attribute.name == 'string' && - ['Categorical', 'Numerical', 'Other'].includes(attribute.type) && - typeof attribute.nullAmount == 'number' && - isCorrectUniqueCategoricalValues(attribute) - ); -} - -/** - * Checks whether uniqueCategoricalValues has the correct values. - * @param attribute The attribute that contains the array (possibly null) with all unique values of the categories. - * @returns If true, uniqueCategoricalValues is or null, or has an array with values of the same type. - */ -function isCorrectUniqueCategoricalValues(attribute: any): attribute is AttributeFromAttributeData { - const uniqueCategoricalValues = attribute.uniqueCategoricalValues; - - // Check if uniqueCategoricalValues is an array. - if (!Array.isArray(uniqueCategoricalValues)) return false; - - // Check if uniqueCategoricalValues.type is Categorical. - if (attribute.type === 'Categorical') { - // If true, it has to have a length bigger than 0. - if (uniqueCategoricalValues.length == 0) return false; - - // All types in the array has to be the same. - if (typeof uniqueCategoricalValues[0] == 'string') { - return uniqueCategoricalValues.every((value: any) => typeof value == 'string'); - } else if (typeof uniqueCategoricalValues[0] == 'number') { - return uniqueCategoricalValues.every((value: any) => typeof value == 'number'); - } else if (typeof uniqueCategoricalValues[0] == 'boolean') { - return uniqueCategoricalValues.every((value: any) => typeof value == 'boolean'); - } else return false; - } - // If the type is Numerical or Other (the two remaining), check if the length of the array is 0. - else { - if (uniqueCategoricalValues.length == 0) return true; - else return false; - } -} diff --git a/libs/shared/lib/vis/shared/InputDataTypes.tsx b/libs/shared/lib/vis/shared/InputDataTypes.tsx deleted file mode 100644 index 4d97b6529..000000000 --- a/libs/shared/lib/vis/shared/InputDataTypes.tsx +++ /dev/null @@ -1,52 +0,0 @@ -/** - * This program has been developed by students from the bachelor Computer Science at - * Utrecht University within the Software Project course. - * © Copyright Utrecht University (Department of Information and Computing Sciences) - */ -import { SchemaAttribute } from '../../schema'; -import { AttributeCategory } from './Types'; - -/** Node type, consist of a name and a list of attributes */ -export type Node = { - name: string; - attributes: SchemaAttribute[]; -}; - -/** Edge type, consist of a name, start point, end point and a list of attributes */ -export type Edge = { - name: string; - to: string; - from: string; - collection: string; - attributes: SchemaAttribute[]; -}; - -/** Type of the attribute-data, which could be either of a node (entity) or an edge (relation) */ -export type AttributeData = NodeAttributeData | EdgeAttributeData; - -/** Type for a node containing all attribute-data */ -export type NodeAttributeData = { - id: string; - attributes: AttributeFromAttributeData[]; - length: number; - connectedRatio: number; - summedNullAmount: number; -}; - -/** Type for an edge containing all attribute-data */ -export type EdgeAttributeData = { - id: string; - attributes: AttributeFromAttributeData[]; - length: number; - fromRatio: number; - toRatio: number; - summedNullAmount: number; -}; - -/** Type for an attribute of a node or an edge, containing attribute-data */ -export type AttributeFromAttributeData = { - name: string; - type: AttributeCategory; - nullAmount: number; - uniqueCategoricalValues: null | string[] | number[] | boolean[]; -}; diff --git a/libs/shared/lib/vis/shared/ResultNodeLinkParserUseCase.tsx b/libs/shared/lib/vis/shared/ResultNodeLinkParserUseCase.tsx deleted file mode 100644 index 611d8d120..000000000 --- a/libs/shared/lib/vis/shared/ResultNodeLinkParserUseCase.tsx +++ /dev/null @@ -1,132 +0,0 @@ -/** - * This program has been developed by students from the bachelor Computer Science at - * Utrecht University within the Software Project course. - * © Copyright Utrecht University (Department of Information and Computing Sciences) - */ -import { GraphType, LinkType, NodeType } from '../visualizations/nodelinkvis/types'; -import { Edge, Node, GraphQueryResult } from '../../data-access/store'; -import { ML } from '../../data-access/store/mlSlice'; -/** ResultNodeLinkParserUseCase implements methods to parse and translate websocket messages from the backend into a GraphType. */ - -/** - * This program has been developed by students from the bachelor Computer Science at - * Utrecht University within the Software Project course. - * © Copyright Utrecht University (Department of Information and Computing Sciences) - */ -/** A node link data-type for a query result object from the backend. */ -// export type NodeLinkResultType = { DEPRECATED USE GraphQueryResult -// nodes: Node[]; -// edges: Link[]; -// mlEdges?: Link[]; -// }; - -/** Typing for nodes and links in the node-link result. Nodes and links should always have an id and attributes. */ -// export interface AxisType { -// id: string; -// attributes: Record<string, any>; -// mldata?: Record<string, string[]> | number; // This is shortest path data . This name is needs to be changed together with backend TODO: Change this. -// } - -/** Typing for a node in the node-link result */ -// export type Node = AxisType; - -/** Typing for a link in the node-link result */ -// export interface Link extends AxisType { -// from: string; -// to: string; -// } - -export type AxisType = Node | Edge; - -/** Gets the group to which the node/edge belongs */ -export function getGroupName(axisType: AxisType): string { - // FIXME: only works in arangodb - return axisType.label; -} - -/** Returns true if the given id belongs to the target group. */ -export function isNotInGroup(nodeOrEdge: AxisType, targetGroup: string): boolean { - return getGroupName(nodeOrEdge) != targetGroup; -} - -/** Checks if a query result form the backend contains valid NodeLinkResultType data. - * @param {any} jsonObject The query result object received from the frontend. - * @returns True and the jsonObject will be casted, false if the jsonObject did not contain all the data fields. - */ -export function isNodeLinkResult(jsonObject: any): jsonObject is GraphQueryResult { - if (typeof jsonObject === 'object' && jsonObject !== null && 'nodes' in jsonObject && 'edges' in jsonObject) { - if (!Array.isArray(jsonObject.nodes) || !Array.isArray(jsonObject.edges)) return false; - - const validNodes = jsonObject.nodes.every((node: any) => 'id' in node && 'attributes' in node); - const validEdges = jsonObject.edges.every((edge: any) => 'from' in edge && 'to' in edge); - - return validNodes && validEdges; - } else return false; -} - -/** Returns a record with a type of the nodes as key and a number that represents how many times this type is present in the nodeLinkResult as value. */ -export function getNodeTypes(nodeLinkResult: GraphQueryResult): Record<string, number> { - const types: Record<string, number> = {}; - - nodeLinkResult.nodes.forEach((node) => { - const type = getGroupName(node); - if (types[type] != undefined) types[type]++; - else types[type] = 0; - }); - - return types; -} - -export type UniqueEdge = { - from: string; - to: string; - count: number; - attributes: Record<string, any>; -}; - -export class ParseToUniqueEdges { - /** - * Parse a message (containing query result) edges to unique edges. - * @param {Link[]} queryResultEdges Edges from a query result. - * @param {boolean} isLinkPredictionData True if parsing LinkPredictionData, false otherwise. - * @returns {UniqueEdge[]} Unique edges with a count property added. - */ - public static parse(queryResultEdges: Edge[], isLinkPredictionData: boolean): UniqueEdge[] { - // Edges to be returned - const edges: UniqueEdge[] = []; - - // Collect the edges in map, to only keep unique edges - // And count the number of same edges - const edgesMap = new Map<string, number>(); - const attriMap = new Map<string, Record<string, any>>(); - if (queryResultEdges != null) { - if (!isLinkPredictionData) { - for (let j = 0; j < queryResultEdges.length; j++) { - const newLink = queryResultEdges[j].from + ':' + queryResultEdges[j].to; - edgesMap.set(newLink, (edgesMap.get(newLink) || 0) + 1); - attriMap.set(newLink, queryResultEdges[j].attributes); - } - - edgesMap.forEach((count, key) => { - const fromTo = key.split(':'); - edges.push({ - from: fromTo[0], - to: fromTo[1], - count: count, - attributes: attriMap.get(key) ?? [], - }); - }); - } else { - for (let i = 0; i < queryResultEdges.length; i++) { - edges.push({ - from: queryResultEdges[i].from, - to: queryResultEdges[i].to, - count: queryResultEdges[i].attributes.jaccard_coefficient as number, - attributes: queryResultEdges[i].attributes, - }); - } - } - } - return edges; - } -} diff --git a/libs/shared/lib/vis/shared/SchemaResultType.test.tsx b/libs/shared/lib/vis/shared/SchemaResultType.test.tsx deleted file mode 100644 index cb08d75ad..000000000 --- a/libs/shared/lib/vis/shared/SchemaResultType.test.tsx +++ /dev/null @@ -1,87 +0,0 @@ -/** - * This program has been developed by students from the bachelor Computer Science at - * Utrecht University within the Software Project course. - * © Copyright Utrecht University (Department of Information and Computing Sciences) - */ -import { assert, describe, expect, it } from 'vitest'; -import { isSchemaResult } from './SchemaResultType'; - -/** Testsuite to test the schema result checker */ -describe('isSchemaResult', () => { - it('should return true for a valid schema object', () => { - const schema: any = { - nodes: [], - edges: [], - }; - expect(isSchemaResult(schema)).toBe(true); - - schema.nodes.push({ - name: 'hoi', - attributes: [{ name: 'attr', type: 'string' }], - }); - schema.edges.push({ - name: 'edge', - from: '1', - to: '2', - collection: 'flights', - attributes: [], - }); - expect(isSchemaResult(schema)).toBe(true); - - schema.TEST = 2; - expect(isSchemaResult(schema)).toBe(true); - }); - - it('should return false for an invalid schema object', () => { - const schema: any = { - nodes: [], - edges: [], - }; - expect(isSchemaResult(schema)).toBe(true); - - schema.edges = 2; - expect(isSchemaResult(schema)).toBe(false); - - schema.edges = [ - { - name: 'test', - from: '2', - TO: '2', - collection: 'flights', - attributes: [], - }, - ]; - expect(isSchemaResult(schema)).toBe(false); - - schema.edges = [ - { - name: 'test', - from: '2', - to: '2', - collection: 'flights', - attributes: 2, - }, - ]; - expect(isSchemaResult(schema)).toBe(false); - - schema.edges = [ - { - name: 'test', - from: '2', - to: '2', - collection: 'flights', - attributes: [ - { name: 'attr', type: 'text' }, - { name: 'attr', type: 'ff at 20' }, - ], - }, - ]; - expect(isSchemaResult(schema)).toBe(false); - - // It should return false for incomplete schema - const onlyNodes: any = { nodes: [] }; - const onlyEdges: any = { egdes: [] }; - expect(isSchemaResult(onlyNodes)).toEqual(false); - expect(isSchemaResult(onlyEdges)).toEqual(false); - }); -}); diff --git a/libs/shared/lib/vis/shared/SchemaResultType.tsx b/libs/shared/lib/vis/shared/SchemaResultType.tsx deleted file mode 100644 index 804ed3f9c..000000000 --- a/libs/shared/lib/vis/shared/SchemaResultType.tsx +++ /dev/null @@ -1,46 +0,0 @@ -/** - * This program has been developed by students from the bachelor Computer Science at - * Utrecht University within the Software Project course. - * © Copyright Utrecht University (Department of Information and Computing Sciences) - */ - -/** - * Checks if an object has all the properties of a schema result. If true, the object will be casted to SchemaResultType - * @param {any} object The object to check if it is a SchemaResult object. - * @returns If true, the object is a of type SchemaResultType. - * @deprecated //TODO remove - */ -export function isSchemaResult(object: any): object is any { - if (typeof object === 'object' && 'nodes' in object && object.nodes != undefined && 'edges' in object && object.edges != undefined) { - if (!Array.isArray(object.nodes) || !Array.isArray(object.edges)) return false; - - // Check the structure of all nodes - const validNodes = object.nodes.every((node: any) => typeof node.name == 'string' && isAttributeArray(node.attributes)); - - // Check the structure of all edges - const validEdges = object.edges.every( - (edge: any) => - typeof edge.name == 'string' && - typeof edge.collection == 'string' && - typeof edge.from == 'string' && - typeof edge.to == 'string' && - isAttributeArray(edge.attributes) - ); - return validNodes && validEdges; - } - return false; -} - -/** - * Checks if an object has the structure of a SchemaAttribute. - * @param {any} object The object to check. - * @returns If true, the object has the structure of SchemaAttribute type. - * @deprecated //TODO remove - */ -function isAttributeArray(object: any): object is any[] { - if (!Array.isArray(object)) { - return false; - } - - return object.every((attribute) => typeof attribute.name == 'string' && ['string', 'int', 'bool', 'float'].includes(attribute.type)); -} diff --git a/libs/shared/lib/vis/shared/Types.tsx b/libs/shared/lib/vis/shared/Types.tsx deleted file mode 100644 index 186166281..000000000 --- a/libs/shared/lib/vis/shared/Types.tsx +++ /dev/null @@ -1,119 +0,0 @@ -/** - * This program has been developed by students from the bachelor Computer Science at - * Utrecht University within the Software Project course. - * © Copyright Utrecht University (Department of Information and Computing Sciences) - */ -import { Edge, Node } from 'reactflow'; - -/** - * List of schema elements for react flow - */ -export type SchemaElements = { - nodes: Node[]; - edges: Edge[]; - selfEdges: Edge[]; -}; - -/** - * Point that has an x and y coordinate - */ -export interface Point { - x: number; - y: number; -} - -/** - * Bounding box described by a top left and bottom right coordinate - */ -export interface BoundingBox { - topLeft: Point; - bottomRight: Point; -} - -/** - * Typing for the Node Quality data of an entity. - * It is used for the Node quality analytics and will be displayed in the corresponding popup. - */ -export interface NodeQualityDataForEntities { - nodeCount: number; - attributeNullCount: number; - notConnectedNodeCount: number; - - isAttributeDataIn: boolean; // is true when the data to display has arrived - - // for user interactions - onClickCloseButton: () => void; -} - -/** - * Typing for the Node Quality data of a relation. - * It is used for the Node quality analytics and will be displayed in the corresponding popup. - */ -export interface NodeQualityDataForRelations { - nodeCount: number; - attributeNullCount: number; - // from-entity node --relation--> to-entity node - fromRatio: number; // the ratio of from-entity nodes to nodes that have this relation - toRatio: number; // the ratio of to-entity nodes to nodes that have this relation - - isAttributeDataIn: boolean; // is true when the data to display has arrived - - // for user interactions - onClickCloseButton: () => void; -} - -/** - * Typing for the Node Quality popup of an entity or relation node. - */ -export interface NodeQualityPopupNode extends Node { - data: NodeQualityDataForEntities | NodeQualityDataForRelations; - nodeID: string; //ID of the node for which the popup is -} - -/** - * Typing for the attribute analytics popup menu data of an entity or relation. - */ -export interface AttributeAnalyticsData { - nodeType: NodeType; - nodeID: string; - attributes: AttributeWithData[]; - // nullAmount: number; - - isAttributeDataIn: boolean; // is true when the data to display has arrived - - // for user interactions - onClickCloseButton: () => void; - onClickPlaceInQueryBuilderButton: (name: string, type: string) => void; - searchForAttributes: (id: string, searchbarValue: string) => void; - resetAttributeFilters: (id: string) => void; - applyAttributeFilters: (id: string, category: AttributeCategory, predicate: string, percentage: number) => void; -} - -/** All possible options of categories of an attribute */ -export enum AttributeCategory { - categorical = 'Categorical', - numerical = 'Numerical', - other = 'Other', - undefined = 'undefined', -} - -/** All possible options of node-types */ -export enum NodeType { - entity = 'entity', - relation = 'relation', -} - -/** - * Typing for the attribute analytics popup menu of entity or relation nodes - */ -export interface AttributeAnalyticsPopupMenuNode extends Node { - nodeID: string; //ID of the node for which the popup is - data: AttributeAnalyticsData; -} - -/** Typing of the attributes which are stored in the popup menu's */ -export type AttributeWithData = { - attribute: any; - category: AttributeCategory; - nullAmount: number; -}; diff --git a/libs/shared/lib/vis/shared/VisConfigPanel/ArrowRightIcon.svg b/libs/shared/lib/vis/shared/VisConfigPanel/ArrowRightIcon.svg deleted file mode 100644 index 0b775d11e..000000000 --- a/libs/shared/lib/vis/shared/VisConfigPanel/ArrowRightIcon.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22"><defs><clipPath><path fill="#00f" fill-opacity=".514" d="m-7 1024.36h34v34h-34z"/></clipPath><clipPath><path fill="#aade87" fill-opacity=".472" d="m-6 1028.36h32v32h-32z"/></clipPath></defs><path d="m345.44 248.29l-194.29 194.28c-12.359 12.365-32.397 12.365-44.75 0-12.354-12.354-12.354-32.391 0-44.744l171.91-171.91-171.91-171.9c-12.354-12.359-12.354-32.394 0-44.748 12.354-12.359 32.391-12.359 44.75 0l194.29 194.28c6.177 6.18 9.262 14.271 9.262 22.366 0 8.099-3.091 16.196-9.267 22.373" transform="matrix(.03541-.00013.00013.03541 2.98 3.02)" fill="#4d4d4d"/></svg> \ No newline at end of file diff --git a/libs/shared/lib/vis/shared/VisConfigPanel/QuestionMarkIcon.svg b/libs/shared/lib/vis/shared/VisConfigPanel/QuestionMarkIcon.svg deleted file mode 100644 index 75c116bed..000000000 --- a/libs/shared/lib/vis/shared/VisConfigPanel/QuestionMarkIcon.svg +++ /dev/null @@ -1,5 +0,0 @@ -<svg id="svg2" xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 200 200" version="1.0"> - <g id="layer1"> - <path id="path2413" d="m100 0c-55.2 0-100 44.8-100 100-5.0495e-15 55.2 44.8 100 100 100s100-44.8 100-100-44.8-100-100-100zm0 12.812c48.13 0 87.19 39.058 87.19 87.188s-39.06 87.19-87.19 87.19-87.188-39.06-87.188-87.19 39.058-87.188 87.188-87.188zm1.47 21.25c-5.45 0.03-10.653 0.737-15.282 2.063-4.699 1.346-9.126 3.484-12.876 6.219-3.238 2.362-6.333 5.391-8.687 8.531-4.159 5.549-6.461 11.651-7.063 18.687-0.04 0.468-0.07 0.868-0.062 0.876 0.016 0.016 21.702 2.687 21.812 2.687 0.053 0 0.113-0.234 0.282-0.937 1.941-8.085 5.486-13.521 10.968-16.813 4.32-2.594 9.808-3.612 15.778-2.969 2.74 0.295 5.21 0.96 7.38 2 2.71 1.301 5.18 3.361 6.94 5.813 1.54 2.156 2.46 4.584 2.75 7.312 0.08 0.759 0.05 2.48-0.03 3.219-0.23 1.826-0.7 3.378-1.5 4.969-0.81 1.597-1.48 2.514-2.76 3.812-2.03 2.077-5.18 4.829-10.78 9.407-3.6 2.944-6.04 5.156-8.12 7.343-4.943 5.179-7.191 9.069-8.564 14.719-0.905 3.72-1.256 7.55-1.156 13.19 0.025 1.4 0.062 2.73 0.062 2.97v0.43h21.598l0.03-2.4c0.03-3.27 0.21-5.37 0.56-7.41 0.57-3.27 1.43-5 3.94-7.81 1.6-1.8 3.7-3.76 6.93-6.47 4.77-3.991 8.11-6.99 11.26-10.125 4.91-4.907 7.46-8.26 9.28-12.187 1.43-3.092 2.22-6.166 2.46-9.532 0.06-0.816 0.07-3.03 0-3.968-0.45-7.043-3.1-13.253-8.15-19.032-0.8-0.909-2.78-2.887-3.72-3.718-4.96-4.394-10.69-7.353-17.56-9.094-4.19-1.062-8.23-1.6-13.35-1.75-0.78-0.023-1.59-0.036-2.37-0.032zm-10.908 103.6v22h21.998v-22h-21.998z"/> - </g> -</svg> \ No newline at end of file diff --git a/libs/shared/lib/vis/shared/VisConfigPanel/VisConfigPanel.module.scss b/libs/shared/lib/vis/shared/VisConfigPanel/VisConfigPanel.module.scss deleted file mode 100644 index 4904ce9db..000000000 --- a/libs/shared/lib/vis/shared/VisConfigPanel/VisConfigPanel.module.scss +++ /dev/null @@ -1,99 +0,0 @@ -/** - * This program has been developed by students from the bachelor Computer Science at - * Utrecht University within the Software Project course. - * © Copyright Utrecht University (Department of Information and Computing Sciences) - */ - -/* istanbul ignore file */ -/* The comment above was added so the code coverage wouldn't count this file towards code coverage. - * We do not test components/renderfunctions/styling files. - * See testing plan for more details.*/ -/** Stylesheet for the VisConfigPanelComponent */ -$expandButtonSize: 13px; - -:export { - expandButtonSize: $expandButtonSize; -} - -.container { - height: 100%; - position: absolute; - top: 0; - background-color: #f0f0f0; - - transition: right 0.2s, left 0.2s; - z-index: 100; - - border-radius: 0 0 0 5px; - - .expandButton { - position: absolute; - height: 100%; - width: $expandButtonSize; - background-color: #f0f0f0; - cursor: pointer; - border-radius: 0 0 0 5px; - - &:hover { - background-color: rgb(230, 230, 230); - } - - svg { - position: absolute; - width: 100%; - top: 50%; - margin-top: -0.5em; - } - .arrowLeft { - transform: rotate(180deg); - } - } - - .childrenContainer { - width: 100%; - height: 100%; - - .children { - padding-left: 15px; - - width: 100%; - height: 100%; - - overflow-x: hidden; - overflow-y: auto; - - // SCROLLBAR STYLING - /* Works on Firefox */ - scrollbar-width: thin; - scrollbar-color: #bebebe #f0f0f0; - - /* Works on Chrome, Edge, and Safari */ - &::-webkit-scrollbar { - width: 12px; - } - - &::-webkit-scrollbar-track { - background: #f0f0f0; - } - - &::-webkit-scrollbar-thumb { - background-color: #bebebe; - border-radius: 20px; - border: 3px solid #f0f0f0; - } - } - } -} - -/* .expandButton::after { - content: '<'; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-size: 16px; - display: block; - position: absolute; - top: 50%; - text-align: center; - margin-top: -0.5em; -} */ diff --git a/libs/shared/lib/vis/shared/VisConfigPanel/VisConfigPanel.module.scss.d.ts b/libs/shared/lib/vis/shared/VisConfigPanel/VisConfigPanel.module.scss.d.ts deleted file mode 100644 index 5099a5d37..000000000 --- a/libs/shared/lib/vis/shared/VisConfigPanel/VisConfigPanel.module.scss.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -declare const classNames: { - readonly expandButtonSize: 'expandButtonSize'; - readonly container: 'container'; - readonly expandButton: 'expandButton'; - readonly arrowLeft: 'arrowLeft'; - readonly childrenContainer: 'childrenContainer'; - readonly children: 'children'; -}; -export = classNames; diff --git a/libs/shared/lib/vis/shared/VisConfigPanel/VisConfigPanel.tsx b/libs/shared/lib/vis/shared/VisConfigPanel/VisConfigPanel.tsx deleted file mode 100644 index 4b52f9595..000000000 --- a/libs/shared/lib/vis/shared/VisConfigPanel/VisConfigPanel.tsx +++ /dev/null @@ -1,44 +0,0 @@ -/** - * This program has been developed by students from the bachelor Computer Science at - * Utrecht University within the Software Project course. - * © Copyright Utrecht University (Department of Information and Computing Sciences) - */ - -/* istanbul ignore file */ -/* The comment above was added so the code coverage wouldn't count this file towards code coverage. - * We do not test components/renderfunctions/styling files. - * See testing plan for more details.*/ - -/** A component for rendering a configuration panel to the right of the visualization. */ - -import React, { useState } from 'react'; -import styles from './VisConfigPanel.module.scss'; - -//TODO import { ReactComponent as ArrowRightSVG } from './ArrowRightIcon.svg'; - -export default function VisConfigPanelComponent({ - width = 250, - children, - isLeft = false, -}: { - width?: number; - children?: React.ReactNode; - isLeft?: boolean; -}) { - const [show, setShow] = useState(false); - const containerStyle = isLeft ? { left: show ? 0 : -width + 13, width: width } : { right: show ? 0 : -width + 13, width: width }; - const arrowStyle = isLeft ? { right: 0 } : { left: 0 }; - - return ( - <div className={styles.container} style={containerStyle} key="placeholderKey"> - <div className={styles.expandButton} key="placeholderKey2" onClick={() => (show ? setShow(false) : setShow(true))} style={arrowStyle}> - {/* <ArrowRightSVG className={show == isLeft ? '' : styles.arrowLeft} key="placeholderKey3" /> */} - </div> - <div className={styles.childrenContainer} key="placeholderKey4"> - <div className={styles.children} key="placeholderKey5"> - {children} - </div> - </div> - </div> - ); -} diff --git a/libs/shared/lib/vis/screens/index.tsx b/libs/shared/lib/vis/views/index.tsx similarity index 100% rename from libs/shared/lib/vis/screens/index.tsx rename to libs/shared/lib/vis/views/index.tsx diff --git a/libs/shared/lib/vis/screens/noData.tsx b/libs/shared/lib/vis/views/noData.tsx similarity index 100% rename from libs/shared/lib/vis/screens/noData.tsx rename to libs/shared/lib/vis/views/noData.tsx diff --git a/libs/shared/lib/vis/screens/querying.tsx b/libs/shared/lib/vis/views/querying.tsx similarity index 100% rename from libs/shared/lib/vis/screens/querying.tsx rename to libs/shared/lib/vis/views/querying.tsx diff --git a/libs/shared/lib/vis/screens/recommender.tsx b/libs/shared/lib/vis/views/recommender.tsx similarity index 100% rename from libs/shared/lib/vis/screens/recommender.tsx rename to libs/shared/lib/vis/views/recommender.tsx diff --git a/libs/shared/lib/vis/types.ts b/libs/shared/lib/vis/visualization.types.ts similarity index 61% rename from libs/shared/lib/vis/types.ts rename to libs/shared/lib/vis/visualization.types.ts index 1f91885dd..9a3479e85 100644 --- a/libs/shared/lib/vis/types.ts +++ b/libs/shared/lib/vis/visualization.types.ts @@ -3,7 +3,7 @@ import { ML } from '../data-access/store/mlSlice'; import { SchemaGraph } from '../schema'; import type { AppDispatch } from '../data-access'; import { FC } from 'react'; -import { Visualizations } from './manager/manager'; +import { Visualizations } from './hooks/useVisualizationManager'; export type VisualizationConfiguration = { [id: string]: any }; @@ -23,3 +23,14 @@ export type VisualizationPropTypes = { handleHover: (val: any) => void; handleSelect: (val: any) => void; }; + +export interface VisualizationManager { + renderComponent: () => React.ReactNode; + renderSettings: () => React.ReactNode; + active: string | undefined; + activeType: string | undefined; + tabs: string[]; + changeActive: (id: string) => void; + reorderVisualizations: (args: { draggedVisId: string; dropVisId: string }) => void; + deleteVisualization: (id: string) => void; +} diff --git a/libs/shared/lib/vis/visualizations/mapvis/mapvis.stories.tsx b/libs/shared/lib/vis/visualizations/mapvis/mapvis.stories.tsx index fb7db1d2b..72c0ba81e 100644 --- a/libs/shared/lib/vis/visualizations/mapvis/mapvis.stories.tsx +++ b/libs/shared/lib/vis/visualizations/mapvis/mapvis.stories.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { Meta } from '@storybook/react'; -import { VisualizationPanel } from '../../panel'; +import { VisualizationPanel } from '../../components/panel'; import { Provider } from 'react-redux'; import { configureStore } from '@reduxjs/toolkit'; import { diff --git a/libs/shared/lib/vis/visualizations/mapvis/mapvis.tsx b/libs/shared/lib/vis/visualizations/mapvis/mapvis.tsx index d9f84a2cc..c3f0045c2 100644 --- a/libs/shared/lib/vis/visualizations/mapvis/mapvis.tsx +++ b/libs/shared/lib/vis/visualizations/mapvis/mapvis.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { MapPanel, LayerPanel } from './components'; import GraphModel from './graphModel'; import { GraphType, Layer } from './Types'; -import { VISComponentType, VisualizationPropTypes } from '../../types'; +import { VISComponentType, VisualizationPropTypes } from '../../visualization.types'; import { GraphMetaData } from '@graphpolaris/shared/lib/data-access/statistics'; export type MapProps = {}; diff --git a/libs/shared/lib/vis/visualizations/matrixvis/components/MatrixPixi.tsx b/libs/shared/lib/vis/visualizations/matrixvis/components/MatrixPixi.tsx index 7784f373e..ae3cb0b29 100644 --- a/libs/shared/lib/vis/visualizations/matrixvis/components/MatrixPixi.tsx +++ b/libs/shared/lib/vis/visualizations/matrixvis/components/MatrixPixi.tsx @@ -24,7 +24,7 @@ import { Actions, Interpolations } from 'pixi-actions'; import Color from 'color'; import { createColumn } from './ColumnGraphicsComponent'; import { ReorderingManager } from './ReorderingManager'; -import { VisualizationConfiguration } from '../../../types'; +import { VisualizationConfiguration } from '../../../visualization.types'; type Props = { // onClick: (node: NodeType, pos: IPointData) => void; diff --git a/libs/shared/lib/vis/visualizations/matrixvis/matrix.stories.tsx b/libs/shared/lib/vis/visualizations/matrixvis/matrix.stories.tsx index 9b2fdec0d..32f4b231c 100644 --- a/libs/shared/lib/vis/visualizations/matrixvis/matrix.stories.tsx +++ b/libs/shared/lib/vis/visualizations/matrixvis/matrix.stories.tsx @@ -3,7 +3,7 @@ import { Meta } from '@storybook/react'; import { configureStore } from '@reduxjs/toolkit'; import { Provider } from 'react-redux'; import { big2ndChamberQueryResult, smallFlightsQueryResults, mockLargeQueryResults } from '../../../mock-data'; -import { VisualizationPanel } from '../../panel'; +import { VisualizationPanel } from '../../components/panel'; import { assignNewGraphQueryResult, diff --git a/libs/shared/lib/vis/visualizations/matrixvis/matrixvis.tsx b/libs/shared/lib/vis/visualizations/matrixvis/matrixvis.tsx index 9710f0646..c58e4daee 100644 --- a/libs/shared/lib/vis/visualizations/matrixvis/matrixvis.tsx +++ b/libs/shared/lib/vis/visualizations/matrixvis/matrixvis.tsx @@ -3,10 +3,10 @@ import { useImmer } from 'use-immer'; import { GraphQueryResult } from '../../../data-access/store'; import { LinkType, NodeType } from './Types'; import { MatrixPixi } from './components/MatrixPixi'; -import { VisualizationPropTypes, VISComponentType } from '../../types'; +import { VisualizationPropTypes, VISComponentType } from '../../visualization.types'; import Input from '@graphpolaris/shared/lib/components/inputs'; import { GraphMetaData } from '@graphpolaris/shared/lib/data-access/statistics'; -import { SettingsContainer } from '@graphpolaris/shared/lib/vis/configuration'; +import { SettingsContainer } from '@graphpolaris/shared/lib/vis/components/config'; import { dataColors, tailwindColors } from 'config'; export interface MatrixVisProps { diff --git a/libs/shared/lib/vis/visualizations/nodelinkvis/components/NLPixi.tsx b/libs/shared/lib/vis/visualizations/nodelinkvis/components/NLPixi.tsx index 3aba8b83c..2fcb9ab4c 100644 --- a/libs/shared/lib/vis/visualizations/nodelinkvis/components/NLPixi.tsx +++ b/libs/shared/lib/vis/visualizations/nodelinkvis/components/NLPixi.tsx @@ -7,7 +7,7 @@ import * as force from './NLForce'; import { Viewport } from 'pixi-viewport'; import { useAppDispatch, useML, useSearchResultData } from '../../../../data-access'; import { NLPopup } from './NLPopup'; -import { VisualizationConfiguration } from '../../../types'; +import { VisualizationConfiguration } from '../../../visualization.types'; type Props = { onClick: (node: NodeType, pos: IPointData) => void; diff --git a/libs/shared/lib/vis/visualizations/nodelinkvis/nodelinkvis.stories.tsx b/libs/shared/lib/vis/visualizations/nodelinkvis/nodelinkvis.stories.tsx index dbc1f31d9..0ca6d3a0e 100644 --- a/libs/shared/lib/vis/visualizations/nodelinkvis/nodelinkvis.stories.tsx +++ b/libs/shared/lib/vis/visualizations/nodelinkvis/nodelinkvis.stories.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { Meta } from '@storybook/react'; -import { VisualizationPanel } from '../../panel'; +import { VisualizationPanel } from '../../components/panel'; import { assignNewGraphQueryResult, graphQueryResultSlice, diff --git a/libs/shared/lib/vis/visualizations/nodelinkvis/nodelinkvis.tsx b/libs/shared/lib/vis/visualizations/nodelinkvis/nodelinkvis.tsx index 9b8411bde..5c8ba4531 100644 --- a/libs/shared/lib/vis/visualizations/nodelinkvis/nodelinkvis.tsx +++ b/libs/shared/lib/vis/visualizations/nodelinkvis/nodelinkvis.tsx @@ -4,10 +4,10 @@ import { NLPixi } from './components/NLPixi'; import { parseQueryResult } from './components/query2NL'; import { useImmer } from 'use-immer'; import { ML, setShortestPathSource, setShortestPathTarget } from '../../../data-access/store/mlSlice'; -import { VisualizationPropTypes, VISComponentType } from '../../types'; +import { VisualizationPropTypes, VISComponentType } from '../../visualization.types'; import Input from '@graphpolaris/shared/lib/components/inputs'; import { GraphMetaData } from '@graphpolaris/shared/lib/data-access/statistics'; -import { SettingsContainer, SettingsHeader } from '@graphpolaris/shared/lib/vis/configuration'; +import { SettingsContainer, SettingsHeader } from '@graphpolaris/shared/lib/vis/components/config'; import { validateProps } from '@deck.gl/core/typed/lifecycle/props'; export interface NodelinkVisProps { diff --git a/libs/shared/lib/vis/visualizations/paohvis/paohvis.stories.tsx b/libs/shared/lib/vis/visualizations/paohvis/paohvis.stories.tsx index fdd369601..62909929e 100644 --- a/libs/shared/lib/vis/visualizations/paohvis/paohvis.stories.tsx +++ b/libs/shared/lib/vis/visualizations/paohvis/paohvis.stories.tsx @@ -8,7 +8,7 @@ import { } from '../../../data-access/store'; import { configureStore } from '@reduxjs/toolkit'; import { Meta } from '@storybook/react'; -import { VisualizationPanel } from '../../panel'; +import { VisualizationPanel } from '../../components/panel'; import { Provider } from 'react-redux'; import { SchemaUtils } from '../../../schema/schema-utils'; import { bigMockQueryResults, simpleSchemaRaw, smallFlightsQueryResults } from '../../../mock-data'; diff --git a/libs/shared/lib/vis/visualizations/paohvis/paohvis.tsx b/libs/shared/lib/vis/visualizations/paohvis/paohvis.tsx index caca7777a..32782fdf1 100644 --- a/libs/shared/lib/vis/visualizations/paohvis/paohvis.tsx +++ b/libs/shared/lib/vis/visualizations/paohvis/paohvis.tsx @@ -27,9 +27,9 @@ import { HyperEdgeRange } from './components/HyperEdgesRange'; import ToPaohvisDataParserUseCase from './utils/ToPaohvisDataParserUsecase'; import MakePaohvisMenu from './components/MakePaohvisMenu'; import { RowLabelColumn } from './components/RowLabelColumn'; -import { VISComponentType, VisualizationPropTypes } from '../../types'; +import { VISComponentType, VisualizationPropTypes } from '../../visualization.types'; import { GraphMetaData } from '@graphpolaris/shared/lib/data-access/statistics'; -import { SettingsContainer, SettingsHeader } from '@graphpolaris/shared/lib/vis/configuration'; +import { SettingsContainer, SettingsHeader } from '@graphpolaris/shared/lib/vis/components/config'; import Input from '@graphpolaris/shared/lib/components/inputs'; type PaohvisViewModelState = { diff --git a/libs/shared/lib/vis/visualizations/rawjsonvis/rawjsonvis.stories.tsx b/libs/shared/lib/vis/visualizations/rawjsonvis/rawjsonvis.stories.tsx index adb53e6cf..9bfd96ee8 100644 --- a/libs/shared/lib/vis/visualizations/rawjsonvis/rawjsonvis.stories.tsx +++ b/libs/shared/lib/vis/visualizations/rawjsonvis/rawjsonvis.stories.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { Meta } from '@storybook/react'; -import { VisualizationPanel } from '../../panel'; +import { VisualizationPanel } from '../../components/panel'; import { assignNewGraphQueryResult, graphQueryResultSlice, diff --git a/libs/shared/lib/vis/visualizations/rawjsonvis/rawjsonvis.tsx b/libs/shared/lib/vis/visualizations/rawjsonvis/rawjsonvis.tsx index 054e98f9f..691b28d85 100644 --- a/libs/shared/lib/vis/visualizations/rawjsonvis/rawjsonvis.tsx +++ b/libs/shared/lib/vis/visualizations/rawjsonvis/rawjsonvis.tsx @@ -1,8 +1,8 @@ import React, { useEffect } from 'react'; import ReactJSONView from 'react-json-view'; -import { VisualizationPropTypes, VISComponentType } from '../../types'; +import { VisualizationPropTypes, VISComponentType } from '../../visualization.types'; import { GraphMetaData } from '@graphpolaris/shared/lib/data-access/statistics'; -import { SettingsContainer } from '@graphpolaris/shared/lib/vis/configuration'; +import { SettingsContainer } from '@graphpolaris/shared/lib/vis/components/config'; import Input from '@graphpolaris/shared/lib/components/inputs'; export interface RawJSONVisProps { diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/semanticsubstrates.stories.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/semanticsubstrates.stories.tsx index 9c518a5bd..cd0745157 100644 --- a/libs/shared/lib/vis/visualizations/semanticsubstrates/semanticsubstrates.stories.tsx +++ b/libs/shared/lib/vis/visualizations/semanticsubstrates/semanticsubstrates.stories.tsx @@ -9,7 +9,7 @@ import { import { configureStore } from '@reduxjs/toolkit'; import { Meta } from '@storybook/react'; import { Provider } from 'react-redux'; -import { VisualizationPanel } from '../../panel'; +import { VisualizationPanel } from '../../components/panel'; import { SchemaUtils } from '../../../schema/schema-utils'; import { simpleSchemaAirportRaw } from '../../../mock-data/schema/simpleAirportRaw'; import { bigMockQueryResults } from '../../../mock-data'; diff --git a/libs/shared/lib/vis/visualizations/tablevis/tablevis.stories.tsx b/libs/shared/lib/vis/visualizations/tablevis/tablevis.stories.tsx index 698d5ddec..c0e5c5187 100644 --- a/libs/shared/lib/vis/visualizations/tablevis/tablevis.stories.tsx +++ b/libs/shared/lib/vis/visualizations/tablevis/tablevis.stories.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { Meta } from '@storybook/react'; -import { VisualizationPanel } from '../../panel'; +import { VisualizationPanel } from '../../components/panel'; import { assignNewGraphQueryResult, graphQueryResultSlice, diff --git a/libs/shared/lib/vis/visualizations/tablevis/tablevis.tsx b/libs/shared/lib/vis/visualizations/tablevis/tablevis.tsx index ef6ead2a0..a0af56f16 100644 --- a/libs/shared/lib/vis/visualizations/tablevis/tablevis.tsx +++ b/libs/shared/lib/vis/visualizations/tablevis/tablevis.tsx @@ -1,10 +1,10 @@ import React, { useMemo, useRef } from 'react'; import { Table, AugmentedNodeAttributes } from './components/Table'; import { SchemaAttribute } from '../../../schema'; -import { VisualizationPropTypes, VISComponentType } from '../../types'; +import { VisualizationPropTypes, VISComponentType } from '../../visualization.types'; import Input from '@graphpolaris/shared/lib/components/inputs'; import { GraphMetaData } from '@graphpolaris/shared/lib/data-access/statistics'; -import { SettingsContainer, SettingsHeader } from '@graphpolaris/shared/lib/vis/configuration'; +import { SettingsContainer, SettingsHeader } from '@graphpolaris/shared/lib/vis/components/config'; export type TableProps = { showBarplot: boolean; -- GitLab