From a4be2db1a8bb80e1c9c4fd37ed5e0a58b9f008d1 Mon Sep 17 00:00:00 2001 From: Pramod S <87521752+pramodcog@users.noreply.github.com> Date: Mon, 24 Jul 2023 14:16:00 +0200 Subject: [PATCH] feat: 3D Resources layering react component (#3495) * Initial layering component for Cad model * Added sliders and adjusted UI for submenu * Fixed lint error * fixed 360 image visibility issue * Improved UI when one of the 3D resources is not available * removed opacity from 3D resources layers option * removed additional elements which was not needed * added indeterminate option for checkbox and exposed LayerButton * Update react-components/src/components/RevealToolbar/LayersContainer/elements.ts Co-authored-by: Savelii Novikov <45129444+Savokr@users.noreply.github.com> * Update react-components/src/components/RevealToolbar/LayersContainer/LayersContainer.tsx Co-authored-by: Savelii Novikov <45129444+Savokr@users.noreply.github.com> * Update react-components/src/components/RevealToolbar/LayersContainer/LayersContainer.tsx Co-authored-by: Savelii Novikov <45129444+Savokr@users.noreply.github.com> * Added model name & number of models in each 3D resources UI * updated component key to lodash/uniqueId * Update react-components/src/components/RevealToolbar/LayersContainer/CadModelLayersContainer.tsx Co-authored-by: Deep <70804363+deep-cognite@users.noreply.github.com> * Update react-components/src/components/RevealToolbar/LayersContainer/elements.ts Co-authored-by: Savelii Novikov <45129444+Savokr@users.noreply.github.com> * Update react-components/src/components/RevealToolbar/LayersContainer/CadModelLayersContainer.tsx Co-authored-by: Savelii Novikov <45129444+Savokr@users.noreply.github.com> * Update react-components/src/components/RevealToolbar/LayersContainer/Image360LayersContainer.tsx Co-authored-by: Deep <70804363+deep-cognite@users.noreply.github.com> * Update react-components/src/hooks/use3DModelName.tsx Co-authored-by: Deep <70804363+deep-cognite@users.noreply.github.com> * addresed review comments * Updated pointCloud & 360 image count number styling --------- Co-authored-by: cognite-bulldozer[bot] <51074376+cognite-bulldozer[bot]@users.noreply.github.com> Co-authored-by: Savelii Novikov <45129444+Savokr@users.noreply.github.com> Co-authored-by: Deep <70804363+deep-cognite@users.noreply.github.com> --- .../components/RevealToolbar/LayersButton.tsx | 30 ++++++ .../CadModelLayersContainer.tsx | 101 ++++++++++++++++++ .../Image360LayersContainer.tsx | 92 ++++++++++++++++ .../LayersContainer/LayersContainer.tsx | 34 ++++++ .../PointCloudLayersContainer.tsx | 97 +++++++++++++++++ .../RevealToolbar/LayersContainer/elements.ts | 41 +++++++ .../RevealToolbar/RevealToolbar.tsx | 5 +- react-components/src/hooks/use3DModelName.tsx | 34 ++++++ react-components/src/index.ts | 2 + .../stories/LayersContainer.stories.tsx | 56 ++++++++++ 10 files changed, 489 insertions(+), 3 deletions(-) create mode 100644 react-components/src/components/RevealToolbar/LayersButton.tsx create mode 100644 react-components/src/components/RevealToolbar/LayersContainer/CadModelLayersContainer.tsx create mode 100644 react-components/src/components/RevealToolbar/LayersContainer/Image360LayersContainer.tsx create mode 100644 react-components/src/components/RevealToolbar/LayersContainer/LayersContainer.tsx create mode 100644 react-components/src/components/RevealToolbar/LayersContainer/PointCloudLayersContainer.tsx create mode 100644 react-components/src/components/RevealToolbar/LayersContainer/elements.ts create mode 100644 react-components/src/hooks/use3DModelName.tsx create mode 100644 react-components/stories/LayersContainer.stories.tsx diff --git a/react-components/src/components/RevealToolbar/LayersButton.tsx b/react-components/src/components/RevealToolbar/LayersButton.tsx new file mode 100644 index 00000000000..8245db5bac9 --- /dev/null +++ b/react-components/src/components/RevealToolbar/LayersButton.tsx @@ -0,0 +1,30 @@ +/*! + * Copyright 2023 Cognite AS + */ + +import { type ReactElement, useState } from 'react'; +import { Button, Dropdown } from '@cognite/cogs.js'; +import { LayersContainer } from './LayersContainer/LayersContainer'; + +export const LayersButton = (): ReactElement => { + const [layersEnabled, setLayersEnabled] = useState(false); + const showLayers = (): void => { + setLayersEnabled(!layersEnabled); + }; + + return ( + } + visible={layersEnabled} + placement="auto"> +