From dc41c814e65fd516645ffa9f8521a3fa8d2ce057 Mon Sep 17 00:00:00 2001 From: "Christopher J. Tannum" Date: Wed, 16 Aug 2023 09:53:34 +0200 Subject: [PATCH] chore: simplify quality component (#3583) * basic high quality setting button * Updated component to switch & restructured code * separated high fidelity & original cad coloring as two containers * Setting button component which contains High Fidelity setting as default option and supports addingcustom setting elements * moved custom settings button story example into Toolbar story * Added custom High fidelity config option * chore: simplify quality component * chore: rename internal type --------- Co-authored-by: Pramod S Co-authored-by: cognite-bulldozer[bot] <51074376+cognite-bulldozer[bot]@users.noreply.github.com> --- .../components/RevealToolbar/LayersButton.tsx | 2 - .../RevealToolbar/RevealToolbar.tsx | 47 ++++++++---- .../RevealToolbar/SettingsButton.tsx | 37 +++++++++ .../HighFidelityContainer.tsx | 76 +++++++++++++++++++ .../RevealToolbar/SettingsContainer/types.ts | 25 ++++++ react-components/src/index.ts | 1 + react-components/src/utilities/constants.ts | 1 + react-components/stories/Toolbar.stories.tsx | 56 +++++++++++++- 8 files changed, 226 insertions(+), 19 deletions(-) create mode 100644 react-components/src/components/RevealToolbar/SettingsButton.tsx create mode 100644 react-components/src/components/RevealToolbar/SettingsContainer/HighFidelityContainer.tsx create mode 100644 react-components/src/components/RevealToolbar/SettingsContainer/types.ts diff --git a/react-components/src/components/RevealToolbar/LayersButton.tsx b/react-components/src/components/RevealToolbar/LayersButton.tsx index 0818674351e..185d31ca562 100644 --- a/react-components/src/components/RevealToolbar/LayersButton.tsx +++ b/react-components/src/components/RevealToolbar/LayersButton.tsx @@ -20,7 +20,6 @@ import { useRevealContainerElement } from '../RevealContainer/RevealContainerEle export const LayersButton = (): ReactElement => { const viewer = useReveal(); const revealContainerElement = useRevealContainerElement(); - const [layersEnabled, setLayersEnabled] = useState(false); const [visible, setVisible] = useState(false); const [cadModelIds, setCadModelIds] = useState([]); @@ -38,7 +37,6 @@ export const LayersButton = (): ReactElement => { const pointCloudModelName = use3DModelName(pointCloudModelIds); const showLayers = (): void => { - setLayersEnabled(!layersEnabled); setVisible((prevState) => !prevState); }; diff --git a/react-components/src/components/RevealToolbar/RevealToolbar.tsx b/react-components/src/components/RevealToolbar/RevealToolbar.tsx index ae064bc0019..78cd66095ee 100644 --- a/react-components/src/components/RevealToolbar/RevealToolbar.tsx +++ b/react-components/src/components/RevealToolbar/RevealToolbar.tsx @@ -7,9 +7,11 @@ import { Button, ToolBar, type ToolBarProps } from '@cognite/cogs.js'; import { FitModelsButton } from './FitModelsButton'; import { LayersButton } from './LayersButton'; import { SlicerButton } from './SlicerButton'; +import { SettingsButton } from './SettingsButton'; import { withSuppressRevealEvents } from '../../higher-order-components/withSuppressRevealEvents'; import { MeasurementButton } from './MeasurementButton'; import { HelpButton } from './HelpButton'; +import { type QualitySettings } from './SettingsContainer/types'; const defaultStyle: ToolBarProps = { style: { @@ -19,32 +21,45 @@ const defaultStyle: ToolBarProps = { } }; -const defaultContent = ( - <> - +type RevealToolbarProps = ToolBarProps & { + customSettingsContent?: JSX.Element; + lowFidelitySettings?: Partial; + highFidelitySettings?: Partial; +}; - - + + ); +}; + +const exampleHighQualitySettings: QualitySettings = { + cadBudget: { + maximumRenderCost: 95000000, + highDetailProximityThreshold: 100 + }, + pointCloudBudget: { + numberOfPoints: 12000000 + }, + resolutionOptions: { + maxRenderResolution: Infinity, + movingCameraResolutionFactor: 1 + } +}; + +const exampleLowQualitySettings: QualitySettings = { + cadBudget: { + maximumRenderCost: 95000000, + highDetailProximityThreshold: 100 + }, + pointCloudBudget: { + numberOfPoints: 12000000 + }, + resolutionOptions: { + maxRenderResolution: 1e5, + movingCameraResolutionFactor: 1 + } +}; + export const Main: Story = { args: { addModelOptions: { @@ -56,7 +104,11 @@ export const Main: Story = { render: ({ addModelOptions }) => ( - +