From 20de9d173f1cebb89fc7ce55623bdd823109da49 Mon Sep 17 00:00:00 2001 From: Vanessa Stoiber <52395160+dvvanessastoiber@users.noreply.github.com> Date: Tue, 7 Feb 2023 10:56:57 +0100 Subject: [PATCH] Release 16.3.0 (#828) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Moritz Heckmann Co-authored-by: dvmoritzschoefl <77104411+dvmoritzschoefl@users.noreply.github.com> Co-authored-by: Michael Puehringer Co-authored-by: dvtschachinger Co-authored-by: Holger Stitz Co-authored-by: Michael PĆ¼hringer <51900829+puehringer@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dvzacharycutler Co-authored-by: oltionchampari Co-authored-by: Christian Bors Co-authored-by: dvflorianengertsberger <87969942+dvflorianengertsberger@users.noreply.github.com> Co-authored-by: Zach Cutler <87644761+dvzacharycutler@users.noreply.github.com> Co-authored-by: anita-steiner <> Co-authored-by: Anita Steiner Co-authored-by: dvdanielamoitzi <57343176+dvdanielamoitzi@users.noreply.github.com> Co-authored-by: Christian Bors <84898946+dvchristianbors@users.noreply.github.com> Co-authored-by: Markus Vogl <80687597+dvmarkusvogl@users.noreply.github.com> Co-authored-by: Champari Oltion <51322092+oltionchampari@users.noreply.github.com> --- .github/workflows/build.yml | 17 +- .storybook/main.js | 28 +- .vscode/launch.json | 15 + .vscode/settings.json | 7 + Makefile | 34 +- cypress.config.ts | 20 + cypress/.gitignore | 2 + .../component/component-health-check.cy.tsx | 10 + cypress/e2e/health-check.cy.ts | 6 + cypress/plugins/index.js | 22 - cypress/support/{commands.js => commands.ts} | 121 +++-- cypress/support/component-index.html | 12 + cypress/support/component.ts | 40 ++ cypress/support/e2e.ts | 20 + cypress/support/index.js | 48 -- cypress/tsconfig.json | 15 + dist/base/rest.d.ts | 2 +- dist/clue/base/mode.js | 20 +- dist/clue/base/mode.js.map | 2 +- .../provenance/ProvenanceGraphMenu.d.ts.map | 2 +- .../provenance/ProvenanceGraphMenu.js.map | 2 +- dist/clue/provvis/provvis.js | 10 +- dist/clue/provvis/provvis.js.map | 2 +- dist/clue/provvis/storyvis.js | 4 +- dist/clue/wrapper/ACLUEWrapper.js | 4 +- dist/clue/wrapper/ACLUEWrapper.js.map | 2 +- dist/demo/MainApp.d.ts.map | 2 +- dist/demo/MainApp.js | 3 +- dist/demo/MainApp.js.map | 2 +- dist/lineup/ARankingView.d.ts.map | 2 +- dist/lineup/ARankingView.js | 44 +- dist/lineup/ARankingView.js.map | 2 +- dist/lineup/Ranking.d.ts | 1 + dist/lineup/Ranking.d.ts.map | 2 +- dist/lineup/Ranking.js | 24 +- dist/lineup/Ranking.js.map | 2 +- .../internal/LineUpSelectionHelper.d.ts | 5 +- .../internal/LineUpSelectionHelper.d.ts.map | 2 +- dist/lineup/internal/LineUpSelectionHelper.js | 9 +- .../internal/LineUpSelectionHelper.js.map | 2 +- .../panel/LineUpOrderedRowIndicies.d.ts.map | 2 +- dist/lineup/panel/LineUpOrderedRowIndicies.js | 8 +- .../panel/LineUpOrderedRowIndicies.js.map | 2 +- .../StructureImageFilterDialog.d.ts.map | 2 +- .../StructureImageFilterDialog.js | 5 +- .../StructureImageFilterDialog.js.map | 2 +- .../StructureImageRenderer.d.ts.map | 2 +- .../structureImage/StructureImageRenderer.js | 3 +- .../StructureImageRenderer.js.map | 2 +- dist/locales/en/tdp.json | 14 +- dist/scss/main.scss | 2 + dist/scss/vendors/_lineup.scss | 5 +- dist/scss/vendors/_plotly.scss | 8 + dist/views/visyn/demo/VisynDemoView.d.ts.map | 2 +- dist/views/visyn/demo/VisynDemoView.js | 2 +- dist/views/visyn/demo/VisynDemoView.js.map | 2 +- dist/vis/LineupVisWrapper.d.ts | 3 + dist/vis/LineupVisWrapper.d.ts.map | 2 +- dist/vis/LineupVisWrapper.js | 5 +- dist/vis/LineupVisWrapper.js.map | 2 +- dist/vis/Vis.d.ts | 7 +- dist/vis/Vis.d.ts.map | 2 +- dist/vis/Vis.js | 66 +-- dist/vis/Vis.js.map | 2 +- dist/vis/VisSidebar.d.ts.map | 2 +- dist/vis/VisSidebar.js | 6 - dist/vis/VisSidebar.js.map | 2 +- dist/vis/VisSidebarWrapper.d.ts | 5 +- dist/vis/VisSidebarWrapper.d.ts.map | 2 +- dist/vis/VisSidebarWrapper.js | 8 +- dist/vis/VisSidebarWrapper.js.map | 2 +- dist/vis/bar/BarVis.d.ts | 10 +- dist/vis/bar/BarVis.d.ts.map | 2 +- dist/vis/bar/BarVis.js | 109 +++-- dist/vis/bar/BarVis.js.map | 2 +- dist/vis/bar/BarVisSidebar.d.ts.map | 2 +- dist/vis/bar/BarVisSidebar.js | 54 +-- dist/vis/bar/BarVisSidebar.js.map | 2 +- dist/vis/general/InvalidCols.d.ts.map | 2 +- dist/vis/general/InvalidCols.js | 8 +- dist/vis/general/InvalidCols.js.map | 2 +- dist/vis/general/layoutUtils.d.ts | 2 +- dist/vis/general/layoutUtils.d.ts.map | 2 +- dist/vis/general/layoutUtils.js | 33 +- dist/vis/general/layoutUtils.js.map | 2 +- dist/vis/hexbin/HexbinVis.d.ts | 21 + dist/vis/hexbin/HexbinVis.d.ts.map | 1 + dist/vis/hexbin/HexbinVis.js | 61 +++ dist/vis/hexbin/HexbinVis.js.map | 1 + dist/vis/hexbin/HexbinVisSidebar.d.ts | 16 + dist/vis/hexbin/HexbinVisSidebar.d.ts.map | 1 + dist/vis/hexbin/HexbinVisSidebar.js | 39 ++ dist/vis/hexbin/HexbinVisSidebar.js.map | 1 + dist/vis/hexbin/Hexplot.d.ts | 13 + dist/vis/hexbin/Hexplot.d.ts.map | 1 + dist/vis/hexbin/Hexplot.js | 292 ++++++++++++ dist/vis/hexbin/Hexplot.js.map | 1 + dist/vis/hexbin/PieChart.d.ts | 11 + dist/vis/hexbin/PieChart.d.ts.map | 1 + dist/vis/hexbin/PieChart.js | 19 + dist/vis/hexbin/PieChart.js.map | 1 + dist/vis/hexbin/SingleHex.d.ts | 21 + dist/vis/hexbin/SingleHex.d.ts.map | 1 + dist/vis/hexbin/SingleHex.js | 69 +++ dist/vis/hexbin/SingleHex.js.map | 1 + dist/vis/hexbin/XAxis.d.ts | 7 + dist/vis/hexbin/XAxis.d.ts.map | 1 + dist/vis/hexbin/XAxis.js | 21 + dist/vis/hexbin/XAxis.js.map | 1 + dist/vis/hexbin/YAxis.d.ts | 7 + dist/vis/hexbin/YAxis.d.ts.map | 1 + dist/vis/hexbin/YAxis.js | 24 + dist/vis/hexbin/YAxis.js.map | 1 + dist/vis/hexbin/utils.d.ts | 26 ++ dist/vis/hexbin/utils.d.ts.map | 1 + dist/vis/hexbin/utils.js | 71 +++ dist/vis/hexbin/utils.js.map | 1 + dist/vis/index.d.ts | 2 - dist/vis/index.d.ts.map | 2 +- dist/vis/index.js | 2 - dist/vis/index.js.map | 2 +- dist/vis/interfaces.d.ts | 38 +- dist/vis/interfaces.d.ts.map | 2 +- dist/vis/interfaces.js | 23 +- dist/vis/interfaces.js.map | 2 +- dist/vis/pcp/PCPVis.d.ts | 22 - dist/vis/pcp/PCPVis.d.ts.map | 1 - dist/vis/pcp/PCPVis.js | 65 --- dist/vis/pcp/PCPVis.js.map | 1 - dist/vis/pcp/PCPVisSidebar.d.ts | 14 - dist/vis/pcp/PCPVisSidebar.d.ts.map | 1 - dist/vis/pcp/PCPVisSidebar.js | 26 -- dist/vis/pcp/PCPVisSidebar.js.map | 1 - dist/vis/pcp/index.d.ts | 3 - dist/vis/pcp/index.d.ts.map | 1 - dist/vis/pcp/index.js | 3 - dist/vis/pcp/index.js.map | 1 - dist/vis/pcp/utils.d.ts | 7 - dist/vis/pcp/utils.d.ts.map | 1 - dist/vis/pcp/utils.js | 96 ---- dist/vis/pcp/utils.js.map | 1 - dist/vis/scatter/ScatterVis.d.ts | 6 +- dist/vis/scatter/ScatterVis.d.ts.map | 2 +- dist/vis/scatter/ScatterVis.js | 128 +++-- dist/vis/scatter/ScatterVis.js.map | 2 +- dist/vis/scatter/ScatterVisSidebar.d.ts | 2 +- dist/vis/scatter/ScatterVisSidebar.d.ts.map | 2 +- dist/vis/scatter/ScatterVisSidebar.js | 47 +- dist/vis/scatter/ScatterVisSidebar.js.map | 2 +- dist/vis/scatter/utils.d.ts | 6 +- dist/vis/scatter/utils.d.ts.map | 2 +- dist/vis/scatter/utils.js | 108 +++-- dist/vis/scatter/utils.js.map | 2 +- dist/vis/sidebar/AggregateTypeSelect.d.ts.map | 2 +- dist/vis/sidebar/AggregateTypeSelect.js | 5 +- dist/vis/sidebar/AggregateTypeSelect.js.map | 2 +- dist/vis/sidebar/AllColumnSelect.d.ts | 10 - dist/vis/sidebar/AllColumnSelect.d.ts.map | 1 - dist/vis/sidebar/AllColumnSelect.js | 40 -- dist/vis/sidebar/AllColumnSelect.js.map | 1 - dist/vis/sidebar/BarDirectionButtons.d.ts.map | 2 +- dist/vis/sidebar/BarDirectionButtons.js | 16 +- dist/vis/sidebar/BarDirectionButtons.js.map | 2 +- .../sidebar/BarDisplayTypeButtons.d.ts.map | 2 +- dist/vis/sidebar/BarDisplayTypeButtons.js | 13 +- dist/vis/sidebar/BarDisplayTypeButtons.js.map | 2 +- dist/vis/sidebar/BarGroupTypeButtons.d.ts.map | 2 +- dist/vis/sidebar/BarGroupTypeButtons.js | 13 +- dist/vis/sidebar/BarGroupTypeButtons.js.map | 2 +- dist/vis/sidebar/BrushOptionButtons.d.ts | 3 +- dist/vis/sidebar/BrushOptionButtons.d.ts.map | 2 +- dist/vis/sidebar/BrushOptionButtons.js | 40 +- dist/vis/sidebar/BrushOptionButtons.js.map | 2 +- .../sidebar/CategoricalColumnSelect.d.ts.map | 2 +- dist/vis/sidebar/CategoricalColumnSelect.js | 9 +- .../sidebar/CategoricalColumnSelect.js.map | 2 +- dist/vis/sidebar/CloseButton.js | 2 +- dist/vis/sidebar/CloseButton.js.map | 2 +- dist/vis/sidebar/ColorSelect.d.ts.map | 2 +- dist/vis/sidebar/ColorSelect.js | 9 +- dist/vis/sidebar/ColorSelect.js.map | 2 +- dist/vis/sidebar/FilterButtons.d.ts.map | 2 +- dist/vis/sidebar/FilterButtons.js | 28 +- dist/vis/sidebar/FilterButtons.js.map | 2 +- dist/vis/sidebar/GroupSelect.d.ts.map | 2 +- dist/vis/sidebar/GroupSelect.js | 8 +- dist/vis/sidebar/GroupSelect.js.map | 2 +- dist/vis/sidebar/HexOpacitySwitch.d.ts | 8 + dist/vis/sidebar/HexOpacitySwitch.d.ts.map | 1 + dist/vis/sidebar/HexOpacitySwitch.js | 6 + dist/vis/sidebar/HexOpacitySwitch.js.map | 1 + dist/vis/sidebar/HexSizeSlider.d.ts | 8 + dist/vis/sidebar/HexSizeSlider.d.ts.map | 1 + dist/vis/sidebar/HexSizeSlider.js | 22 + dist/vis/sidebar/HexSizeSlider.js.map | 1 + dist/vis/sidebar/HexSizeSwitch.d.ts | 8 + dist/vis/sidebar/HexSizeSwitch.d.ts.map | 1 + dist/vis/sidebar/HexSizeSwitch.js | 6 + dist/vis/sidebar/HexSizeSwitch.js.map | 1 + dist/vis/sidebar/HexbinOptionSelect.d.ts | 9 + dist/vis/sidebar/HexbinOptionSelect.d.ts.map | 1 + dist/vis/sidebar/HexbinOptionSelect.js | 13 + dist/vis/sidebar/HexbinOptionSelect.js.map | 1 + dist/vis/sidebar/MultiplesSelect.d.ts | 10 - dist/vis/sidebar/MultiplesSelect.d.ts.map | 1 - dist/vis/sidebar/MultiplesSelect.js | 10 - dist/vis/sidebar/MultiplesSelect.js.map | 1 - .../sidebar/NumericalColorButtons.d.ts.map | 2 +- dist/vis/sidebar/NumericalColorButtons.js | 28 +- dist/vis/sidebar/NumericalColorButtons.js.map | 2 +- .../sidebar/NumericalColumnSelect.d.ts.map | 2 +- dist/vis/sidebar/NumericalColumnSelect.js | 39 +- dist/vis/sidebar/NumericalColumnSelect.js.map | 2 +- dist/vis/sidebar/OpacitySlider.d.ts.map | 2 +- dist/vis/sidebar/OpacitySlider.js | 21 +- dist/vis/sidebar/OpacitySlider.js.map | 2 +- dist/vis/sidebar/ShapeSelect.d.ts | 10 - dist/vis/sidebar/ShapeSelect.d.ts.map | 1 - dist/vis/sidebar/ShapeSelect.js | 10 - dist/vis/sidebar/ShapeSelect.js.map | 1 - dist/vis/sidebar/SingleColumnSelect.d.ts.map | 2 +- dist/vis/sidebar/SingleColumnSelect.js | 11 +- dist/vis/sidebar/SingleColumnSelect.js.map | 2 +- .../vis/sidebar/ViolinOverlayButtons.d.ts.map | 2 +- dist/vis/sidebar/ViolinOverlayButtons.js | 16 +- dist/vis/sidebar/ViolinOverlayButtons.js.map | 2 +- dist/vis/sidebar/VisTypeSelect.d.ts.map | 2 +- dist/vis/sidebar/VisTypeSelect.js | 20 +- dist/vis/sidebar/VisTypeSelect.js.map | 2 +- dist/vis/sidebar/WarningMessage.d.ts | 3 - dist/vis/sidebar/WarningMessage.d.ts.map | 1 - dist/vis/sidebar/WarningMessage.js | 7 - dist/vis/sidebar/WarningMessage.js.map | 1 - dist/vis/sidebar/index.d.ts | 4 - dist/vis/sidebar/index.d.ts.map | 2 +- dist/vis/sidebar/index.js | 4 - dist/vis/sidebar/index.js.map | 2 +- dist/vis/stories/Iris.stories.d.ts | 2 - dist/vis/stories/Iris.stories.d.ts.map | 2 +- dist/vis/stories/Iris.stories.js | 47 +- dist/vis/stories/Iris.stories.js.map | 2 +- dist/vis/stories/Random.stories.d.ts | 2 - dist/vis/stories/Random.stories.d.ts.map | 2 +- dist/vis/stories/Random.stories.js | 43 +- dist/vis/stories/Random.stories.js.map | 2 +- dist/vis/strip/StripVis.d.ts | 24 - dist/vis/strip/StripVis.d.ts.map | 1 - dist/vis/strip/StripVis.js | 83 ---- dist/vis/strip/StripVis.js.map | 1 - dist/vis/strip/StripVisSidebar.d.ts | 14 - dist/vis/strip/StripVisSidebar.d.ts.map | 1 - dist/vis/strip/StripVisSidebar.js | 28 -- dist/vis/strip/StripVisSidebar.js.map | 1 - dist/vis/strip/index.d.ts | 3 - dist/vis/strip/index.d.ts.map | 1 - dist/vis/strip/index.js | 3 - dist/vis/strip/index.js.map | 1 - dist/vis/strip/utils.d.ts | 7 - dist/vis/strip/utils.d.ts.map | 1 - dist/vis/strip/utils.js | 152 ------ dist/vis/strip/utils.js.map | 1 - dist/vis/violin/ViolinVis.d.ts | 10 +- dist/vis/violin/ViolinVis.d.ts.map | 2 +- dist/vis/violin/ViolinVis.js | 67 +-- dist/vis/violin/ViolinVis.js.map | 2 +- dist/vis/violin/ViolinVisSidebar.d.ts.map | 2 +- dist/vis/violin/ViolinVisSidebar.js | 14 +- dist/vis/violin/ViolinVisSidebar.js.map | 2 +- dist/vis/violin/utils.js | 4 +- dist/vis/violin/utils.js.map | 2 +- package.json | 21 +- pyrightconfig.json | 4 + requirements.txt | 39 +- requirements_dev.txt | 12 +- setup.py | 2 +- src/clue/base/mode.ts | 20 +- src/clue/provenance/ProvenanceGraphMenu.ts | 4 +- src/clue/provvis/provvis.ts | 10 +- src/clue/provvis/storyvis.ts | 4 +- src/clue/wrapper/ACLUEWrapper.ts | 4 +- src/demo/MainApp.tsx | 4 +- src/lineup/ARankingView.ts | 55 +-- src/lineup/Ranking.tsx | 28 +- src/lineup/internal/LineUpSelectionHelper.ts | 19 +- src/lineup/panel/LineUpOrderedRowIndicies.ts | 11 +- .../StructureImageFilterDialog.ts | 5 +- .../structureImage/StructureImageRenderer.ts | 3 +- src/locales/en/tdp.json | 14 +- src/scss/main.scss | 2 + src/scss/vendors/_lineup.scss | 5 +- src/scss/vendors/_plotly.scss | 8 + src/views/visyn/demo/VisynDemoView.tsx | 1 - src/vis/LineupVisWrapper.ts | 8 +- src/vis/Vis.tsx | 111 ++--- src/vis/VisSidebar.tsx | 12 - src/vis/VisSidebarWrapper.tsx | 49 +- src/vis/bar/BarVis.tsx | 201 ++++---- src/vis/bar/BarVisSidebar.tsx | 116 ++--- src/vis/general/InvalidCols.tsx | 14 +- src/vis/general/layoutUtils.ts | 37 +- src/vis/hexbin/HexbinVis.tsx | 136 ++++++ src/vis/hexbin/HexbinVisSidebar.tsx | 71 +++ src/vis/hexbin/Hexplot.tsx | 441 ++++++++++++++++++ src/vis/hexbin/PieChart.tsx | 34 ++ src/vis/hexbin/SingleHex.tsx | 148 ++++++ src/vis/hexbin/XAxis.tsx | 36 ++ src/vis/hexbin/YAxis.tsx | 41 ++ src/vis/hexbin/utils.tsx | 113 +++++ src/vis/index.ts | 2 - src/vis/interfaces.ts | 45 +- src/vis/pcp/PCPVis.tsx | 127 ----- src/vis/pcp/PCPVisSidebar.tsx | 53 --- src/vis/pcp/index.ts | 2 - src/vis/pcp/utils.ts | 105 ----- src/vis/scatter/ScatterVis.tsx | 207 +++++--- src/vis/scatter/ScatterVisSidebar.tsx | 90 ++-- src/vis/scatter/utils.ts | 126 ++--- src/vis/sidebar/AggregateTypeSelect.tsx | 14 +- src/vis/sidebar/AllColumnSelect.tsx | 73 --- src/vis/sidebar/BarDirectionButtons.tsx | 41 +- src/vis/sidebar/BarDisplayTypeButtons.tsx | 34 +- src/vis/sidebar/BarGroupTypeButtons.tsx | 34 +- src/vis/sidebar/BrushOptionButtons.tsx | 95 ++-- src/vis/sidebar/CategoricalColumnSelect.tsx | 28 +- src/vis/sidebar/CloseButton.tsx | 2 +- src/vis/sidebar/ColorSelect.tsx | 22 +- src/vis/sidebar/FilterButtons.tsx | 64 +-- src/vis/sidebar/GroupSelect.tsx | 22 +- src/vis/sidebar/HexOpacitySwitch.tsx | 11 + src/vis/sidebar/HexSizeSlider.tsx | 42 ++ src/vis/sidebar/HexSizeSwitch.tsx | 11 + src/vis/sidebar/HexbinOptionSelect.tsx | 25 + src/vis/sidebar/MultiplesSelect.tsx | 28 -- src/vis/sidebar/NumericalColorButtons.tsx | 79 ++-- src/vis/sidebar/NumericalColumnSelect.tsx | 69 +-- src/vis/sidebar/OpacitySlider.tsx | 45 +- src/vis/sidebar/ShapeSelect.tsx | 28 -- src/vis/sidebar/SingleColumnSelect.tsx | 29 +- src/vis/sidebar/ViolinOverlayButtons.tsx | 40 +- src/vis/sidebar/VisTypeSelect.tsx | 31 +- src/vis/sidebar/WarningMessage.tsx | 9 - src/vis/sidebar/index.ts | 4 - src/vis/stories/Iris.stories.tsx | 54 +-- src/vis/stories/Random.stories.tsx | 49 +- src/vis/strip/StripVis.tsx | 152 ------ src/vis/strip/StripVisSidebar.tsx | 58 --- src/vis/strip/index.ts | 2 - src/vis/strip/utils.ts | 175 ------- src/vis/violin/ViolinVis.tsx | 156 ++++--- src/vis/violin/ViolinVisSidebar.tsx | 33 +- src/vis/violin/utils.ts | 4 +- tdp_core/__init__.py | 15 +- tdp_core/dataset/dataset.py | 14 +- tdp_core/dataset/dataset_api.py | 31 +- tdp_core/dataset/dataset_def.py | 13 +- tdp_core/dataset/graph/graph.py | 29 +- tdp_core/dataset/graph/graph_api.py | 17 +- tdp_core/db.py | 54 +-- tdp_core/dbmanager.py | 39 +- tdp_core/dbmigration/env.py | 2 +- tdp_core/dbmigration/manager.py | 55 ++- tdp_core/dbview.py | 47 +- tdp_core/encoder/bytes_to_string_encoder.py | 2 +- tdp_core/encoder/json_encoder.py | 19 +- tdp_core/encoder/set_encoder.py | 2 +- tdp_core/formatter.py | 8 +- tdp_core/graph.py | 58 +-- tdp_core/id_mapping/idtype_api.py | 5 +- tdp_core/id_mapping/manager.py | 26 +- tdp_core/manager.py | 12 +- tdp_core/mapping_table.py | 4 +- .../close_web_sessions_middleware.py | 36 +- .../exception_handler_middleware.py | 39 +- .../middleware/request_context_middleware.py | 20 - tdp_core/middleware/request_context_plugin.py | 15 + tdp_core/mol_img/img_api.py | 21 +- tdp_core/mol_img/models.py | 10 +- tdp_core/mol_img/util/draw.py | 4 +- tdp_core/mol_img/util/molecule.py | 6 +- tdp_core/plugin/model.py | 14 +- tdp_core/plugin/parser.py | 29 +- tdp_core/plugin/registry.py | 27 +- tdp_core/plugin/router.py | 2 +- tdp_core/proxy.py | 7 +- tdp_core/security/__init__.py | 16 +- tdp_core/security/jwt_router.py | 6 +- tdp_core/security/manager.py | 87 ++-- tdp_core/security/model.py | 10 +- tdp_core/security/permissions.py | 13 +- tdp_core/security/store/alb_security_store.py | 5 +- tdp_core/security/store/base_store.py | 21 +- tdp_core/security/store/dummy_store.py | 10 +- tdp_core/security/store/no_security_store.py | 3 +- tdp_core/server/cmd.py | 4 +- tdp_core/server/mainapp.py | 32 +- tdp_core/server/utils.py | 25 +- tdp_core/server/visyn_server.py | 60 ++- tdp_core/settings/constants.py | 20 +- tdp_core/settings/model.py | 33 +- tdp_core/settings/router.py | 8 +- tdp_core/settings/utils.py | 10 +- tdp_core/sql.py | 7 +- tdp_core/sql_filter.py | 8 +- tdp_core/sql_use_gevent.py | 44 -- tdp_core/storage.py | 60 ++- tdp_core/swagger.py | 63 +-- tdp_core/tests/fixtures/app.py | 12 +- tdp_core/tests/fixtures/postgres_db.py | 4 +- tdp_core/tests/test_custom_encoders.py | 6 +- tdp_core/tests/test_mapper.py | 24 +- tdp_core/tests/test_rdkit_img.py | 10 +- tdp_core/tests/test_security_login.py | 4 +- tdp_core/utils.py | 59 +-- tdp_core/xlsx.py | 27 +- tsconfig.eslint.json | 5 +- 415 files changed, 4749 insertions(+), 4212 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 cypress.config.ts create mode 100644 cypress/.gitignore create mode 100644 cypress/component/component-health-check.cy.tsx create mode 100644 cypress/e2e/health-check.cy.ts delete mode 100644 cypress/plugins/index.js rename cypress/support/{commands.js => commands.ts} (50%) create mode 100644 cypress/support/component-index.html create mode 100644 cypress/support/component.ts create mode 100644 cypress/support/e2e.ts delete mode 100644 cypress/support/index.js create mode 100644 cypress/tsconfig.json create mode 100644 dist/scss/vendors/_plotly.scss create mode 100644 dist/vis/hexbin/HexbinVis.d.ts create mode 100644 dist/vis/hexbin/HexbinVis.d.ts.map create mode 100644 dist/vis/hexbin/HexbinVis.js create mode 100644 dist/vis/hexbin/HexbinVis.js.map create mode 100644 dist/vis/hexbin/HexbinVisSidebar.d.ts create mode 100644 dist/vis/hexbin/HexbinVisSidebar.d.ts.map create mode 100644 dist/vis/hexbin/HexbinVisSidebar.js create mode 100644 dist/vis/hexbin/HexbinVisSidebar.js.map create mode 100644 dist/vis/hexbin/Hexplot.d.ts create mode 100644 dist/vis/hexbin/Hexplot.d.ts.map create mode 100644 dist/vis/hexbin/Hexplot.js create mode 100644 dist/vis/hexbin/Hexplot.js.map create mode 100644 dist/vis/hexbin/PieChart.d.ts create mode 100644 dist/vis/hexbin/PieChart.d.ts.map create mode 100644 dist/vis/hexbin/PieChart.js create mode 100644 dist/vis/hexbin/PieChart.js.map create mode 100644 dist/vis/hexbin/SingleHex.d.ts create mode 100644 dist/vis/hexbin/SingleHex.d.ts.map create mode 100644 dist/vis/hexbin/SingleHex.js create mode 100644 dist/vis/hexbin/SingleHex.js.map create mode 100644 dist/vis/hexbin/XAxis.d.ts create mode 100644 dist/vis/hexbin/XAxis.d.ts.map create mode 100644 dist/vis/hexbin/XAxis.js create mode 100644 dist/vis/hexbin/XAxis.js.map create mode 100644 dist/vis/hexbin/YAxis.d.ts create mode 100644 dist/vis/hexbin/YAxis.d.ts.map create mode 100644 dist/vis/hexbin/YAxis.js create mode 100644 dist/vis/hexbin/YAxis.js.map create mode 100644 dist/vis/hexbin/utils.d.ts create mode 100644 dist/vis/hexbin/utils.d.ts.map create mode 100644 dist/vis/hexbin/utils.js create mode 100644 dist/vis/hexbin/utils.js.map delete mode 100644 dist/vis/pcp/PCPVis.d.ts delete mode 100644 dist/vis/pcp/PCPVis.d.ts.map delete mode 100644 dist/vis/pcp/PCPVis.js delete mode 100644 dist/vis/pcp/PCPVis.js.map delete mode 100644 dist/vis/pcp/PCPVisSidebar.d.ts delete mode 100644 dist/vis/pcp/PCPVisSidebar.d.ts.map delete mode 100644 dist/vis/pcp/PCPVisSidebar.js delete mode 100644 dist/vis/pcp/PCPVisSidebar.js.map delete mode 100644 dist/vis/pcp/index.d.ts delete mode 100644 dist/vis/pcp/index.d.ts.map delete mode 100644 dist/vis/pcp/index.js delete mode 100644 dist/vis/pcp/index.js.map delete mode 100644 dist/vis/pcp/utils.d.ts delete mode 100644 dist/vis/pcp/utils.d.ts.map delete mode 100644 dist/vis/pcp/utils.js delete mode 100644 dist/vis/pcp/utils.js.map delete mode 100644 dist/vis/sidebar/AllColumnSelect.d.ts delete mode 100644 dist/vis/sidebar/AllColumnSelect.d.ts.map delete mode 100644 dist/vis/sidebar/AllColumnSelect.js delete mode 100644 dist/vis/sidebar/AllColumnSelect.js.map create mode 100644 dist/vis/sidebar/HexOpacitySwitch.d.ts create mode 100644 dist/vis/sidebar/HexOpacitySwitch.d.ts.map create mode 100644 dist/vis/sidebar/HexOpacitySwitch.js create mode 100644 dist/vis/sidebar/HexOpacitySwitch.js.map create mode 100644 dist/vis/sidebar/HexSizeSlider.d.ts create mode 100644 dist/vis/sidebar/HexSizeSlider.d.ts.map create mode 100644 dist/vis/sidebar/HexSizeSlider.js create mode 100644 dist/vis/sidebar/HexSizeSlider.js.map create mode 100644 dist/vis/sidebar/HexSizeSwitch.d.ts create mode 100644 dist/vis/sidebar/HexSizeSwitch.d.ts.map create mode 100644 dist/vis/sidebar/HexSizeSwitch.js create mode 100644 dist/vis/sidebar/HexSizeSwitch.js.map create mode 100644 dist/vis/sidebar/HexbinOptionSelect.d.ts create mode 100644 dist/vis/sidebar/HexbinOptionSelect.d.ts.map create mode 100644 dist/vis/sidebar/HexbinOptionSelect.js create mode 100644 dist/vis/sidebar/HexbinOptionSelect.js.map delete mode 100644 dist/vis/sidebar/MultiplesSelect.d.ts delete mode 100644 dist/vis/sidebar/MultiplesSelect.d.ts.map delete mode 100644 dist/vis/sidebar/MultiplesSelect.js delete mode 100644 dist/vis/sidebar/MultiplesSelect.js.map delete mode 100644 dist/vis/sidebar/ShapeSelect.d.ts delete mode 100644 dist/vis/sidebar/ShapeSelect.d.ts.map delete mode 100644 dist/vis/sidebar/ShapeSelect.js delete mode 100644 dist/vis/sidebar/ShapeSelect.js.map delete mode 100644 dist/vis/sidebar/WarningMessage.d.ts delete mode 100644 dist/vis/sidebar/WarningMessage.d.ts.map delete mode 100644 dist/vis/sidebar/WarningMessage.js delete mode 100644 dist/vis/sidebar/WarningMessage.js.map delete mode 100644 dist/vis/strip/StripVis.d.ts delete mode 100644 dist/vis/strip/StripVis.d.ts.map delete mode 100644 dist/vis/strip/StripVis.js delete mode 100644 dist/vis/strip/StripVis.js.map delete mode 100644 dist/vis/strip/StripVisSidebar.d.ts delete mode 100644 dist/vis/strip/StripVisSidebar.d.ts.map delete mode 100644 dist/vis/strip/StripVisSidebar.js delete mode 100644 dist/vis/strip/StripVisSidebar.js.map delete mode 100644 dist/vis/strip/index.d.ts delete mode 100644 dist/vis/strip/index.d.ts.map delete mode 100644 dist/vis/strip/index.js delete mode 100644 dist/vis/strip/index.js.map delete mode 100644 dist/vis/strip/utils.d.ts delete mode 100644 dist/vis/strip/utils.d.ts.map delete mode 100644 dist/vis/strip/utils.js delete mode 100644 dist/vis/strip/utils.js.map create mode 100644 pyrightconfig.json create mode 100644 src/scss/vendors/_plotly.scss create mode 100644 src/vis/hexbin/HexbinVis.tsx create mode 100644 src/vis/hexbin/HexbinVisSidebar.tsx create mode 100644 src/vis/hexbin/Hexplot.tsx create mode 100644 src/vis/hexbin/PieChart.tsx create mode 100644 src/vis/hexbin/SingleHex.tsx create mode 100644 src/vis/hexbin/XAxis.tsx create mode 100644 src/vis/hexbin/YAxis.tsx create mode 100644 src/vis/hexbin/utils.tsx delete mode 100644 src/vis/pcp/PCPVis.tsx delete mode 100644 src/vis/pcp/PCPVisSidebar.tsx delete mode 100644 src/vis/pcp/index.ts delete mode 100644 src/vis/pcp/utils.ts delete mode 100644 src/vis/sidebar/AllColumnSelect.tsx create mode 100644 src/vis/sidebar/HexOpacitySwitch.tsx create mode 100644 src/vis/sidebar/HexSizeSlider.tsx create mode 100644 src/vis/sidebar/HexSizeSwitch.tsx create mode 100644 src/vis/sidebar/HexbinOptionSelect.tsx delete mode 100644 src/vis/sidebar/MultiplesSelect.tsx delete mode 100644 src/vis/sidebar/ShapeSelect.tsx delete mode 100644 src/vis/sidebar/WarningMessage.tsx delete mode 100644 src/vis/strip/StripVis.tsx delete mode 100644 src/vis/strip/StripVisSidebar.tsx delete mode 100644 src/vis/strip/index.ts delete mode 100644 src/vis/strip/utils.ts delete mode 100644 tdp_core/middleware/request_context_middleware.py create mode 100644 tdp_core/middleware/request_context_plugin.py delete mode 100644 tdp_core/sql_use_gevent.py diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ddec72886..9187635ce 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,8 +1,19 @@ name: build -on: [push, workflow_dispatch] +on: + workflow_dispatch: + inputs: + cypress: + description: 'Run cypress' + required: false + type: boolean + default: false + push: jobs: build: - uses: datavisyn/github-workflows/.github/workflows/build-node-python.yml@main - secrets: inherit + uses: datavisyn/github-workflows/.github/workflows/build-node-python.yml@new_deployment + secrets: inherit + with: + cypress_enable: true + cypress_run_because_flag: ${{ inputs.cypress == true }} diff --git a/.storybook/main.js b/.storybook/main.js index e563dc3db..ef6402dda 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -1,24 +1,22 @@ const path = require('path'); module.exports = { - stories: [ - "../src/**/*.stories.mdx", - "../src/**/*.stories.@(js|jsx|ts|tsx)" - ], - addons: [ - "@storybook/addon-links", - "@storybook/addon-essentials", - "@storybook/addon-interactions", - "@storybook/preset-scss" - ], - framework: "@storybook/react", + core: { + builder: 'webpack5', + }, + stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], + addons: ['@storybook/addon-links', '@storybook/addon-essentials', '@storybook/addon-interactions', '@storybook/preset-scss', 'storybook-addon-swc'], + framework: '@storybook/react', webpackFinal: async (config) => { - // Add tdp_core/dist as alias, as we have scss/code imports like tdp_core/dist/assets/... - // These can only be resolved in a workspace currently, and not in the standalone repo. config.resolve.alias = { ...(config.resolve.alias || {}), - 'tdp_core/dist': path.resolve(__dirname, '../', 'dist') + // I have no clue why this is required, but if this is missing we get a "Can't resolve '../../assets/icons/datavisyn_logo.svg' in '.../src/scss'"" + '../../assets': path.resolve(__dirname, '../src/assets'), + // Add tdp_core/dist as alias, as we have scss/code imports like tdp_core/dist/assets/... + 'tdp_core/dist': path.resolve(__dirname, '../src'), + 'tdp_core/src': path.resolve(__dirname, '../src'), + 'tdp_core': path.resolve(__dirname, '../src'), }; return config; }, -} \ No newline at end of file +}; diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 000000000..5a2ce1b25 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python: Module", + "type": "python", + "request": "launch", + "module": "tdp_core", + "justMyCode": false + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..16cefc58d --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "python.testing.pytestArgs": [ + "tdp_core" + ], + "python.testing.unittestEnabled": false, + "python.testing.pytestEnabled": true +} \ No newline at end of file diff --git a/Makefile b/Makefile index 929e3c57b..699870ca3 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,13 @@ .DEFAULT_GOAL := help pkg_src = tdp_core -flake8 = flake8 $(pkg_src) setup.py -isort = isort $(pkg_src) setup.py black = black --line-length 140 $(pkg_src) setup.py +pyright = pyright $(pkg_src) setup.py +ruff = ruff $(pkg_src) setup.py --line-length 140 --select E,W,F,N,I,C,B,UP,PT,SIM,RUF --ignore E501,C901,B008 + +.PHONY: start ## Start the development server +start: + python $(pkg_src) .PHONY: all ## Perform the most common development-time rules all: format lint test @@ -13,25 +17,25 @@ ci: check-format lint test .PHONY: format ## Auto-format the source code format: - $(isort) + $(ruff) --fix $(black) .PHONY: check-format ## Check the source code format without changes check-format: - $(isort) --check-only $(black) --check -.PHONY: lint ## Run flake8 +.PHONY: lint ## Run flake8 and pyright lint: - $(flake8) + $(ruff) --format=github + $(pyright) .PHONY: test ## Run tests test: pytest $(pkg_src) .PHONEY: documentation ## Generate docs -documentation: - mkdocs build +documentation: + echo "TODO" .PHONY: install ## Install the requirements install: @@ -41,6 +45,20 @@ install: develop: pip install -e .[develop] +.PHONY: env_encrypt ## Encrypts the current .//.env +env_encrypt: + openssl aes-256-cbc -pbkdf2 -in ./$(pkg_src)/.env -out ./$(pkg_src)/.env.enc + +.PHONY: env_decrypt ## Decrypts the .//.env.enc +env_decrypt: + @if [ -z "${ENV_PASSWORD}" ]; then \ + echo "No ENV_PASSWORD set, prompting for password..."; \ + openssl aes-256-cbc -pbkdf2 -d -in ./$(pkg_src)/.env.enc -out ./$(pkg_src)/.env; \ + else \ + echo "ENV_PASSWORD set, using it..."; \ + openssl aes-256-cbc -pbkdf2 -d -in ./$(pkg_src)/.env.enc -out ./$(pkg_src)/.env -pass env:ENV_PASSWORD; \ + fi + .PHONY: build ## Build a wheel build: python setup.py sdist bdist_wheel --dist-dir dist_python diff --git a/cypress.config.ts b/cypress.config.ts new file mode 100644 index 000000000..d1cb430d5 --- /dev/null +++ b/cypress.config.ts @@ -0,0 +1,20 @@ +import { defineConfig } from 'cypress'; +import * as webpackConfig from 'visyn_scripts/config/webpack.config'; + +export default defineConfig({ + viewportHeight: 1080, + viewportWidth: 1920, + defaultCommandTimeout: 10000, + e2e: { + baseUrl: 'http://localhost:8080', + // eslint-disable-next-line @typescript-eslint/no-unused-vars + setupNodeEvents(on, config) {}, + }, + component: { + devServer: { + framework: 'react', + bundler: 'webpack', + webpackConfig: webpackConfig({ workspace_mode: 'single' }, { mode: 'production' }), + }, + }, +}); diff --git a/cypress/.gitignore b/cypress/.gitignore new file mode 100644 index 000000000..968e508e3 --- /dev/null +++ b/cypress/.gitignore @@ -0,0 +1,2 @@ +/videos +/screenshots \ No newline at end of file diff --git a/cypress/component/component-health-check.cy.tsx b/cypress/component/component-health-check.cy.tsx new file mode 100644 index 000000000..e328c5142 --- /dev/null +++ b/cypress/component/component-health-check.cy.tsx @@ -0,0 +1,10 @@ +import * as React from 'react'; +import { mount } from 'cypress/react'; +import { MainApp } from '../../src/demo/MainApp'; + +describe('Health check for Cypress component test', () => { + it('should mount MainApp', () => { + mount(); + cy.get('body').should('include.text', 'Visualization type'); + }); +}); diff --git a/cypress/e2e/health-check.cy.ts b/cypress/e2e/health-check.cy.ts new file mode 100644 index 000000000..44d20c6bf --- /dev/null +++ b/cypress/e2e/health-check.cy.ts @@ -0,0 +1,6 @@ +describe('Health check for Cypress e2e test', () => { + it('should visit the home page', () => { + cy.visit('/'); + cy.get('body').should('include.text', 'Visualization type'); + }); +}); diff --git a/cypress/plugins/index.js b/cypress/plugins/index.js deleted file mode 100644 index 59b2bab6e..000000000 --- a/cypress/plugins/index.js +++ /dev/null @@ -1,22 +0,0 @@ -/// -// *********************************************************** -// This example plugins/index.js can be used to load plugins -// -// You can change the location of this file or turn off loading -// the plugins file with the 'pluginsFile' configuration option. -// -// You can read more here: -// https://on.cypress.io/plugins-guide -// *********************************************************** - -// This function is called when a project is opened or re-opened (e.g. due to -// the project's config changing) - -/** - * @type {Cypress.PluginConfig} - */ -// eslint-disable-next-line no-unused-vars -module.exports = (on, config) => { - // `on` is used to hook into various events Cypress emits - // `config` is the resolved Cypress config -} diff --git a/cypress/support/commands.js b/cypress/support/commands.ts similarity index 50% rename from cypress/support/commands.js rename to cypress/support/commands.ts index b20fb8807..122b4ab7b 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.ts @@ -1,5 +1,6 @@ +/// // *********************************************** -// This example commands.js shows you how to +// This example commands.ts shows you how to // create various custom commands and overwrite // existing commands. // @@ -9,6 +10,31 @@ // *********************************************** // // +// -- This is a parent command -- +// Cypress.Commands.add('login', (email, password) => { ... }) +// +// +// -- This is a child command -- +// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... }) +// +// +// -- This is a dual command -- +// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... }) +// +// +// -- This will overwrite an existing command -- +// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) +// +// declare global { +// namespace Cypress { +// interface Chainable { +// login(email: string, password: string): Chainable +// drag(subject: string, options?: Partial): Chainable +// dismiss(subject: string, options?: Partial): Chainable +// visit(originalFn: CommandOriginalFn, url: string, options: Partial): Chainable +// } +// } +// } /** * This function must be used to select elements in form maps. @@ -16,21 +42,21 @@ * @param {string} selectOption - either a single string or an array of strings if multiselect is possible */ Cypress.Commands.add('formSelect', (rowId, selectOption) => { - return cy.get(`[data-testid=${rowId}] [data-testid=form-select]`).select(selectOption); + return cy.get(`[data-testid=${rowId}] [data-testid=form-select]`).select(selectOption); }); /** * Wait until phovea-busy and loading icon are hidden */ Cypress.Commands.add('waitPhoveaNotBusy', () => { - return cy.get('.phovea-busy').should('have.attr', 'hidden'); + return cy.get('.phovea-busy').should('have.attr', 'hidden'); }); /** * Wait until tdp-busy and loading icon are hidden */ Cypress.Commands.add('waitTdpNotBusy', () => { - return cy.get('.tdp-busy').should('not.exist'); + return cy.get('.tdp-busy').should('not.exist'); }); /** @@ -38,12 +64,12 @@ Cypress.Commands.add('waitTdpNotBusy', () => { * @param {string[]} apiCalls - contains the strings to the api calls. They are logged out in the Cypress studio as GET requests. (ex: /api/idtype/Cellline/ or /api/idtype/Tissue/) */ Cypress.Commands.add('waitForApiCalls', (apiCalls) => { - const waitVariables = []; - apiCalls.forEach((apiCall) => { - cy.intercept(apiCall).as(`${apiCall}`); - waitVariables.push(`@${apiCall}`); - }); - cy.wait(waitVariables); + const waitVariables = []; + apiCalls.forEach((apiCall) => { + cy.intercept(apiCall).as(`${apiCall}`); + waitVariables.push(`@${apiCall}`); + }); + cy.wait(waitVariables); }); /** @@ -52,13 +78,13 @@ Cypress.Commands.add('waitForApiCalls', (apiCalls) => { * @param {number} waitAfterScroll - specifies how long to wait after scrolling to an element */ Cypress.Commands.add('scrollElementIntoCenter', (selector = '', waitAfterScroll = 1000) => { - // calculate half of viewport height - const offestTop = -Cypress.config().viewportHeight / 2; + // calculate half of viewport height + const offestTop = -Cypress.config().viewportHeight / 2; - // Wee need to set the offset, because by default it is scrolled such that the element is on top - cy.get(selector).scrollIntoView({offset: {top: offestTop, left: 0}}); - cy.wait(waitAfterScroll); - return cy.get(selector); + // Wee need to set the offset, because by default it is scrolled such that the element is on top + cy.get(selector).scrollIntoView({ offset: { top: offestTop, left: 0 } }); + cy.wait(waitAfterScroll); + return cy.get(selector); }); /** @@ -67,8 +93,8 @@ Cypress.Commands.add('scrollElementIntoCenter', (selector = '', waitAfterScroll * @param {string} searchString - either a single string or an array of strings if multiselect is possible */ Cypress.Commands.add('select2SingleSelect', (id, searchString) => { - cy.get(`[data-testid="${id}"] .select2-selection--single`).click(); - cy.get('.select2-results__option').contains(searchString).click(); + cy.get(`[data-testid="${id}"] .select2-selection--single`).click(); + cy.get('.select2-results__option').contains(searchString).click(); }); /** @@ -77,36 +103,36 @@ Cypress.Commands.add('select2SingleSelect', (id, searchString) => { * @param {string[] | string} searchString - either a single string or an array of strings if multiselect is possible */ Cypress.Commands.add('select2MultiSelect', (id, searchString) => { - // if a single string is given, convert it into a list, else leave it as is - let searchStrings = []; - if (typeof searchString === 'string' || searchString instanceof String) { - searchStrings = [searchString]; - } else { - searchStrings = searchString; - } + // if a single string is given, convert it into a list, else leave it as is + let searchStrings = []; + if (typeof searchString === 'string' || searchString instanceof String) { + searchStrings = [searchString]; + } else { + searchStrings = searchString; + } - cy.get(`[data-testid="${id}"] .select2-hidden-accessible`).select([], {force: true}); + cy.get(`[data-testid="${id}"] .select2-hidden-accessible`).select([], { force: true }); - // iterate over search strings and select resulting options - searchStrings.forEach((searchTerm) => { - cy.get(`[data-testid="${id}"] [data-testid=select2-search-field]`).type(searchTerm); + // iterate over search strings and select resulting options + searchStrings.forEach((searchTerm) => { + cy.get(`[data-testid="${id}"] [data-testid=select2-search-field]`).type(searchTerm); - // flake solution: wait for the search for the searchString to finish - cy.get('.select2-results__option').should('not.have.length', 0); + // flake solution: wait for the search for the searchString to finish + cy.get('.select2-results__option').should('not.have.length', 0); - cy.contains('.select2-results__option', searchTerm).should('be.visible').click(); + cy.contains('.select2-results__option', searchTerm).should('be.visible').click(); - // confirm Select2 widget renders the name - cy.get(`[data-testid="${id}"] .select2-container`).should('include.text', searchTerm); - }); + // confirm Select2 widget renders the name + cy.get(`[data-testid="${id}"] .select2-container`).should('include.text', searchTerm); + }); }); /** * Clear all text in a form input element * @param {string} selector - the selector of the element as returned by cypress studio */ -Cypress.Commands.add('clearInputForm', (selector) => { - return cy.get(selector).should('be.visible').clear(); +Cypress.Commands.add('clearInputForm', (selector: string) => { + return cy.get(selector).should('be.visible').clear(); }); /** @@ -114,10 +140,10 @@ Cypress.Commands.add('clearInputForm', (selector) => { * @param {string} selector - the selector of the element as returned by cypress studio * @param {string} text - text that should be inserted into the form input */ -Cypress.Commands.add('fillInForm', (selector, text) => { - cy.get(selector).should('be.visible'); - cy.get(selector).click().type(text, {delay: 0}); // use delay to ensure that complete text is filled in - return checkIfInputCompleted(text, selector); +Cypress.Commands.add('fillInForm', (selector: string, text: string) => { + cy.get(selector).should('be.visible'); + cy.get(selector).click().type(text, { delay: 0 }); // use delay to ensure that complete text is filled in + return checkIfInputCompleted(text, selector); }); /** @@ -125,11 +151,10 @@ Cypress.Commands.add('fillInForm', (selector, text) => { * @param {string} input - input string that should be inserted * @param {string} selector - the selector of the element as returned by cypress studio */ -Cypress.Commands.add('checkIfInputCompleted', (input, selector) => { - cy - .get(selector) - .invoke('val') - .then((text) => { - return text === input; - }); +Cypress.Commands.add('checkIfInputCompleted', (input: string, selector: string) => { + cy.get(selector) + .invoke('val') + .then((text) => { + return text === input; + }); }); diff --git a/cypress/support/component-index.html b/cypress/support/component-index.html new file mode 100644 index 000000000..5f9622ae2 --- /dev/null +++ b/cypress/support/component-index.html @@ -0,0 +1,12 @@ + + + + + + + Components App + + +
+ + diff --git a/cypress/support/component.ts b/cypress/support/component.ts new file mode 100644 index 000000000..06b32ef00 --- /dev/null +++ b/cypress/support/component.ts @@ -0,0 +1,40 @@ +// *********************************************************** +// This example support/component.ts is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands'; + +// Alternatively you can use CommonJS syntax: +// require('./commands') + +import { mount } from 'cypress/react'; + +// Augment the Cypress namespace to include type definitions for +// your custom command. +// Alternatively, can be defined in cypress/support/component.d.ts +// with a at the top of your spec. +declare global { + // eslint-disable-next-line @typescript-eslint/no-namespace + namespace Cypress { + interface Chainable { + mount: typeof mount; + } + } +} + +Cypress.Commands.add('mount', mount); + +// Example use: +// cy.mount() diff --git a/cypress/support/e2e.ts b/cypress/support/e2e.ts new file mode 100644 index 000000000..598ab5f0d --- /dev/null +++ b/cypress/support/e2e.ts @@ -0,0 +1,20 @@ +// *********************************************************** +// This example support/e2e.ts is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands'; + +// Alternatively you can use CommonJS syntax: +// require('./commands') diff --git a/cypress/support/index.js b/cypress/support/index.js deleted file mode 100644 index b6135d24c..000000000 --- a/cypress/support/index.js +++ /dev/null @@ -1,48 +0,0 @@ -// *********************************************************** -// This example support/index.js is processed and -// loaded automatically before your test files. -// -// This is a great place to put global configuration and -// behavior that modifies Cypress. -// -// You can change the location of this file or turn off -// automatically serving support files with the -// 'supportFile' configuration option. -// -// You can read more here: -// https://on.cypress.io/configuration -// *********************************************************** - -// Import commands.js using ES2015 syntax: -import './commands' -// import 'tdp_core/cypress/support/commands'; -// import 'ordino/cypress/support/commands'; - -// Alternatively you can use CommonJS syntax: -// require('./commands') - - -// Here we define the selector priority for cypress. -// We use Cypress.SelectorPlayground.defaults within itself, in order to define two different selector priorities, -// depending on whether the element has the data-testid attribute. -// This is a little hacky, but works and is the most stable solution. -// Why this works can be founde here: https://github.com/cypress-io/cypress/blob/b6c4ba144cd6ae3d210789bbb69b9aacc6a92094/packages/driver/src/cypress/selector_playground.ts -// If in the future changes happen in cypress, that interfere with this approach, this solution must be changed. - -Cypress.SelectorPlayground.defaults({ - // With onElement we can check whether the element has the data-testid attribute - onElement: (el) => { - if (el.attr('data-testid')) { - // If it has the data-testid attribute then it should only use it in the selector priority. - // This ensures that we get nice outputs in the cypress studio as we intended (hierarchy of data-testid elements). - Cypress.SelectorPlayground.defaults({ - selectorPriority: ['data-testid'], - }) - } else { - // If it does not have it (eg. line up) we use all the available selector types to ensure that a unique selector is returned. - Cypress.SelectorPlayground.defaults({ - selectorPriority: ['data-testid', 'data-cy', 'data-test', 'class', 'tag', 'attributes', 'nth-child', 'id'], - }) - } - }, -}) \ No newline at end of file diff --git a/cypress/tsconfig.json b/cypress/tsconfig.json new file mode 100644 index 000000000..6cc22bcd5 --- /dev/null +++ b/cypress/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "visyn_scripts/config/tsconfig.template.json", + "compilerOptions": { + "outDir": "./dist", + "types": [ + "cypress" + ] + }, + "include": [ + "../cypress.config.ts", + "./**/*.ts", + "./**/*.tsx", + "../tsd.d.ts" + ] +} diff --git a/dist/base/rest.d.ts b/dist/base/rest.d.ts index 9338ad23a..7e81be2ba 100644 --- a/dist/base/rest.d.ts +++ b/dist/base/rest.d.ts @@ -167,7 +167,7 @@ export declare class RestBaseUtils { * @param filters URL filter parameters */ static mergeParamAndFilters(params: IParams, filters: IParams): { - [x: string]: string | number | boolean | number[] | string[] | boolean[]; + [x: string]: string | number | boolean | string[] | number[] | boolean[]; }; /** * query the TDP rest api to read data with additional given filters diff --git a/dist/clue/base/mode.js b/dist/clue/base/mode.js index 72db24bb4..6c8622a83 100644 --- a/dist/clue/base/mode.js +++ b/dist/clue/base/mode.js @@ -185,11 +185,11 @@ export class ButtonModeSelector { // */ // export class SliderModeSelector { // private options = {}; -// private $node:d3.Selection; +// private $node:d3v3.Selection; // // constructor(parent:Element, options:any = {}) { // mixin(this.options, options); -// this.$node = d3.select(parent).append('div').classed('clue_modeselector', true).datum(this); +// this.$node = d3v3.select(parent).append('div').classed('clue_modeselector', true).datum(this); // this.build(this.$node); // // const listener = (event:IEvent, newMode:CLUEMode) => { @@ -203,7 +203,7 @@ export class ButtonModeSelector { // }); // } // -// private build($parent:d3.Selection) { +// private build($parent:d3v3.Selection) { // const $root = $parent.append('div').classed('clue_slidermodeselector', true); // const $modes = $root.selectAll('label').data([modes.Exploration, modes.Authoring, modes.Presentation]); // @@ -256,7 +256,7 @@ export class ButtonModeSelector { // */ // offset: 5 // }; -// private $node:d3.Selection; +// private $node:d3v3.Selection; // // private e = [0, 30]; // private a = [30, 0]; @@ -266,7 +266,7 @@ export class ButtonModeSelector { // mixin(this.options, options); // this.e[1] = this.a[0] = this.p[1] = this.options.height; // this.p[0] = this.options.height * 2; -// this.$node = d3.select(parent).append('div').classed('clue_trianglemodeselector', true).datum(this); +// this.$node = d3v3.select(parent).append('div').classed('clue_trianglemodeselector', true).datum(this); // this.build(this.$node); // // const listener = (event:IEvent, newMode:CLUEMode) => { @@ -302,15 +302,15 @@ export class ButtonModeSelector { // return mode(e, a, p); // } // -// private build($parent:d3.Selection) { +// private build($parent:d3v3.Selection) { // const $root = $parent.append('svg').classed('clue_trianglemodeselector', true).attr({ // width: this.p[0] + this.options.offset, // height: this.p[1] + this.options.offset // }); // const that = this; // const $g = $root.append('g').attr('transform', `translate(${this.options.offset / 2},${this.options.offset / 2})`); -// $g.append('path').attr('d', d3.svg.line().interpolate('linear-closed')([this.e, this.a, this.p])).on('click', function () { -// const xy = d3.mouse(this); +// $g.append('path').attr('d', d3v3.svg.line().interpolate('linear-closed')([this.e, this.a, this.p])).on('click', function () { +// const xy = d3v3.mouse(this); // const m = that.fromCoordinates(xy[0], xy[1]); // setMode(m); // }); @@ -319,8 +319,8 @@ export class ButtonModeSelector { // cx: xy[0], // cy: xy[1], // r: 2 -// }).call(d3.behavior.drag().on('drag', () => { -// const m = this.fromCoordinates((d3.event).x, (d3.event).y); +// }).call(d3v3.behavior.drag().on('drag', () => { +// const m = this.fromCoordinates((d3v3.event).x, (d3v3.event).y); // setMode(m); // })); // return $root; diff --git a/dist/clue/base/mode.js.map b/dist/clue/base/mode.js.map index b48d83364..612b36aec 100644 --- a/dist/clue/base/mode.js.map +++ b/dist/clue/base/mode.js.map @@ -1 +1 @@ -{"version":3,"file":"mode.js","sourceRoot":"","sources":["../../../src/clue/base/mode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"mode.js","sourceRoot":"","sources":["../../../src/clue/base/mode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/clue/provenance/ProvenanceGraphMenu.d.ts.map b/dist/clue/provenance/ProvenanceGraphMenu.d.ts.map index f7356b3aa..567ac8dc5 100644 --- a/dist/clue/provenance/ProvenanceGraphMenu.d.ts.map +++ b/dist/clue/provenance/ProvenanceGraphMenu.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"ProvenanceGraphMenu.d.ts","sourceRoot":"","sources":["../../../src/clue/provenance/ProvenanceGraphMenu.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,QAAQ,CAAC;AAE9D,qBAAa,mBAAmB;IAKlB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAE1C,OAAO,CAAC,KAAK,CAAkB;gBAEF,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,UAAO;IAO/F,IAAI,IAAI,gBAEP;IAED,QAAQ,CAAC,KAAK,EAAE,eAAe;IAK/B,OAAO,CAAC,IAAI;IA6FZ,KAAK,CAAC,MAAM,EAAE,+BAA+B,EAAE;CA8FhD"} \ No newline at end of file +{"version":3,"file":"ProvenanceGraphMenu.d.ts","sourceRoot":"","sources":["../../../src/clue/provenance/ProvenanceGraphMenu.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,QAAQ,CAAC;AAE9D,qBAAa,mBAAmB;IAKlB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IAEvC,OAAO,CAAC,KAAK,CAAkB;gBAEF,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,UAAO;IAO/F,IAAI,IAAI,gBAEP;IAED,QAAQ,CAAC,KAAK,EAAE,eAAe;IAK/B,OAAO,CAAC,IAAI;IA6FZ,KAAK,CAAC,MAAM,EAAE,+BAA+B,EAAE;CA8FhD"} \ No newline at end of file diff --git a/dist/clue/provenance/ProvenanceGraphMenu.js.map b/dist/clue/provenance/ProvenanceGraphMenu.js.map index 1db07389e..a4215743d 100644 --- a/dist/clue/provenance/ProvenanceGraphMenu.js.map +++ b/dist/clue/provenance/ProvenanceGraphMenu.js.map @@ -1 +1 @@ -{"version":3,"file":"ProvenanceGraphMenu.js","sourceRoot":"","sources":["../../../src/clue/provenance/ProvenanceGraphMenu.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ProvenanceGraphMenu.js","sourceRoot":"","sources":["../../../src/clue/provenance/ProvenanceGraphMenu.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/clue/provvis/provvis.js b/dist/clue/provvis/provvis.js index 01aa33943..7cfd54a49 100644 --- a/dist/clue/provvis/provvis.js +++ b/dist/clue/provvis/provvis.js @@ -613,16 +613,16 @@ export class LayoutedProvVis extends AVisInstance { $inner.append('span').classed('icon', true); /* $states_enter.append('span').attr('class','fas fa-star').on('click', (d) => { d.s.setAttr('starred',!d.s.getAttr('starred',false)); - d3.event.stopPropagation(); - d3.event.preventDefault(); + d3v3.event.stopPropagation(); + d3v3.event.preventDefault(); }); $states_enter.append('span').attr('class','fas fa-tags').on('click', (d) => { var tags = d.s.getAttr('tags',[]).join(' '); dialogs.prompt(tags, 'Tags').then((new_) => { d.s.setAttr('tags', new_.split(' ')); }); - d3.event.stopPropagation(); - d3.event.preventDefault(); + d3v3.event.stopPropagation(); + d3v3.event.preventDefault(); }); */ $inner.append('span').classed('slabel', true); $inner.append('div').classed('sthumbnail', true); @@ -664,7 +664,7 @@ export class LayoutedProvVis extends AVisInstance { // const id = +$icon.data('popoup'); // clearTimeout(id); // $icon.removeData('popup'); - // const d:StateRepr = d3.select(this).datum(); + // const d:StateRepr = d3v3.select(this).datum(); // if (d && $icon.has('textarea')) { // const val = $(this).find('textarea').val(); // d.s.setAttr('tags', extractTags(val)); diff --git a/dist/clue/provvis/provvis.js.map b/dist/clue/provvis/provvis.js.map index 7cdd253c4..ba53b1cbf 100644 --- a/dist/clue/provvis/provvis.js.map +++ b/dist/clue/provvis/provvis.js.map @@ -1 +1 @@ -{"version":3,"file":"provvis.js","sourceRoot":"","sources":["../../../src/clue/provvis/provvis.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"provvis.js","sourceRoot":"","sources":["../../../src/clue/provvis/provvis.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/clue/provvis/storyvis.js b/dist/clue/provvis/storyvis.js index 547272054..397c37add 100644 --- a/dist/clue/provvis/storyvis.js +++ b/dist/clue/provvis/storyvis.js @@ -484,8 +484,8 @@ export class VerticalStoryVis extends AVisInstance { }); /* $toolbar_enter.append('i').attr('class', 'fas fa-camera').attr('title','force update of preview').on('click', (d) => { //remove me - d3.event.stopPropagation(); - d3.event.preventDefault(); + d3v3.event.stopPropagation(); + d3v3.event.preventDefault(); this.data.moveSlide(this.data.cloneSingleSlideNode(d), d, false); this.update(); return false; diff --git a/dist/clue/wrapper/ACLUEWrapper.js b/dist/clue/wrapper/ACLUEWrapper.js index 40b09aa6a..cc3abeb24 100644 --- a/dist/clue/wrapper/ACLUEWrapper.js +++ b/dist/clue/wrapper/ACLUEWrapper.js @@ -105,7 +105,7 @@ export class ACLUEWrapper extends EventHandler { document.body.dataset.clue = newMode.toString(); // lazy jquery import('jquery').then((jquery) => { - // $('nav').css('background-color', d3.rgb(255 * new_.exploration, 255 * new_.authoring, 255 * new_.presentation).darker().darker().toString()); + // $('nav').css('background-color', d3v3.rgb(255 * new_.exploration, 255 * new_.authoring, 255 * new_.presentation).darker().darker().toString()); if (newMode.presentation > 0.8) { $($right).animate({ width: 'hide' }, 'fast'); } @@ -132,7 +132,7 @@ export class ACLUEWrapper extends EventHandler { // no animation initially const mode = ModeWrapper.getInstance().getMode(); document.body.dataset.clue = mode.toString(); - // $('nav').css('background-color', d3.rgb(255 * new_.exploration, 255 * new_.authoring, 255 * new_.presentation).darker().darker().toString()); + // $('nav').css('background-color', d3v3.rgb(255 * new_.exploration, 255 * new_.authoring, 255 * new_.presentation).darker().darker().toString()); if (mode.presentation > 0.8) { $right.style.display = 'none'; } diff --git a/dist/clue/wrapper/ACLUEWrapper.js.map b/dist/clue/wrapper/ACLUEWrapper.js.map index 1980203f9..1782bf453 100644 --- a/dist/clue/wrapper/ACLUEWrapper.js.map +++ b/dist/clue/wrapper/ACLUEWrapper.js.map @@ -1 +1 @@ -{"version":3,"file":"ACLUEWrapper.js","sourceRoot":"","sources":["../../../src/clue/wrapper/ACLUEWrapper.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ACLUEWrapper.js","sourceRoot":"","sources":["../../../src/clue/wrapper/ACLUEWrapper.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/demo/MainApp.d.ts.map b/dist/demo/MainApp.d.ts.map index 5f23b1eec..87fa11329 100644 --- a/dist/demo/MainApp.d.ts.map +++ b/dist/demo/MainApp.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MainApp.d.ts","sourceRoot":"","sources":["../../src/demo/MainApp.tsx"],"names":[],"mappings":";AAQA,wBAAgB,OAAO,gBAItB"} \ No newline at end of file +{"version":3,"file":"MainApp.d.ts","sourceRoot":"","sources":["../../src/demo/MainApp.tsx"],"names":[],"mappings":";AAQA,wBAAgB,OAAO,gBAMtB"} \ No newline at end of file diff --git a/dist/demo/MainApp.js b/dist/demo/MainApp.js index bf410f73d..f38753e3a 100644 --- a/dist/demo/MainApp.js +++ b/dist/demo/MainApp.js @@ -6,6 +6,7 @@ import { Vis } from '../vis/Vis'; const irisData = fetchIrisData(); export function MainApp() { const { status } = useAsync(initializeLibrary, []); - return React.createElement("div", { style: { width: '100vw', height: '100vh', overflow: 'auto' } }, status === 'success' ? React.createElement(Vis, { columns: irisData }) : null); + const [show, setShow] = React.useState(false); + return React.createElement("div", { style: { width: '100vw', height: '100vh', overflow: 'auto' } }, status === 'success' ? React.createElement(Vis, { columns: irisData, showSidebarDefault: true }) : null); } //# sourceMappingURL=MainApp.js.map \ No newline at end of file diff --git a/dist/demo/MainApp.js.map b/dist/demo/MainApp.js.map index 9f605d23e..c4614dceb 100644 --- a/dist/demo/MainApp.js.map +++ b/dist/demo/MainApp.js.map @@ -1 +1 @@ -{"version":3,"file":"MainApp.js","sourceRoot":"","sources":["../../src/demo/MainApp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEjC,MAAM,QAAQ,GAAG,aAAa,EAAE,CAAC;AAEjC,MAAM,UAAU,OAAO;IACrB,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAEnD,OAAO,6BAAK,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,oBAAC,GAAG,IAAC,OAAO,EAAE,QAAQ,GAAI,CAAC,CAAC,CAAC,IAAI,CAAO,CAAC;AAC7I,CAAC"} \ No newline at end of file +{"version":3,"file":"MainApp.js","sourceRoot":"","sources":["../../src/demo/MainApp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEjC,MAAM,QAAQ,GAAG,aAAa,EAAE,CAAC;AAEjC,MAAM,UAAU,OAAO;IACrB,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAEnD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAU,KAAK,CAAC,CAAC;IAEvD,OAAO,6BAAK,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,oBAAC,GAAG,IAAC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,SAAG,CAAC,CAAC,CAAC,IAAI,CAAO,CAAC;AAChK,CAAC"} \ No newline at end of file diff --git a/dist/lineup/ARankingView.d.ts.map b/dist/lineup/ARankingView.d.ts.map index 55d5bab96..8f5c6c354 100644 --- a/dist/lineup/ARankingView.d.ts.map +++ b/dist/lineup/ARankingView.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"ARankingView.d.ts","sourceRoot":"","sources":["../../src/lineup/ARankingView.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ARankingView.d.ts","sourceRoot":"","sources":["../../src/lineup/ARankingView.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/lineup/ARankingView.js b/dist/lineup/ARankingView.js index bf4122d35..5081c350a 100644 --- a/dist/lineup/ARankingView.js +++ b/dist/lineup/ARankingView.js @@ -180,16 +180,23 @@ export class ARankingView extends AView { this.selectionHelper = new LineUpSelectionHelper(this.provider, () => this.itemIDType); this.panel = new LineUpPanelActions(this.provider, this.taggle.ctx, this.options, this.node.ownerDocument); if (this.options.enableVisPanel) { - this.generalVis = new LineupVisWrapper({ - provider: this.provider, - selectionCallback: (ids) => { - // The incoming selection is already working with row.v.id instead of row.v._id, so we have to convert first. - this.selectionHelper.setGeneralVisSelection({ idtype: IDTypeManager.getInstance().resolveIdType(this.itemIDType.id), ids }); - }, - doc: this.node.ownerDocument, - }); - this.panel.on(LineUpPanelActions.EVENT_OPEN_VIS, () => { - this.generalVis.toggleCustomVis(); + this.generalVis = import('../vis').then(() => { + const newVis = new LineupVisWrapper({ + provider: this.provider, + selectionCallback: (ids) => { + // The incoming selection is already working with row.v.id instead of row.v._id, so we have to convert first. + this.selectionHelper.setGeneralVisSelection({ idtype: IDTypeManager.getInstance().resolveIdType(this.itemIDType.id), ids }); + }, + doc: this.node.ownerDocument, + }); + this.node.appendChild(newVis.node); + this.selectionHelper.on(LineUpSelectionHelper.EVENT_SET_ITEM_SELECTION, (_event, sel) => { + newVis.updateCustomVis(); + }); + this.panel.on(LineUpPanelActions.EVENT_OPEN_VIS, () => { + newVis.toggleCustomVis(); + }); + return newVis; }); } // When a new column desc is added to the provider, update the panel chooser @@ -223,18 +230,12 @@ export class ARankingView extends AView { } if (this.options.enableSidePanel) { this.node.appendChild(this.panel.node); - if (options.enableVisPanel) { - this.node.appendChild(this.generalVis.node); - } if (this.options.enableSidePanel !== 'top') { this.taggle.pushUpdateAble((ctx) => this.panel.panel.update(ctx)); } } this.selectionHelper.on(LineUpSelectionHelper.EVENT_SET_ITEM_SELECTION, (_event, sel) => { this.setItemSelection(sel); - if (options.enableVisPanel) { - this.generalVis.updateCustomVis(); - } }); this.selectionAdapter = this.createSelectionAdapter(); } @@ -372,9 +373,9 @@ export class ARankingView extends AView { return; } this.panel.hide(); - if (this.options.enableVisPanel) { - this.generalVis.hide(); - } + this.generalVis?.then((vis) => { + vis.hide(); + }); if (this.dump !== null) { return; } @@ -418,7 +419,7 @@ export class ARankingView extends AView { const columnPromise = new Promise((resolve) => { columnResolve = resolve; }); - const data = new Promise((resolve) => { + const data = new Promise((resolve, reject) => { (async () => { // Wait for the column to be initialized const col = await columnPromise; @@ -489,7 +490,8 @@ export class ARankingView extends AView { continue; } else { - throw e; + reject(e); + done = true; } } } diff --git a/dist/lineup/ARankingView.js.map b/dist/lineup/ARankingView.js.map index 0d5541abc..b3f46add2 100644 --- a/dist/lineup/ARankingView.js.map +++ b/dist/lineup/ARankingView.js.map @@ -1 +1 @@ -{"version":3,"file":"ARankingView.js","sourceRoot":"","sources":["../../src/lineup/ARankingView.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ARankingView.js","sourceRoot":"","sources":["../../src/lineup/ARankingView.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/lineup/Ranking.d.ts b/dist/lineup/Ranking.d.ts index fce622a83..3e9167fa6 100644 --- a/dist/lineup/Ranking.d.ts +++ b/dist/lineup/Ranking.d.ts @@ -32,6 +32,7 @@ export interface IRankingProps { export interface IRankingOptions extends IARankingViewOptions { mode: EViewMode; enableCustomVis: boolean; + idField?: string; } export declare function Ranking({ data, itemSelection, columnDesc, options: opts, onContextChanged, onUpdateEntryPoint, onItemSelect, onItemSelectionChanged, onCustomizeRanking, onBuiltLineUp, /** diff --git a/dist/lineup/Ranking.d.ts.map b/dist/lineup/Ranking.d.ts.map index d9784ad50..d73c28542 100644 --- a/dist/lineup/Ranking.d.ts.map +++ b/dist/lineup/Ranking.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Ranking.d.ts","sourceRoot":"","sources":["../../src/lineup/Ranking.tsx"],"names":[],"mappings":";AAGA,OAAO,EAEL,iBAAiB,EACjB,cAAc,EACd,cAAc,EAUd,WAAW,EAOZ,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,iBAAiB,EAAc,MAAM,mBAAmB,CAAC;AAKlE,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAU,SAAS,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrG,OAAO,EAAE,QAAQ,EAAoB,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAsB9D,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,EAAE,WAAW,GAAG;QACrB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;IACF,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,aAAa,EAAE,UAAU,CAAC;IAC1B,UAAU,EAAE,qBAAqB,EAAE,CAAC;IACpC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAElC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC;IAElE,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClF,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IAE/C,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,kBAAkB,CAAC,EAAE,CAAC,cAAc,EAAE,eAAe,KAAK,IAAI,CAAC;IAC/D,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,cAAc,KAAK,IAAI,CAAC;CAChG;AAkED,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;IAC3D,IAAI,EAAE,SAAS,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAMD,wBAAgB,OAAO,CAAC,EACtB,IAAS,EACT,aAAyC,EACzC,UAAe,EACf,OAAO,EAAE,IAAS,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,sBAAsB,EACtB,kBAAkB,EAClB,aAAa;AACb;;GAEG;AACH,gBAAgB,GACjB,EAAE,aAAa,eAiff"} \ No newline at end of file +{"version":3,"file":"Ranking.d.ts","sourceRoot":"","sources":["../../src/lineup/Ranking.tsx"],"names":[],"mappings":";AAGA,OAAO,EAEL,iBAAiB,EACjB,cAAc,EACd,cAAc,EAUd,WAAW,EAOZ,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,iBAAiB,EAAc,MAAM,mBAAmB,CAAC;AAKlE,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAU,SAAS,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrG,OAAO,EAAE,QAAQ,EAAoB,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAuB9D,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,EAAE,WAAW,GAAG;QACrB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;IACF,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,aAAa,EAAE,UAAU,CAAC;IAC1B,UAAU,EAAE,qBAAqB,EAAE,CAAC;IACpC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAElC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC;IAElE,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClF,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IAE/C,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,kBAAkB,CAAC,EAAE,CAAC,cAAc,EAAE,eAAe,KAAK,IAAI,CAAC;IAC/D,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,cAAc,KAAK,IAAI,CAAC;CAChG;AAmED,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;IAC3D,IAAI,EAAE,SAAS,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD,wBAAgB,OAAO,CAAC,EACtB,IAAS,EACT,aAAyC,EACzC,UAAe,EACf,OAAO,EAAE,IAAS,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,sBAAsB,EACtB,kBAAkB,EAClB,aAAa;AACb;;GAEG;AACH,gBAAgB,GACjB,EAAE,aAAa,eAkgBf"} \ No newline at end of file diff --git a/dist/lineup/Ranking.js b/dist/lineup/Ranking.js index 35aa41a88..517745796 100644 --- a/dist/lineup/Ranking.js +++ b/dist/lineup/Ranking.js @@ -28,11 +28,13 @@ import { useAsync } from '../hooks/useAsync'; import { StructureImageColumn, StructureImageFilterDialog, StructureImageRenderer } from './structureImage'; import TDPLocalDataProvider from './provider/TDPLocalDataProvider'; import { WebpackEnv } from '../base'; +import { LineupVisWrapper } from '../vis/LineupVisWrapper'; const defaults = { itemName: 'item', itemNamePlural: 'items', itemRowHeight: null, itemIDType: null, + idField: 'id', additionalScoreParameter: null, additionalComputeScoreParameter: null, subType: { key: '', value: '' }, @@ -317,7 +319,18 @@ onAddScoreColumn, }) { const luBackdrop = lineupContainerRef.current.querySelector('.lu-backdrop'); lineupContainerRef.current.parentElement.appendChild(luBackdrop); } - selectionHelperRef.current = new LineUpSelectionHelper(providerRef.current, () => itemIDType); + selectionHelperRef.current = new LineUpSelectionHelper(providerRef.current, () => itemIDType, { + idField: options.idField, + }); + const generalVis = new LineupVisWrapper({ + provider: providerRef.current, + selectionCallback: (ids) => { + // The incoming selection is already working with row.v.id instead of row.v._id, so we have to convert first. + selectionHelperRef.current.setGeneralVisSelection({ idtype: itemIDType ? IDTypeManager.getInstance().resolveIdType(itemIDType.id) : null, ids }); + }, + doc: lineupContainerRef.current.ownerDocument, + idField: options.idField, + }); panelRef.current = new LineUpPanelActions(providerRef.current, taggleRef.current.ctx, options, lineupContainerRef.current.ownerDocument); // TODO: should we hardcode the generalVis since it is a separate view // generalVisRef=new GeneralVisWrapper(providerRef.current, this, this.selectionHelper, this.node.ownerDocument); @@ -359,9 +372,9 @@ onAddScoreColumn, }) { panelRef.current.on(LineUpPanelActions.EVENT_ZOOM_IN, () => { taggleRef.current.zoomIn(); }); - // TODO: panelRef.current.on(LineUpPanelActions.EVENT_OPEN_VIS, () => { - // this.generalVis.toggleCustomVis(); - // }); + panelRef.current.on(LineUpPanelActions.EVENT_OPEN_VIS, () => { + generalVis.toggleCustomVis(); + }); if (options.enableOverviewMode) { const rule = spaceFillingRule(taggleOptions); panelRef.current.on(LineUpPanelActions.EVENT_TOGGLE_OVERVIEW, (_event, isOverviewActive) => { @@ -374,6 +387,9 @@ onAddScoreColumn, }) { } if (options.enableSidePanel) { lineupContainerRef.current.parentElement.appendChild(panelRef.current.node); + if (options.enableVisPanel) { + lineupContainerRef.current.parentElement.appendChild(generalVis.node); + } if (options.enableSidePanel !== 'top') { taggleRef.current.pushUpdateAble((ctx) => panelRef.current.panel.update(ctx)); } diff --git a/dist/lineup/Ranking.js.map b/dist/lineup/Ranking.js.map index b018d4a8c..1d14ff4c7 100644 --- a/dist/lineup/Ranking.js.map +++ b/dist/lineup/Ranking.js.map @@ -1 +1 @@ -{"version":3,"file":"Ranking.js","sourceRoot":"","sources":["../../src/lineup/Ranking.tsx"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Ranking.js","sourceRoot":"","sources":["../../src/lineup/Ranking.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/lineup/internal/LineUpSelectionHelper.d.ts b/dist/lineup/internal/LineUpSelectionHelper.d.ts index d34753484..ed434dbb4 100644 --- a/dist/lineup/internal/LineUpSelectionHelper.d.ts +++ b/dist/lineup/internal/LineUpSelectionHelper.d.ts @@ -7,13 +7,16 @@ export declare class LineUpSelectionHelper extends EventHandler { private readonly idType; static readonly EVENT_SET_ITEM_SELECTION = "setItemSelection"; private _rows; + private idField; /** * selected indices ordered by selection order, i.e. the first selected is the 0. item * @type {number[]} */ private readonly orderedSelectedIndices; private uid2index; - constructor(provider: LocalDataProvider, idType: () => IDType); + constructor(provider: LocalDataProvider, idType: () => IDType, { idField, }?: { + idField?: string; + }); private buildCache; private addEventListener; private removeEventListener; diff --git a/dist/lineup/internal/LineUpSelectionHelper.d.ts.map b/dist/lineup/internal/LineUpSelectionHelper.d.ts.map index df09f7edb..a5f2abca9 100644 --- a/dist/lineup/internal/LineUpSelectionHelper.d.ts.map +++ b/dist/lineup/internal/LineUpSelectionHelper.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"LineUpSelectionHelper.d.ts","sourceRoot":"","sources":["../../../src/lineup/internal/LineUpSelectionHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,qBAAa,qBAAsB,SAAQ,YAAY;IAazC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAAqB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAZjF,MAAM,CAAC,QAAQ,CAAC,wBAAwB,sBAAsB;IAE9D,OAAO,CAAC,KAAK,CAAc;IAE3B;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAgB;IAEvD,OAAO,CAAC,SAAS,CAA6B;gBAEjB,QAAQ,EAAE,iBAAiB,EAAmB,MAAM,EAAE,MAAM,MAAM;IAK/F,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,uBAAuB;IAyB/B,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAGpB;IAED,IAAI,IAAI,IAAI,IAAI,EAAE,CAEjB;IAED;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAIxC,gBAAgB,CAAC,GAAG,EAAE,UAAU;IA0BhC,sBAAsB,CAAC,GAAG,EAAE,UAAU;CAsBvC"} \ No newline at end of file +{"version":3,"file":"LineUpSelectionHelper.d.ts","sourceRoot":"","sources":["../../../src/lineup/internal/LineUpSelectionHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,qBAAa,qBAAsB,SAAQ,YAAY;IAgBnD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAhBzB,MAAM,CAAC,QAAQ,CAAC,wBAAwB,sBAAsB;IAE9D,OAAO,CAAC,KAAK,CAAc;IAE3B,OAAO,CAAC,OAAO,CAAS;IAExB;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAgB;IAEvD,OAAO,CAAC,SAAS,CAA6B;gBAG3B,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,MAAM,MAAM,EACrC,EACE,OAAc,GACf,GAAE;QACD,OAAO,CAAC,EAAE,MAAM,CAAC;KACb;IAOR,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,uBAAuB;IAyB/B,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAGpB;IAED,IAAI,IAAI,IAAI,IAAI,EAAE,CAEjB;IAED;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAIxC,gBAAgB,CAAC,GAAG,EAAE,UAAU;IA0BhC,sBAAsB,CAAC,GAAG,EAAE,UAAU;CAsBvC"} \ No newline at end of file diff --git a/dist/lineup/internal/LineUpSelectionHelper.js b/dist/lineup/internal/LineUpSelectionHelper.js index 1bf642d92..7d4684bfe 100644 --- a/dist/lineup/internal/LineUpSelectionHelper.js +++ b/dist/lineup/internal/LineUpSelectionHelper.js @@ -2,7 +2,7 @@ import { LocalDataProvider } from 'lineupjs'; import { difference } from 'lodash'; import { EventHandler } from '../../base'; export class LineUpSelectionHelper extends EventHandler { - constructor(provider, idType) { + constructor(provider, idType, { idField = 'id', } = {}) { super(); this.provider = provider; this.idType = idType; @@ -14,12 +14,13 @@ export class LineUpSelectionHelper extends EventHandler { this.orderedSelectedIndices = []; this.uid2index = new Map(); this.addEventListener(); + this.idField = idField; } buildCache() { this.uid2index.clear(); // create lookup cache this._rows.forEach((row, i) => { - this.uid2index.set(row.id, i); + this.uid2index.set(row[this.idField], i); }); } addEventListener() { @@ -47,7 +48,7 @@ export class LineUpSelectionHelper extends EventHandler { console.warn('no idType defined for this ranking view'); return; } - const selection = { idtype: idType, ids: this.orderedSelectedIndices.map((i) => this._rows[i].id) }; + const selection = { idtype: idType, ids: this.orderedSelectedIndices.map((i) => this._rows[i][this.idField]) }; // Note: listener of that event calls LineUpSelectionHelper.setItemSelection() this.fire(LineUpSelectionHelper.EVENT_SET_ITEM_SELECTION, selection); } @@ -62,7 +63,7 @@ export class LineUpSelectionHelper extends EventHandler { * gets the rows ids as a set, i.e. the order doesn't mean anything */ rowIdsAsSet(indices) { - return (indices.length === this._rows.length ? this._rows.map((d) => d.id) : indices.map((i) => this._rows[i].id)).sort(); + return (indices.length === this._rows.length ? this._rows.map((d) => d[this.idField]) : indices.map((i) => this._rows[i][this.idField])).sort(); } setItemSelection(sel) { if (!this.provider) { diff --git a/dist/lineup/internal/LineUpSelectionHelper.js.map b/dist/lineup/internal/LineUpSelectionHelper.js.map index acf6238dd..93f8a4d0e 100644 --- a/dist/lineup/internal/LineUpSelectionHelper.js.map +++ b/dist/lineup/internal/LineUpSelectionHelper.js.map @@ -1 +1 @@ -{"version":3,"file":"LineUpSelectionHelper.js","sourceRoot":"","sources":["../../../src/lineup/internal/LineUpSelectionHelper.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"LineUpSelectionHelper.js","sourceRoot":"","sources":["../../../src/lineup/internal/LineUpSelectionHelper.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/lineup/panel/LineUpOrderedRowIndicies.d.ts.map b/dist/lineup/panel/LineUpOrderedRowIndicies.d.ts.map index 3e3629a5e..69bfc2034 100644 --- a/dist/lineup/panel/LineUpOrderedRowIndicies.d.ts.map +++ b/dist/lineup/panel/LineUpOrderedRowIndicies.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"LineUpOrderedRowIndicies.d.ts","sourceRoot":"","sources":["../../../src/lineup/panel/LineUpOrderedRowIndicies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,iBAAiB,EAAW,MAAM,UAAU,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,YAAY;IACxD,MAAM,CAAC,QAAQ,CAAC,gBAAgB,eAAe;IAE/C,MAAM,CAAC,QAAQ,CAAC,qBAAqB,oBAAoB;IAEzD,MAAM,CAAC,QAAQ,CAAC,qBAAqB,oBAAoB;IAEzD;;;OAGG;IACH,OAAO,CAAC,IAAI,CAAgB;IAE5B;;;OAGG;IACH,OAAO,CAAC,SAAS,CAAgB;IAEjC;;;OAGG;IACH,OAAO,CAAC,SAAS,CAAgB;gBAErB,QAAQ,EAAE,iBAAiB;IAKvC;;;OAGG;IACH,IAAW,GAAG,IAAI,MAAM,EAAE,CAEzB;IAED;;;OAGG;IACH,IAAW,QAAQ,IAAI,MAAM,EAAE,CAE9B;IAED;;;OAGG;IACH,IAAW,QAAQ,IAAI,MAAM,EAAE,CAE9B;IAED;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAgExB,OAAO,CAAC,UAAU;CAOnB"} \ No newline at end of file +{"version":3,"file":"LineUpOrderedRowIndicies.d.ts","sourceRoot":"","sources":["../../../src/lineup/panel/LineUpOrderedRowIndicies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,iBAAiB,EAAW,MAAM,UAAU,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,YAAY;IACxD,MAAM,CAAC,QAAQ,CAAC,gBAAgB,eAAe;IAE/C,MAAM,CAAC,QAAQ,CAAC,qBAAqB,oBAAoB;IAEzD,MAAM,CAAC,QAAQ,CAAC,qBAAqB,oBAAoB;IAEzD;;;OAGG;IACH,OAAO,CAAC,IAAI,CAAgB;IAE5B;;;OAGG;IACH,OAAO,CAAC,SAAS,CAAgB;IAEjC;;;OAGG;IACH,OAAO,CAAC,SAAS,CAAgB;gBAErB,QAAQ,EAAE,iBAAiB;IAKvC;;;OAGG;IACH,IAAW,GAAG,IAAI,MAAM,EAAE,CAEzB;IAED;;;OAGG;IACH,IAAW,QAAQ,IAAI,MAAM,EAAE,CAE9B;IAED;;;OAGG;IACH,IAAW,QAAQ,IAAI,MAAM,EAAE,CAE9B;IAED;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAiExB,OAAO,CAAC,UAAU;CAOnB"} \ No newline at end of file diff --git a/dist/lineup/panel/LineUpOrderedRowIndicies.js b/dist/lineup/panel/LineUpOrderedRowIndicies.js index c301ad236..4496becfd 100644 --- a/dist/lineup/panel/LineUpOrderedRowIndicies.js +++ b/dist/lineup/panel/LineUpOrderedRowIndicies.js @@ -58,7 +58,7 @@ export class LineUpOrderedRowIndicies extends EventHandler { // NOTE: the `indices` does not reflect the sorting of the (first) ranking, instead the ids are always ordered ascending if (provider.getFirstRanking() != null) { const order = Array.from(provider.getFirstRanking().getOrder()); // use order of the first ranking - this._selected = this.sortValues(provider.getSelection(), order); + this._selected = this.sortValues(provider.getSelection(), Object.fromEntries(order.map((o, i) => [o, i]))); this.fire(LineUpOrderedRowIndicies.EVENT_UPDATE_SELECTED, this._selected); } }); @@ -88,7 +88,7 @@ export class LineUpOrderedRowIndicies extends EventHandler { // update sorting of selected rows if (dirtyReason.indexOf(EDirtyReason.SORT_CRITERIA_CHANGED) > -1) { const order = Array.from(provider.getFirstRanking().getOrder()); // use order of the first ranking - this._selected = this.sortValues(provider.getSelection(), order); + this._selected = this.sortValues(provider.getSelection(), Object.fromEntries(order.map((o, i) => [o, i]))); this.fire(LineUpOrderedRowIndicies.EVENT_UPDATE_SELECTED, this._selected); } }); @@ -103,8 +103,8 @@ export class LineUpOrderedRowIndicies extends EventHandler { } sortValues(values, order) { return values.sort((a, b) => { - const aIndex = order.indexOf(a); - const bIndex = order.indexOf(b); + const aIndex = order[a]; + const bIndex = order[b]; return (aIndex > -1 ? aIndex : Infinity) - (bIndex > -1 ? bIndex : Infinity); // sort missing values in the order array to the end }); } diff --git a/dist/lineup/panel/LineUpOrderedRowIndicies.js.map b/dist/lineup/panel/LineUpOrderedRowIndicies.js.map index fd6baa92b..a09260c11 100644 --- a/dist/lineup/panel/LineUpOrderedRowIndicies.js.map +++ b/dist/lineup/panel/LineUpOrderedRowIndicies.js.map @@ -1 +1 @@ -{"version":3,"file":"LineUpOrderedRowIndicies.js","sourceRoot":"","sources":["../../../src/lineup/panel/LineUpOrderedRowIndicies.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"LineUpOrderedRowIndicies.js","sourceRoot":"","sources":["../../../src/lineup/panel/LineUpOrderedRowIndicies.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/lineup/structureImage/StructureImageFilterDialog.d.ts.map b/dist/lineup/structureImage/StructureImageFilterDialog.d.ts.map index e96f5c211..dc28c7abd 100644 --- a/dist/lineup/structureImage/StructureImageFilterDialog.d.ts.map +++ b/dist/lineup/structureImage/StructureImageFilterDialog.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"StructureImageFilterDialog.d.ts","sourceRoot":"","sources":["../../../src/lineup/structureImage/StructureImageFilterDialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAqB,MAAM,UAAU,CAAC;AAG7F,OAAO,EAAyB,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AA4BrF,qBAAa,0BAA2B,SAAQ,OAAO;IAGzC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAgD,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFvG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;gBAEzB,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,cAAc,EAAmB,GAAG,EAAE,qBAAqB;IAQ9H,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IA8CpB,SAAS,CAAC,KAAK;IAQf,SAAS,CAAC,MAAM;IAQhB,SAAS,CAAC,MAAM;IAOhB,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW;CAiClC"} \ No newline at end of file +{"version":3,"file":"StructureImageFilterDialog.d.ts","sourceRoot":"","sources":["../../../src/lineup/structureImage/StructureImageFilterDialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAqB,MAAM,UAAU,CAAC;AAG7F,OAAO,EAAyB,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AA4BrF,qBAAa,0BAA2B,SAAQ,OAAO;IAGzC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAgD,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFvG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;gBAEzB,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,cAAc,EAAmB,GAAG,EAAE,qBAAqB;IAQ9H,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IA6CpB,SAAS,CAAC,KAAK;IAQf,SAAS,CAAC,MAAM;IAQhB,SAAS,CAAC,MAAM;IAOhB,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW;CAiClC"} \ No newline at end of file diff --git a/dist/lineup/structureImage/StructureImageFilterDialog.js b/dist/lineup/structureImage/StructureImageFilterDialog.js index 2cd54ca99..41a260164 100644 --- a/dist/lineup/structureImage/StructureImageFilterDialog.js +++ b/dist/lineup/structureImage/StructureImageFilterDialog.js @@ -49,8 +49,7 @@ export class StructureImageFilterDialog extends ADialog { return; } const provider = this.ctx.provider; - const data = provider.viewRawRows(new Array(provider.getFirstRanking().length).fill(null).map((_, i) => i)); - const structures = data.map((d) => this.column.getValue(d)); + const structures = provider.viewRawRows(provider.data.map((_, i) => i)).map((d) => this.column.getValue(d)); // empty input field, but missing values checkbox is checked if (filter == null && filterMissing) { this.column.setFilter({ filter, filterMissing, matching: new Set(structures) }); // pass all structures as set and filter missing values in column.filter() @@ -100,7 +99,7 @@ export class StructureImageFilterDialog extends ADialog { const s = this.ctx.sanitize; const bak = this.column.getFilter() || { filter: '', filterMissing: false }; node.insertAdjacentHTML('beforeend', ` - diff --git a/dist/lineup/structureImage/StructureImageFilterDialog.js.map b/dist/lineup/structureImage/StructureImageFilterDialog.js.map index 71593691c..07e7c2cd5 100644 --- a/dist/lineup/structureImage/StructureImageFilterDialog.js.map +++ b/dist/lineup/structureImage/StructureImageFilterDialog.js.map @@ -1 +1 @@ -{"version":3,"file":"StructureImageFilterDialog.js","sourceRoot":"","sources":["../../../src/lineup/structureImage/StructureImageFilterDialog.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"StructureImageFilterDialog.js","sourceRoot":"","sources":["../../../src/lineup/structureImage/StructureImageFilterDialog.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/lineup/structureImage/StructureImageRenderer.d.ts.map b/dist/lineup/structureImage/StructureImageRenderer.d.ts.map index 6323ce939..42a535c73 100644 --- a/dist/lineup/structureImage/StructureImageRenderer.d.ts.map +++ b/dist/lineup/structureImage/StructureImageRenderer.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"StructureImageRenderer.d.ts","sourceRoot":"","sources":["../../../src/lineup/structureImage/StructureImageRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,aAAa,EAEb,cAAc,EACd,kBAAkB,EAGlB,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAwD9D,qBAAa,sBAAuB,YAAW,oBAAoB;IACjE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAmG;IAEzH,SAAS,CAAC,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO;IAIhE,MAAM,CAAC,GAAG,EAAE,oBAAoB,GAAG,aAAa;IA6BhD,WAAW,CAAC,GAAG,EAAE,oBAAoB,EAAE,OAAO,EAAE,cAAc,GAAG,kBAAkB;IAanF,aAAa,IAAI,gBAAgB;CAOlC"} \ No newline at end of file +{"version":3,"file":"StructureImageRenderer.d.ts","sourceRoot":"","sources":["../../../src/lineup/structureImage/StructureImageRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,aAAa,EAEb,cAAc,EACd,kBAAkB,EAGlB,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAwD9D,qBAAa,sBAAuB,YAAW,oBAAoB;IACjE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAmG;IAEzH,SAAS,CAAC,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO;IAIhE,MAAM,CAAC,GAAG,EAAE,oBAAoB,GAAG,aAAa;IA4BhD,WAAW,CAAC,GAAG,EAAE,oBAAoB,EAAE,OAAO,EAAE,cAAc,GAAG,kBAAkB;IAanF,aAAa,IAAI,gBAAgB;CAOlC"} \ No newline at end of file diff --git a/dist/lineup/structureImage/StructureImageRenderer.js b/dist/lineup/structureImage/StructureImageRenderer.js index 83f0fb861..f8b2ce4b4 100644 --- a/dist/lineup/structureImage/StructureImageRenderer.js +++ b/dist/lineup/structureImage/StructureImageRenderer.js @@ -2,7 +2,7 @@ import { ERenderMode, renderMissingDOM, } from 'lineupjs'; import { abortAble } from 'lineupengine'; import { StructureImageColumn } from './StructureImageColumn'; import { I18nextManager } from '../../i18n'; -const template = ''; +const template = '
'; function getImageURL(structure, substructure = null, align = null) { return `/api/rdkit/?structure=${encodeURIComponent(structure)}${substructure ? `&substructure=${encodeURIComponent(substructure)}` : ''}${align ? `&align=${encodeURIComponent(align)}` : ''}`; } @@ -71,7 +71,6 @@ export class StructureImageRenderer { } n.style.backgroundImage = `url('${getImageURL(value, col.getFilter()?.filter, col.getAlign())}')`; n.title = value; - n.href = `https://pubchem.ncbi.nlm.nih.gov/#query=${value}`; }); } return null; diff --git a/dist/lineup/structureImage/StructureImageRenderer.js.map b/dist/lineup/structureImage/StructureImageRenderer.js.map index 53846e82d..b23166b50 100644 --- a/dist/lineup/structureImage/StructureImageRenderer.js.map +++ b/dist/lineup/structureImage/StructureImageRenderer.js.map @@ -1 +1 @@ -{"version":3,"file":"StructureImageRenderer.js","sourceRoot":"","sources":["../../../src/lineup/structureImage/StructureImageRenderer.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"StructureImageRenderer.js","sourceRoot":"","sources":["../../../src/lineup/structureImage/StructureImageRenderer.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/locales/en/tdp.json b/dist/locales/en/tdp.json index 15ba2f432..ead6eadc3 100644 --- a/dist/locales/en/tdp.json +++ b/dist/locales/en/tdp.json @@ -163,12 +163,14 @@ "otherSessions": "Other Sessions" }, "vis": { - "violinError": "To create a Violin plot, please select at least 1 numerical column.", - "scatterError": "To create a Scatterplot, please select at least 2 numerical columns.", - "stripError": "To create a Strip plot, please select at least 1 numerical column.", - "barError": "To create a Bar chart, please select 1 categorical column.", - "pcpError": "To create a Parallel Coordinates Plot, please select at least 2 numerical or categorical columns.", - "errorHeader": "Invalid Settings", + "violinError": "To create a violin plot, please select at least 1 numerical column.", + "scatterError": "To create a scatter plot, please select at least 2 numerical columns.", + "hexbinError": "To create a hexbin plot, please select at least 2 numerical columns.", + "stripError": "To create a strip plot, please select at least 1 numerical column.", + "barError": "To create a bar chart, please select 1 categorical column.", + "errorHeader": "Invalid settings", + "openSettings": "Open settings", + "hexbinOptions": "Hexbin options", "missingValue": "n/a" }, "lineup": { diff --git a/dist/scss/main.scss b/dist/scss/main.scss index 08eea8b3c..105207abb 100644 --- a/dist/scss/main.scss +++ b/dist/scss/main.scss @@ -15,6 +15,8 @@ @import './vendors/select2'; @import './vendors/select3'; @import './vendors/lineup'; +@import './vendors/plotly'; + @import './components/form_builder'; @import './components/button_group'; diff --git a/dist/scss/vendors/_lineup.scss b/dist/scss/vendors/_lineup.scss index 1413a6492..b8a98a1a1 100644 --- a/dist/scss/vendors/_lineup.scss +++ b/dist/scss/vendors/_lineup.scss @@ -112,10 +112,13 @@ $lu_include_font_awesome: false !default; .lu-dialog { .lu-checkbox { display: flex; - align-items: baseline; gap: 5px; margin: unset; } + + .lu-color-gradient { + margin: 5px; + } } .lu-dialog.lu-more-options { diff --git a/dist/scss/vendors/_plotly.scss b/dist/scss/vendors/_plotly.scss new file mode 100644 index 000000000..d03e4d5ef --- /dev/null +++ b/dist/scss/vendors/_plotly.scss @@ -0,0 +1,8 @@ +.tdpCoreVis .nsewdrag { + // Remove crosshair mouse pointer -> use regular mouse pointer + cursor: default !important +} + +.hexbinSvg .overlay { + cursor: default !important +} \ No newline at end of file diff --git a/dist/views/visyn/demo/VisynDemoView.d.ts.map b/dist/views/visyn/demo/VisynDemoView.d.ts.map index d3da0fa6e..4ad38bc53 100644 --- a/dist/views/visyn/demo/VisynDemoView.d.ts.map +++ b/dist/views/visyn/demo/VisynDemoView.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"VisynDemoView.d.ts","sourceRoot":"","sources":["../../../../src/views/visyn/demo/VisynDemoView.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAkEvD,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,mBAAmB,EAAE,EAAE,uBAAuB,CAAC,OAAO,CAAC,eA0BxG;AAED,wBAAgB,oBAAoB,CAAC,EAAE,UAAU,EAAE,mBAAmB,EAAE,EAAE,uBAAuB,CAAC,OAAO,CAAC,eAiBzG;AAED,wBAAgB,mBAAmB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,mBAAmB,EAAE,EAAE,uBAAuB,CAAC,OAAO,CAAC,eAiCnH;AAED,wBAAgB,mBAAmB,IAAI,uBAAuB,CAAC,YAAY,CAAC,CAY3E"} \ No newline at end of file +{"version":3,"file":"VisynDemoView.d.ts","sourceRoot":"","sources":["../../../../src/views/visyn/demo/VisynDemoView.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAkEvD,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,mBAAmB,EAAE,EAAE,uBAAuB,CAAC,OAAO,CAAC,eAyBxG;AAED,wBAAgB,oBAAoB,CAAC,EAAE,UAAU,EAAE,mBAAmB,EAAE,EAAE,uBAAuB,CAAC,OAAO,CAAC,eAiBzG;AAED,wBAAgB,mBAAmB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,mBAAmB,EAAE,EAAE,uBAAuB,CAAC,OAAO,CAAC,eAiCnH;AAED,wBAAgB,mBAAmB,IAAI,uBAAuB,CAAC,YAAY,CAAC,CAY3E"} \ No newline at end of file diff --git a/dist/views/visyn/demo/VisynDemoView.js b/dist/views/visyn/demo/VisynDemoView.js index 836f2668a..e0d2f0ea8 100644 --- a/dist/views/visyn/demo/VisynDemoView.js +++ b/dist/views/visyn/demo/VisynDemoView.js @@ -70,7 +70,7 @@ export function VisynDemoView({ desc, parameters, onParametersChanged }) { }, [parameters?.dataLength, onParametersChanged]); return (React.createElement(React.Fragment, null, desc.helpText, - parameters.columns ? (React.createElement(Vis, { columns: parameters.columns, externalConfig: parameters.config, hideSidebar: true, setExternalConfig: (config) => { + parameters.columns ? (React.createElement(Vis, { columns: parameters.columns, externalConfig: parameters.config, setExternalConfig: (config) => { onParametersChanged((p) => ({ ...p, config, diff --git a/dist/views/visyn/demo/VisynDemoView.js.map b/dist/views/visyn/demo/VisynDemoView.js.map index 60eea1b67..8ce36436b 100644 --- a/dist/views/visyn/demo/VisynDemoView.js.map +++ b/dist/views/visyn/demo/VisynDemoView.js.map @@ -1 +1 @@ -{"version":3,"file":"VisynDemoView.js","sourceRoot":"","sources":["../../../../src/views/visyn/demo/VisynDemoView.tsx"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"VisynDemoView.js","sourceRoot":"","sources":["../../../../src/views/visyn/demo/VisynDemoView.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/LineupVisWrapper.d.ts b/dist/vis/LineupVisWrapper.d.ts index 508ea8945..870522dee 100644 --- a/dist/vis/LineupVisWrapper.d.ts +++ b/dist/vis/LineupVisWrapper.d.ts @@ -8,6 +8,7 @@ export declare class LineupVisWrapper { */ selectionCallback(visynIds: string[]): void; doc: Document; + idField?: string; }; /** * This string is assigned if a categorical value is missing and rendered by Plotly. @@ -15,6 +16,7 @@ export declare class LineupVisWrapper { private PLOTLY_CATEGORICAL_MISSING_VALUE; readonly node: HTMLElement; private viewable; + private idField; constructor(props: { provider: LocalDataProvider; /** @@ -23,6 +25,7 @@ export declare class LineupVisWrapper { */ selectionCallback(visynIds: string[]): void; doc: Document; + idField?: string; }); getSelectedList: () => string[]; filterCallback: (s: string) => void; diff --git a/dist/vis/LineupVisWrapper.d.ts.map b/dist/vis/LineupVisWrapper.d.ts.map index cb2cc453d..14a0f7b55 100644 --- a/dist/vis/LineupVisWrapper.d.ts.map +++ b/dist/vis/LineupVisWrapper.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"LineupVisWrapper.d.ts","sourceRoot":"","sources":["../../src/vis/LineupVisWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuC,iBAAiB,EAAsC,MAAM,UAAU,CAAC;AAMtH,qBAAa,gBAAgB;IAWzB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE;QACxB,QAAQ,EAAE,iBAAiB,CAAC;QAC5B;;;WAGG;QACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAC5C,GAAG,EAAE,QAAQ,CAAC;KACf;IAlBH;;OAEG;IACH,OAAO,CAAC,gCAAgC,CAAS;IAEjD,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAU;gBAGL,KAAK,EAAE;QACxB,QAAQ,EAAE,iBAAiB,CAAC;QAC5B;;;WAGG;QACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAC5C,GAAG,EAAE,QAAQ,CAAC;KACf;IASH,eAAe,QAAO,MAAM,EAAE,CAI5B;IAEF,cAAc,MAAO,MAAM,UAazB;IAEF,eAAe,aAkEb;IAEF,eAAe,aASb;IAEF,IAAI,aAGF;CACH"} \ No newline at end of file +{"version":3,"file":"LineupVisWrapper.d.ts","sourceRoot":"","sources":["../../src/vis/LineupVisWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuC,iBAAiB,EAAsC,MAAM,UAAU,CAAC;AAMtH,qBAAa,gBAAgB;IAazB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE;QACxB,QAAQ,EAAE,iBAAiB,CAAC;QAC5B;;;WAGG;QACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAC5C,GAAG,EAAE,QAAQ,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB;IArBH;;OAEG;IACH,OAAO,CAAC,gCAAgC,CAAS;IAEjD,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAU;IAE1B,OAAO,CAAC,OAAO,CAAS;gBAGH,KAAK,EAAE;QACxB,QAAQ,EAAE,iBAAiB,CAAC;QAC5B;;;WAGG;QACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAC5C,GAAG,EAAE,QAAQ,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB;IAUH,eAAe,QAAO,MAAM,EAAE,CAI5B;IAEF,cAAc,MAAO,MAAM,UAazB;IAEF,eAAe,aAkEb;IAEF,eAAe,aASb;IAEF,IAAI,aAGF;CACH"} \ No newline at end of file diff --git a/dist/vis/LineupVisWrapper.js b/dist/vis/LineupVisWrapper.js index d12b9cf3f..4a0e10f24 100644 --- a/dist/vis/LineupVisWrapper.js +++ b/dist/vis/LineupVisWrapper.js @@ -9,7 +9,7 @@ export class LineupVisWrapper { this.props = props; this.getSelectedList = () => { const selectedRows = this.props.provider.viewRaw(this.props.provider.getSelection()); - return selectedRows.map((r) => r.id.toString()); + return selectedRows.map((r) => r[this.idField].toString()); }; this.filterCallback = (s) => { const selectedIds = this.props.provider.getSelection(); @@ -36,7 +36,7 @@ export class LineupVisWrapper { }; }; const mapData = (innerData, column) => { - return innerData.map((d) => ({ id: d.v.id, val: column.getRaw(d) })); + return innerData.map((d) => ({ id: d.v[this.idField], val: column.getRaw(d) })); }; const getColumnValue = async (column) => { if (column.isLoaded()) { @@ -94,6 +94,7 @@ export class LineupVisWrapper { this.node.id = 'customVisDiv'; this.node.classList.add('custom-vis-panel'); this.viewable = false; + this.idField = props.idField ?? 'id'; this.PLOTLY_CATEGORICAL_MISSING_VALUE = I18nextManager.getInstance().i18n.t('tdp:core.vis.missingValue'); } } diff --git a/dist/vis/LineupVisWrapper.js.map b/dist/vis/LineupVisWrapper.js.map index 34bf5115c..18c81ae98 100644 --- a/dist/vis/LineupVisWrapper.js.map +++ b/dist/vis/LineupVisWrapper.js.map @@ -1 +1 @@ -{"version":3,"file":"LineupVisWrapper.js","sourceRoot":"","sources":["../../src/vis/LineupVisWrapper.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"LineupVisWrapper.js","sourceRoot":"","sources":["../../src/vis/LineupVisWrapper.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/Vis.d.ts b/dist/vis/Vis.d.ts index e2070d05c..d737f4de2 100644 --- a/dist/vis/Vis.d.ts +++ b/dist/vis/Vis.d.ts @@ -1,6 +1,6 @@ /// import { IVisConfig, VisColumn, EFilterOptions } from './interfaces'; -export declare function Vis({ columns, selected, colors, shapes, selectionCallback, filterCallback, setExternalConfig, closeCallback, showCloseButton, externalConfig, hideSidebar, }: { +export declare function Vis({ columns, selected, colors, shapes, selectionCallback, filterCallback, setExternalConfig, closeCallback, showCloseButton, externalConfig, enableSidebar, showSidebar: internalShowSidebar, setShowSidebar: internalSetShowSidebar, showSidebarDefault, }: { /** * Required data columns which are displayed. */ @@ -29,6 +29,9 @@ export declare function Vis({ columns, selected, colors, shapes, selectionCallba closeCallback?: () => void; showCloseButton?: boolean; externalConfig?: IVisConfig; - hideSidebar?: boolean; + enableSidebar?: boolean; + showSidebar?: boolean; + setShowSidebar?(show: boolean): void; + showSidebarDefault?: boolean; }): JSX.Element; //# sourceMappingURL=Vis.d.ts.map \ No newline at end of file diff --git a/dist/vis/Vis.d.ts.map b/dist/vis/Vis.d.ts.map index cf934a129..9cb4ae8fe 100644 --- a/dist/vis/Vis.d.ts.map +++ b/dist/vis/Vis.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Vis.d.ts","sourceRoot":"","sources":["../../src/vis/Vis.tsx"],"names":[],"mappings":";AAGA,OAAO,EAEL,UAAU,EAEV,SAAS,EACT,cAAc,EAQf,MAAM,cAAc,CAAC;AAwBtB,wBAAgB,GAAG,CAAC,EAClB,OAAO,EACP,QAAa,EACb,MAAuB,EACvB,MAAuB,EACvB,iBAA8B,EAC9B,cAA2B,EAC3B,iBAA8B,EAC9B,aAA0B,EAC1B,eAAuB,EACvB,cAAqB,EACrB,WAAmB,GACpB,EAAE;IACD;;OAEG;IACH,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC1C;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACjD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,eAgMA"} \ No newline at end of file +{"version":3,"file":"Vis.d.ts","sourceRoot":"","sources":["../../src/vis/Vis.tsx"],"names":[],"mappings":";AAIA,OAAO,EAEL,UAAU,EAEV,SAAS,EACT,cAAc,EAQf,MAAM,cAAc,CAAC;AAWtB,wBAAgB,GAAG,CAAC,EAClB,OAAO,EACP,QAAa,EACb,MAAa,EACb,MAAuB,EACvB,iBAA8B,EAC9B,cAA2B,EAC3B,iBAA8B,EAC9B,aAA0B,EAC1B,eAAuB,EACvB,cAAqB,EACrB,aAAoB,EACpB,WAAW,EAAE,mBAAmB,EAChC,cAAc,EAAE,sBAAsB,EACtC,kBAA0B,GAC3B,EAAE;IACD;;OAEG;IACH,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC1C;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACjD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,eAyMA"} \ No newline at end of file diff --git a/dist/vis/Vis.js b/dist/vis/Vis.js index 613fce510..1dc7ee458 100644 --- a/dist/vis/Vis.js +++ b/dist/vis/Vis.js @@ -1,28 +1,23 @@ import * as React from 'react'; import d3v3 from 'd3v3'; import { useMemo, useEffect } from 'react'; +import { useUncontrolled } from '@mantine/hooks'; import { ESupportedPlotlyVis, ENumericalColorScaleType, EColumnTypes, EBarDirection, EBarDisplayType, EBarGroupingType, EScatterSelectSettings, EAggregateTypes, } from './interfaces'; import { isScatter, scatterMergeDefaultConfig, ScatterVis } from './scatter'; import { barMergeDefaultConfig, isBar, BarVis } from './bar'; import { isViolin, violinMergeDefaultConfig, ViolinVis } from './violin'; -import { isStrip, stripMergeDefaultConfig, StripVis } from './strip'; -import { isPCP, pcpMergeDefaultConfig, PCPVis } from './pcp'; import { getCssValue } from '../utils'; import { useSyncedRef } from '../hooks/useSyncedRef'; -const DEFAULT_COLORS = [ - getCssValue('visyn-c1'), - getCssValue('visyn-c2'), - getCssValue('visyn-c3'), - getCssValue('visyn-c4'), - getCssValue('visyn-c5'), - getCssValue('visyn-c6'), - getCssValue('visyn-c7'), - getCssValue('visyn-c8'), - getCssValue('visyn-c9'), - getCssValue('visyn-c10'), -]; +import { hexinbMergeDefaultConfig, isHexbin } from './hexbin/utils'; +import { HexbinVis } from './hexbin/HexbinVis'; const DEFAULT_SHAPES = ['circle', 'square', 'triangle-up', 'star']; -export function Vis({ columns, selected = [], colors = DEFAULT_COLORS, shapes = DEFAULT_SHAPES, selectionCallback = () => null, filterCallback = () => null, setExternalConfig = () => null, closeCallback = () => null, showCloseButton = false, externalConfig = null, hideSidebar = false, }) { +export function Vis({ columns, selected = [], colors = null, shapes = DEFAULT_SHAPES, selectionCallback = () => null, filterCallback = () => null, setExternalConfig = () => null, closeCallback = () => null, showCloseButton = false, externalConfig = null, enableSidebar = true, showSidebar: internalShowSidebar, setShowSidebar: internalSetShowSidebar, showSidebarDefault = false, }) { + const [showSidebar, setShowSidebar] = useUncontrolled({ + value: internalShowSidebar, + defaultValue: showSidebarDefault, + finalValue: false, + onChange: internalSetShowSidebar, + }); // Each time you switch between vis config types, there is one render where the config is inconsistent with the type before the merge functions in the useEffect below can be called. // To ensure that we never render an incosistent config, keep a consistent and a current in the config. Always render the consistent. // eslint-disable-next-line @typescript-eslint/naming-convention @@ -78,18 +73,14 @@ export function Vis({ columns, selected = [], colors = DEFAULT_COLORS, shapes = const newConfig = violinMergeDefaultConfig(columns, inconsistentVisConfig); _setVisConfig({ current: newConfig, consistent: newConfig }); } - if (isStrip(inconsistentVisConfig)) { - const newConfig = stripMergeDefaultConfig(columns, inconsistentVisConfig); - _setVisConfig({ current: newConfig, consistent: newConfig }); - } - if (isPCP(inconsistentVisConfig)) { - const newConfig = pcpMergeDefaultConfig(columns, inconsistentVisConfig); - _setVisConfig({ current: newConfig, consistent: newConfig }); - } if (isBar(inconsistentVisConfig)) { const newConfig = barMergeDefaultConfig(columns, inconsistentVisConfig); _setVisConfig({ current: newConfig, consistent: newConfig }); } + if (isHexbin(inconsistentVisConfig)) { + const newConfig = hexinbMergeDefaultConfig(columns, inconsistentVisConfig); + _setVisConfig({ current: newConfig, consistent: newConfig }); + } // DANGER:: this useEffect should only occur when the visConfig.type changes. adding visconfig into the dep array will cause an infinite loop. // eslint-disable-next-line react-hooks/exhaustive-deps }, [inconsistentVisConfig.type]); @@ -107,7 +98,20 @@ export function Vis({ columns, selected = [], colors = DEFAULT_COLORS, shapes = return currMap; }, [selected]); const scales = useMemo(() => { - const colorScale = d3v3.scale.ordinal().range(colors); + const colorScale = d3v3.scale + .ordinal() + .range(colors || [ + getCssValue('visyn-c1'), + getCssValue('visyn-c2'), + getCssValue('visyn-c3'), + getCssValue('visyn-c4'), + getCssValue('visyn-c5'), + getCssValue('visyn-c6'), + getCssValue('visyn-c7'), + getCssValue('visyn-c8'), + getCssValue('visyn-c9'), + getCssValue('visyn-c10'), + ]); return { color: colorScale, }; @@ -115,19 +119,23 @@ export function Vis({ columns, selected = [], colors = DEFAULT_COLORS, shapes = if (!visConfig) { return React.createElement("div", { className: "tdp-busy" }); } + const commonProps = { + showSidebar, + setShowSidebar, + enableSidebar, + }; return (React.createElement(React.Fragment, null, isScatter(visConfig) ? (React.createElement(ScatterVis, { config: visConfig, optionsConfig: { color: { enable: true, }, - }, shapes: shapes, setConfig: setVisConfig, filterCallback: filterCallback, selectionCallback: selectionCallback, selectedMap: selectedMap, selectedList: selected, columns: columns, scales: scales, hideSidebar: hideSidebar, showCloseButton: showCloseButton, closeButtonCallback: closeCallback })) : null, + }, shapes: shapes, setConfig: setVisConfig, filterCallback: filterCallback, selectionCallback: selectionCallback, selectedMap: selectedMap, selectedList: selected, columns: columns, scales: scales, showSidebar: showSidebar, showCloseButton: showCloseButton, closeButtonCallback: closeCallback, ...commonProps })) : null, isViolin(visConfig) ? (React.createElement(ViolinVis, { config: visConfig, optionsConfig: { overlay: { enable: true, }, - }, setConfig: setVisConfig, columns: columns, scales: scales, hideSidebar: hideSidebar, showCloseButton: showCloseButton, closeButtonCallback: closeCallback })) : null, - isStrip(visConfig) ? (React.createElement(StripVis, { config: visConfig, selectionCallback: selectionCallback, setConfig: setVisConfig, selected: selectedMap, columns: columns, scales: scales, hideSidebar: hideSidebar, showCloseButton: showCloseButton, closeButtonCallback: closeCallback })) : null, - isPCP(visConfig) ? (React.createElement(PCPVis, { config: visConfig, selected: selectedMap, setConfig: setVisConfig, columns: columns, hideSidebar: hideSidebar, showCloseButton: showCloseButton, closeButtonCallback: closeCallback })) : null, - isBar(visConfig) ? (React.createElement(BarVis, { config: visConfig, setConfig: setVisConfig, selectionCallback: selectionCallback, selectedMap: selectedMap, selectedList: selected, columns: columns, scales: scales, hideSidebar: hideSidebar, showCloseButton: showCloseButton, closeButtonCallback: closeCallback })) : null)); + }, setConfig: setVisConfig, columns: columns, scales: scales, showCloseButton: showCloseButton, closeButtonCallback: closeCallback, ...commonProps })) : null, + isBar(visConfig) ? (React.createElement(BarVis, { config: visConfig, setConfig: setVisConfig, selectionCallback: selectionCallback, selectedMap: selectedMap, selectedList: selected, columns: columns, scales: scales, showCloseButton: showCloseButton, closeButtonCallback: closeCallback, ...commonProps })) : null, + isHexbin(visConfig) ? (React.createElement(HexbinVis, { config: visConfig, selected: selectedMap, setConfig: setVisConfig, selectionCallback: selectionCallback, columns: columns, ...commonProps })) : null)); } //# sourceMappingURL=Vis.js.map \ No newline at end of file diff --git a/dist/vis/Vis.js.map b/dist/vis/Vis.js.map index ed5a2b601..af548f33c 100644 --- a/dist/vis/Vis.js.map +++ b/dist/vis/Vis.js.map @@ -1 +1 @@ -{"version":3,"file":"Vis.js","sourceRoot":"","sources":["../../src/vis/Vis.tsx"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Vis.js","sourceRoot":"","sources":["../../src/vis/Vis.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/VisSidebar.d.ts.map b/dist/vis/VisSidebar.d.ts.map index 63c5bf3fa..d7d587835 100644 --- a/dist/vis/VisSidebar.d.ts.map +++ b/dist/vis/VisSidebar.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"VisSidebar.d.ts","sourceRoot":"","sources":["../../src/vis/VisSidebar.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAU7E,oBAAY,eAAe,GAAG;IAC5B;;OAEG;IACH,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,cAAc,EAAE,UAAU,CAAC;IAC3B,iBAAiB,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;CAC5C,GAAG,sBAAsB,CAAC;AAE3B,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,cAA2B,EAAE,cAAqB,EAAE,iBAAwB,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,eAAe,eAmDtJ"} \ No newline at end of file +{"version":3,"file":"VisSidebar.d.ts","sourceRoot":"","sources":["../../src/vis/VisSidebar.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAM7E,oBAAY,eAAe,GAAG;IAC5B;;OAEG;IACH,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,cAAc,EAAE,UAAU,CAAC;IAC3B,iBAAiB,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;CAC5C,GAAG,sBAAsB,CAAC;AAE3B,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,cAA2B,EAAE,cAAqB,EAAE,iBAAwB,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,eAAe,eA2CtJ"} \ No newline at end of file diff --git a/dist/vis/VisSidebar.js b/dist/vis/VisSidebar.js index efdde4e65..9697f9f07 100644 --- a/dist/vis/VisSidebar.js +++ b/dist/vis/VisSidebar.js @@ -2,11 +2,7 @@ import * as React from 'react'; import { isBar } from './bar/utils'; import { isScatter } from './scatter/utils'; import { isViolin } from './violin/utils'; -import { isStrip } from './strip/utils'; -import { isPCP } from './pcp/utils'; -import { PCPVisSidebar } from './pcp/PCPVisSidebar'; import { BarVisSidebar } from './bar/BarVisSidebar'; -import { StripVisSidebar } from './strip/StripVisSidebar'; import { ViolinVisSidebar } from './violin/ViolinVisSidebar'; import { ScatterVisSidebar } from './scatter/ScatterVisSidebar'; export function VisSidebar({ columns, filterCallback = () => null, externalConfig = null, setExternalConfig = null, className, style }) { @@ -24,8 +20,6 @@ export function VisSidebar({ columns, filterCallback = () => null, externalConfi enable: true, }, }, setConfig: setExternalConfig, columns: columns, className: className, style: style })) : null, - isStrip(externalConfig) ? (React.createElement(StripVisSidebar, { config: externalConfig, setConfig: setExternalConfig, columns: columns, className: className, style: style })) : null, - isPCP(externalConfig) ? (React.createElement(PCPVisSidebar, { config: externalConfig, setConfig: setExternalConfig, columns: columns, className: className, style: style })) : null, isBar(externalConfig) ? (React.createElement(BarVisSidebar, { config: externalConfig, setConfig: setExternalConfig, columns: columns, className: className, style: style })) : null)); } //# sourceMappingURL=VisSidebar.js.map \ No newline at end of file diff --git a/dist/vis/VisSidebar.js.map b/dist/vis/VisSidebar.js.map index 883538561..175fc435c 100644 --- a/dist/vis/VisSidebar.js.map +++ b/dist/vis/VisSidebar.js.map @@ -1 +1 @@ -{"version":3,"file":"VisSidebar.js","sourceRoot":"","sources":["../../src/vis/VisSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAehE,MAAM,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,cAAc,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,EAAE,iBAAiB,GAAG,IAAI,EAAE,SAAS,EAAE,KAAK,EAAmB;IACrJ,IAAI,CAAC,cAAc,EAAE;QACnB,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL;QACG,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAC3B,oBAAC,iBAAiB,IAChB,MAAM,EAAE,cAAc,EACtB,aAAa,EAAE;gBACb,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI;iBACb;aACF,EACD,SAAS,EAAE,iBAAiB,EAC5B,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,GACZ,CACH,CAAC,CAAC,CAAC,IAAI;QAEP,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAC1B,oBAAC,gBAAgB,IACf,MAAM,EAAE,cAAc,EACtB,aAAa,EAAE;gBACb,OAAO,EAAE;oBACP,MAAM,EAAE,IAAI;iBACb;aACF,EACD,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,GACZ,CACH,CAAC,CAAC,CAAC,IAAI;QAEP,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CACzB,oBAAC,eAAe,IAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAI,CAChI,CAAC,CAAC,CAAC,IAAI;QAEP,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CACvB,oBAAC,aAAa,IAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAI,CAC9H,CAAC,CAAC,CAAC,IAAI;QAEP,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CACvB,oBAAC,aAAa,IAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAI,CAC9H,CAAC,CAAC,CAAC,IAAI,CACP,CACJ,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"VisSidebar.js","sourceRoot":"","sources":["../../src/vis/VisSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAehE,MAAM,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,cAAc,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,EAAE,iBAAiB,GAAG,IAAI,EAAE,SAAS,EAAE,KAAK,EAAmB;IACrJ,IAAI,CAAC,cAAc,EAAE;QACnB,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL;QACG,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAC3B,oBAAC,iBAAiB,IAChB,MAAM,EAAE,cAAc,EACtB,aAAa,EAAE;gBACb,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI;iBACb;aACF,EACD,SAAS,EAAE,iBAAiB,EAC5B,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,GACZ,CACH,CAAC,CAAC,CAAC,IAAI;QAEP,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAC1B,oBAAC,gBAAgB,IACf,MAAM,EAAE,cAAc,EACtB,aAAa,EAAE;gBACb,OAAO,EAAE;oBACP,MAAM,EAAE,IAAI;iBACb;aACF,EACD,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,GACZ,CACH,CAAC,CAAC,CAAC,IAAI;QAEP,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CACvB,oBAAC,aAAa,IAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAI,CAC9H,CAAC,CAAC,CAAC,IAAI,CACP,CACJ,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/VisSidebarWrapper.d.ts b/dist/vis/VisSidebarWrapper.d.ts index 1c96974f4..4ad6732ce 100644 --- a/dist/vis/VisSidebarWrapper.d.ts +++ b/dist/vis/VisSidebarWrapper.d.ts @@ -1,6 +1,9 @@ import { ReactNode } from 'react'; -export declare function VisSidebarWrapper({ id, children }: { +export declare function VisSidebarWrapper({ id, children, open, target, onClose, }: { id: string; children: ReactNode; + open?: boolean; + target: HTMLElement; + onClose: () => void; }): JSX.Element; //# sourceMappingURL=VisSidebarWrapper.d.ts.map \ No newline at end of file diff --git a/dist/vis/VisSidebarWrapper.d.ts.map b/dist/vis/VisSidebarWrapper.d.ts.map index 53345d80f..98cb6a1e5 100644 --- a/dist/vis/VisSidebarWrapper.d.ts.map +++ b/dist/vis/VisSidebarWrapper.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"VisSidebarWrapper.d.ts","sourceRoot":"","sources":["../../src/vis/VisSidebarWrapper.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,eAkBtF"} \ No newline at end of file +{"version":3,"file":"VisSidebarWrapper.d.ts","sourceRoot":"","sources":["../../src/vis/VisSidebarWrapper.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAU,MAAM,OAAO,CAAC;AAE1C,wBAAgB,iBAAiB,CAAC,EAChC,EAAE,EACF,QAAQ,EACR,IAAW,EACX,MAAM,EACN,OAAO,GACR,EAAE;IACD,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,eAoBA"} \ No newline at end of file diff --git a/dist/vis/VisSidebarWrapper.js b/dist/vis/VisSidebarWrapper.js index b798e784c..75a4fb4f5 100644 --- a/dist/vis/VisSidebarWrapper.js +++ b/dist/vis/VisSidebarWrapper.js @@ -1,8 +1,6 @@ +import { Drawer } from '@mantine/core'; import * as React from 'react'; -export function VisSidebarWrapper({ id, children }) { - return (React.createElement("div", { className: "position-relative h-100 flex-shrink-1 bg-light overflow-auto" }, - React.createElement("button", { className: "btn btn-primary-outline", type: "button", "data-bs-toggle": "collapse", "data-bs-target": `#generalVisBurgerMenu${id}`, "aria-expanded": "true", "aria-controls": "generalVisBurgerMenu" }, - React.createElement("i", { className: "fas fa-bars" })), - React.createElement("div", { className: "collapse show collapse-horizontal", id: `generalVisBurgerMenu${id}` }, children))); +export function VisSidebarWrapper({ id, children, open = true, target, onClose, }) { + return (React.createElement(Drawer, { closeOnClickOutside: true, padding: "sm", lockScroll: false, overlayOpacity: 0, zIndex: 50, styles: { drawer: { position: 'absolute', overflow: 'hidden' }, root: { position: 'absolute', padding: 0, overflow: 'hidden' }, header: { margin: 0 } }, position: "right", withinPortal: true, shadow: "xl", target: target, opened: open, onClose: () => onClose(), size: "sm" }, children)); } //# sourceMappingURL=VisSidebarWrapper.js.map \ No newline at end of file diff --git a/dist/vis/VisSidebarWrapper.js.map b/dist/vis/VisSidebarWrapper.js.map index a088eeac0..82031b6b2 100644 --- a/dist/vis/VisSidebarWrapper.js.map +++ b/dist/vis/VisSidebarWrapper.js.map @@ -1 +1 @@ -{"version":3,"file":"VisSidebarWrapper.js","sourceRoot":"","sources":["../../src/vis/VisSidebarWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,UAAU,iBAAiB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAuC;IACrF,OAAO,CACL,6BAAK,SAAS,EAAC,8DAA8D;QAC3E,gCACE,SAAS,EAAC,yBAAyB,EACnC,IAAI,EAAC,QAAQ,oBACE,UAAU,oBACT,wBAAwB,EAAE,EAAE,mBAC9B,MAAM,mBACN,sBAAsB;YAEpC,2BAAG,SAAS,EAAC,aAAa,GAAG,CACtB;QACT,6BAAK,SAAS,EAAC,mCAAmC,EAAC,EAAE,EAAE,uBAAuB,EAAE,EAAE,IAC/E,QAAQ,CACL,CACF,CACP,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"VisSidebarWrapper.js","sourceRoot":"","sources":["../../src/vis/VisSidebarWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,UAAU,iBAAiB,CAAC,EAChC,EAAE,EACF,QAAQ,EACR,IAAI,GAAG,IAAI,EACX,MAAM,EACN,OAAO,GAOR;IACC,OAAO,CACL,oBAAC,MAAM,IACL,mBAAmB,QACnB,OAAO,EAAC,IAAI,EACZ,UAAU,EAAE,KAAK,EACjB,cAAc,EAAE,CAAC,EACjB,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EACvJ,QAAQ,EAAC,OAAO,EAChB,YAAY,QACZ,MAAM,EAAC,IAAI,EACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EACxB,IAAI,EAAC,IAAI,IAER,QAAQ,CACF,CACV,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/bar/BarVis.d.ts b/dist/vis/bar/BarVis.d.ts index bb4a0ac25..254616789 100644 --- a/dist/vis/bar/BarVis.d.ts +++ b/dist/vis/bar/BarVis.d.ts @@ -1,6 +1,6 @@ import * as React from 'react'; import { Scales, VisColumn, IVisConfig, IBarConfig } from '../interfaces'; -interface BarVisProps { +export declare function BarVis({ config, optionsConfig, extensions, columns, setConfig, scales, selectionCallback, selectedMap, selectedList, enableSidebar, showSidebar, setShowSidebar, showCloseButton, closeButtonCallback, }: { config: IBarConfig; optionsConfig?: { group?: { @@ -40,8 +40,8 @@ interface BarVisProps { selectedList: string[]; setConfig: (config: IVisConfig) => void; scales: Scales; - hideSidebar?: boolean; -} -export declare function BarVis({ config, optionsConfig, extensions, columns, setConfig, scales, selectionCallback, selectedMap, selectedList, hideSidebar, showCloseButton, closeButtonCallback, }: BarVisProps): JSX.Element; -export {}; + showSidebar?: boolean; + setShowSidebar?(show: boolean): void; + enableSidebar?: boolean; +}): JSX.Element; //# sourceMappingURL=BarVis.d.ts.map \ No newline at end of file diff --git a/dist/vis/bar/BarVis.d.ts.map b/dist/vis/bar/BarVis.d.ts.map index 61f48b2f1..cbd570810 100644 --- a/dist/vis/bar/BarVis.d.ts.map +++ b/dist/vis/bar/BarVis.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"BarVis.d.ts","sourceRoot":"","sources":["../../../src/vis/bar/BarVis.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAoB,MAAM,eAAe,CAAC;AAU5F,UAAU,WAAW;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,aAAa,CAAC,EAAE;QACd,KAAK,CAAC,EAAE;YACN,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,SAAS,CAAC,EAAE;YACV,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,SAAS,CAAC,EAAE;YACV,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,YAAY,CAAC,EAAE;YACb,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,OAAO,CAAC,EAAE;YACR,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;KACH,CAAC;IACF,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC5C,WAAW,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACzC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AASD,wBAAgB,MAAM,CAAC,EACrB,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,EACP,SAAS,EACT,MAAM,EACN,iBAA8B,EAC9B,WAAgB,EAChB,YAAiB,EACjB,WAAmB,EACnB,eAAuB,EACvB,mBAAgC,GACjC,EAAE,WAAW,eAgLb"} \ No newline at end of file +{"version":3,"file":"BarVis.d.ts","sourceRoot":"","sources":["../../../src/vis/bar/BarVis.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAoB,MAAM,eAAe,CAAC;AAkB5F,wBAAgB,MAAM,CAAC,EACrB,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,EACP,SAAS,EACT,MAAM,EACN,iBAA8B,EAC9B,WAAgB,EAChB,YAAiB,EACjB,aAAa,EACb,WAAW,EACX,cAAc,EACd,eAAuB,EACvB,mBAAgC,GACjC,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,aAAa,CAAC,EAAE;QACd,KAAK,CAAC,EAAE;YACN,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,SAAS,CAAC,EAAE;YACV,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,SAAS,CAAC,EAAE;YACV,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,YAAY,CAAC,EAAE;YACb,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,OAAO,CAAC,EAAE;YACR,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;KACH,CAAC;IACF,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC5C,WAAW,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACzC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,eAkLA"} \ No newline at end of file diff --git a/dist/vis/bar/BarVis.js b/dist/vis/bar/BarVis.js index 83d838670..5f9e75772 100644 --- a/dist/vis/bar/BarVis.js +++ b/dist/vis/bar/BarVis.js @@ -1,7 +1,10 @@ import * as React from 'react'; -import d3 from 'd3v3'; +import d3v3 from 'd3v3'; import { merge, uniqueId, difference } from 'lodash'; -import { useEffect, useMemo } from 'react'; +import { useEffect, useMemo, useState } from 'react'; +import { ActionIcon, Container, Space, Tooltip } from '@mantine/core'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faGear } from '@fortawesome/free-solid-svg-icons'; import { EBarGroupingType } from '../interfaces'; import { PlotlyComponent, Plotly } from '../Plot'; import { InvalidCols } from '../general'; @@ -11,17 +14,19 @@ import { createBarTraces } from './utils'; import { BarVisSidebar } from './BarVisSidebar'; import { VisSidebarWrapper } from '../VisSidebarWrapper'; import { CloseButton } from '../sidebar/CloseButton'; +import { I18nextManager } from '../../i18n'; const defaultExtensions = { prePlot: null, postPlot: null, preSidebar: null, postSidebar: null, }; -export function BarVis({ config, optionsConfig, extensions, columns, setConfig, scales, selectionCallback = () => null, selectedMap = {}, selectedList = [], hideSidebar = false, showCloseButton = false, closeButtonCallback = () => null, }) { +export function BarVis({ config, optionsConfig, extensions, columns, setConfig, scales, selectionCallback = () => null, selectedMap = {}, selectedList = [], enableSidebar, showSidebar, setShowSidebar, showCloseButton = false, closeButtonCallback = () => null, }) { const mergedExtensions = React.useMemo(() => { return merge({}, defaultExtensions, extensions); }, [extensions]); const { value: traces, status: traceStatus, error: traceError } = useAsync(createBarTraces, [columns, config, scales]); + const [layout, setLayout] = useState(null); // Make sure selected values is right for each plot. const finalTraces = useMemo(() => { if (!traces) { @@ -70,20 +75,11 @@ export function BarVis({ config, optionsConfig, extensions, columns, setConfig, if (plotlyDivRef) { ro.observe(plotlyDivRef.current); } - if (hideSidebar) { - return; - } - const menu = document.getElementById(`generalVisBurgerMenu${id}`); - menu.addEventListener('hidden.bs.collapse', () => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - menu.addEventListener('shown.bs.collapse', () => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - }, [id, hideSidebar, plotlyDivRef]); - const layout = React.useMemo(() => { + return () => ro.disconnect(); + }, [id, plotlyDivRef]); + React.useEffect(() => { if (!finalTraces) { - return null; + return; } const innerLayout = { showlegend: true, @@ -95,13 +91,21 @@ export function BarVis({ config, optionsConfig, extensions, columns, setConfig, font: { family: 'Roboto, sans-serif', }, + margin: { + t: 25, + r: 25, + l: 25, + b: 25, + }, autosize: true, grid: { rows: finalTraces.rows, columns: finalTraces.cols, xgap: 0.3, pattern: 'independent' }, shapes: [], barmode: config.groupType === EBarGroupingType.STACK ? 'stack' : 'group', dragmode: false, }; - return beautifyLayout(finalTraces, innerLayout); + setLayout({ ...layout, ...beautifyLayout(finalTraces, innerLayout, null) }); + // WARNING: Do not update when layout changes, that would be an infinite loop. + // eslint-disable-next-line react-hooks/exhaustive-deps }, [finalTraces, config.groupType]); const traceData = useMemo(() => { if (!finalTraces) { @@ -109,41 +113,44 @@ export function BarVis({ config, optionsConfig, extensions, columns, setConfig, } return [...finalTraces.plots.map((p) => p.data), ...finalTraces.legendPlots.map((p) => p.data)]; }, [finalTraces]); - return (React.createElement("div", { ref: plotlyDivRef, className: "d-flex flex-row w-100 h-100", style: { minHeight: '0px' } }, - React.createElement("div", { className: `position-relative d-flex justify-content-center align-items-center flex-grow-1 ${traceStatus === 'pending' ? 'tdp-busy-partial-overlay' : ''}` }, - mergedExtensions.prePlot, - traceStatus === 'success' && finalTraces?.plots.length > 0 ? (React.createElement(PlotlyComponent, { divId: `plotlyDiv${id}`, data: traceData, layout: layout, config: { responsive: true, displayModeBar: false }, useResizeHandler: true, style: { width: '100%', height: '100%' }, onClick: (e) => { - // plotly types here are just wrong. So have to convert to unknown first. - const selectedPoints = e.points[0].customdata; - let removeSelectionFlag = true; - for (const pointId of selectedPoints) { - if (!selectedMap[pointId]) { - removeSelectionFlag = false; - break; - } + return (React.createElement(Container, { fluid: true, sx: { flexGrow: 1, height: '100%', width: '100%', overflow: 'hidden', position: 'relative' }, ref: plotlyDivRef }, + showCloseButton ? React.createElement(CloseButton, { closeCallback: closeButtonCallback }) : null, + mergedExtensions.prePlot, + React.createElement(Space, { h: "xl" }), + enableSidebar ? (React.createElement(Tooltip, { withinPortal: true, label: I18nextManager.getInstance().i18n.t('tdp:core.vis.openSettings') }, + React.createElement(ActionIcon, { sx: { zIndex: 10, position: 'absolute', top: '10px', right: '10px' }, onClick: () => setShowSidebar(true) }, + React.createElement(FontAwesomeIcon, { icon: faGear })))) : null, + traceStatus === 'success' && layout && finalTraces?.plots.length > 0 ? (React.createElement(PlotlyComponent, { divId: `plotlyDiv${id}`, data: traceData, layout: layout, config: { responsive: true, displayModeBar: false }, useResizeHandler: true, style: { width: '100%', height: '100%' }, className: "tdpCoreVis", onClick: (e) => { + // plotly types here are just wrong. So have to convert to unknown first. + const selectedPoints = e.points[0].customdata; + let removeSelectionFlag = true; + for (const pointId of selectedPoints) { + if (!selectedMap[pointId]) { + removeSelectionFlag = false; + break; } - if (removeSelectionFlag) { - const newList = difference(selectedList, selectedPoints); - selectionCallback(newList); - } - else if (e.event.ctrlKey) { - const newList = Array.from(new Set([...selectedList, ...selectedPoints])); - selectionCallback(newList); - } - else { - selectionCallback(selectedPoints); - } - }, - // plotly redraws everything on updates, so you need to reappend title and - onUpdate: () => { - for (const p of finalTraces.plots) { - d3.select(`g .${p.data.xaxis}title`).style('pointer-events', 'all').append('title').text(p.xLabel); - d3.select(`g .${p.data.yaxis}title`).style('pointer-events', 'all').append('title').text(p.yLabel); - } - } })) : traceStatus !== 'pending' ? (React.createElement(InvalidCols, { headerMessage: finalTraces?.errorMessageHeader, bodyMessage: traceError?.message || finalTraces?.errorMessage })) : null, - mergedExtensions.postPlot, - showCloseButton ? React.createElement(CloseButton, { closeCallback: closeButtonCallback }) : null), - !hideSidebar ? (React.createElement(VisSidebarWrapper, { id: id }, + } + if (removeSelectionFlag) { + const newList = difference(selectedList, selectedPoints); + selectionCallback(newList); + } + else if (e.event.ctrlKey) { + const newList = Array.from(new Set([...selectedList, ...selectedPoints])); + selectionCallback(newList); + } + else { + selectionCallback(selectedPoints); + } + }, + // plotly redraws everything on updates, so you need to reappend title and + onUpdate: () => { + for (const p of finalTraces.plots) { + d3v3.select(`g .${p.data.xaxis}title`).style('pointer-events', 'all').append('title').text(p.xLabel); + d3v3.select(`g .${p.data.yaxis}title`).style('pointer-events', 'all').append('title').text(p.yLabel); + } + } })) : traceStatus !== 'pending' ? (React.createElement(InvalidCols, { headerMessage: finalTraces?.errorMessageHeader, bodyMessage: traceError?.message || finalTraces?.errorMessage })) : null, + mergedExtensions.postPlot, + showSidebar ? (React.createElement(VisSidebarWrapper, { id: id, target: plotlyDivRef.current, open: showSidebar, onClose: () => setShowSidebar(false) }, React.createElement(BarVisSidebar, { config: config, optionsConfig: optionsConfig, extensions: extensions, columns: columns, setConfig: setConfig }))) : null)); } //# sourceMappingURL=BarVis.js.map \ No newline at end of file diff --git a/dist/vis/bar/BarVis.js.map b/dist/vis/bar/BarVis.js.map index f7913c102..270170896 100644 --- a/dist/vis/bar/BarVis.js.map +++ b/dist/vis/bar/BarVis.js.map @@ -1 +1 @@ -{"version":3,"file":"BarVis.js","sourceRoot":"","sources":["../../../src/vis/bar/BarVis.tsx"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"BarVis.js","sourceRoot":"","sources":["../../../src/vis/bar/BarVis.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/bar/BarVisSidebar.d.ts.map b/dist/vis/bar/BarVisSidebar.d.ts.map index 706c83bca..530799ee2 100644 --- a/dist/vis/bar/BarVisSidebar.d.ts.map +++ b/dist/vis/bar/BarVisSidebar.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"BarVisSidebar.d.ts","sourceRoot":"","sources":["../../../src/vis/bar/BarVisSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAML,UAAU,EACV,UAAU,EACV,SAAS,EACT,sBAAsB,EAGvB,MAAM,eAAe,CAAC;AAyCvB,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,EACP,SAAS,EACT,SAAc,EACd,KAAK,EAAE,EAAE,KAAc,EAAE,GAAG,KAAK,EAAO,GACzC,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,aAAa,CAAC,EAAE;QACd,KAAK,CAAC,EAAE;YACN,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,SAAS,CAAC,EAAE;YACV,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,SAAS,CAAC,EAAE;YACV,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,YAAY,CAAC,EAAE;YACb,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,OAAO,CAAC,EAAE;YACR,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;KACH,CAAC;IACF,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CACzC,GAAG,sBAAsB,eA4EzB"} \ No newline at end of file +{"version":3,"file":"BarVisSidebar.d.ts","sourceRoot":"","sources":["../../../src/vis/bar/BarVisSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAML,UAAU,EACV,UAAU,EACV,SAAS,EACT,sBAAsB,EAGvB,MAAM,eAAe,CAAC;AAuCvB,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,EACP,SAAS,EACT,SAAc,EACd,KAAK,EAAE,EAAE,KAAc,EAAE,GAAG,KAAK,EAAO,GACzC,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,aAAa,CAAC,EAAE;QACd,KAAK,CAAC,EAAE;YACN,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,SAAS,CAAC,EAAE;YACV,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,SAAS,CAAC,EAAE;YACV,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,YAAY,CAAC,EAAE;YACb,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,OAAO,CAAC,EAAE;YACR,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;KACH,CAAC;IACF,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CACzC,GAAG,sBAAsB,eAiFzB"} \ No newline at end of file diff --git a/dist/vis/bar/BarVisSidebar.js b/dist/vis/bar/BarVisSidebar.js index f45f518dd..fb573ae29 100644 --- a/dist/vis/bar/BarVisSidebar.js +++ b/dist/vis/bar/BarVisSidebar.js @@ -1,11 +1,10 @@ import * as React from 'react'; import { useMemo } from 'react'; import { merge } from 'lodash'; +import { Container, Divider, Stack } from '@mantine/core'; import { EColumnTypes, } from '../interfaces'; import { VisTypeSelect } from '../sidebar/VisTypeSelect'; -import { WarningMessage } from '../sidebar/WarningMessage'; import { GroupSelect } from '../sidebar/GroupSelect'; -import { MultiplesSelect } from '../sidebar/MultiplesSelect'; import { BarDirectionButtons } from '../sidebar/BarDirectionButtons'; import { SingleColumnSelect } from '../sidebar/SingleColumnSelect'; import { AggregateTypeSelect } from '../sidebar/AggregateTypeSelect'; @@ -44,33 +43,34 @@ export function BarVisSidebar({ config, optionsConfig, extensions, columns, setC const mergedExtensions = useMemo(() => { return merge({}, defaultExtensions, extensions); }, [extensions]); - return (React.createElement("div", { className: `container pb-3 pt-2 ${className}`, style: { width, ...style } }, - React.createElement(WarningMessage, null), + return (React.createElement(Container, { p: 10, fluid: true, sx: { width: '100%' } }, React.createElement(VisTypeSelect, { callback: (type) => setConfig({ ...config, type }), currentSelected: config.type }), - React.createElement("hr", null), - React.createElement(SingleColumnSelect, { callback: (catColumnSelected) => setConfig({ - ...config, - catColumnSelected, - multiples: config.multiples && config.multiples.id === catColumnSelected.id ? null : config.multiples, - group: config.group && config.group.id === catColumnSelected.id ? null : config.group, - }), columns: columns, currentSelected: config.catColumnSelected, type: [EColumnTypes.CATEGORICAL], label: "Categorical Column" }), - React.createElement(AggregateTypeSelect, { aggregateTypeSelectCallback: (aggregateType) => { - if (config.aggregateColumn === null) { - setConfig({ ...config, aggregateType, aggregateColumn: columns.find((col) => col.type === EColumnTypes.NUMERICAL).info }); - } - else { - setConfig({ ...config, aggregateType }); - } - }, aggregateColumnSelectCallback: (aggregateColumn) => setConfig({ ...config, aggregateColumn }), columns: columns, currentSelected: config.aggregateType, aggregateColumn: config.aggregateColumn }), - React.createElement("hr", null), + React.createElement(Divider, { my: "sm" }), + React.createElement(Stack, { spacing: "sm" }, + React.createElement(SingleColumnSelect, { callback: (catColumnSelected) => setConfig({ + ...config, + catColumnSelected, + multiples: config.multiples && config.multiples.id === catColumnSelected?.id ? null : config.multiples, + group: config.group && config.group.id === catColumnSelected?.id ? null : config.group, + }), columns: columns, currentSelected: config.catColumnSelected, type: [EColumnTypes.CATEGORICAL], label: "Categorical column" }), + React.createElement(AggregateTypeSelect, { aggregateTypeSelectCallback: (aggregateType) => { + if (config.aggregateColumn === null) { + setConfig({ ...config, aggregateType, aggregateColumn: columns.find((col) => col.type === EColumnTypes.NUMERICAL).info }); + } + else { + setConfig({ ...config, aggregateType }); + } + }, aggregateColumnSelectCallback: (aggregateColumn) => setConfig({ ...config, aggregateColumn }), columns: columns, currentSelected: config.aggregateType, aggregateColumn: config.aggregateColumn })), + React.createElement(Divider, { my: "sm" }), mergedExtensions.preSidebar, - mergedOptionsConfig.group.enable - ? mergedOptionsConfig.group.customComponent || (React.createElement(GroupSelect, { groupColumnSelectCallback: (group) => setConfig({ ...config, group }), groupTypeSelectCallback: (groupType) => setConfig({ ...config, groupType }), groupDisplaySelectCallback: (display) => setConfig({ ...config, display }), displayType: config.display, groupType: config.groupType, columns: columns.filter((c) => config.catColumnSelected && c.info.id !== config.catColumnSelected.id), currentSelected: config.group })) - : null, - mergedOptionsConfig.multiples.enable - ? mergedOptionsConfig.multiples.customComponent || (React.createElement(MultiplesSelect, { callback: (multiples) => setConfig({ ...config, multiples }), columns: columns.filter((c) => config.catColumnSelected && c.info.id !== config.catColumnSelected.id), currentSelected: config.multiples })) - : null, - React.createElement("hr", null), + React.createElement(Stack, { spacing: "sm" }, + mergedOptionsConfig.group.enable + ? mergedOptionsConfig.group.customComponent || (React.createElement(GroupSelect, { groupColumnSelectCallback: (group) => setConfig({ ...config, group }), groupTypeSelectCallback: (groupType) => setConfig({ ...config, groupType }), groupDisplaySelectCallback: (display) => setConfig({ ...config, display }), displayType: config.display, groupType: config.groupType, columns: columns.filter((c) => config.catColumnSelected && c.info.id !== config.catColumnSelected.id), currentSelected: config.group })) + : null, + mergedOptionsConfig.multiples.enable + ? mergedOptionsConfig.multiples.customComponent || (React.createElement(SingleColumnSelect, { callback: (multiples) => setConfig({ ...config, multiples }), columns: columns.filter((c) => config.catColumnSelected && c.info.id !== config.catColumnSelected.id), currentSelected: config.multiples, label: "Multiples", type: [EColumnTypes.CATEGORICAL] })) + : null), + React.createElement(Divider, { my: "sm" }), mergedOptionsConfig.direction.enable ? mergedOptionsConfig.direction.customComponent || (React.createElement(BarDirectionButtons, { callback: (direction) => setConfig({ ...config, direction }), currentSelected: config.direction })) : null, diff --git a/dist/vis/bar/BarVisSidebar.js.map b/dist/vis/bar/BarVisSidebar.js.map index 3f6556565..74a84c510 100644 --- a/dist/vis/bar/BarVisSidebar.js.map +++ b/dist/vis/bar/BarVisSidebar.js.map @@ -1 +1 @@ -{"version":3,"file":"BarVisSidebar.js","sourceRoot":"","sources":["../../../src/vis/bar/BarVisSidebar.tsx"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"BarVisSidebar.js","sourceRoot":"","sources":["../../../src/vis/bar/BarVisSidebar.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/general/InvalidCols.d.ts.map b/dist/vis/general/InvalidCols.d.ts.map index 878c59295..01a72b849 100644 --- a/dist/vis/general/InvalidCols.d.ts.map +++ b/dist/vis/general/InvalidCols.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"InvalidCols.d.ts","sourceRoot":"","sources":["../../../src/vis/general/InvalidCols.tsx"],"names":[],"mappings":";AAEA,wBAAgB,WAAW,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,eASzG"} \ No newline at end of file +{"version":3,"file":"InvalidCols.d.ts","sourceRoot":"","sources":["../../../src/vis/general/InvalidCols.tsx"],"names":[],"mappings":";AAGA,wBAAgB,WAAW,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,eAUzG"} \ No newline at end of file diff --git a/dist/vis/general/InvalidCols.js b/dist/vis/general/InvalidCols.js index 181eec1cd..002645bbd 100644 --- a/dist/vis/general/InvalidCols.js +++ b/dist/vis/general/InvalidCols.js @@ -1,8 +1,8 @@ import * as React from 'react'; +import { Alert, Center, Stack } from '@mantine/core'; export function InvalidCols({ headerMessage, bodyMessage }) { - return (React.createElement("div", { className: "card w-25 h-10 justify-content-center" }, - React.createElement("div", { className: "card-header" }, headerMessage), - React.createElement("div", { className: "card-body" }, - React.createElement("p", { className: "card-text" }, bodyMessage)))); + return (React.createElement(Stack, { style: { height: '100%' } }, + React.createElement(Center, { style: { height: '100%', width: '100%' } }, + React.createElement(Alert, { title: headerMessage, color: "yellow" }, bodyMessage)))); } //# sourceMappingURL=InvalidCols.js.map \ No newline at end of file diff --git a/dist/vis/general/InvalidCols.js.map b/dist/vis/general/InvalidCols.js.map index 161e05d67..8811b8459 100644 --- a/dist/vis/general/InvalidCols.js.map +++ b/dist/vis/general/InvalidCols.js.map @@ -1 +1 @@ -{"version":3,"file":"InvalidCols.js","sourceRoot":"","sources":["../../../src/vis/general/InvalidCols.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,UAAU,WAAW,CAAC,EAAE,aAAa,EAAE,WAAW,EAAkD;IACxG,OAAO,CACL,6BAAK,SAAS,EAAC,uCAAuC;QACpD,6BAAK,SAAS,EAAC,aAAa,IAAE,aAAa,CAAO;QAClD,6BAAK,SAAS,EAAC,WAAW;YACxB,2BAAG,SAAS,EAAC,WAAW,IAAE,WAAW,CAAK,CACtC,CACF,CACP,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"InvalidCols.js","sourceRoot":"","sources":["../../../src/vis/general/InvalidCols.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,UAAU,WAAW,CAAC,EAAE,aAAa,EAAE,WAAW,EAAkD;IACxG,OAAO,CACL,oBAAC,KAAK,IAAC,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;QAC9B,oBAAC,MAAM,IAAC,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;YAC9C,oBAAC,KAAK,IAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAC,QAAQ,IACxC,WAAW,CACN,CACD,CACH,CACT,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/general/layoutUtils.d.ts b/dist/vis/general/layoutUtils.d.ts index 3cb585f8f..3ed8b77ed 100644 --- a/dist/vis/general/layoutUtils.d.ts +++ b/dist/vis/general/layoutUtils.d.ts @@ -13,7 +13,7 @@ export declare function columnNameWithDescription(col: ColumnInfo): string; * @param layout the current layout to be changed. Typed to any because the plotly types complain.p * @returns the changed layout */ -export declare function beautifyLayout(traces: PlotlyInfo, layout: Partial): Partial; +export declare function beautifyLayout(traces: PlotlyInfo, layout: Partial, oldLayout: Partial): Partial; export declare function resolveColumnValues(columns: VisColumn[]): Promise<({ resolvedValues: (import("../interfaces").VisNumericalValue | import("../interfaces").VisCategoricalValue)[]; type: import("../interfaces").EColumnTypes.NUMERICAL; diff --git a/dist/vis/general/layoutUtils.d.ts.map b/dist/vis/general/layoutUtils.d.ts.map index 938f1d7e2..01fdf660d 100644 --- a/dist/vis/general/layoutUtils.d.ts.map +++ b/dist/vis/general/layoutUtils.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"layoutUtils.d.ts","sourceRoot":"","sources":["../../../src/vis/general/layoutUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAK,UAExD;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,UAAU,UAExD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,0BA8HhF;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE;;;;;;;;;;MAEvD;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,SAAS;;;;;;;;;;GAQ1D"} \ No newline at end of file +{"version":3,"file":"layoutUtils.d.ts","sourceRoot":"","sources":["../../../src/vis/general/layoutUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAK,UAExD;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,UAAU,UAExD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,0BA6HnH;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE;;;;;;;;;;MAEvD;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,SAAS;;;;;;;;;;GAQ1D"} \ No newline at end of file diff --git a/dist/vis/general/layoutUtils.js b/dist/vis/general/layoutUtils.js index ae8104bfe..ba213439f 100644 --- a/dist/vis/general/layoutUtils.js +++ b/dist/vis/general/layoutUtils.js @@ -4,7 +4,7 @@ * @param maxLength Maximum text length (default: 50) */ export function truncateText(text, maxLength = 50) { - return text.length > maxLength ? `${text.substring(0, maxLength)}\u2026` : text; + return text?.length > maxLength ? `${text.substring(0, maxLength)}\u2026` : text; } export function columnNameWithDescription(col) { return col.description ? `${col.name}: ${col.description}` : col.name; @@ -15,19 +15,18 @@ export function columnNameWithDescription(col) { * @param layout the current layout to be changed. Typed to any because the plotly types complain.p * @returns the changed layout */ -export function beautifyLayout(traces, layout) { - const layoutEdit = layout; - layoutEdit.annotations = []; +export function beautifyLayout(traces, layout, oldLayout) { + layout.annotations = []; traces.plots.forEach((t, i) => { - layoutEdit[`xaxis${i > 0 ? i + 1 : ''}`] = { + layout[`xaxis${i > 0 ? i + 1 : ''}`] = { + ...oldLayout?.[`xaxis${i > 0 ? i + 1 : ''}`], automargin: true, + // rangemode: 'tozero', tickvals: t.xTicks, ticktext: t.xTickLabels, text: t.xTicks, showline: false, - showspikes: true, - spikecolor: 'black', - spikethickness: 2, + showspikes: false, spikedash: 'dash', ticks: 'outside', title: { @@ -40,15 +39,15 @@ export function beautifyLayout(traces, layout) { }, }, }; - layoutEdit[`yaxis${i > 0 ? i + 1 : ''}`] = { + layout[`yaxis${i > 0 ? i + 1 : ''}`] = { + ...oldLayout?.[`yaxis${i > 0 ? i + 1 : ''}`], automargin: true, + // rangemode: 'tozero', tickvals: t.yTicks, ticktext: t.yTickLabels, text: t.yTicks, showline: false, - showspikes: true, - spikecolor: 'black', - spikethickness: 2, + showspikes: false, spikedash: 'dash', ticks: 'outside', title: { @@ -61,7 +60,7 @@ export function beautifyLayout(traces, layout) { }, }, }; - layoutEdit.shapes.push({ + layout.shapes.push({ type: 'line', // @ts-ignore xref: `x${i > 0 ? i + 1 : ''} domain`, @@ -79,7 +78,7 @@ export function beautifyLayout(traces, layout) { row: 2, col: 2, }); - layoutEdit.shapes.push({ + layout.shapes.push({ type: 'line', // @ts-ignore xref: `x${i > 0 ? i + 1 : ''} domain`, @@ -97,7 +96,7 @@ export function beautifyLayout(traces, layout) { row: 2, col: 2, }); - layoutEdit.shapes.push({ + layout.shapes.push({ type: 'line', // @ts-ignore xref: `x${i > 0 ? i + 1 : ''} domain`, @@ -115,7 +114,7 @@ export function beautifyLayout(traces, layout) { row: 2, col: 2, }); - layoutEdit.shapes.push({ + layout.shapes.push({ type: 'line', // @ts-ignore xref: `x${i > 0 ? i + 1 : ''} domain`, @@ -134,7 +133,7 @@ export function beautifyLayout(traces, layout) { col: 2, }); }); - return layoutEdit; + return layout; } export function resolveColumnValues(columns) { return Promise.all(columns.map(async (col) => ({ ...col, resolvedValues: await col.values() }))); diff --git a/dist/vis/general/layoutUtils.js.map b/dist/vis/general/layoutUtils.js.map index bfb7f0156..3a74cbedd 100644 --- a/dist/vis/general/layoutUtils.js.map +++ b/dist/vis/general/layoutUtils.js.map @@ -1 +1 @@ -{"version":3,"file":"layoutUtils.js","sourceRoot":"","sources":["../../../src/vis/general/layoutUtils.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"layoutUtils.js","sourceRoot":"","sources":["../../../src/vis/general/layoutUtils.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/hexbin/HexbinVis.d.ts b/dist/vis/hexbin/HexbinVis.d.ts new file mode 100644 index 000000000..05b0a98d2 --- /dev/null +++ b/dist/vis/hexbin/HexbinVis.d.ts @@ -0,0 +1,21 @@ +import * as React from 'react'; +import { VisColumn, IVisConfig, IHexbinConfig } from '../interfaces'; +export declare function HexbinVis({ config, extensions, columns, setConfig, selectionCallback, selected, enableSidebar, setShowSidebar, showSidebar, }: { + config: IHexbinConfig; + extensions?: { + prePlot?: React.ReactNode; + postPlot?: React.ReactNode; + preSidebar?: React.ReactNode; + postSidebar?: React.ReactNode; + }; + columns: VisColumn[]; + setConfig: (config: IVisConfig) => void; + selectionCallback?: (ids: string[]) => void; + selected?: { + [key: string]: boolean; + }; + showSidebar?: boolean; + setShowSidebar?(show: boolean): void; + enableSidebar?: boolean; +}): JSX.Element; +//# sourceMappingURL=HexbinVis.d.ts.map \ No newline at end of file diff --git a/dist/vis/hexbin/HexbinVis.d.ts.map b/dist/vis/hexbin/HexbinVis.d.ts.map new file mode 100644 index 000000000..9aa654f75 --- /dev/null +++ b/dist/vis/hexbin/HexbinVis.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HexbinVis.d.ts","sourceRoot":"","sources":["../../../src/vis/hexbin/HexbinVis.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAA0B,MAAM,eAAe,CAAC;AAgB7F,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,UAAU,EACV,OAAO,EACP,SAAS,EACT,iBAA8B,EAC9B,QAAa,EACb,aAAa,EACb,cAAc,EACd,WAAW,GACZ,EAAE;IACD,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACxC,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,eAwFA"} \ No newline at end of file diff --git a/dist/vis/hexbin/HexbinVis.js b/dist/vis/hexbin/HexbinVis.js new file mode 100644 index 000000000..0f481d180 --- /dev/null +++ b/dist/vis/hexbin/HexbinVis.js @@ -0,0 +1,61 @@ +import * as React from 'react'; +import { merge, uniqueId } from 'lodash'; +import { useEffect, useMemo, useRef } from 'react'; +import { ActionIcon, Center, Container, Group, SimpleGrid, Stack, Tooltip } from '@mantine/core'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faGear } from '@fortawesome/free-solid-svg-icons'; +import { EScatterSelectSettings } from '../interfaces'; +import { InvalidCols } from '../general'; +import { I18nextManager } from '../../i18n/I18nextManager'; +import { Hexplot } from './Hexplot'; +import { HexbinVisSidebar } from './HexbinVisSidebar'; +import { VisSidebarWrapper } from '../VisSidebarWrapper'; +import { BrushOptionButtons } from '../sidebar'; +import { useSyncedRef } from '../../hooks/useSyncedRef'; +const defaultExtensions = { + prePlot: null, + postPlot: null, + preSidebar: null, + postSidebar: null, +}; +export function HexbinVis({ config, extensions, columns, setConfig, selectionCallback = () => null, selected = {}, enableSidebar, setShowSidebar, showSidebar, }) { + const mergedExtensions = useMemo(() => { + return merge({}, defaultExtensions, extensions); + }, [extensions]); + const setShowSidebarRef = useSyncedRef(setShowSidebar); + // Cheating to open the sidebar after the first render, since it requires the container to be mounted + useEffect(() => { + setShowSidebarRef.current(true); + }, [setShowSidebarRef]); + const ref = useRef(); + const id = React.useMemo(() => uniqueId('HexbinVis'), []); + return (React.createElement(Container, { p: 0, fluid: true, sx: { flexGrow: 1, height: '100%', overflow: 'hidden', width: '100%', position: 'relative' }, ref: ref }, + enableSidebar ? (React.createElement(Tooltip, { withinPortal: true, label: I18nextManager.getInstance().i18n.t('tdp:core.vis.openSettings') }, + React.createElement(ActionIcon, { sx: { zIndex: 10, position: 'absolute', top: '10px', right: '10px' }, onClick: () => setShowSidebar(true) }, + React.createElement(FontAwesomeIcon, { icon: faGear })))) : null, + React.createElement(Stack, { spacing: 0, sx: { height: '100%' } }, + React.createElement(Center, null, + React.createElement(Group, { mt: "lg" }, + React.createElement(BrushOptionButtons, { callback: (dragMode) => setConfig({ ...config, dragMode }), options: [EScatterSelectSettings.RECTANGLE, EScatterSelectSettings.PAN], dragMode: config.dragMode }))), + React.createElement(SimpleGrid, { style: { height: '100%' }, cols: config.numColumnsSelected.length > 2 ? config.numColumnsSelected.length : 1 }, config.numColumnsSelected.length < 2 ? (React.createElement(InvalidCols, { headerMessage: I18nextManager.getInstance().i18n.t('tdp:core.vis.errorHeader'), bodyMessage: I18nextManager.getInstance().i18n.t('tdp:core.vis.hexbinError') })) : (React.createElement(React.Fragment, null, + config.numColumnsSelected.length > 2 ? (config.numColumnsSelected.map((xCol) => { + return config.numColumnsSelected.map((yCol) => { + if (xCol.id !== yCol.id) { + return (React.createElement(Hexplot, { key: yCol.id + xCol.id, selectionCallback: selectionCallback, selected: selected, config: config, columns: [ + columns.find((col) => col.info.id === yCol.id), + columns.find((col) => col.info.id === xCol.id), + columns.find((col) => col.info.id === config.color?.id), + ] })); + } + return React.createElement("div", { key: `${xCol.id}hist` }); + }); + })) : (React.createElement(Hexplot, { selectionCallback: selectionCallback, selected: selected, config: config, columns: [ + columns.find((col) => col.info.id === config.numColumnsSelected[0].id), + columns.find((col) => col.info.id === config.numColumnsSelected[1].id), + columns.find((col) => col.info.id === config.color?.id), + ] })), + mergedExtensions.postPlot)))), + showSidebar ? (React.createElement(VisSidebarWrapper, { id: id, target: ref.current, open: showSidebar, onClose: () => setShowSidebar(false) }, + React.createElement(HexbinVisSidebar, { config: config, extensions: extensions, columns: columns, setConfig: setConfig }))) : null)); +} +//# sourceMappingURL=HexbinVis.js.map \ No newline at end of file diff --git a/dist/vis/hexbin/HexbinVis.js.map b/dist/vis/hexbin/HexbinVis.js.map new file mode 100644 index 000000000..f06bffba1 --- /dev/null +++ b/dist/vis/hexbin/HexbinVis.js.map @@ -0,0 +1 @@ +{"version":3,"file":"HexbinVis.js","sourceRoot":"","sources":["../../../src/vis/hexbin/HexbinVis.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/hexbin/HexbinVisSidebar.d.ts b/dist/vis/hexbin/HexbinVisSidebar.d.ts new file mode 100644 index 000000000..06f92fd33 --- /dev/null +++ b/dist/vis/hexbin/HexbinVisSidebar.d.ts @@ -0,0 +1,16 @@ +import * as React from 'react'; +import { IHexbinConfig, IVisConfig, VisColumn } from '../interfaces'; +interface DensityVisSidebarProps { + config: IHexbinConfig; + extensions?: { + prePlot?: React.ReactNode; + postPlot?: React.ReactNode; + preSidebar?: React.ReactNode; + postSidebar?: React.ReactNode; + }; + columns: VisColumn[]; + setConfig: (config: IVisConfig) => void; +} +export declare function HexbinVisSidebar({ config, extensions, columns, setConfig }: DensityVisSidebarProps): JSX.Element; +export {}; +//# sourceMappingURL=HexbinVisSidebar.d.ts.map \ No newline at end of file diff --git a/dist/vis/hexbin/HexbinVisSidebar.d.ts.map b/dist/vis/hexbin/HexbinVisSidebar.d.ts.map new file mode 100644 index 000000000..91707f94d --- /dev/null +++ b/dist/vis/hexbin/HexbinVisSidebar.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HexbinVisSidebar.d.ts","sourceRoot":"","sources":["../../../src/vis/hexbin/HexbinVisSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAiE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AASpI,UAAU,sBAAsB;IAC9B,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CACzC;AASD,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,sBAAsB,eAsClG"} \ No newline at end of file diff --git a/dist/vis/hexbin/HexbinVisSidebar.js b/dist/vis/hexbin/HexbinVisSidebar.js new file mode 100644 index 000000000..dc4673aad --- /dev/null +++ b/dist/vis/hexbin/HexbinVisSidebar.js @@ -0,0 +1,39 @@ +import * as React from 'react'; +import { useMemo } from 'react'; +import { merge } from 'lodash'; +import { Container, Divider, Stack } from '@mantine/core'; +import { EColumnTypes } from '../interfaces'; +import { VisTypeSelect } from '../sidebar/VisTypeSelect'; +import { NumericalColumnSelect } from '../sidebar'; +import { SingleColumnSelect } from '../sidebar/SingleColumnSelect'; +import { HexSizeSlider } from '../sidebar/HexSizeSlider'; +import { HexbinOptionSelect } from '../sidebar/HexbinOptionSelect'; +import { HexSizeSwitch } from '../sidebar/HexSizeSwitch'; +import { HexOpacitySwitch } from '../sidebar/HexOpacitySwitch'; +const defaultExtensions = { + prePlot: null, + postPlot: null, + preSidebar: null, + postSidebar: null, +}; +export function HexbinVisSidebar({ config, extensions, columns, setConfig }) { + const mergedExtensions = useMemo(() => { + return merge({}, defaultExtensions, extensions); + }, [extensions]); + return (React.createElement(Container, { fluid: true, sx: { width: '100%' }, p: 10 }, + React.createElement(Stack, { spacing: 0 }, + React.createElement(VisTypeSelect, { callback: (type) => setConfig({ ...config, type }), currentSelected: config.type }), + React.createElement(Divider, { my: "sm" }), + React.createElement(Stack, null, + React.createElement(NumericalColumnSelect, { callback: (numColumnsSelected) => setConfig({ ...config, numColumnsSelected }), columns: columns, currentSelected: config.numColumnsSelected || [] }), + React.createElement(SingleColumnSelect, { type: [EColumnTypes.CATEGORICAL], label: "Categorical column", callback: (color) => setConfig({ ...config, color }), columns: columns, currentSelected: config.color }), + config.color ? (React.createElement(HexbinOptionSelect, { callback: (hexbinOptions) => setConfig({ ...config, hexbinOptions }), currentSelected: config.hexbinOptions })) : null), + React.createElement(Divider, { my: "sm" }), + React.createElement(Stack, null, + React.createElement(HexSizeSlider, { currentValue: config.hexRadius, callback: (hexRadius) => setConfig({ ...config, hexRadius }) }), + React.createElement(HexSizeSwitch, { currentValue: config.isSizeScale, callback: (isSizeScale) => setConfig({ ...config, isSizeScale }) }), + React.createElement(HexOpacitySwitch, { currentValue: config.isOpacityScale, callback: (isOpacityScale) => setConfig({ ...config, isOpacityScale }) })), + mergedExtensions.preSidebar, + mergedExtensions.postSidebar))); +} +//# sourceMappingURL=HexbinVisSidebar.js.map \ No newline at end of file diff --git a/dist/vis/hexbin/HexbinVisSidebar.js.map b/dist/vis/hexbin/HexbinVisSidebar.js.map new file mode 100644 index 000000000..0f9d89183 --- /dev/null +++ b/dist/vis/hexbin/HexbinVisSidebar.js.map @@ -0,0 +1 @@ +{"version":3,"file":"HexbinVisSidebar.js","sourceRoot":"","sources":["../../../src/vis/hexbin/HexbinVisSidebar.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/hexbin/Hexplot.d.ts b/dist/vis/hexbin/Hexplot.d.ts new file mode 100644 index 000000000..317e04a39 --- /dev/null +++ b/dist/vis/hexbin/Hexplot.d.ts @@ -0,0 +1,13 @@ +/// +import { VisColumn, IHexbinConfig } from '../interfaces'; +interface HexagonalBinProps { + config: IHexbinConfig; + columns: VisColumn[]; + selectionCallback?: (ids: string[]) => void; + selected?: { + [key: string]: boolean; + }; +} +export declare function Hexplot({ config, columns, selectionCallback, selected }: HexagonalBinProps): JSX.Element; +export {}; +//# sourceMappingURL=Hexplot.d.ts.map \ No newline at end of file diff --git a/dist/vis/hexbin/Hexplot.d.ts.map b/dist/vis/hexbin/Hexplot.d.ts.map new file mode 100644 index 000000000..2aac9a16e --- /dev/null +++ b/dist/vis/hexbin/Hexplot.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Hexplot.d.ts","sourceRoot":"","sources":["../../../src/vis/hexbin/Hexplot.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,SAAS,EAAE,aAAa,EAA0B,MAAM,eAAe,CAAC;AAMjF,UAAU,iBAAiB;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CACvC;AAkDD,wBAAgB,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,iBAA8B,EAAE,QAAa,EAAE,EAAE,iBAAiB,eAkX5G"} \ No newline at end of file diff --git a/dist/vis/hexbin/Hexplot.js b/dist/vis/hexbin/Hexplot.js new file mode 100644 index 000000000..7087c97c5 --- /dev/null +++ b/dist/vis/hexbin/Hexplot.js @@ -0,0 +1,292 @@ +import { Container, Stack, Chip, Tooltip, Box, ScrollArea } from '@mantine/core'; +import * as hex from 'd3-hexbin'; +import * as d3v7 from 'd3v7'; +import { uniqueId } from 'lodash'; +import * as React from 'react'; +import { useEffect, useMemo, useRef, useState } from 'react'; +import { useAsync } from '../../hooks/useAsync'; +import { EScatterSelectSettings } from '../interfaces'; +import { SingleHex } from './SingleHex'; +import { getHexData } from './utils'; +import { XAxis } from './XAxis'; +import { YAxis } from './YAxis'; +function Legend({ categories, filteredCategories, colorScale, onClick, height, }) { + return (React.createElement(ScrollArea, { style: { height } }, + React.createElement(Stack, { sx: { width: '80px' }, spacing: 10 }, categories.map((c) => { + return (React.createElement(Tooltip, { withinPortal: true, key: c, label: c, withArrow: true, arrowSize: 6 }, + React.createElement(Box, null, + React.createElement(Chip, { variant: "filled", onClick: () => onClick(c), checked: false, styles: { + label: { + width: '100%', + backgroundColor: filteredCategories.includes(c) ? 'lightgrey' : `${colorScale(c)} !important`, + textAlign: 'center', + paddingLeft: '10px', + paddingRight: '10px', + overflow: 'hidden', + color: filteredCategories.includes(c) ? 'black' : 'white', + textOverflow: 'ellipsis', + }, + } }, c)))); + })))); +} +export function Hexplot({ config, columns, selectionCallback = () => null, selected = {} }) { + const ref = useRef(null); + const [height, setHeight] = useState(0); + const [width, setWidth] = useState(0); + const xZoomedScale = useRef(null); + const yZoomedScale = useRef(null); + const [xZoomTransform, setXZoomTransform] = useState(0); + const [yZoomTransform, setYZoomTransform] = useState(0); + const [zoomScale, setZoomScale] = useState(1); + const [filteredCategories, setFilteredCategories] = useState([]); + const { value: allColumns, status: colsStatus } = useAsync(getHexData, [columns, config.numColumnsSelected, config.color]); + const id = React.useMemo(() => uniqueId('HexPlot'), []); + // getting current categorical column values, original and filtered + const currentColorColumn = useMemo(() => { + if (colsStatus === 'success' && config.color && allColumns.colorColVals) { + return { + allValues: allColumns.colorColVals.resolvedValues, + filteredValues: allColumns.colorColVals.resolvedValues.filter((val) => !filteredCategories.includes(val.val)), + }; + } + return null; + }, [allColumns?.colorColVals, config.color, colsStatus, filteredCategories]); + const margin = useMemo(() => { + return { + left: 52, + right: config.color ? 80 : 25, + top: 25, + bottom: 53, + }; + }, [config.color]); + // getting currentX data values, both original and filtered. + const currentX = useMemo(() => { + if (colsStatus === 'success' && allColumns) { + if (config.color && allColumns.colorColVals) { + return { + allValues: allColumns.numColVals[0].resolvedValues, + filteredValues: allColumns.numColVals[0].resolvedValues.filter((val, i) => { + return !filteredCategories.includes(allColumns.colorColVals.resolvedValues[i].val); + }), + }; + } + return { + allValues: allColumns.numColVals[0].resolvedValues, + filteredValues: allColumns.numColVals[0].resolvedValues, + }; + } + return null; + }, [allColumns, config.color, colsStatus, filteredCategories]); + // getting currentY data values, both original and filtered. + const currentY = useMemo(() => { + if (colsStatus === 'success' && allColumns) { + if (config.color && allColumns.colorColVals) { + return { + allValues: allColumns.numColVals[1].resolvedValues, + filteredValues: allColumns.numColVals[1].resolvedValues.filter((val, i) => { + return !filteredCategories.includes(allColumns.colorColVals.resolvedValues[i].val); + }), + }; + } + return { + allValues: allColumns.numColVals[1].resolvedValues, + filteredValues: allColumns.numColVals[1].resolvedValues, + }; + } + return null; + }, [allColumns, colsStatus, config.color, filteredCategories]); + // resize observer for setting size of the svg and updating on size change + useEffect(() => { + const ro = new ResizeObserver((entries) => { + setHeight(entries[0].contentRect.height - margin.top - margin.bottom); + setWidth(entries[0].contentRect.width - margin.left - margin.right); + }); + if (ref) { + ro.observe(ref.current); + } + return () => { + ro.disconnect(); + }; + }, [margin]); + // create x scale + const xScale = useMemo(() => { + if (currentX?.allValues) { + const min = d3v7.min(currentX.allValues.map((c) => c.val)); + const max = d3v7.max(currentX.allValues.map((c) => c.val)); + const newScale = d3v7 + .scaleLinear() + .domain([min - min / 20, max + max / 20]) + .range([margin.left, margin.left + width]); + return newScale; + } + return null; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [currentX?.allValues, width]); + // create y scale + const yScale = useMemo(() => { + if (currentY?.allValues) { + const min = d3v7.min(currentY.allValues.map((c) => c.val)); + const max = d3v7.max(currentY.allValues.map((c) => c.val)); + const newScale = d3v7 + .scaleLinear() + .domain([min - min / 20, max + max / 20]) + .range([margin.top + height, margin.top]); + return newScale; + } + return null; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [currentY?.allValues, height]); + // creating d3 hexbin object to do hex math for me + const d3Hexbin = useMemo(() => { + return hex + .hexbin() + .radius(config.hexRadius) + .extent([ + [0, 0], + [width, height], + ]); + }, [config.hexRadius, height, width]); + // generating the actual hexes + const hexes = useMemo(() => { + const inputForHexbin = []; + if (currentX && currentY) { + currentX.filteredValues.forEach((c, i) => { + inputForHexbin.push([ + xScale(c.val), + yScale(currentY.filteredValues[i].val), + currentColorColumn ? currentColorColumn.filteredValues[i].val : '', + c.id, + ]); + }); + } + // TODO: Im cheating a bit here by appending the id/color value to each hex, breaking the types. + // is there a better way to type this? + return d3Hexbin(inputForHexbin); + }, [currentColorColumn, currentX, d3Hexbin, xScale, yScale, currentY]); + // simple radius scale for the hexes + const radiusScale = useMemo(() => { + if (colsStatus === 'success') { + const [min, max] = d3v7.extent(hexes, (h) => h.length); + return d3v7 + .scaleLinear() + .domain([min, max]) + .range([config.hexRadius / 2, config.hexRadius]); + } + return null; + }, [colsStatus, hexes, config.hexRadius]); + // simple opacity scale for the hexes + const opacityScale = useMemo(() => { + if (colsStatus === 'success') { + const [min, max] = d3v7.extent(hexes, (h) => h.length); + return d3v7.scaleLinear().domain([min, max]).range([0.1, 1]); + } + return null; + }, [colsStatus, hexes]); + // Create a default color scale + const colorScale = useMemo(() => { + if (colsStatus !== 'success' || !currentColorColumn?.allValues) { + return null; + } + const colorOptions = currentColorColumn.allValues.map((val) => val.val); + return d3v7.scaleOrdinal(d3v7.schemeCategory10).domain(Array.from(new Set(colorOptions))); + }, [colsStatus, currentColorColumn?.allValues]); + // memoize the actual hexes since they do not need to change on zoom/drag + const hexObjects = React.useMemo(() => { + return (React.createElement(React.Fragment, null, hexes.map((singleHex) => { + return (React.createElement(SingleHex, { key: `${singleHex.x}, ${singleHex.y}`, selected: selected, hexbinOption: config.hexbinOptions, hexData: singleHex, d3Hexbin: d3Hexbin, isSizeScale: config.isSizeScale, radiusScale: radiusScale, isOpacityScale: config.isOpacityScale, opacityScale: opacityScale, hexRadius: config.hexRadius, colorScale: colorScale, isCategorySelected: !!config.color })); + }))); + }, [ + colorScale, + config.hexRadius, + config.isOpacityScale, + config.isSizeScale, + d3Hexbin, + hexes, + opacityScale, + radiusScale, + selected, + config.hexbinOptions, + config.color, + ]); + // // apply zoom/panning + useEffect(() => { + const zoom = d3v7.zoom(); + if (!xScale || !yScale) { + return; + } + zoom.on('zoom', (event) => { + const { transform } = event; + const newX = transform.rescaleX(xScale); + const newY = transform.rescaleY(yScale); + xZoomedScale.current = newX; + yZoomedScale.current = newY; + setZoomScale(transform.k); + setXZoomTransform(transform.x); + setYZoomTransform(transform.y); + }); + d3v7.select(`#${id}zoom`).call(zoom); + }, [id, xScale, yScale, height, width]); + // apply brushing + useEffect(() => { + // Since our brush doesnt persist after selection anyways, we can safely just do nothing + if (config.dragMode !== EScatterSelectSettings.RECTANGLE) { + return undefined; + } + const brush = d3v7.brush().extent([ + [margin.left, margin.top], + [margin.left + width, margin.top + height], + ]); + d3v7.select(`#${id}brush`).call( + // this is a real function and not a => so that I can use d3v7.select(this) inside to clear the brush + brush.on('end', function (event) { + if (!event.sourceEvent) + return; + if (!event.selection) { + selectionCallback([]); + return; + } + // To figure out if brushing is finding hexes after changing the axis via pan/zoom, need to do this. + // Invert your "zoomed" scale to find the actual scaled values inside of your svg coords. Use the original scale to find the values. + const startX = xZoomedScale.current ? xScale(xZoomedScale.current.invert(event.selection[0][0])) : event.selection[0][0]; + const startY = yZoomedScale.current ? yScale(yZoomedScale.current.invert(event.selection[0][1])) : event.selection[0][1]; + const endX = xZoomedScale.current ? xScale(xZoomedScale.current.invert(event.selection[1][0])) : event.selection[1][0]; + const endY = yZoomedScale.current ? yScale(yZoomedScale.current.invert(event.selection[1][1])) : event.selection[1][1]; + // to find the selected hexes + const selectedHexes = hexes.filter((currHex) => xZoomedScale.current + ? currHex.x >= startX && currHex.x <= endX && currHex.y >= startY && currHex.y <= endY + : currHex.x >= event.selection[0][0] && + currHex.x <= event.selection[1][0] && + currHex.y >= event.selection[0][1] && + currHex.y <= event.selection[1][1]); + const allSelectedPoints = selectedHexes.map((currHex) => currHex.map((points) => points[3])).flat(); + selectionCallback(allSelectedPoints); + d3v7.select(this).call(brush.move, null); + })); + return () => { + brush.on('end', null); + }; + }, [width, height, id, hexes, selectionCallback, config.dragMode, xScale, yScale, margin]); + return (React.createElement(Container, { ref: ref, fluid: true, sx: { width: '100%' } }, + React.createElement("svg", { className: "hexbinSvg", id: id, width: width + margin.left + margin.right, height: height + margin.top + margin.bottom }, + React.createElement("defs", null, + React.createElement("clipPath", { id: "clip" }, + React.createElement("rect", { style: { transform: `translate(${margin.left}px, ${margin.top}px)` }, width: width, height: height }))), + React.createElement("g", { clipPath: "url(#clip)" }, + React.createElement("g", { id: `${id}brush` }, + React.createElement("g", { style: { transform: `translate(${xZoomTransform}px, ${yZoomTransform}px) scale(${zoomScale})` } }, + React.createElement("g", null, hexObjects)))), + xScale ? React.createElement(XAxis, { vertPosition: height + margin.top, yRange: [margin.top, height + margin.top], xScale: xZoomedScale.current || xScale }) : null, + yScale ? React.createElement(YAxis, { horizontalPosition: margin.left, xRange: [margin.left, width + margin.left], yScale: yZoomedScale.current || yScale }) : null, + React.createElement("text", { dominantBaseline: "middle", textAnchor: "middle", style: { + transform: `translate(${margin.left + width / 2}px, ${margin.top + height + 30}px)`, + } }, allColumns?.numColVals[0]?.info.name), + React.createElement("text", { dominantBaseline: "middle", textAnchor: "middle", style: { + transform: `translate(10px, ${margin.top + height / 2}px) rotate(-90deg)`, + } }, allColumns?.numColVals[1]?.info.name), + React.createElement("rect", { transform: `translate(${margin.left}, ${margin.top})`, id: `${id}zoom`, width: width, height: height, opacity: 0, pointerEvents: config.dragMode === EScatterSelectSettings.PAN ? 'auto' : 'none' })), + React.createElement("div", { className: "position-absolute", style: { right: 0, top: margin.top + 60 } }, + React.createElement(Legend, { categories: colorScale ? colorScale.domain() : [], filteredCategories: colorScale ? filteredCategories : [], colorScale: colorScale || null, onClick: (s) => filteredCategories.includes(s) + ? setFilteredCategories(filteredCategories.filter((f) => f !== s)) + : setFilteredCategories([...filteredCategories, s]), height: height })))); +} +//# sourceMappingURL=Hexplot.js.map \ No newline at end of file diff --git a/dist/vis/hexbin/Hexplot.js.map b/dist/vis/hexbin/Hexplot.js.map new file mode 100644 index 000000000..247e97b03 --- /dev/null +++ b/dist/vis/hexbin/Hexplot.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Hexplot.js","sourceRoot":"","sources":["../../../src/vis/hexbin/Hexplot.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/hexbin/PieChart.d.ts b/dist/vis/hexbin/PieChart.d.ts new file mode 100644 index 000000000..0f826bc68 --- /dev/null +++ b/dist/vis/hexbin/PieChart.d.ts @@ -0,0 +1,11 @@ +/// +import * as d3v7 from 'd3v7'; +export interface PieChartProps { + data: number[]; + dataCategories: string[]; + radius: number; + transform: string; + colorScale: d3v7.ScaleOrdinal; +} +export declare function PieChart({ data, dataCategories, radius, transform, colorScale }: PieChartProps): JSX.Element; +//# sourceMappingURL=PieChart.d.ts.map \ No newline at end of file diff --git a/dist/vis/hexbin/PieChart.d.ts.map b/dist/vis/hexbin/PieChart.d.ts.map new file mode 100644 index 000000000..eea6191ef --- /dev/null +++ b/dist/vis/hexbin/PieChart.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PieChart.d.ts","sourceRoot":"","sources":["../../../src/vis/hexbin/PieChart.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAK7B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;CACtD;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,aAAa,eAoB9F"} \ No newline at end of file diff --git a/dist/vis/hexbin/PieChart.js b/dist/vis/hexbin/PieChart.js new file mode 100644 index 000000000..ee04efcf1 --- /dev/null +++ b/dist/vis/hexbin/PieChart.js @@ -0,0 +1,19 @@ +import * as d3v7 from 'd3v7'; +import { uniqueId } from 'lodash'; +import * as React from 'react'; +import { useMemo } from 'react'; +export function PieChart({ data, dataCategories, radius, transform, colorScale }) { + const pie = useMemo(() => { + return d3v7.pie(); + }, []); + const createArc = useMemo(() => { + return d3v7.arc().innerRadius(0).outerRadius(radius); + }, [radius]); + const id = React.useMemo(() => uniqueId('PieNum'), []); + return (React.createElement("g", { style: { transform } }, pie(data).map((slice, i) => { + // TODO: Why are indexes bad in the key? how else to do this? Also, I think the typings for arc are wrong, which is why im typing slice to any + // eslint-disable-next-line react/no-array-index-key + return React.createElement("path", { key: `${id}, ${i}`, d: createArc(slice), style: { fill: colorScale ? colorScale(dataCategories[i]) : 'cornflowerblue' } }); + }))); +} +//# sourceMappingURL=PieChart.js.map \ No newline at end of file diff --git a/dist/vis/hexbin/PieChart.js.map b/dist/vis/hexbin/PieChart.js.map new file mode 100644 index 000000000..6f90acd31 --- /dev/null +++ b/dist/vis/hexbin/PieChart.js.map @@ -0,0 +1 @@ +{"version":3,"file":"PieChart.js","sourceRoot":"","sources":["../../../src/vis/hexbin/PieChart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAUhC,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAiB;IAC7F,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;QACvB,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE;QAC7B,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEvD,OAAO,CACL,2BAAG,KAAK,EAAE,EAAE,SAAS,EAAE,IACpB,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1B,8IAA8I;QAC9I,oDAAoD;QACpD,OAAO,8BAAM,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,KAAY,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,GAAI,CAAC;IAClJ,CAAC,CAAC,CACA,CACL,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/hexbin/SingleHex.d.ts b/dist/vis/hexbin/SingleHex.d.ts new file mode 100644 index 000000000..31261db06 --- /dev/null +++ b/dist/vis/hexbin/SingleHex.d.ts @@ -0,0 +1,21 @@ +/// +import * as hex from 'd3-hexbin'; +import * as d3v7 from 'd3v7'; +import { EHexbinOptions } from '../interfaces'; +export interface SingleHexProps { + hexbinOption: EHexbinOptions; + hexData: hex.HexbinBin<[number, number, string, string]>; + d3Hexbin: hex.Hexbin<[number, number]>; + isSizeScale: boolean; + radiusScale: d3v7.ScaleLinear | null; + isOpacityScale: boolean; + opacityScale: d3v7.ScaleLinear | null; + hexRadius: number; + colorScale: d3v7.ScaleOrdinal; + selected?: { + [key: string]: boolean; + }; + isCategorySelected: boolean; +} +export declare function SingleHex({ hexbinOption, hexData, d3Hexbin, isSizeScale, radiusScale, isOpacityScale, opacityScale, hexRadius, colorScale, selected, isCategorySelected, }: SingleHexProps): JSX.Element; +//# sourceMappingURL=SingleHex.d.ts.map \ No newline at end of file diff --git a/dist/vis/hexbin/SingleHex.d.ts.map b/dist/vis/hexbin/SingleHex.d.ts.map new file mode 100644 index 000000000..5200ac2b4 --- /dev/null +++ b/dist/vis/hexbin/SingleHex.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SingleHex.d.ts","sourceRoot":"","sources":["../../../src/vis/hexbin/SingleHex.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,GAAG,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAK7B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,cAAc,CAAC;IAC7B,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;IAC5D,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACrD,QAAQ,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACtC,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,SAAS,CAAC,EACxB,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,WAAW,EACX,WAAW,EACX,cAAc,EACd,YAAY,EACZ,SAAS,EACT,UAAU,EACV,QAAa,EACb,kBAAkB,GACnB,EAAE,cAAc,eAgHhB"} \ No newline at end of file diff --git a/dist/vis/hexbin/SingleHex.js b/dist/vis/hexbin/SingleHex.js new file mode 100644 index 000000000..3d8a12b5f --- /dev/null +++ b/dist/vis/hexbin/SingleHex.js @@ -0,0 +1,69 @@ +import * as React from 'react'; +import { useMemo } from 'react'; +import { PieChart } from './PieChart'; +import { cutHex } from './utils'; +import { EHexbinOptions } from '../interfaces'; +export function SingleHex({ hexbinOption, hexData, d3Hexbin, isSizeScale, radiusScale, isOpacityScale, opacityScale, hexRadius, colorScale, selected = {}, isCategorySelected, }) { + const { catMap, catMapKeys, catMapVals } = useMemo(() => { + const currMap = {}; + hexData.forEach((point) => { + currMap[point[2]] = currMap[point[2]] ? currMap[point[2]] + 1 : 1; + }); + return { catMap: currMap, catMapKeys: Object.keys(currMap), catMapVals: Object.values(currMap) }; + }, [hexData]); + const isSelected = useMemo(() => { + return hexData.find((point) => selected[point[3]] !== true) === undefined; + }, [hexData, selected]); + const topCategory = useMemo(() => { + let highestVal = 0; + let highestCategory = ''; + for (const i in catMap) { + if (catMap[i] > highestVal) { + highestVal = catMap[i]; + highestCategory = i; + } + } + return highestCategory; + }, [catMap]); + const hexDivisor = hexData.length / 6; + let counter = 0; + return (React.createElement("g", null, + React.createElement("clipPath", { id: `${hexData.x},${hexData.y}Clip` }, + React.createElement("path", { d: d3Hexbin.hexagon(isSizeScale ? radiusScale(hexData.length) : hexRadius), style: { + transform: `translate(${hexData.x}px, ${hexData.y}px)`, + } })), + hexbinOption === EHexbinOptions.BINS && isCategorySelected + ? catMapKeys.sort().map((key) => { + const currPath = cutHex(d3Hexbin.hexagon(isSizeScale ? radiusScale(hexData.length) : hexRadius), isSizeScale ? radiusScale(hexData.length) : hexRadius, counter, Math.ceil(catMap[key] / hexDivisor)); + counter += Math.ceil(catMap[key] / hexDivisor); + return (React.createElement("g", { key: `${hexData.x},${hexData.y},${key}`, clipPath: isSelected ? `url(#${hexData.x},${hexData.y}Clip)` : null }, + React.createElement("path", { d: currPath, style: { + fill: `${colorScale ? (isSelected || Object.keys(selected).length === 0 ? colorScale(key) : 'gray') : 'black'}`, + transform: `translate(${hexData.x}px, ${hexData.y}px)`, + stroke: isSelected ? '#E29609' : 'white', + strokeWidth: isSelected ? 1 : 0, + fillOpacity: isOpacityScale ? opacityScale(hexData.length) : '1', + } }))); + }) + : null, + hexbinOption === EHexbinOptions.COLOR || !isCategorySelected ? (React.createElement("g", { clipPath: isSelected ? `url(#${hexData.x},${hexData.y}Clip)` : null }, + React.createElement("path", { d: d3Hexbin.hexagon(isSizeScale ? radiusScale(hexData.length) : hexRadius), style: { + fill: `${colorScale ? (isSelected || Object.keys(selected).length === 0 ? colorScale(topCategory) : 'gray') : 'black'}`, + transform: `translate(${hexData.x}px, ${hexData.y}px)`, + stroke: isSelected ? '#E29609' : 'white', + strokeWidth: isSelected ? (colorScale ? 1 : 2) : 0, + fillOpacity: isOpacityScale ? opacityScale(hexData.length) : '1', + } }))) : null, + hexbinOption === EHexbinOptions.PIE && isCategorySelected ? (React.createElement(React.Fragment, null, + isOpacityScale ? (React.createElement("g", { clipPath: isSelected ? `url(#${hexData.x},${hexData.y}Clip)` : null }, + React.createElement("path", { d: d3Hexbin.hexagon(isSizeScale ? radiusScale(hexData.length) : hexRadius), style: { + fill: `${'black'}`, + transform: `translate(${hexData.x}px, ${hexData.y}px)`, + stroke: isSelected ? '#E29609' : 'white', + strokeWidth: isSelected ? 1 : 0, + fillOpacity: opacityScale(hexData.length), + } }))) : null, + React.createElement("g", { style: { opacity: isSelected || Object.keys(selected).length === 0 ? 1 : 0.2 } }, + React.createElement(PieChart, { data: catMapVals, dataCategories: catMapKeys, radius: isSizeScale ? radiusScale(hexData.length) / 2 : hexRadius / 2, transform: `translate(${hexData.x}px, ${hexData.y}px)`, colorScale: colorScale })))) : null)); +} +//# sourceMappingURL=SingleHex.js.map \ No newline at end of file diff --git a/dist/vis/hexbin/SingleHex.js.map b/dist/vis/hexbin/SingleHex.js.map new file mode 100644 index 000000000..790df2f0c --- /dev/null +++ b/dist/vis/hexbin/SingleHex.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SingleHex.js","sourceRoot":"","sources":["../../../src/vis/hexbin/SingleHex.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/hexbin/XAxis.d.ts b/dist/vis/hexbin/XAxis.d.ts new file mode 100644 index 000000000..f1d599af9 --- /dev/null +++ b/dist/vis/hexbin/XAxis.d.ts @@ -0,0 +1,7 @@ +/// +export declare function XAxis({ xScale, yRange, vertPosition }: { + xScale: any; + yRange: any; + vertPosition: any; +}): JSX.Element; +//# sourceMappingURL=XAxis.d.ts.map \ No newline at end of file diff --git a/dist/vis/hexbin/XAxis.d.ts.map b/dist/vis/hexbin/XAxis.d.ts.map new file mode 100644 index 000000000..2363b4ab0 --- /dev/null +++ b/dist/vis/hexbin/XAxis.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"XAxis.d.ts","sourceRoot":"","sources":["../../../src/vis/hexbin/XAxis.tsx"],"names":[],"mappings":";AAIA,wBAAgB,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE;;;;CAAA,eA+BrD"} \ No newline at end of file diff --git a/dist/vis/hexbin/XAxis.js b/dist/vis/hexbin/XAxis.js new file mode 100644 index 000000000..f64f6b15d --- /dev/null +++ b/dist/vis/hexbin/XAxis.js @@ -0,0 +1,21 @@ +import * as React from 'react'; +import { useMemo } from 'react'; +// code taken from https://wattenberger.com/blog/react-and-d3 +export function XAxis({ xScale, yRange, vertPosition }) { + const ticks = useMemo(() => { + return xScale.ticks(5).map((value) => ({ + value, + xOffset: xScale(value), + })); + }, [xScale]); + return (React.createElement(React.Fragment, null, + React.createElement("path", { transform: `translate(0, ${vertPosition})`, d: ['M', xScale.range()[0], 0, 'H', xScale.range()[1]].join(' '), fill: "none", stroke: "lightgray" }), + React.createElement("path", { transform: `translate(0, ${yRange[0]})`, d: ['M', xScale.range()[0], 0, 'H', xScale.range()[1]].join(' '), fill: "none", stroke: "lightgray" }), + ticks.map(({ value, xOffset }) => (React.createElement("g", { key: value, transform: `translate(${xOffset}, ${vertPosition})` }, + React.createElement("line", { y2: "6", stroke: "currentColor" }), + React.createElement("line", { y2: `${-(yRange[1] - yRange[0])}`, stroke: `${value === 0 ? 'black' : 'lightgray'}` }), + React.createElement("text", { key: value, fontSize: "10px", textAnchor: "middle", style: { + transform: 'translateY(20px)', + } }, value)))))); +} +//# sourceMappingURL=XAxis.js.map \ No newline at end of file diff --git a/dist/vis/hexbin/XAxis.js.map b/dist/vis/hexbin/XAxis.js.map new file mode 100644 index 000000000..eb5950a28 --- /dev/null +++ b/dist/vis/hexbin/XAxis.js.map @@ -0,0 +1 @@ +{"version":3,"file":"XAxis.js","sourceRoot":"","sources":["../../../src/vis/hexbin/XAxis.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,6DAA6D;AAC7D,MAAM,UAAU,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACrC,KAAK;YACL,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;SACvB,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,CACL;QACE,8BAAM,SAAS,EAAE,gBAAgB,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,WAAW,GAAG;QACrJ,8BAAM,SAAS,EAAE,gBAAgB,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,WAAW,GAAG;QAEjJ,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CACjC,2BAAG,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,OAAO,KAAK,YAAY,GAAG;YAChE,8BAAM,EAAE,EAAC,GAAG,EAAC,MAAM,EAAC,cAAc,GAAG;YACrC,8BAAM,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,GAAI;YAC7F,8BACE,GAAG,EAAE,KAAK,EACV,QAAQ,EAAC,MAAM,EACf,UAAU,EAAC,QAAQ,EACnB,KAAK,EAAE;oBACL,SAAS,EAAE,kBAAkB;iBAC9B,IAEA,KAAK,CACD,CACL,CACL,CAAC,CACD,CACJ,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/hexbin/YAxis.d.ts b/dist/vis/hexbin/YAxis.d.ts new file mode 100644 index 000000000..5d3772965 --- /dev/null +++ b/dist/vis/hexbin/YAxis.d.ts @@ -0,0 +1,7 @@ +/// +export declare function YAxis({ yScale, xRange, horizontalPosition }: { + yScale: any; + xRange: any; + horizontalPosition: any; +}): JSX.Element; +//# sourceMappingURL=YAxis.d.ts.map \ No newline at end of file diff --git a/dist/vis/hexbin/YAxis.d.ts.map b/dist/vis/hexbin/YAxis.d.ts.map new file mode 100644 index 000000000..4eee08be7 --- /dev/null +++ b/dist/vis/hexbin/YAxis.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"YAxis.d.ts","sourceRoot":"","sources":["../../../src/vis/hexbin/YAxis.tsx"],"names":[],"mappings":";AAIA,wBAAgB,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE;;;;CAAA,eAoC3D"} \ No newline at end of file diff --git a/dist/vis/hexbin/YAxis.js b/dist/vis/hexbin/YAxis.js new file mode 100644 index 000000000..739cc50f4 --- /dev/null +++ b/dist/vis/hexbin/YAxis.js @@ -0,0 +1,24 @@ +import * as React from 'react'; +import { useMemo } from 'react'; +// code taken from https://wattenberger.com/blog/react-and-d3 +export function YAxis({ yScale, xRange, horizontalPosition }) { + const ticks = useMemo(() => { + return yScale.ticks(5).map((value) => ({ + value, + yOffset: yScale(value), + })); + }, [yScale]); + return (React.createElement(React.Fragment, null, + React.createElement("path", { transform: `translate(${horizontalPosition}, 0)`, d: ['M', 0, yScale.range()[0], 'V', yScale.range()[1]].join(' '), fill: "none", stroke: "lightgray" }), + React.createElement("path", { transform: `translate(${xRange[1]}, 0)`, d: ['M', 0, yScale.range()[0], 'V', yScale.range()[1]].join(' '), fill: "none", stroke: "lightgray" }), + ticks.map(({ value, yOffset }) => (React.createElement("g", { key: value, transform: `translate(${horizontalPosition}, ${yOffset})` }, + React.createElement("line", { x2: "-6", stroke: "currentColor" }), + React.createElement("line", { x2: `${xRange[1] - xRange[0]}`, stroke: `${value === 0 ? 'black' : 'lightgray'}` }), + React.createElement("text", { key: value, style: { + dominantBaseline: 'middle', + fontSize: '10px', + textAnchor: 'end', + transform: 'translateX(-8px)', + } }, value)))))); +} +//# sourceMappingURL=YAxis.js.map \ No newline at end of file diff --git a/dist/vis/hexbin/YAxis.js.map b/dist/vis/hexbin/YAxis.js.map new file mode 100644 index 000000000..435e19f68 --- /dev/null +++ b/dist/vis/hexbin/YAxis.js.map @@ -0,0 +1 @@ +{"version":3,"file":"YAxis.js","sourceRoot":"","sources":["../../../src/vis/hexbin/YAxis.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,6DAA6D;AAC7D,MAAM,UAAU,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE;IAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACrC,KAAK;YACL,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;SACvB,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,CACL;QACE,8BACE,SAAS,EAAE,aAAa,kBAAkB,MAAM,EAChD,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAChE,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,WAAW,GAClB;QACF,8BAAM,SAAS,EAAE,aAAa,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,WAAW,GAAG;QACjJ,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CACjC,2BAAG,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,kBAAkB,KAAK,OAAO,GAAG;YACtE,8BAAM,EAAE,EAAC,IAAI,EAAC,MAAM,EAAC,cAAc,GAAG;YACtC,8BAAM,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,GAAI;YAC1F,8BACE,GAAG,EAAE,KAAK,EACV,KAAK,EAAE;oBACL,gBAAgB,EAAE,QAAQ;oBAC1B,QAAQ,EAAE,MAAM;oBAChB,UAAU,EAAE,KAAK;oBACjB,SAAS,EAAE,kBAAkB;iBAC9B,IAEA,KAAK,CACD,CACL,CACL,CAAC,CACD,CACJ,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/hexbin/utils.d.ts b/dist/vis/hexbin/utils.d.ts new file mode 100644 index 000000000..f616946be --- /dev/null +++ b/dist/vis/hexbin/utils.d.ts @@ -0,0 +1,26 @@ +import { EColumnTypes, IVisConfig, VisColumn, IHexbinConfig, VisNumericalValue, VisCategoricalValue, ColumnInfo } from '../interfaces'; +export declare function isHexbin(s: IVisConfig): s is IHexbinConfig; +export declare const defaultDensityConfig: IHexbinConfig; +export declare function hexinbMergeDefaultConfig(columns: VisColumn[], config: IHexbinConfig): IVisConfig; +export declare function getHexData(columns: VisColumn[], numColumnsSelected: ColumnInfo[], colorColumn: ColumnInfo | null): Promise<{ + numColVals: { + resolvedValues: (VisNumericalValue | VisCategoricalValue)[]; + type: EColumnTypes.NUMERICAL | EColumnTypes.CATEGORICAL; + info: ColumnInfo; + }[]; + colorColVals: { + resolvedValues: (VisNumericalValue | VisCategoricalValue)[]; + type: EColumnTypes.NUMERICAL | EColumnTypes.CATEGORICAL; + info: ColumnInfo; + }; +}>; +/** + * Creates a path for a portion of a single hex in a hexbin plot + * @param path svg path for the entire hex, generated by d3 + * @param radius radius given to d3 when generating the svg path + * @param start value between 0-5 reflecting where the cut version of the hex should begin. Rotating clockwise + * @param sixths value between 0-5 reflecting where the cut version of the hex should end. Rotating clockwise + * @returns svg path "d" attribute for the portion of the hex. + */ +export declare function cutHex(path: string, radius: number, start: number, sixths: number): string; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/dist/vis/hexbin/utils.d.ts.map b/dist/vis/hexbin/utils.d.ts.map new file mode 100644 index 000000000..8f8d0fef0 --- /dev/null +++ b/dist/vis/hexbin/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/vis/hexbin/utils.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EAEZ,UAAU,EACV,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,EAIX,MAAM,eAAe,CAAC;AAGvB,wBAAgB,QAAQ,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,IAAI,aAAa,CAE1D;AAED,eAAO,MAAM,oBAAoB,EAAE,aASlC,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,aAAa,GAAG,UAAU,CAehG;AAED,wBAAsB,UAAU,CAC9B,OAAO,EAAE,SAAS,EAAE,EACpB,kBAAkB,EAAE,UAAU,EAAE,EAChC,WAAW,EAAE,UAAU,GAAG,IAAI,GAC7B,OAAO,CAAC;IACT,UAAU,EAAE;QACV,cAAc,EAAE,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,EAAE,CAAC;QAC5D,IAAI,EAAE,YAAY,CAAC,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC;QACxD,IAAI,EAAE,UAAU,CAAC;KAClB,EAAE,CAAC;IACJ,YAAY,EAAE;QACZ,cAAc,EAAE,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,EAAE,CAAC;QAC5D,IAAI,EAAE,YAAY,CAAC,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC;QACxD,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;CACH,CAAC,CAQD;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CA+B1F"} \ No newline at end of file diff --git a/dist/vis/hexbin/utils.js b/dist/vis/hexbin/utils.js new file mode 100644 index 000000000..65c15311d --- /dev/null +++ b/dist/vis/hexbin/utils.js @@ -0,0 +1,71 @@ +import { merge } from 'lodash'; +import { EColumnTypes, ESupportedPlotlyVis, EHexbinOptions, EScatterSelectSettings, } from '../interfaces'; +import { resolveColumnValues, resolveSingleColumn } from '../general/layoutUtils'; +export function isHexbin(s) { + return s.type === ESupportedPlotlyVis.HEXBIN; +} +export const defaultDensityConfig = { + type: ESupportedPlotlyVis.HEXBIN, + numColumnsSelected: [], + color: null, + isOpacityScale: true, + isSizeScale: false, + hexRadius: 10, + dragMode: EScatterSelectSettings.PAN, + hexbinOptions: EHexbinOptions.COLOR, +}; +export function hexinbMergeDefaultConfig(columns, config) { + const merged = merge({}, defaultDensityConfig, config); + const numCols = columns.filter((c) => c.type === EColumnTypes.NUMERICAL); + if (merged.numColumnsSelected.length === 0 && numCols.length > 1) { + merged.numColumnsSelected.push(numCols[numCols.length - 1].info); + merged.numColumnsSelected.push(numCols[numCols.length - 2].info); + } + else if (merged.numColumnsSelected.length === 1 && numCols.length > 1) { + if (numCols[numCols.length - 1].info.id !== merged.numColumnsSelected[0].id) { + merged.numColumnsSelected.push(numCols[numCols.length - 1].info); + } + else { + merged.numColumnsSelected.push(numCols[numCols.length - 2].info); + } + } + return merged; +} +export async function getHexData(columns, numColumnsSelected, colorColumn) { + const numCols = [columns[0], columns[1]]; + const numColVals = await resolveColumnValues(numCols); + const colorColVals = await resolveSingleColumn(colorColumn ? columns.find((col) => col.info.id === colorColumn.id) : null); + return { numColVals, colorColVals }; +} +/** + * Creates a path for a portion of a single hex in a hexbin plot + * @param path svg path for the entire hex, generated by d3 + * @param radius radius given to d3 when generating the svg path + * @param start value between 0-5 reflecting where the cut version of the hex should begin. Rotating clockwise + * @param sixths value between 0-5 reflecting where the cut version of the hex should end. Rotating clockwise + * @returns svg path "d" attribute for the portion of the hex. + */ +export function cutHex(path, radius, start, sixths) { + if (sixths === 6) { + return path; + } + if (sixths === 0 || start > 5) { + return ''; + } + const splitPath = path.slice(1, path.length - 1).split(/[l]/); + const currPos = [0, -radius]; + for (let i = 1; i <= start; i++) { + currPos[0] += +splitPath[i].split(',')[0]; + currPos[1] += +splitPath[i].split(',')[1]; + } + let finalString = `m${currPos}`; + for (let i = 0; i < sixths; i++) { + finalString += start + 1 + i >= 6 ? '' : `l${splitPath[start + 1 + i]}`; + } + if (start + sixths >= 6) { + finalString += `L 0 -${radius}`; + } + finalString += 'L 0 0 z'; + return `${finalString}`; +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/dist/vis/hexbin/utils.js.map b/dist/vis/hexbin/utils.js.map new file mode 100644 index 000000000..be20813db --- /dev/null +++ b/dist/vis/hexbin/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/vis/hexbin/utils.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EACL,YAAY,EACZ,mBAAmB,EAQnB,cAAc,EACd,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElF,MAAM,UAAU,QAAQ,CAAC,CAAa;IACpC,OAAO,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,MAAM,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAkB;IACjD,IAAI,EAAE,mBAAmB,CAAC,MAAM;IAChC,kBAAkB,EAAE,EAAE;IACtB,KAAK,EAAE,IAAI;IACX,cAAc,EAAE,IAAI;IACpB,WAAW,EAAE,KAAK;IAClB,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,sBAAsB,CAAC,GAAG;IACpC,aAAa,EAAE,cAAc,CAAC,KAAK;CACpC,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,OAAoB,EAAE,MAAqB;IAClF,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS,CAAC,CAAC;IAEzE,IAAI,MAAM,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;QAChE,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KAClE;SAAM,IAAI,MAAM,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;QACvE,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;YAC3E,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAClE;aAAM;YACL,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAClE;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAoB,EACpB,kBAAgC,EAChC,WAA8B;IAa9B,MAAM,OAAO,GAAyB,CAAC,OAAO,CAAC,CAAC,CAAuB,EAAE,OAAO,CAAC,CAAC,CAAuB,CAAC,CAAC;IAE3G,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAEtD,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE3H,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AACtC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,MAAc,EAAE,KAAa,EAAE,MAAc;IAChF,IAAI,MAAM,KAAK,CAAC,EAAE;QAChB,OAAO,IAAI,CAAC;KACb;IAED,IAAI,MAAM,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;QAC7B,OAAO,EAAE,CAAC;KACX;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAE9D,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE;QAC/B,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3C;IAED,IAAI,WAAW,GAAG,IAAI,OAAO,EAAE,CAAC;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/B,WAAW,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;KACzE;IAED,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE;QACvB,WAAW,IAAI,QAAQ,MAAM,EAAE,CAAC;KACjC;IAED,WAAW,IAAI,SAAS,CAAC;IAEzB,OAAO,GAAG,WAAW,EAAE,CAAC;AAC1B,CAAC"} \ No newline at end of file diff --git a/dist/vis/index.d.ts b/dist/vis/index.d.ts index faf6b0eeb..08d7a9a66 100644 --- a/dist/vis/index.d.ts +++ b/dist/vis/index.d.ts @@ -1,8 +1,6 @@ export * from './bar'; export * from './general'; -export * from './pcp'; export * from './scatter'; -export * from './strip'; export * from './violin'; export * from './interfaces'; export * from './Plot'; diff --git a/dist/vis/index.d.ts.map b/dist/vis/index.d.ts.map index a537c47a4..efe69ba53 100644 --- a/dist/vis/index.d.ts.map +++ b/dist/vis/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vis/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vis/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC"} \ No newline at end of file diff --git a/dist/vis/index.js b/dist/vis/index.js index 9ee1341ea..875d529e3 100644 --- a/dist/vis/index.js +++ b/dist/vis/index.js @@ -1,8 +1,6 @@ export * from './bar'; export * from './general'; -export * from './pcp'; export * from './scatter'; -export * from './strip'; export * from './violin'; export * from './interfaces'; export * from './Plot'; diff --git a/dist/vis/index.js.map b/dist/vis/index.js.map index a9107574f..433618d97 100644 --- a/dist/vis/index.js.map +++ b/dist/vis/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vis/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vis/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC"} \ No newline at end of file diff --git a/dist/vis/interfaces.d.ts b/dist/vis/interfaces.d.ts index d1b8b3556..fe4d5df93 100644 --- a/dist/vis/interfaces.d.ts +++ b/dist/vis/interfaces.d.ts @@ -1,24 +1,28 @@ /// import { Plotly } from './Plot'; export declare enum ESupportedPlotlyVis { - SCATTER = "Scatter Plot", - PCP = "Parallel Coordinates Plot", - VIOLIN = "Violin Plot", - STRIP = "Strip Plot", - BAR = "Bar Chart" + SCATTER = "Scatter plot", + VIOLIN = "Violin plot", + BAR = "Bar chart", + HEXBIN = "Hexbin plot" } export declare const allVisTypes: ESupportedPlotlyVis[]; +export declare type IVisConfig = IScatterConfig | IViolinConfig | IBarConfig | IHexbinConfig; export declare enum EBarDisplayType { ABSOLUTE = "Absolute", NORMALIZED = "Normalized" } +export declare enum EHexbinOptions { + COLOR = "Color", + PIE = "Pie", + BINS = "Bins" +} export declare enum EBarDirection { VERTICAL = "Vertical", HORIZONTAL = "Horizontal" } export declare enum EViolinOverlay { NONE = "None", - STRIP = "Strip", BOX = "Box" } export declare enum EAggregateTypes { @@ -42,8 +46,8 @@ export declare enum EGeneralFormType { SLIDER = "Slider" } export declare enum EFilterOptions { - IN = "Filter In", - OUT = "Filter Out", + IN = "Filter in", + OUT = "Filter out", CLEAR = "Clear" } export declare enum ENumericalColorScaleType { @@ -62,11 +66,6 @@ export interface IViolinConfig { catColumnsSelected: ColumnInfo[]; violinOverlay: EViolinOverlay; } -export interface IStripConfig { - type: ESupportedPlotlyVis.STRIP; - numColumnsSelected: ColumnInfo[]; - catColumnsSelected: ColumnInfo[]; -} export interface IScatterConfig { type: ESupportedPlotlyVis.SCATTER; numColumnsSelected: ColumnInfo[]; @@ -88,11 +87,16 @@ export interface IBarConfig { aggregateType: EAggregateTypes; aggregateColumn: ColumnInfo | null; } -export interface IPCPConfig { - type: ESupportedPlotlyVis.PCP; - allColumnsSelected: ColumnInfo[]; +export interface IHexbinConfig { + type: ESupportedPlotlyVis.HEXBIN; + numColumnsSelected: ColumnInfo[]; + color: ColumnInfo | null; + hexRadius: number; + isOpacityScale: boolean; + isSizeScale: boolean; + dragMode: EScatterSelectSettings; + hexbinOptions: EHexbinOptions; } -export declare type IVisConfig = IScatterConfig | IViolinConfig | IBarConfig | IStripConfig | IPCPConfig; declare type ValueGetter = () => T | Promise; export interface IVisCommonValue { /** diff --git a/dist/vis/interfaces.d.ts.map b/dist/vis/interfaces.d.ts.map index b93142ac0..2d33b2736 100644 --- a/dist/vis/interfaces.d.ts.map +++ b/dist/vis/interfaces.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/vis/interfaces.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/vis/interfaces.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/interfaces.js b/dist/vis/interfaces.js index f4b22aa71..44574998b 100644 --- a/dist/vis/interfaces.js +++ b/dist/vis/interfaces.js @@ -1,23 +1,27 @@ export var ESupportedPlotlyVis; (function (ESupportedPlotlyVis) { - ESupportedPlotlyVis["SCATTER"] = "Scatter Plot"; - ESupportedPlotlyVis["PCP"] = "Parallel Coordinates Plot"; - ESupportedPlotlyVis["VIOLIN"] = "Violin Plot"; - ESupportedPlotlyVis["STRIP"] = "Strip Plot"; - ESupportedPlotlyVis["BAR"] = "Bar Chart"; + ESupportedPlotlyVis["SCATTER"] = "Scatter plot"; + ESupportedPlotlyVis["VIOLIN"] = "Violin plot"; + ESupportedPlotlyVis["BAR"] = "Bar chart"; + ESupportedPlotlyVis["HEXBIN"] = "Hexbin plot"; })(ESupportedPlotlyVis || (ESupportedPlotlyVis = {})); export const allVisTypes = [ ESupportedPlotlyVis.SCATTER, ESupportedPlotlyVis.BAR, ESupportedPlotlyVis.VIOLIN, - ESupportedPlotlyVis.STRIP, - ESupportedPlotlyVis.PCP, + ESupportedPlotlyVis.HEXBIN, ]; export var EBarDisplayType; (function (EBarDisplayType) { EBarDisplayType["ABSOLUTE"] = "Absolute"; EBarDisplayType["NORMALIZED"] = "Normalized"; })(EBarDisplayType || (EBarDisplayType = {})); +export var EHexbinOptions; +(function (EHexbinOptions) { + EHexbinOptions["COLOR"] = "Color"; + EHexbinOptions["PIE"] = "Pie"; + EHexbinOptions["BINS"] = "Bins"; +})(EHexbinOptions || (EHexbinOptions = {})); export var EBarDirection; (function (EBarDirection) { EBarDirection["VERTICAL"] = "Vertical"; @@ -26,7 +30,6 @@ export var EBarDirection; export var EViolinOverlay; (function (EViolinOverlay) { EViolinOverlay["NONE"] = "None"; - EViolinOverlay["STRIP"] = "Strip"; EViolinOverlay["BOX"] = "Box"; })(EViolinOverlay || (EViolinOverlay = {})); export var EAggregateTypes; @@ -55,8 +58,8 @@ export var EGeneralFormType; })(EGeneralFormType || (EGeneralFormType = {})); export var EFilterOptions; (function (EFilterOptions) { - EFilterOptions["IN"] = "Filter In"; - EFilterOptions["OUT"] = "Filter Out"; + EFilterOptions["IN"] = "Filter in"; + EFilterOptions["OUT"] = "Filter out"; EFilterOptions["CLEAR"] = "Clear"; })(EFilterOptions || (EFilterOptions = {})); export var ENumericalColorScaleType; diff --git a/dist/vis/interfaces.js.map b/dist/vis/interfaces.js.map index f8620e0ea..a27a43fe3 100644 --- a/dist/vis/interfaces.js.map +++ b/dist/vis/interfaces.js.map @@ -1 +1 @@ -{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/vis/interfaces.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,mBAMX;AAND,WAAY,mBAAmB;IAC7B,+CAAwB,CAAA;IACxB,wDAAiC,CAAA;IACjC,6CAAsB,CAAA;IACtB,2CAAoB,CAAA;IACpB,wCAAiB,CAAA;AACnB,CAAC,EANW,mBAAmB,KAAnB,mBAAmB,QAM9B;AAED,MAAM,CAAC,MAAM,WAAW,GAA0B;IAChD,mBAAmB,CAAC,OAAO;IAC3B,mBAAmB,CAAC,GAAG;IACvB,mBAAmB,CAAC,MAAM;IAC1B,mBAAmB,CAAC,KAAK;IACzB,mBAAmB,CAAC,GAAG;CACxB,CAAC;AAEF,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,wCAAqB,CAAA;IACrB,4CAAyB,CAAA;AAC3B,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAED,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,sCAAqB,CAAA;IACrB,0CAAyB,CAAA;AAC3B,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAED,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,+BAAa,CAAA;IACb,iCAAe,CAAA;IACf,6BAAW,CAAA;AACb,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB;AAED,MAAM,CAAN,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,kCAAe,CAAA;IACf,kCAAe,CAAA;IACf,kCAAe,CAAA;IACf,iCAAc,CAAA;IACd,kCAAe,CAAA;AACjB,CAAC,EANW,eAAe,KAAf,eAAe,QAM1B;AAED,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;AACnB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAED,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,uCAAuB,CAAA;IACvB,2CAA2B,CAAA;AAC7B,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAED,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,yCAAqB,CAAA;IACrB,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;AACnB,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;AAED,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,kCAAgB,CAAA;IAChB,oCAAkB,CAAA;IAClB,iCAAe,CAAA;AACjB,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB;AAED,MAAM,CAAN,IAAY,wBAGX;AAHD,WAAY,wBAAwB;IAClC,qDAAyB,CAAA;IACzB,mDAAuB,CAAA;AACzB,CAAC,EAHW,wBAAwB,KAAxB,wBAAwB,QAGnC;AAED,MAAM,CAAN,IAAY,sBAKX;AALD,WAAY,sBAAsB;IAChC,8CAAoB,CAAA;IACpB,yCAAe,CAAA;IACf,uCAAa,CAAA;IACb,qCAAW,CAAA;AACb,CAAC,EALW,sBAAsB,KAAtB,sBAAsB,QAKjC"} \ No newline at end of file +{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/vis/interfaces.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,mBAKX;AALD,WAAY,mBAAmB;IAC7B,+CAAwB,CAAA;IACxB,6CAAsB,CAAA;IACtB,wCAAiB,CAAA;IACjB,6CAAsB,CAAA;AACxB,CAAC,EALW,mBAAmB,KAAnB,mBAAmB,QAK9B;AAED,MAAM,CAAC,MAAM,WAAW,GAA0B;IAChD,mBAAmB,CAAC,OAAO;IAC3B,mBAAmB,CAAC,GAAG;IACvB,mBAAmB,CAAC,MAAM;IAC1B,mBAAmB,CAAC,MAAM;CAC3B,CAAC;AAIF,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,wCAAqB,CAAA;IACrB,4CAAyB,CAAA;AAC3B,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAED,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,iCAAe,CAAA;IACf,6BAAW,CAAA;IACX,+BAAa,CAAA;AACf,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB;AAED,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,sCAAqB,CAAA;IACrB,0CAAyB,CAAA;AAC3B,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAED,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,+BAAa,CAAA;IACb,6BAAW,CAAA;AACb,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAN,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,kCAAe,CAAA;IACf,kCAAe,CAAA;IACf,kCAAe,CAAA;IACf,iCAAc,CAAA;IACd,kCAAe,CAAA;AACjB,CAAC,EANW,eAAe,KAAf,eAAe,QAM1B;AAED,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;AACnB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAED,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,uCAAuB,CAAA;IACvB,2CAA2B,CAAA;AAC7B,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAED,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,yCAAqB,CAAA;IACrB,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;AACnB,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;AAED,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,kCAAgB,CAAA;IAChB,oCAAkB,CAAA;IAClB,iCAAe,CAAA;AACjB,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB;AAED,MAAM,CAAN,IAAY,wBAGX;AAHD,WAAY,wBAAwB;IAClC,qDAAyB,CAAA;IACzB,mDAAuB,CAAA;AACzB,CAAC,EAHW,wBAAwB,KAAxB,wBAAwB,QAGnC;AAED,MAAM,CAAN,IAAY,sBAKX;AALD,WAAY,sBAAsB;IAChC,8CAAoB,CAAA;IACpB,yCAAe,CAAA;IACf,uCAAa,CAAA;IACb,qCAAW,CAAA;AACb,CAAC,EALW,sBAAsB,KAAtB,sBAAsB,QAKjC"} \ No newline at end of file diff --git a/dist/vis/pcp/PCPVis.d.ts b/dist/vis/pcp/PCPVis.d.ts deleted file mode 100644 index 36dba41a4..000000000 --- a/dist/vis/pcp/PCPVis.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import * as React from 'react'; -import { VisColumn, IVisConfig, IPCPConfig } from '../interfaces'; -interface PCPVisProps { - config: IPCPConfig; - extensions?: { - prePlot?: React.ReactNode; - postPlot?: React.ReactNode; - preSidebar?: React.ReactNode; - postSidebar?: React.ReactNode; - }; - columns: VisColumn[]; - setConfig: (config: IVisConfig) => void; - selected?: { - [key: string]: boolean; - }; - hideSidebar?: boolean; - closeButtonCallback?: () => void; - showCloseButton?: boolean; -} -export declare function PCPVis({ config, extensions, columns, setConfig, showCloseButton, closeButtonCallback, selected, hideSidebar, }: PCPVisProps): JSX.Element; -export {}; -//# sourceMappingURL=PCPVis.d.ts.map \ No newline at end of file diff --git a/dist/vis/pcp/PCPVis.d.ts.map b/dist/vis/pcp/PCPVis.d.ts.map deleted file mode 100644 index 2ee8a0400..000000000 --- a/dist/vis/pcp/PCPVis.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PCPVis.d.ts","sourceRoot":"","sources":["../../../src/vis/pcp/PCPVis.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AASlE,UAAU,WAAW;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AASD,wBAAgB,MAAM,CAAC,EACrB,MAAM,EACN,UAAU,EACV,OAAO,EACP,SAAS,EACT,eAAuB,EACvB,mBAAgC,EAChC,QAAa,EACb,WAAmB,GACpB,EAAE,WAAW,eAkFb"} \ No newline at end of file diff --git a/dist/vis/pcp/PCPVis.js b/dist/vis/pcp/PCPVis.js deleted file mode 100644 index eb875db1a..000000000 --- a/dist/vis/pcp/PCPVis.js +++ /dev/null @@ -1,65 +0,0 @@ -import * as React from 'react'; -import { merge, uniqueId } from 'lodash'; -import { useMemo, useEffect } from 'react'; -import { PlotlyComponent, Plotly } from '../Plot'; -import { InvalidCols } from '../general'; -import { createPCPTraces } from './utils'; -import { useAsync } from '../../hooks'; -import { PCPVisSidebar } from './PCPVisSidebar'; -import { VisSidebarWrapper } from '../VisSidebarWrapper'; -import { CloseButton } from '../sidebar/CloseButton'; -const defaultExtensions = { - prePlot: null, - postPlot: null, - preSidebar: null, - postSidebar: null, -}; -export function PCPVis({ config, extensions, columns, setConfig, showCloseButton = false, closeButtonCallback = () => null, selected = {}, hideSidebar = false, }) { - const mergedExtensions = useMemo(() => { - return merge({}, defaultExtensions, extensions); - }, [extensions]); - const { value: traces, status: traceStatus, error: traceError } = useAsync(createPCPTraces, [columns, config, selected]); - const id = React.useMemo(() => uniqueId('PCPVis'), []); - const plotlyDivRef = React.useRef(null); - useEffect(() => { - const ro = new ResizeObserver(() => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - if (plotlyDivRef) { - ro.observe(plotlyDivRef.current); - } - if (hideSidebar) { - return; - } - const menu = document.getElementById(`generalVisBurgerMenu${id}`); - menu.addEventListener('hidden.bs.collapse', () => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - menu.addEventListener('shown.bs.collapse', () => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - }, [id, hideSidebar, plotlyDivRef]); - const layout = React.useMemo(() => { - return traces - ? { - showlegend: true, - autosize: true, - grid: { rows: traces.rows, columns: traces.cols, xgap: 0.3, pattern: 'independent' }, - font: { - family: 'Roboto, sans-serif', - }, - shapes: [], - violingap: 0, - } - : null; - }, [traces]); - return (React.createElement("div", { ref: plotlyDivRef, className: "d-flex flex-row w-100 h-100", style: { minHeight: '0px' } }, - React.createElement("div", { className: `position-relative d-flex justify-content-center align-items-center flex-grow-1 ${traceStatus === 'pending' ? 'tdp-busy-partial-overlay' : ''}` }, - mergedExtensions.prePlot, - traceStatus === 'success' && traces?.plots.length > 0 ? (React.createElement(PlotlyComponent, { divId: `plotlyDiv${id}`, data: [...traces.plots.map((p) => p.data), ...traces.legendPlots.map((p) => p.data)], layout: layout, config: { responsive: true, displayModeBar: false }, useResizeHandler: true, style: { width: '100%', height: '100%' } })) : traceStatus !== 'pending' ? (React.createElement(InvalidCols, { headerMessage: traces?.errorMessageHeader, bodyMessage: traceError?.message || traces?.errorMessage })) : null, - mergedExtensions.postPlot, - showCloseButton ? React.createElement(CloseButton, { closeCallback: closeButtonCallback }) : null), - !hideSidebar ? (React.createElement(VisSidebarWrapper, { id: id }, - React.createElement(PCPVisSidebar, { config: config, extensions: extensions, columns: columns, setConfig: setConfig }))) : null)); -} -//# sourceMappingURL=PCPVis.js.map \ No newline at end of file diff --git a/dist/vis/pcp/PCPVis.js.map b/dist/vis/pcp/PCPVis.js.map deleted file mode 100644 index cf5c9290b..000000000 --- a/dist/vis/pcp/PCPVis.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PCPVis.js","sourceRoot":"","sources":["../../../src/vis/pcp/PCPVis.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/pcp/PCPVisSidebar.d.ts b/dist/vis/pcp/PCPVisSidebar.d.ts deleted file mode 100644 index e2c28d62d..000000000 --- a/dist/vis/pcp/PCPVisSidebar.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import * as React from 'react'; -import { IPCPConfig, IVisConfig, VisColumn, ICommonVisSideBarProps } from '../interfaces'; -export declare function PCPVisSidebar({ config, extensions, columns, setConfig, className, style: { width, ...style }, }: { - config: IPCPConfig; - extensions?: { - prePlot?: React.ReactNode; - postPlot?: React.ReactNode; - preSidebar?: React.ReactNode; - postSidebar?: React.ReactNode; - }; - columns: VisColumn[]; - setConfig: (config: IVisConfig) => void; -} & ICommonVisSideBarProps): JSX.Element; -//# sourceMappingURL=PCPVisSidebar.d.ts.map \ No newline at end of file diff --git a/dist/vis/pcp/PCPVisSidebar.d.ts.map b/dist/vis/pcp/PCPVisSidebar.d.ts.map deleted file mode 100644 index 4f44ca7b0..000000000 --- a/dist/vis/pcp/PCPVisSidebar.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PCPVisSidebar.d.ts","sourceRoot":"","sources":["../../../src/vis/pcp/PCPVisSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAmC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAY3H,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,UAAU,EACV,OAAO,EACP,SAAS,EACT,SAAc,EACd,KAAK,EAAE,EAAE,KAAc,EAAE,GAAG,KAAK,EAAO,GACzC,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CACzC,GAAG,sBAAsB,eAoBzB"} \ No newline at end of file diff --git a/dist/vis/pcp/PCPVisSidebar.js b/dist/vis/pcp/PCPVisSidebar.js deleted file mode 100644 index 08d70470a..000000000 --- a/dist/vis/pcp/PCPVisSidebar.js +++ /dev/null @@ -1,26 +0,0 @@ -import * as React from 'react'; -import { useMemo } from 'react'; -import { merge } from 'lodash'; -import { VisTypeSelect } from '../sidebar/VisTypeSelect'; -import { WarningMessage } from '../sidebar/WarningMessage'; -import { AllColumnSelect } from '../sidebar'; -const defaultExtensions = { - prePlot: null, - postPlot: null, - preSidebar: null, - postSidebar: null, -}; -export function PCPVisSidebar({ config, extensions, columns, setConfig, className = '', style: { width = '20em', ...style } = {}, }) { - const mergedExtensions = useMemo(() => { - return merge({}, defaultExtensions, extensions); - }, [extensions]); - return (React.createElement("div", { className: `container pb-3 pt-2 ${className}`, style: { width, ...style } }, - React.createElement(WarningMessage, null), - React.createElement(VisTypeSelect, { callback: (type) => setConfig({ ...config, type }), currentSelected: config.type }), - React.createElement("hr", null), - React.createElement(AllColumnSelect, { callback: (allColumnsSelected) => setConfig({ ...config, allColumnsSelected }), columns: columns, currentSelected: config.allColumnsSelected || [] }), - React.createElement("hr", null), - mergedExtensions.preSidebar, - mergedExtensions.postSidebar)); -} -//# sourceMappingURL=PCPVisSidebar.js.map \ No newline at end of file diff --git a/dist/vis/pcp/PCPVisSidebar.js.map b/dist/vis/pcp/PCPVisSidebar.js.map deleted file mode 100644 index 919ed82b2..000000000 --- a/dist/vis/pcp/PCPVisSidebar.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PCPVisSidebar.js","sourceRoot":"","sources":["../../../src/vis/pcp/PCPVisSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,iBAAiB,GAAG;IACxB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;CAClB,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,EAC5B,MAAM,EACN,UAAU,EACV,OAAO,EACP,SAAS,EACT,SAAS,GAAG,EAAE,EACd,KAAK,EAAE,EAAE,KAAK,GAAG,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,GAWhB;IACxB,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,OAAO,KAAK,CAAC,EAAE,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,CACL,6BAAK,SAAS,EAAE,uBAAuB,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE;QAC5E,oBAAC,cAAc,OAAG;QAClB,oBAAC,aAAa,IAAC,QAAQ,EAAE,CAAC,IAAyB,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAI,MAAc,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,IAAI,GAAI;QACjI,+BAAM;QACN,oBAAC,eAAe,IACd,QAAQ,EAAE,CAAC,kBAAgC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,kBAAkB,EAAE,CAAC,EAC5F,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,MAAM,CAAC,kBAAkB,IAAI,EAAE,GAChD;QACF,+BAAM;QACL,gBAAgB,CAAC,UAAU;QAC3B,gBAAgB,CAAC,WAAW,CACzB,CACP,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/pcp/index.d.ts b/dist/vis/pcp/index.d.ts deleted file mode 100644 index 074ff4bca..000000000 --- a/dist/vis/pcp/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './PCPVis'; -export * from './utils'; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/dist/vis/pcp/index.d.ts.map b/dist/vis/pcp/index.d.ts.map deleted file mode 100644 index 43cf3e7cc..000000000 --- a/dist/vis/pcp/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vis/pcp/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"} \ No newline at end of file diff --git a/dist/vis/pcp/index.js b/dist/vis/pcp/index.js deleted file mode 100644 index cde81fd09..000000000 --- a/dist/vis/pcp/index.js +++ /dev/null @@ -1,3 +0,0 @@ -export * from './PCPVis'; -export * from './utils'; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/vis/pcp/index.js.map b/dist/vis/pcp/index.js.map deleted file mode 100644 index 546097533..000000000 --- a/dist/vis/pcp/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/vis/pcp/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"} \ No newline at end of file diff --git a/dist/vis/pcp/utils.d.ts b/dist/vis/pcp/utils.d.ts deleted file mode 100644 index 08459e256..000000000 --- a/dist/vis/pcp/utils.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { PlotlyInfo, IVisConfig, VisColumn, IPCPConfig } from '../interfaces'; -export declare function isPCP(s: IVisConfig): s is IPCPConfig; -export declare function pcpMergeDefaultConfig(columns: VisColumn[], config: IPCPConfig): IVisConfig; -export declare function createPCPTraces(columns: VisColumn[], config: IPCPConfig, selectedMap: { - [key: string]: boolean; -}): Promise; -//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/dist/vis/pcp/utils.d.ts.map b/dist/vis/pcp/utils.d.ts.map deleted file mode 100644 index 189334cce..000000000 --- a/dist/vis/pcp/utils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/vis/pcp/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAiD,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG7H,wBAAgB,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,IAAI,UAAU,CAEpD;AAOD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,UAAU,GAAG,UAAU,CAgB1F;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAuE5I"} \ No newline at end of file diff --git a/dist/vis/pcp/utils.js b/dist/vis/pcp/utils.js deleted file mode 100644 index ec1a2108b..000000000 --- a/dist/vis/pcp/utils.js +++ /dev/null @@ -1,96 +0,0 @@ -import d3v3 from 'd3v3'; -import { merge } from 'lodash'; -import { I18nextManager } from '../../i18n'; -import { EColumnTypes, ESupportedPlotlyVis } from '../interfaces'; -import { columnNameWithDescription, resolveColumnValues } from '../general/layoutUtils'; -export function isPCP(s) { - return s.type === ESupportedPlotlyVis.PCP; -} -const defaultConfig = { - type: ESupportedPlotlyVis.PCP, - allColumnsSelected: [], -}; -export function pcpMergeDefaultConfig(columns, config) { - const merged = merge({}, defaultConfig, config); - if (merged.allColumnsSelected.length === 0 && columns.length > 1) { - // FIXME It is always selecting the last two columns, no matter their type. (@see https://github.com/datavisyn/reprovisyn/issues/199) - merged.allColumnsSelected.push(columns[columns.length - 1].info); - merged.allColumnsSelected.push(columns[columns.length - 2].info); - } - else if (merged.allColumnsSelected.length === 1 && columns.length > 1) { - if (columns[columns.length - 1].info.id !== merged.allColumnsSelected[0].id) { - merged.allColumnsSelected.push(columns[columns.length - 1].info); - } - else { - merged.allColumnsSelected.push(columns[columns.length - 2].info); - } - } - return merged; -} -export async function createPCPTraces(columns, config, selectedMap) { - if (!config.allColumnsSelected) { - return { - plots: [], - legendPlots: [], - rows: 0, - cols: 0, - errorMessage: I18nextManager.getInstance().i18n.t('tdp:core.vis.pcpError'), - errorMessageHeader: I18nextManager.getInstance().i18n.t('tdp:core.vis.errorHeader'), - }; - } - const allCols = config.allColumnsSelected.map((c) => columns.find((col) => col.info.id === c.id)); - if (config.allColumnsSelected.length < 2) { - return { - plots: [], - legendPlots: [], - rows: 0, - cols: 0, - errorMessage: I18nextManager.getInstance().i18n.t('tdp:core.vis.pcpError'), - errorMessageHeader: I18nextManager.getInstance().i18n.t('tdp:core.vis.errorHeader'), - }; - } - const allColValues = await resolveColumnValues(allCols); - const plot = { - xLabel: null, - yLabel: null, - data: { - type: 'parcoords', - // leaving this code here to show how you could change the colors of selected values. - // But this is useless without opacity, and the colorscale does not support alpha values. - // line: { - // color: allColValues[0].resolvedValues.map((v) => (selectedMap[v.id] ? 0 : 1)), - // colorscale: [ - // [0, 'rgba(215, 212, 206, 1)'], - // [1, 'rgba(215, 212, 206, 0.32)'], - // ], - // }, - // @ts-ignore - dimensions: allColValues.map((c) => { - if (c.type === EColumnTypes.NUMERICAL) { - return { - range: [d3v3.min(c.resolvedValues.map((v) => v.val)), d3v3.max(c.resolvedValues.map((v) => v.val))], - label: columnNameWithDescription(c.info), - values: c.resolvedValues.map((v) => v.val), - }; - } - const uniqueList = [...new Set(c.resolvedValues.map((v) => v.val))]; - return { - range: [0, uniqueList.length - 1], - label: columnNameWithDescription(c.info), - values: c.resolvedValues.map((curr) => uniqueList.indexOf(curr.val)), - tickvals: [...uniqueList.keys()], - ticktext: uniqueList, - }; - }), - }, - }; - return { - plots: [plot], - legendPlots: [], - rows: 1, - cols: 1, - errorMessage: I18nextManager.getInstance().i18n.t('tdp:core.vis.pcpError'), - errorMessageHeader: I18nextManager.getInstance().i18n.t('tdp:core.vis.errorHeader'), - }; -} -//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/dist/vis/pcp/utils.js.map b/dist/vis/pcp/utils.js.map deleted file mode 100644 index 85b1a1ff3..000000000 --- a/dist/vis/pcp/utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/vis/pcp/utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/scatter/ScatterVis.d.ts b/dist/vis/scatter/ScatterVis.d.ts index a8c25fbb0..eea3fad54 100644 --- a/dist/vis/scatter/ScatterVis.d.ts +++ b/dist/vis/scatter/ScatterVis.d.ts @@ -1,6 +1,6 @@ import * as React from 'react'; import { EFilterOptions, IVisConfig, Scales, IScatterConfig, VisColumn } from '../interfaces'; -export declare function ScatterVis({ config, optionsConfig, extensions, columns, shapes, filterCallback, selectionCallback, selectedMap, selectedList, setConfig, hideSidebar, showCloseButton, closeButtonCallback, scales, }: { +export declare function ScatterVis({ config, optionsConfig, extensions, columns, shapes, filterCallback, selectionCallback, selectedMap, selectedList, setConfig, enableSidebar, setShowSidebar, showSidebar, showCloseButton, closeButtonCallback, scales, }: { config: IScatterConfig; optionsConfig?: { color?: { @@ -33,7 +33,9 @@ export declare function ScatterVis({ config, optionsConfig, extensions, columns, selectedList: string[]; setConfig: (config: IVisConfig) => void; scales: Scales; - hideSidebar?: boolean; + showSidebar?: boolean; + setShowSidebar?(show: boolean): void; + enableSidebar?: boolean; showCloseButton?: boolean; }): JSX.Element; //# sourceMappingURL=ScatterVis.d.ts.map \ No newline at end of file diff --git a/dist/vis/scatter/ScatterVis.d.ts.map b/dist/vis/scatter/ScatterVis.d.ts.map index 4cac321fe..9d2ce2f17 100644 --- a/dist/vis/scatter/ScatterVis.d.ts.map +++ b/dist/vis/scatter/ScatterVis.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"ScatterVis.d.ts","sourceRoot":"","sources":["../../../src/vis/scatter/ScatterVis.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAA0B,MAAM,eAAe,CAAC;AAmBtH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,EACP,MAAoD,EACpD,cAA2B,EAC3B,iBAA8B,EAC9B,WAAgB,EAChB,YAAiB,EACjB,SAAS,EACT,WAAmB,EACnB,eAAuB,EACvB,mBAAgC,EAChC,MAAM,GACP,EAAE;IACD,MAAM,EAAE,cAAc,CAAC;IACvB,aAAa,CAAC,EAAE;QACd,KAAK,CAAC,EAAE;YACN,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,KAAK,CAAC,EAAE;YACN,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,MAAM,CAAC,EAAE;YACP,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;KACH,CAAC;IACF,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC/B,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC5C,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACzC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,eAqIA"} \ No newline at end of file +{"version":3,"file":"ScatterVis.d.ts","sourceRoot":"","sources":["../../../src/vis/scatter/ScatterVis.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAA0B,MAAM,eAAe,CAAC;AAmBtH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,EACP,MAAoD,EACpD,cAA2B,EAC3B,iBAA8B,EAC9B,WAAgB,EAChB,YAAiB,EACjB,SAAS,EACT,aAAa,EACb,cAAc,EACd,WAAW,EACX,eAAuB,EACvB,mBAAgC,EAChC,MAAM,GACP,EAAE;IACD,MAAM,EAAE,cAAc,CAAC;IACvB,aAAa,CAAC,EAAE;QACd,KAAK,CAAC,EAAE;YACN,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,KAAK,CAAC,EAAE;YACN,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,MAAM,CAAC,EAAE;YACP,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;KACH,CAAC;IACF,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC/B,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC5C,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACzC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,eAsLA"} \ No newline at end of file diff --git a/dist/vis/scatter/ScatterVis.js b/dist/vis/scatter/ScatterVis.js index 109a2be66..3fdc1c179 100644 --- a/dist/vis/scatter/ScatterVis.js +++ b/dist/vis/scatter/ScatterVis.js @@ -1,26 +1,29 @@ import * as React from 'react'; -import d3v3 from 'd3v3'; import { merge, uniqueId } from 'lodash'; -import { useEffect } from 'react'; +import { useEffect, useMemo, useState } from 'react'; +import { ActionIcon, Center, Container, Group, Stack, Tooltip } from '@mantine/core'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faGear } from '@fortawesome/free-solid-svg-icons'; import { InvalidCols } from '../general/InvalidCols'; import { createScatterTraces } from './utils'; import { beautifyLayout } from '../general/layoutUtils'; import { BrushOptionButtons } from '../sidebar/BrushOptionButtons'; -import { OpacitySlider } from '../sidebar/OpacitySlider'; import { ScatterVisSidebar } from './ScatterVisSidebar'; import { PlotlyComponent, Plotly } from '../Plot'; import { useAsync } from '../../hooks'; import { VisSidebarWrapper } from '../VisSidebarWrapper'; import { CloseButton } from '../sidebar/CloseButton'; +import { I18nextManager } from '../../i18n'; const defaultExtensions = { prePlot: null, postPlot: null, preSidebar: null, postSidebar: null, }; -export function ScatterVis({ config, optionsConfig, extensions, columns, shapes = ['circle', 'square', 'triangle-up', 'star'], filterCallback = () => null, selectionCallback = () => null, selectedMap = {}, selectedList = [], setConfig, hideSidebar = false, showCloseButton = false, closeButtonCallback = () => null, scales, }) { +export function ScatterVis({ config, optionsConfig, extensions, columns, shapes = ['circle', 'square', 'triangle-up', 'star'], filterCallback = () => null, selectionCallback = () => null, selectedMap = {}, selectedList = [], setConfig, enableSidebar, setShowSidebar, showSidebar, showCloseButton = false, closeButtonCallback = () => null, scales, }) { const id = React.useMemo(() => uniqueId('ScatterVis'), []); const plotlyDivRef = React.useRef(null); + const [layout, setLayout] = useState(null); useEffect(() => { const ro = new ResizeObserver(() => { const plotDiv = document.getElementById(`plotlyDiv${id}`); @@ -31,24 +34,24 @@ export function ScatterVis({ config, optionsConfig, extensions, columns, shapes if (plotlyDivRef) { ro.observe(plotlyDivRef.current); } - if (hideSidebar) { - return; - } - const menu = document.getElementById(`generalVisBurgerMenu${id}`); - menu.addEventListener('hidden.bs.collapse', () => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - menu.addEventListener('shown.bs.collapse', () => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - }, [id, hideSidebar, plotlyDivRef]); + return () => ro.disconnect(); + }, [id, plotlyDivRef]); const mergedExtensions = React.useMemo(() => { return merge({}, defaultExtensions, extensions); }, [extensions]); - const { value: traces, status: traceStatus, error: traceError } = useAsync(createScatterTraces, [columns, selectedMap, config, scales, shapes]); - const layout = React.useMemo(() => { + const { value: traces, status: traceStatus, error: traceError, } = useAsync(createScatterTraces, [ + columns, + config.numColumnsSelected, + config.shape, + config.color, + config.alphaSliderVal, + config.numColorScaleType, + scales, + shapes, + ]); + React.useEffect(() => { if (!traces) { - return null; + return; } const innerLayout = { showlegend: true, @@ -64,17 +67,55 @@ export function ScatterVis({ config, optionsConfig, extensions, columns, shapes font: { family: 'Roboto, sans-serif', }, - autosize: true, + margin: { + t: 25, + r: 25, + l: 25, + b: 25, + }, grid: { rows: traces.rows, columns: traces.cols, xgap: 0.3, pattern: 'independent' }, shapes: [], dragmode: config.dragMode, }; - return beautifyLayout(traces, innerLayout); + setLayout({ ...layout, ...beautifyLayout(traces, innerLayout, layout) }); + // WARNING: Do not update when layout changes, that would be an infinite loop. + // eslint-disable-next-line react-hooks/exhaustive-deps }, [traces, config.dragMode]); - return (React.createElement("div", { ref: plotlyDivRef, className: "d-flex flex-row w-100 h-100", style: { minHeight: '0px' } }, - React.createElement("div", { className: `position-relative d-flex justify-content-center align-items-center flex-grow-1 ${traceStatus === 'pending' ? 'tdp-busy-partial-overlay' : ''}` }, - mergedExtensions.prePlot, - traceStatus === 'success' && traces?.plots.length > 0 ? (React.createElement(PlotlyComponent, { divId: `plotlyDiv${id}`, data: [...traces.plots.map((p) => p.data), ...traces.legendPlots.map((p) => p.data)], layout: layout, config: { responsive: true, displayModeBar: false }, useResizeHandler: true, style: { width: '100%', height: '100%' }, onClick: (event) => { + const plotsWithSelectedPoints = useMemo(() => { + if (traces) { + const allPlots = traces.plots; + allPlots + .filter((trace) => trace.data.type === 'scattergl') + .forEach((p) => { + const temp = []; + p.data.ids.forEach((currId, index) => { + if (selectedMap[currId] || (selectedList.length === 0 && config.color)) { + temp.push(index); + } + }); + p.data.selectedpoints = temp; + if (selectedList.length === 0 && config.color) { + // @ts-ignore + p.data.selected.marker.opacity = config.alphaSliderVal; + } + else { + // @ts-ignore + p.data.selected.marker.opacity = 1; + } + }); + return allPlots; + } + return []; + }, [selectedMap, traces, selectedList, config.color, config.alphaSliderVal]); + const plotlyData = useMemo(() => { + if (traces) { + return [...plotsWithSelectedPoints.map((p) => p.data), ...traces.legendPlots.map((p) => p.data)]; + } + return []; + }, [plotsWithSelectedPoints, traces]); + const plotly = useMemo(() => { + if (traces?.plots && plotsWithSelectedPoints) { + return (React.createElement(PlotlyComponent, { key: id, divId: `plotlyDiv${id}`, data: plotlyData, layout: layout, config: { responsive: true, displayModeBar: false, scrollZoom: true }, useResizeHandler: true, style: { width: '100%', height: '100%' }, onClick: (event) => { const clickedId = event.points[0].id; if (selectedMap[clickedId]) { selectionCallback(selectedList.filter((s) => s !== clickedId)); @@ -82,28 +123,25 @@ export function ScatterVis({ config, optionsConfig, extensions, columns, shapes else { selectionCallback([...selectedList, clickedId]); } - }, onSelected: (sel) => { + }, className: "tdpCoreVis", onSelected: (sel) => { selectionCallback(sel ? sel.points.map((d) => d.id) : []); - }, - // plotly redraws everything on updates, so you need to reappend title and - // change opacity on update, instead of just in a use effect - onInitialized: () => { - d3v3.selectAll('g .traces').style('opacity', 1); - d3v3.selectAll('.scatterpts').style('opacity', selectedList.length > 0 ? 1 : config.alphaSliderVal); - }, onUpdate: () => { - d3v3.selectAll('g .traces').style('opacity', 1); - d3v3.selectAll('.scatterpts').style('opacity', selectedList.length > 0 ? 1 : config.alphaSliderVal); - for (const p of traces.plots) { - d3v3.select(`g .${p.data.xaxis}title`).style('pointer-events', 'all').append('title').text(p.xLabel); - d3v3.select(`g .${p.data.yaxis}title`).style('pointer-events', 'all').append('title').text(p.yLabel); - } - } })) : traceStatus !== 'pending' ? (React.createElement(InvalidCols, { headerMessage: traces?.errorMessageHeader, bodyMessage: traceError?.message || traces?.errorMessage })) : null, - React.createElement("div", { className: "position-absolute d-flex justify-content-center align-items-center top-0 start-50 translate-middle-x" }, - React.createElement(BrushOptionButtons, { callback: (dragMode) => setConfig({ ...config, dragMode }), dragMode: config.dragMode }), - React.createElement(OpacitySlider, { callback: (e) => setConfig({ ...config, alphaSliderVal: e }), currentValue: config.alphaSliderVal })), - mergedExtensions.postPlot, - showCloseButton ? React.createElement(CloseButton, { closeCallback: closeButtonCallback }) : null), - !hideSidebar ? (React.createElement(VisSidebarWrapper, { id: id }, + } })); + } + return null; + }, [id, plotsWithSelectedPoints, layout, selectedMap, selectionCallback, selectedList, traces?.plots, plotlyData]); + return (React.createElement(Container, { fluid: true, sx: { flexGrow: 1, height: '100%', width: '100%', overflow: 'hidden', position: 'relative' }, ref: plotlyDivRef }, + enableSidebar ? (React.createElement(Tooltip, { withinPortal: true, label: I18nextManager.getInstance().i18n.t('tdp:core.vis.openSettings') }, + React.createElement(ActionIcon, { sx: { zIndex: 10, position: 'absolute', top: '10px', right: '10px' }, onClick: () => setShowSidebar(true) }, + React.createElement(FontAwesomeIcon, { icon: faGear })))) : null, + showCloseButton ? React.createElement(CloseButton, { closeCallback: closeButtonCallback }) : null, + React.createElement(Stack, { spacing: 0, sx: { height: '100%' } }, + React.createElement(Center, null, + React.createElement(Group, { mt: "lg" }, + React.createElement(BrushOptionButtons, { callback: (dragMode) => setConfig({ ...config, dragMode }), dragMode: config.dragMode }))), + mergedExtensions.prePlot, + traceStatus === 'success' && layout && plotsWithSelectedPoints.length > 0 ? (plotly) : traceStatus !== 'pending' ? (React.createElement(InvalidCols, { headerMessage: traces?.errorMessageHeader, bodyMessage: traceError?.message || traces?.errorMessage })) : null, + mergedExtensions.postPlot), + showSidebar ? (React.createElement(VisSidebarWrapper, { id: id, target: plotlyDivRef.current, open: showSidebar, onClose: () => setShowSidebar(false) }, React.createElement(ScatterVisSidebar, { config: config, optionsConfig: optionsConfig, extensions: extensions, columns: columns, filterCallback: filterCallback, setConfig: setConfig }))) : null)); } //# sourceMappingURL=ScatterVis.js.map \ No newline at end of file diff --git a/dist/vis/scatter/ScatterVis.js.map b/dist/vis/scatter/ScatterVis.js.map index 16467203c..58744b028 100644 --- a/dist/vis/scatter/ScatterVis.js.map +++ b/dist/vis/scatter/ScatterVis.js.map @@ -1 +1 @@ -{"version":3,"file":"ScatterVis.js","sourceRoot":"","sources":["../../../src/vis/scatter/ScatterVis.tsx"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ScatterVis.js","sourceRoot":"","sources":["../../../src/vis/scatter/ScatterVis.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/scatter/ScatterVisSidebar.d.ts b/dist/vis/scatter/ScatterVisSidebar.d.ts index 3ac11b18e..3cf316b56 100644 --- a/dist/vis/scatter/ScatterVisSidebar.d.ts +++ b/dist/vis/scatter/ScatterVisSidebar.d.ts @@ -1,6 +1,6 @@ import * as React from 'react'; import { EFilterOptions, IScatterConfig, IVisConfig, VisColumn, ICommonVisSideBarProps } from '../interfaces'; -export declare function ScatterVisSidebar({ config, optionsConfig, extensions, columns, filterCallback, setConfig, className, style: { width, ...style }, }: { +export declare function ScatterVisSidebar({ config, optionsConfig, extensions, columns, filterCallback, setConfig, }: { config: IScatterConfig; optionsConfig?: { color?: { diff --git a/dist/vis/scatter/ScatterVisSidebar.d.ts.map b/dist/vis/scatter/ScatterVisSidebar.d.ts.map index 8f22fcb62..3d725fd5a 100644 --- a/dist/vis/scatter/ScatterVisSidebar.d.ts.map +++ b/dist/vis/scatter/ScatterVisSidebar.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"ScatterVisSidebar.d.ts","sourceRoot":"","sources":["../../../src/vis/scatter/ScatterVisSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAEL,cAAc,EAGd,cAAc,EACd,UAAU,EACV,SAAS,EACT,sBAAsB,EACvB,MAAM,eAAe,CAAC;AA8BvB,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,EACP,cAA2B,EAC3B,SAAS,EACT,SAAc,EACd,KAAK,EAAE,EAAE,KAAc,EAAE,GAAG,KAAK,EAAO,GACzC,EAAE;IACD,MAAM,EAAE,cAAc,CAAC;IACvB,aAAa,CAAC,EAAE;QACd,KAAK,CAAC,EAAE;YACN,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,KAAK,CAAC,EAAE;YACN,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,MAAM,CAAC,EAAE;YACP,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;KACH,CAAC;IACF,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CACzC,GAAG,sBAAsB,eA4CzB"} \ No newline at end of file +{"version":3,"file":"ScatterVisSidebar.d.ts","sourceRoot":"","sources":["../../../src/vis/scatter/ScatterVisSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAEL,cAAc,EAGd,cAAc,EACd,UAAU,EACV,SAAS,EACT,sBAAsB,EAEvB,MAAM,eAAe,CAAC;AA8BvB,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,EACP,cAA2B,EAC3B,SAAS,GACV,EAAE;IACD,MAAM,EAAE,cAAc,CAAC;IACvB,aAAa,CAAC,EAAE;QACd,KAAK,CAAC,EAAE;YACN,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,KAAK,CAAC,EAAE;YACN,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;QACF,MAAM,CAAC,EAAE;YACP,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;KACH,CAAC;IACF,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CACzC,GAAG,sBAAsB,eA8DzB"} \ No newline at end of file diff --git a/dist/vis/scatter/ScatterVisSidebar.js b/dist/vis/scatter/ScatterVisSidebar.js index 272a2bef5..81bfb79e1 100644 --- a/dist/vis/scatter/ScatterVisSidebar.js +++ b/dist/vis/scatter/ScatterVisSidebar.js @@ -1,12 +1,14 @@ import * as React from 'react'; import { useMemo } from 'react'; import { merge } from 'lodash'; +import { Container, Divider, Stack } from '@mantine/core'; +import { EColumnTypes, } from '../interfaces'; import { VisTypeSelect } from '../sidebar/VisTypeSelect'; import { NumericalColumnSelect } from '../sidebar/NumericalColumnSelect'; import { ColorSelect } from '../sidebar/ColorSelect'; -import { ShapeSelect } from '../sidebar/ShapeSelect'; import { FilterButtons } from '../sidebar/FilterButtons'; -import { WarningMessage } from '../sidebar/WarningMessage'; +import { SingleColumnSelect } from '../sidebar/SingleColumnSelect'; +import { OpacitySlider } from '../sidebar/OpacitySlider'; const defaultConfig = { color: { enable: true, @@ -27,28 +29,35 @@ const defaultExtensions = { preSidebar: null, postSidebar: null, }; -export function ScatterVisSidebar({ config, optionsConfig, extensions, columns, filterCallback = () => null, setConfig, className = '', style: { width = '20em', ...style } = {}, }) { +export function ScatterVisSidebar({ config, optionsConfig, extensions, columns, filterCallback = () => null, setConfig, }) { const mergedOptionsConfig = useMemo(() => { return merge({}, defaultConfig, optionsConfig); }, [optionsConfig]); const mergedExtensions = useMemo(() => { return merge({}, defaultExtensions, extensions); }, [extensions]); - return (React.createElement("div", { className: `container pb-3 pt-2 ${className}`, style: { width, ...style } }, - React.createElement(WarningMessage, null), - React.createElement(VisTypeSelect, { callback: (type) => setConfig({ ...config, type }), currentSelected: config.type }), - React.createElement("hr", null), - React.createElement(NumericalColumnSelect, { callback: (numColumnsSelected) => setConfig({ ...config, numColumnsSelected }), columns: columns, currentSelected: config.numColumnsSelected || [] }), - React.createElement("hr", null), - mergedExtensions.preSidebar, - mergedOptionsConfig.color.enable - ? mergedOptionsConfig.color.customComponent || (React.createElement(ColorSelect, { callback: (color) => setConfig({ ...config, color }), numTypeCallback: (numColorScaleType) => setConfig({ ...config, numColorScaleType }), currentNumType: config.numColorScaleType, columns: columns, currentSelected: config.color })) - : null, - mergedOptionsConfig.shape.enable - ? mergedOptionsConfig.shape.customComponent || (React.createElement(ShapeSelect, { callback: (shape) => setConfig({ ...config, shape }), columns: columns, currentSelected: config.shape })) - : null, - React.createElement("hr", null), - mergedOptionsConfig.filter.enable ? mergedOptionsConfig.filter.customComponent || React.createElement(FilterButtons, { callback: filterCallback }) : null, - mergedExtensions.postSidebar)); + return (React.createElement(Container, { fluid: true, sx: { width: '100%' }, p: 10 }, + React.createElement(Stack, { spacing: 0 }, + React.createElement(VisTypeSelect, { callback: (type) => setConfig({ ...config, type }), currentSelected: config.type }), + React.createElement(Divider, { my: "sm" }), + React.createElement(NumericalColumnSelect, { callback: (numColumnsSelected) => setConfig({ ...config, numColumnsSelected }), columns: columns, currentSelected: config.numColumnsSelected || [] }), + React.createElement(Divider, { my: "sm" }), + mergedExtensions.preSidebar, + React.createElement(Stack, null, + mergedOptionsConfig.color.enable + ? mergedOptionsConfig.color.customComponent || (React.createElement(ColorSelect, { callback: (color) => setConfig({ ...config, color }), numTypeCallback: (numColorScaleType) => setConfig({ ...config, numColorScaleType }), currentNumType: config.numColorScaleType, columns: columns, currentSelected: config.color })) + : null, + mergedOptionsConfig.shape.enable + ? mergedOptionsConfig.shape.customComponent || (React.createElement(SingleColumnSelect, { label: "Shape", type: [EColumnTypes.CATEGORICAL], callback: (shape) => setConfig({ ...config, shape }), columns: columns, currentSelected: config.shape })) + : null), + React.createElement(Divider, { my: "sm" }), + React.createElement(Stack, { spacing: 30 }, + React.createElement(OpacitySlider, { callback: (e) => { + if (config.alphaSliderVal !== e) { + setConfig({ ...config, alphaSliderVal: e }); + } + }, currentValue: config.alphaSliderVal }), + mergedOptionsConfig.filter.enable ? mergedOptionsConfig.filter.customComponent || React.createElement(FilterButtons, { callback: filterCallback }) : null), + mergedExtensions.postSidebar))); } //# sourceMappingURL=ScatterVisSidebar.js.map \ No newline at end of file diff --git a/dist/vis/scatter/ScatterVisSidebar.js.map b/dist/vis/scatter/ScatterVisSidebar.js.map index 38ea42d9e..7460844ce 100644 --- a/dist/vis/scatter/ScatterVisSidebar.js.map +++ b/dist/vis/scatter/ScatterVisSidebar.js.map @@ -1 +1 @@ -{"version":3,"file":"ScatterVisSidebar.js","sourceRoot":"","sources":["../../../src/vis/scatter/ScatterVisSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAW/B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,MAAM,aAAa,GAAG;IACpB,KAAK,EAAE;QACL,MAAM,EAAE,IAAI;QACZ,eAAe,EAAE,IAAI;KACtB;IACD,KAAK,EAAE;QACL,MAAM,EAAE,IAAI;QACZ,eAAe,EAAE,IAAI;KACtB;IACD,MAAM,EAAE;QACN,MAAM,EAAE,IAAI;QACZ,eAAe,EAAE,IAAI;KACtB;CACF,CAAC;AAEF,MAAM,iBAAiB,GAAG;IACxB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;CAClB,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,EAChC,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,EACP,cAAc,GAAG,GAAG,EAAE,CAAC,IAAI,EAC3B,SAAS,EACT,SAAS,GAAG,EAAE,EACd,KAAK,EAAE,EAAE,KAAK,GAAG,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,GA0BhB;IACxB,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,EAAE;QACvC,OAAO,KAAK,CAAC,EAAE,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;IACjD,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,OAAO,KAAK,CAAC,EAAE,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,CACL,6BAAK,SAAS,EAAE,uBAAuB,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE;QAC5E,oBAAC,cAAc,OAAG;QAClB,oBAAC,aAAa,IAAC,QAAQ,EAAE,CAAC,IAAyB,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAI,MAAc,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,IAAI,GAAI;QACjI,+BAAM;QACN,oBAAC,qBAAqB,IACpB,QAAQ,EAAE,CAAC,kBAAgC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,kBAAkB,EAAE,CAAC,EAC5F,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,MAAM,CAAC,kBAAkB,IAAI,EAAE,GAChD;QACF,+BAAM;QACL,gBAAgB,CAAC,UAAU;QAE3B,mBAAmB,CAAC,KAAK,CAAC,MAAM;YAC/B,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,eAAe,IAAI,CAC3C,oBAAC,WAAW,IACV,QAAQ,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,EAChE,eAAe,EAAE,CAAC,iBAA2C,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,iBAAiB,EAAE,CAAC,EAC7G,cAAc,EAAE,MAAM,CAAC,iBAAiB,EACxC,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,MAAM,CAAC,KAAK,GAC7B,CACH;YACH,CAAC,CAAC,IAAI;QACP,mBAAmB,CAAC,KAAK,CAAC,MAAM;YAC/B,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,eAAe,IAAI,CAC3C,oBAAC,WAAW,IAAC,QAAQ,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,KAAK,GAAI,CACnI;YACH,CAAC,CAAC,IAAI;QACR,+BAAM;QACL,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,eAAe,IAAI,oBAAC,aAAa,IAAC,QAAQ,EAAE,cAAc,GAAI,CAAC,CAAC,CAAC,IAAI;QAEpI,gBAAgB,CAAC,WAAW,CACzB,CACP,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"ScatterVisSidebar.js","sourceRoot":"","sources":["../../../src/vis/scatter/ScatterVisSidebar.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/scatter/utils.d.ts b/dist/vis/scatter/utils.d.ts index 7c5e10c5a..362d89257 100644 --- a/dist/vis/scatter/utils.d.ts +++ b/dist/vis/scatter/utils.d.ts @@ -1,10 +1,8 @@ -import { PlotlyInfo, IVisConfig, Scales, VisColumn, IScatterConfig, VisCategoricalValue, VisNumericalValue } from '../interfaces'; +import { PlotlyInfo, IVisConfig, Scales, VisColumn, IScatterConfig, ENumericalColorScaleType, VisCategoricalValue, VisNumericalValue, ColumnInfo } from '../interfaces'; export declare function isScatter(s: IVisConfig): s is IScatterConfig; export declare function scatterMergeDefaultConfig(columns: VisColumn[], config: IScatterConfig): IVisConfig; export declare function moveSelectedToFront(col: (VisCategoricalValue | VisNumericalValue)[], selectedMap: { [key: string]: boolean; }): (VisCategoricalValue | VisNumericalValue)[]; -export declare function createScatterTraces(columns: VisColumn[], selected: { - [key: string]: boolean; -}, config: IScatterConfig, scales: Scales, shapes: string[] | null): Promise; +export declare function createScatterTraces(columns: VisColumn[], numColumnsSelected: ColumnInfo[], shape: ColumnInfo, color: ColumnInfo, alphaSliderVal: number, colorScaleType: ENumericalColorScaleType, scales: Scales, shapes: string[] | null): Promise; //# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/dist/vis/scatter/utils.d.ts.map b/dist/vis/scatter/utils.d.ts.map index 2bc6b3fb9..7d0242be9 100644 --- a/dist/vis/scatter/utils.d.ts.map +++ b/dist/vis/scatter/utils.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/vis/scatter/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EAIV,UAAU,EACV,MAAM,EAEN,SAAS,EACT,cAAc,EAEd,mBAAmB,EACnB,iBAAiB,EAElB,MAAM,eAAe,CAAC;AAOvB,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,IAAI,cAAc,CAE5D;AAYD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,cAAc,GAAG,UAAU,CAiBlG;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,CAAC,mBAAmB,GAAG,iBAAiB,CAAC,EAAE,EAChD,WAAW,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GACtC,CAAC,mBAAmB,GAAG,iBAAiB,CAAC,EAAE,CAO7C;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,SAAS,EAAE,EACpB,QAAQ,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EACpC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,GACtB,OAAO,CAAC,UAAU,CAAC,CA2RrB"} \ No newline at end of file +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/vis/scatter/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EAIV,UAAU,EACV,MAAM,EAEN,SAAS,EACT,cAAc,EACd,wBAAwB,EACxB,mBAAmB,EACnB,iBAAiB,EAEjB,UAAU,EACX,MAAM,eAAe,CAAC;AAOvB,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,IAAI,cAAc,CAE5D;AAYD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,cAAc,GAAG,UAAU,CAiBlG;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,CAAC,mBAAmB,GAAG,iBAAiB,CAAC,EAAE,EAChD,WAAW,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GACtC,CAAC,mBAAmB,GAAG,iBAAiB,CAAC,EAAE,CAO7C;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,SAAS,EAAE,EACpB,kBAAkB,EAAE,UAAU,EAAE,EAChC,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,UAAU,EACjB,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,wBAAwB,EACxC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,GACtB,OAAO,CAAC,UAAU,CAAC,CA2SrB"} \ No newline at end of file diff --git a/dist/vis/scatter/utils.js b/dist/vis/scatter/utils.js index f6004dcb6..542bfcf97 100644 --- a/dist/vis/scatter/utils.js +++ b/dist/vis/scatter/utils.js @@ -41,7 +41,7 @@ export function moveSelectedToFront(col, selectedMap) { const sortedCol = [...remainingVals, ...selectedVals]; return sortedCol; } -export async function createScatterTraces(columns, selected, config, scales, shapes) { +export async function createScatterTraces(columns, numColumnsSelected, shape, color, alphaSliderVal, colorScaleType, scales, shapes) { let plotCounter = 1; const emptyVal = { plots: [], @@ -52,22 +52,15 @@ export async function createScatterTraces(columns, selected, config, scales, sha errorMessageHeader: I18nextManager.getInstance().i18n.t('tdp:core.vis.errorHeader'), formList: ['color', 'shape', 'bubble', 'opacity'], }; - if (!config.numColumnsSelected) { + if (!numColumnsSelected) { return emptyVal; } - const hasSelected = Object.values(selected).includes(true); - const numCols = config.numColumnsSelected.map((c) => columns.find((col) => col.info.id === c.id)); + const numCols = numColumnsSelected.map((c) => columns.find((col) => col.info.id === c.id)); const plots = []; const validCols = await resolveColumnValues(numCols); - const shapeCol = await resolveSingleColumn(getCol(columns, config.shape)); - const colorCol = await resolveSingleColumn(getCol(columns, config.color)); - validCols.forEach((c) => { - c.resolvedValues = moveSelectedToFront(c.resolvedValues, selected); - }); - if (colorCol) { - colorCol.resolvedValues = moveSelectedToFront(colorCol.resolvedValues, selected); - } - const shapeScale = config.shape + const shapeCol = await resolveSingleColumn(getCol(columns, shape)); + const colorCol = await resolveSingleColumn(getCol(columns, color)); + const shapeScale = shape ? d3v3.scale .ordinal() .domain([...new Set(shapeCol.resolvedValues.map((v) => v.val))]) @@ -75,15 +68,15 @@ export async function createScatterTraces(columns, selected, config, scales, sha : null; let min = 0; let max = 0; - if (config.color) { + if (color) { min = d3v3.min(colorCol.resolvedValues.map((v) => +v.val).filter((v) => v !== null)); max = d3v3.max(colorCol.resolvedValues.map((v) => +v.val).filter((v) => v !== null)); } - const numericalColorScale = config.color + const numericalColorScale = color ? d3v3.scale .linear() .domain([max, (max + min) / 2, min]) - .range(config.numColorScaleType === ENumericalColorScaleType.SEQUENTIAL + .range(colorScaleType === ENumericalColorScaleType.SEQUENTIAL ? [getCssValue('visyn-s9-blue'), getCssValue('visyn-s5-blue'), getCssValue('visyn-s1-blue')] : [getCssValue('visyn-c1'), '#d3d3d3', getCssValue('visyn-c2')]) : null; @@ -111,17 +104,32 @@ export async function createScatterTraces(columns, selected, config, scales, sha hoverinfo: 'text', text: validCols[0].resolvedValues.map((v) => v.id.toString()), marker: { - line: { - width: 0, - }, - symbol: shapeCol ? shapeCol.resolvedValues.map((v) => shapeScale(v.val)) : 'circle', color: colorCol - ? hasSelected - ? colorCol.resolvedValues.map((v) => selected[v.id] ? (colorCol.type === EColumnTypes.NUMERICAL ? numericalColorScale(v.val) : scales.color(v.val)) : DEFAULT_COLOR) - : colorCol.resolvedValues.map((v) => (colorCol.type === EColumnTypes.NUMERICAL ? numericalColorScale(v.val) : scales.color(v.val))) - : validCols[0].resolvedValues.map((v) => (selected[v.id] ? SELECT_COLOR : DEFAULT_COLOR)), - opacity: validCols[0].resolvedValues.map((v) => (selected[v.id] ? 1 : hasSelected && colorCol ? 0.2 : config.alphaSliderVal)), - size: 8, + ? colorCol.resolvedValues.map((v) => (colorCol.type === EColumnTypes.NUMERICAL ? numericalColorScale(v.val) : scales.color(v.val))) + : SELECT_COLOR, + }, + // plotly is stupid and doesnt know its own types + // @ts-ignore + selected: { + marker: { + line: { + width: 0, + }, + symbol: shapeCol ? shapeCol.resolvedValues.map((v) => shapeScale(v.val)) : 'circle', + opacity: 1, + size: 8, + }, + }, + unselected: { + marker: { + line: { + width: 0, + }, + symbol: shapeCol ? shapeCol.resolvedValues.map((v) => shapeScale(v.val)) : 'circle', + color: DEFAULT_COLOR, + opacity: alphaSliderVal, + size: 8, + }, }, }, xLabel: columnNameWithDescription(validCols[0].info), @@ -146,7 +154,7 @@ export async function createScatterTraces(columns, selected, config, scales, sha marker: { color: DEFAULT_COLOR, }, - opacity: config.alphaSliderVal, + opacity: alphaSliderVal, }, xLabel: columnNameWithDescription(xCurr.info), yLabel: columnNameWithDescription(yCurr.info), @@ -171,21 +179,33 @@ export async function createScatterTraces(columns, selected, config, scales, sha showlegend: false, text: validCols[0].resolvedValues.map((v) => v.id.toString()), marker: { - line: { - width: 0, - }, - symbol: shapeCol ? shapeCol.resolvedValues.map((v) => shapeScale(v.val)) : 'circle', color: colorCol - ? hasSelected - ? colorCol.resolvedValues.map((v) => selected[v.id] - ? colorCol.type === EColumnTypes.NUMERICAL - ? numericalColorScale(v.val) - : scales.color(v.val) - : DEFAULT_COLOR) - : colorCol.resolvedValues.map((v) => colorCol.type === EColumnTypes.NUMERICAL ? numericalColorScale(v.val) : scales.color(v.val)) - : xCurr.resolvedValues.map((v) => (selected[v.id] ? SELECT_COLOR : DEFAULT_COLOR)), - opacity: xCurr.resolvedValues.map((v) => (selected[v.id] ? 1 : hasSelected && colorCol ? 0.2 : config.alphaSliderVal)), - size: 8, + ? colorCol.resolvedValues.map((v) => (colorCol.type === EColumnTypes.NUMERICAL ? numericalColorScale(v.val) : scales.color(v.val))) + : SELECT_COLOR, + }, + // plotly is stupid and doesnt know its own types + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + selected: { + marker: { + line: { + width: 0, + }, + symbol: shapeCol ? shapeCol.resolvedValues.map((v) => shapeScale(v.val)) : 'circle', + opacity: 1, + size: 8, + }, + }, + unselected: { + marker: { + line: { + width: 0, + }, + symbol: shapeCol ? shapeCol.resolvedValues.map((v) => shapeScale(v.val)) : 'circle', + color: DEFAULT_COLOR, + opacity: alphaSliderVal, + size: 8, + }, }, }, xLabel: columnNameWithDescription(xCurr.info), @@ -209,6 +229,7 @@ export async function createScatterTraces(columns, selected, config, scales, sha mode: 'markers', visible: 'legendonly', legendgroup: 'color', + hoverinfo: 'skip', // @ts-ignore legendgrouptitle: { text: columnNameWithDescription(colorCol.info), @@ -220,7 +241,7 @@ export async function createScatterTraces(columns, selected, config, scales, sha symbol: 'circle', size: 8, color: colorCol ? colorCol.resolvedValues.map((v) => scales.color(v.val)) : DEFAULT_COLOR, - opacity: config.alphaSliderVal, + opacity: 1, }, transforms: [ { @@ -252,6 +273,7 @@ export async function createScatterTraces(columns, selected, config, scales, sha visible: 'legendonly', showlegend: true, legendgroup: 'shape', + hoverinfo: 'skip', // @ts-ignore legendgrouptitle: { text: columnNameWithDescription(shapeCol.info), @@ -260,7 +282,7 @@ export async function createScatterTraces(columns, selected, config, scales, sha line: { width: 0, }, - opacity: config.alphaSliderVal, + opacity: alphaSliderVal, size: 8, symbol: shapeCol ? shapeCol.resolvedValues.map((v) => shapeScale(v.val)) : 'circle', color: DEFAULT_COLOR, diff --git a/dist/vis/scatter/utils.js.map b/dist/vis/scatter/utils.js.map index 70d6b459a..7c52b50ae 100644 --- a/dist/vis/scatter/utils.js.map +++ b/dist/vis/scatter/utils.js.map @@ -1 +1 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/vis/scatter/utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/vis/scatter/utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/sidebar/AggregateTypeSelect.d.ts.map b/dist/vis/sidebar/AggregateTypeSelect.d.ts.map index abbfd7035..e14495532 100644 --- a/dist/vis/sidebar/AggregateTypeSelect.d.ts.map +++ b/dist/vis/sidebar/AggregateTypeSelect.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"AggregateTypeSelect.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/AggregateTypeSelect.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAgB,SAAS,EAAE,MAAM,eAAe,CAAC;AAGrF,UAAU,wBAAwB;IAChC,2BAA2B,EAAE,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1D,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;IACnC,6BAA6B,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACvD,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,eAAe,EAAE,eAAe,CAAC;CAClC;AAED,wBAAgB,mBAAmB,CAAC,EAClC,2BAA2B,EAC3B,6BAA6B,EAC7B,OAAO,EACP,eAAe,EACf,eAAe,GAChB,EAAE,wBAAwB,eAuC1B"} \ No newline at end of file +{"version":3,"file":"AggregateTypeSelect.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/AggregateTypeSelect.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAgB,SAAS,EAAE,MAAM,eAAe,CAAC;AAGrF,UAAU,wBAAwB;IAChC,2BAA2B,EAAE,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1D,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;IACnC,6BAA6B,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACvD,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,eAAe,EAAE,eAAe,CAAC;CAClC;AAED,wBAAgB,mBAAmB,CAAC,EAClC,2BAA2B,EAC3B,6BAA6B,EAC7B,OAAO,EACP,eAAe,EACf,eAAe,GAChB,EAAE,wBAAwB,eAmC1B"} \ No newline at end of file diff --git a/dist/vis/sidebar/AggregateTypeSelect.js b/dist/vis/sidebar/AggregateTypeSelect.js index 415d0f866..9185957aa 100644 --- a/dist/vis/sidebar/AggregateTypeSelect.js +++ b/dist/vis/sidebar/AggregateTypeSelect.js @@ -1,6 +1,6 @@ +import { Select } from '@mantine/core'; import * as React from 'react'; import { useMemo } from 'react'; -import Select from 'react-select'; import { EAggregateTypes, EColumnTypes } from '../interfaces'; import { SingleColumnSelect } from './SingleColumnSelect'; export function AggregateTypeSelect({ aggregateTypeSelectCallback, aggregateColumnSelectCallback, columns, currentSelected, aggregateColumn, }) { @@ -17,8 +17,7 @@ export function AggregateTypeSelect({ aggregateTypeSelectCallback, aggregateColu ]; }, [hasNumCols]); return (React.createElement(React.Fragment, null, - React.createElement("label", { className: "pt-2 pb-1" }, "Aggregate Type"), - React.createElement(Select, { closeMenuOnSelect: true, getOptionLabel: (option) => option.label, getOptionValue: (option) => option.value, onChange: (option) => aggregateTypeSelectCallback(option.value), name: "numColumns", options: selectOptions || [], isOptionDisabled: (option) => (option.value === EAggregateTypes.COUNT ? false : !hasNumCols), value: { label: currentSelected || '', value: currentSelected || '', disabled: false } }), + React.createElement(Select, { label: "Aggregate type", onChange: (option) => aggregateTypeSelectCallback(option), name: "numColumns", data: selectOptions || [], value: currentSelected || '' }), currentSelected !== EAggregateTypes.COUNT ? (React.createElement(SingleColumnSelect, { type: [EColumnTypes.NUMERICAL], label: "Aggregate Column", callback: (c) => aggregateColumnSelectCallback(c), columns: columns, currentSelected: aggregateColumn })) : null)); } //# sourceMappingURL=AggregateTypeSelect.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/AggregateTypeSelect.js.map b/dist/vis/sidebar/AggregateTypeSelect.js.map index 98eb76c71..8a6dfba05 100644 --- a/dist/vis/sidebar/AggregateTypeSelect.js.map +++ b/dist/vis/sidebar/AggregateTypeSelect.js.map @@ -1 +1 @@ -{"version":3,"file":"AggregateTypeSelect.js","sourceRoot":"","sources":["../../../src/vis/sidebar/AggregateTypeSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EAAc,eAAe,EAAE,YAAY,EAAa,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAU1D,MAAM,UAAU,mBAAmB,CAAC,EAClC,2BAA2B,EAC3B,6BAA6B,EAC7B,OAAO,EACP,eAAe,EACf,eAAe,GACU;IACzB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9B,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACvC,OAAO;YACL,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE;YAC/E,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE;YACjF,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE;YACjF,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE;YACjF,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE;SAClF,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,CACL;QACE,+BAAO,SAAS,EAAC,WAAW,qBAAuB;QACnD,oBAAC,MAAM,IACL,iBAAiB,QACjB,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EACxC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EACxC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAwB,CAAC,EAClF,IAAI,EAAC,YAAY,EACjB,OAAO,EAAE,aAAa,IAAI,EAAE,EAC5B,gBAAgB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAC5F,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,IAAI,EAAE,EAAE,KAAK,EAAE,eAAe,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,GACtF;QACD,eAAe,KAAK,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAC3C,oBAAC,kBAAkB,IACjB,IAAI,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,EAC9B,KAAK,EAAC,kBAAkB,EACxB,QAAQ,EAAE,CAAC,CAAa,EAAE,EAAE,CAAC,6BAA6B,CAAC,CAAC,CAAC,EAC7D,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,eAAe,GAChC,CACH,CAAC,CAAC,CAAC,IAAI,CACP,CACJ,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"AggregateTypeSelect.js","sourceRoot":"","sources":["../../../src/vis/sidebar/AggregateTypeSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAc,eAAe,EAAE,YAAY,EAAa,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAU1D,MAAM,UAAU,mBAAmB,CAAC,EAClC,2BAA2B,EAC3B,6BAA6B,EAC7B,OAAO,EACP,eAAe,EACf,eAAe,GACU;IACzB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9B,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACvC,OAAO;YACL,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE;YAC/E,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE;YACjF,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE;YACjF,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE;YACjF,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE;SAClF,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,CACL;QACE,oBAAC,MAAM,IACL,KAAK,EAAC,gBAAgB,EACtB,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,2BAA2B,CAAC,MAAyB,CAAC,EAC5E,IAAI,EAAC,YAAY,EACjB,IAAI,EAAE,aAAa,IAAI,EAAE,EACzB,KAAK,EAAE,eAAe,IAAI,EAAE,GAC5B;QACD,eAAe,KAAK,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAC3C,oBAAC,kBAAkB,IACjB,IAAI,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,EAC9B,KAAK,EAAC,kBAAkB,EACxB,QAAQ,EAAE,CAAC,CAAa,EAAE,EAAE,CAAC,6BAA6B,CAAC,CAAC,CAAC,EAC7D,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,eAAe,GAChC,CACH,CAAC,CAAC,CAAC,IAAI,CACP,CACJ,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/AllColumnSelect.d.ts b/dist/vis/sidebar/AllColumnSelect.d.ts deleted file mode 100644 index 71e8a333c..000000000 --- a/dist/vis/sidebar/AllColumnSelect.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/// -import { ColumnInfo, VisColumn } from '../interfaces'; -interface AllColumnSelectProps { - callback: (allCols: ColumnInfo[]) => void; - columns: VisColumn[]; - currentSelected: ColumnInfo[]; -} -export declare function AllColumnSelect({ callback, columns, currentSelected }: AllColumnSelectProps): JSX.Element; -export {}; -//# sourceMappingURL=AllColumnSelect.d.ts.map \ No newline at end of file diff --git a/dist/vis/sidebar/AllColumnSelect.d.ts.map b/dist/vis/sidebar/AllColumnSelect.d.ts.map deleted file mode 100644 index f5ed8f74d..000000000 --- a/dist/vis/sidebar/AllColumnSelect.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AllColumnSelect.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/AllColumnSelect.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAGtD,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC1C,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,eAAe,EAAE,UAAU,EAAE,CAAC;CAC/B;AAwBD,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,oBAAoB,eAqC3F"} \ No newline at end of file diff --git a/dist/vis/sidebar/AllColumnSelect.js b/dist/vis/sidebar/AllColumnSelect.js deleted file mode 100644 index fb33464ed..000000000 --- a/dist/vis/sidebar/AllColumnSelect.js +++ /dev/null @@ -1,40 +0,0 @@ -import * as React from 'react'; -import Select, { components } from 'react-select'; -import { SortableContainer, SortableElement, SortableHandle } from 'react-sortable-hoc'; -import { formatOptionLabel } from './utils'; -function arrayMove(array, from, to) { - const slicedArray = array.slice(); - slicedArray.splice(to < 0 ? array.length + to : to, 0, slicedArray.splice(from, 1)[0]); - return slicedArray; -} -const SortableMultiValue = SortableElement((props) => { - // this prevents the menu from being opened/closed when the user clicks - // on a value to begin dragging it. ideally, detecting a click (instead of - // a drag) would still focus the control and toggle the menu - const onMouseDown = (e) => { - e.preventDefault(); - e.stopPropagation(); - }; - const innerProps = { ...props.innerProps, onMouseDown }; - return React.createElement(components.MultiValue, { ...props, innerProps: innerProps }); -}); -const SortableMultiValueLabel = SortableHandle((props) => React.createElement(components.MultiValueLabel, { ...props })); -const SortableSelect = SortableContainer(Select); -export function AllColumnSelect({ callback, columns, currentSelected }) { - const selectNumOptions = React.useMemo(() => { - return columns.map((c) => c.info); - }, [columns]); - const onSortEnd = ({ oldIndex, newIndex }) => { - const newValue = arrayMove(currentSelected, oldIndex, newIndex); - callback(newValue); - }; - return (React.createElement(React.Fragment, null, - React.createElement("label", { className: "pt-2 pb-1" }, "Columns"), - React.createElement(SortableSelect, { useDragHandle: true, axis: "xy", onSortEnd: onSortEnd, distance: 4, getHelperDimensions: ({ node }) => node.getBoundingClientRect(), closeMenuOnSelect: false, isMulti: true, formatOptionLabel: formatOptionLabel, getOptionLabel: (option) => option.name, getOptionValue: (option) => option.id, onChange: (newValue) => { - callback(newValue); - }, components: { - MultiValue: SortableMultiValue, - MultiValueLabel: SortableMultiValueLabel, - }, name: "numColumns", options: selectNumOptions, value: currentSelected }))); -} -//# sourceMappingURL=AllColumnSelect.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/AllColumnSelect.js.map b/dist/vis/sidebar/AllColumnSelect.js.map deleted file mode 100644 index bd2e3f0c8..000000000 --- a/dist/vis/sidebar/AllColumnSelect.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AllColumnSelect.js","sourceRoot":"","sources":["../../../src/vis/sidebar/AllColumnSelect.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/sidebar/BarDirectionButtons.d.ts.map b/dist/vis/sidebar/BarDirectionButtons.d.ts.map index de7eb9a05..92f8efa66 100644 --- a/dist/vis/sidebar/BarDirectionButtons.d.ts.map +++ b/dist/vis/sidebar/BarDirectionButtons.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"BarDirectionButtons.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/BarDirectionButtons.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,UAAU,iBAAiB;IACzB,QAAQ,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IACrC,eAAe,EAAE,aAAa,CAAC;CAChC;AAED,wBAAgB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,iBAAiB,eA4BnF"} \ No newline at end of file +{"version":3,"file":"BarDirectionButtons.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/BarDirectionButtons.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,UAAU,iBAAiB;IACzB,QAAQ,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IACrC,eAAe,EAAE,aAAa,CAAC;CAChC;AAED,wBAAgB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,iBAAiB,eAkBnF"} \ No newline at end of file diff --git a/dist/vis/sidebar/BarDirectionButtons.js b/dist/vis/sidebar/BarDirectionButtons.js index f5d7d9124..8293deb7f 100644 --- a/dist/vis/sidebar/BarDirectionButtons.js +++ b/dist/vis/sidebar/BarDirectionButtons.js @@ -1,13 +1,13 @@ +import { Container, SegmentedControl, Stack, Text } from '@mantine/core'; import * as React from 'react'; import { EBarDirection } from '../interfaces'; export function BarDirectionButtons({ callback, currentSelected }) { - const options = [EBarDirection.VERTICAL, EBarDirection.HORIZONTAL]; - return (React.createElement(React.Fragment, null, - React.createElement("label", { className: "pt-2 pb-1" }, "Direction"), - React.createElement("div", { key: "barDirectionGroup", className: "btn-group w-100", role: "group", "aria-label": "Bar Direction Chooser" }, options.map((opt) => { - return (React.createElement(React.Fragment, { key: `radioButtonsFilter${opt}` }, - React.createElement("input", { checked: currentSelected === opt, onChange: (e) => callback(e.currentTarget.value), value: opt, type: "checkbox", className: "btn-check", id: `formButton${opt}`, autoComplete: "off" }), - React.createElement("label", { style: { zIndex: 0 }, className: "btn btn-outline-primary w-100", htmlFor: `formButton${opt}` }, opt))); - })))); + return (React.createElement(Container, { p: 0, fluid: true, sx: { width: '100%' } }, + React.createElement(Stack, { spacing: 0 }, + React.createElement(Text, { weight: 500, size: 14 }, "Direction"), + React.createElement(SegmentedControl, { value: currentSelected, onChange: callback, data: [ + { label: EBarDirection.VERTICAL, value: EBarDirection.VERTICAL }, + { label: EBarDirection.HORIZONTAL, value: EBarDirection.HORIZONTAL }, + ] })))); } //# sourceMappingURL=BarDirectionButtons.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/BarDirectionButtons.js.map b/dist/vis/sidebar/BarDirectionButtons.js.map index 93a97b472..9ac52d950 100644 --- a/dist/vis/sidebar/BarDirectionButtons.js.map +++ b/dist/vis/sidebar/BarDirectionButtons.js.map @@ -1 +1 @@ -{"version":3,"file":"BarDirectionButtons.js","sourceRoot":"","sources":["../../../src/vis/sidebar/BarDirectionButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAO9C,MAAM,UAAU,mBAAmB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAqB;IAClF,MAAM,OAAO,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACnE,OAAO,CACL;QACE,+BAAO,SAAS,EAAC,WAAW,gBAAkB;QAE9C,6BAAK,GAAG,EAAC,mBAAmB,EAAC,SAAS,EAAC,iBAAiB,EAAC,IAAI,EAAC,OAAO,gBAAY,uBAAuB,IACrG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACnB,OAAO,CACL,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,qBAAqB,GAAG,EAAE;gBAC7C,+BACE,OAAO,EAAE,eAAe,KAAK,GAAG,EAChC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,KAAsB,CAAC,EACjE,KAAK,EAAE,GAAG,EACV,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,WAAW,EACrB,EAAE,EAAE,aAAa,GAAG,EAAE,EACtB,YAAY,EAAC,KAAK,GAClB;gBACF,+BAAO,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,SAAS,EAAC,+BAA+B,EAAC,OAAO,EAAE,aAAa,GAAG,EAAE,IAC/F,GAAG,CACE,CACO,CAClB,CAAC;QACJ,CAAC,CAAC,CACE,CACL,CACJ,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"BarDirectionButtons.js","sourceRoot":"","sources":["../../../src/vis/sidebar/BarDirectionButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAO9C,MAAM,UAAU,mBAAmB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAqB;IAClF,OAAO,CACL,oBAAC,SAAS,IAAC,CAAC,EAAE,CAAC,EAAE,KAAK,QAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QAC1C,oBAAC,KAAK,IAAC,OAAO,EAAE,CAAC;YACf,oBAAC,IAAI,IAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,gBAEpB;YACP,oBAAC,gBAAgB,IACf,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE;oBACJ,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,EAAE;oBAChE,EAAE,KAAK,EAAE,aAAa,CAAC,UAAU,EAAE,KAAK,EAAE,aAAa,CAAC,UAAU,EAAE;iBACrE,GACD,CACI,CACE,CACb,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/BarDisplayTypeButtons.d.ts.map b/dist/vis/sidebar/BarDisplayTypeButtons.d.ts.map index 1a24c6c85..13e134050 100644 --- a/dist/vis/sidebar/BarDisplayTypeButtons.d.ts.map +++ b/dist/vis/sidebar/BarDisplayTypeButtons.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"BarDisplayTypeButtons.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/BarDisplayTypeButtons.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,UAAU,eAAe;IACvB,QAAQ,EAAE,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;IACvC,eAAe,EAAE,eAAe,CAAC;CAClC;AAED,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,eAAe,eAwB/E"} \ No newline at end of file +{"version":3,"file":"BarDisplayTypeButtons.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/BarDisplayTypeButtons.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,UAAU,eAAe;IACvB,QAAQ,EAAE,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;IACvC,eAAe,EAAE,eAAe,CAAC;CAClC;AAED,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,eAAe,eAe/E"} \ No newline at end of file diff --git a/dist/vis/sidebar/BarDisplayTypeButtons.js b/dist/vis/sidebar/BarDisplayTypeButtons.js index 6a3a96e91..5f6884972 100644 --- a/dist/vis/sidebar/BarDisplayTypeButtons.js +++ b/dist/vis/sidebar/BarDisplayTypeButtons.js @@ -1,11 +1,12 @@ +import { Container, SegmentedControl, Stack } from '@mantine/core'; import * as React from 'react'; import { EBarDisplayType } from '../interfaces'; export function BarDisplayButtons({ callback, currentSelected }) { - const options = [EBarDisplayType.ABSOLUTE, EBarDisplayType.NORMALIZED]; - return (React.createElement("div", { key: "barDirectionGroup", className: "btn-group w-100 px-2 pt-3", role: "group", "aria-label": "Basic outlined example" }, options.map((opt) => { - return (React.createElement(React.Fragment, { key: `radioButtonsFilter${opt}` }, - React.createElement("input", { checked: currentSelected === opt, onChange: (e) => callback(e.currentTarget.value), value: opt, type: "checkbox", className: "btn-check", id: `formButton${opt}`, autoComplete: "off" }), - React.createElement("label", { style: { zIndex: 0 }, className: "btn btn-outline-primary w-100", htmlFor: `formButton${opt}` }, opt))); - }))); + return (React.createElement(Container, { p: 0, fluid: true, sx: { width: '100%' } }, + React.createElement(Stack, { spacing: 0 }, + React.createElement(SegmentedControl, { value: currentSelected, onChange: callback, data: [ + { label: EBarDisplayType.ABSOLUTE, value: EBarDisplayType.ABSOLUTE }, + { label: EBarDisplayType.NORMALIZED, value: EBarDisplayType.NORMALIZED }, + ] })))); } //# sourceMappingURL=BarDisplayTypeButtons.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/BarDisplayTypeButtons.js.map b/dist/vis/sidebar/BarDisplayTypeButtons.js.map index 57242f515..0b20c4585 100644 --- a/dist/vis/sidebar/BarDisplayTypeButtons.js.map +++ b/dist/vis/sidebar/BarDisplayTypeButtons.js.map @@ -1 +1 @@ -{"version":3,"file":"BarDisplayTypeButtons.js","sourceRoot":"","sources":["../../../src/vis/sidebar/BarDisplayTypeButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAOhD,MAAM,UAAU,iBAAiB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAmB;IAC9E,MAAM,OAAO,GAAG,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IACvE,OAAO,CACL,6BAAK,GAAG,EAAC,mBAAmB,EAAC,SAAS,EAAC,2BAA2B,EAAC,IAAI,EAAC,OAAO,gBAAY,wBAAwB,IAChH,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,OAAO,CACL,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,qBAAqB,GAAG,EAAE;YAC7C,+BACE,OAAO,EAAE,eAAe,KAAK,GAAG,EAChC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,KAAwB,CAAC,EACnE,KAAK,EAAE,GAAG,EACV,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,WAAW,EACrB,EAAE,EAAE,aAAa,GAAG,EAAE,EACtB,YAAY,EAAC,KAAK,GAClB;YACF,+BAAO,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,SAAS,EAAC,+BAA+B,EAAC,OAAO,EAAE,aAAa,GAAG,EAAE,IAC/F,GAAG,CACE,CACO,CAClB,CAAC;IACJ,CAAC,CAAC,CACE,CACP,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"BarDisplayTypeButtons.js","sourceRoot":"","sources":["../../../src/vis/sidebar/BarDisplayTypeButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAQ,MAAM,eAAe,CAAC;AACzE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAOhD,MAAM,UAAU,iBAAiB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAmB;IAC9E,OAAO,CACL,oBAAC,SAAS,IAAC,CAAC,EAAE,CAAC,EAAE,KAAK,QAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QAC1C,oBAAC,KAAK,IAAC,OAAO,EAAE,CAAC;YACf,oBAAC,gBAAgB,IACf,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE;oBACJ,EAAE,KAAK,EAAE,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC,QAAQ,EAAE;oBACpE,EAAE,KAAK,EAAE,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,eAAe,CAAC,UAAU,EAAE;iBACzE,GACD,CACI,CACE,CACb,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/BarGroupTypeButtons.d.ts.map b/dist/vis/sidebar/BarGroupTypeButtons.d.ts.map index 47cde432c..e8b613e38 100644 --- a/dist/vis/sidebar/BarGroupTypeButtons.d.ts.map +++ b/dist/vis/sidebar/BarGroupTypeButtons.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"BarGroupTypeButtons.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/BarGroupTypeButtons.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,UAAU,iBAAiB;IACzB,QAAQ,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACxC,eAAe,EAAE,gBAAgB,CAAC;CACnC;AAED,wBAAgB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,iBAAiB,eAwBnF"} \ No newline at end of file +{"version":3,"file":"BarGroupTypeButtons.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/BarGroupTypeButtons.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,UAAU,iBAAiB;IACzB,QAAQ,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACxC,eAAe,EAAE,gBAAgB,CAAC;CACnC;AAED,wBAAgB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,iBAAiB,eAenF"} \ No newline at end of file diff --git a/dist/vis/sidebar/BarGroupTypeButtons.js b/dist/vis/sidebar/BarGroupTypeButtons.js index 8afddaea1..3c2bf9934 100644 --- a/dist/vis/sidebar/BarGroupTypeButtons.js +++ b/dist/vis/sidebar/BarGroupTypeButtons.js @@ -1,11 +1,12 @@ +import { Container, SegmentedControl, Stack } from '@mantine/core'; import * as React from 'react'; import { EBarGroupingType } from '../interfaces'; export function BarGroupTypeButtons({ callback, currentSelected }) { - const options = [EBarGroupingType.GROUP, EBarGroupingType.STACK]; - return (React.createElement("div", { key: "barGroupingTypeButtons", className: "btn-group w-100 px-2 pt-3", role: "group", "aria-label": "Basic outlined example" }, options.map((opt) => { - return (React.createElement(React.Fragment, { key: `radioButtonsFilter${opt}` }, - React.createElement("input", { checked: currentSelected === opt, onChange: (e) => callback(e.currentTarget.value), value: opt, type: "checkbox", className: "btn-check", id: `formButton${opt}`, autoComplete: "off" }), - React.createElement("label", { style: { zIndex: 0 }, className: "btn btn-outline-primary w-100", htmlFor: `formButton${opt}` }, opt))); - }))); + return (React.createElement(Container, { p: 0, fluid: true, sx: { width: '100%' } }, + React.createElement(Stack, { spacing: 0 }, + React.createElement(SegmentedControl, { value: currentSelected, onChange: callback, data: [ + { label: EBarGroupingType.GROUP, value: EBarGroupingType.GROUP }, + { label: EBarGroupingType.STACK, value: EBarGroupingType.STACK }, + ] })))); } //# sourceMappingURL=BarGroupTypeButtons.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/BarGroupTypeButtons.js.map b/dist/vis/sidebar/BarGroupTypeButtons.js.map index 2aeb8b3e2..830dd276e 100644 --- a/dist/vis/sidebar/BarGroupTypeButtons.js.map +++ b/dist/vis/sidebar/BarGroupTypeButtons.js.map @@ -1 +1 @@ -{"version":3,"file":"BarGroupTypeButtons.js","sourceRoot":"","sources":["../../../src/vis/sidebar/BarGroupTypeButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAOjD,MAAM,UAAU,mBAAmB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAqB;IAClF,MAAM,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACjE,OAAO,CACL,6BAAK,GAAG,EAAC,wBAAwB,EAAC,SAAS,EAAC,2BAA2B,EAAC,IAAI,EAAC,OAAO,gBAAY,wBAAwB,IACrH,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,OAAO,CACL,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,qBAAqB,GAAG,EAAE;YAC7C,+BACE,OAAO,EAAE,eAAe,KAAK,GAAG,EAChC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,KAAyB,CAAC,EACpE,KAAK,EAAE,GAAG,EACV,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,WAAW,EACrB,EAAE,EAAE,aAAa,GAAG,EAAE,EACtB,YAAY,EAAC,KAAK,GAClB;YACF,+BAAO,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,SAAS,EAAC,+BAA+B,EAAC,OAAO,EAAE,aAAa,GAAG,EAAE,IAC/F,GAAG,CACE,CACO,CAClB,CAAC;IACJ,CAAC,CAAC,CACE,CACP,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"BarGroupTypeButtons.js","sourceRoot":"","sources":["../../../src/vis/sidebar/BarGroupTypeButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAOjD,MAAM,UAAU,mBAAmB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAqB;IAClF,OAAO,CACL,oBAAC,SAAS,IAAC,CAAC,EAAE,CAAC,EAAE,KAAK,QAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QAC1C,oBAAC,KAAK,IAAC,OAAO,EAAE,CAAC;YACf,oBAAC,gBAAgB,IACf,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE;oBACJ,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE;oBAChE,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE;iBACjE,GACD,CACI,CACE,CACb,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/BrushOptionButtons.d.ts b/dist/vis/sidebar/BrushOptionButtons.d.ts index c539d16a6..2d17c658c 100644 --- a/dist/vis/sidebar/BrushOptionButtons.d.ts +++ b/dist/vis/sidebar/BrushOptionButtons.d.ts @@ -3,7 +3,8 @@ import { EScatterSelectSettings } from '../interfaces'; interface BrushOptionProps { callback: (dragMode: EScatterSelectSettings) => void; dragMode: EScatterSelectSettings; + options?: EScatterSelectSettings[]; } -export declare function BrushOptionButtons({ callback, dragMode }: BrushOptionProps): JSX.Element; +export declare function BrushOptionButtons({ callback, dragMode, options, }: BrushOptionProps): JSX.Element; export {}; //# sourceMappingURL=BrushOptionButtons.d.ts.map \ No newline at end of file diff --git a/dist/vis/sidebar/BrushOptionButtons.d.ts.map b/dist/vis/sidebar/BrushOptionButtons.d.ts.map index a88ea4336..1720b9e14 100644 --- a/dist/vis/sidebar/BrushOptionButtons.d.ts.map +++ b/dist/vis/sidebar/BrushOptionButtons.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"BrushOptionButtons.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/BrushOptionButtons.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEvD,UAAU,gBAAgB;IACxB,QAAQ,EAAE,CAAC,QAAQ,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACrD,QAAQ,EAAE,sBAAsB,CAAC;CAClC;AAED,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,gBAAgB,eAkD1E"} \ No newline at end of file +{"version":3,"file":"BrushOptionButtons.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/BrushOptionButtons.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEvD,UAAU,gBAAgB;IACxB,QAAQ,EAAE,CAAC,QAAQ,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACrD,QAAQ,EAAE,sBAAsB,CAAC;IACjC,OAAO,CAAC,EAAE,sBAAsB,EAAE,CAAC;CACpC;AAED,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,QAAQ,EACR,OAAmI,GACpI,EAAE,gBAAgB,eAyClB"} \ No newline at end of file diff --git a/dist/vis/sidebar/BrushOptionButtons.js b/dist/vis/sidebar/BrushOptionButtons.js index 811a9c966..82c4f9862 100644 --- a/dist/vis/sidebar/BrushOptionButtons.js +++ b/dist/vis/sidebar/BrushOptionButtons.js @@ -1,18 +1,30 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faPaintBrush, faSquare, faSearchPlus, faArrowsAlt } from '@fortawesome/free-solid-svg-icons'; +import { SegmentedControl, Tooltip } from '@mantine/core'; import * as React from 'react'; import { EScatterSelectSettings } from '../interfaces'; -export function BrushOptionButtons({ callback, dragMode }) { - return (React.createElement("div", { className: "btn-group", role: "group" }, - React.createElement("input", { checked: dragMode === EScatterSelectSettings.RECTANGLE, onChange: () => callback(EScatterSelectSettings.RECTANGLE), type: "checkbox", className: "btn-check", id: "rectBrushSelection", autoComplete: "off" }), - React.createElement("label", { className: "btn btn-outline-primary", htmlFor: "rectBrushSelection", title: "Rectangular Brush" }, - React.createElement("i", { className: "far fa-square" })), - React.createElement("input", { checked: dragMode === EScatterSelectSettings.LASSO, onChange: () => callback(EScatterSelectSettings.LASSO), type: "checkbox", className: "btn-check", id: "lassoBrushSelection", autoComplete: "off" }), - React.createElement("label", { className: "btn btn-outline-primary", htmlFor: "lassoBrushSelection", title: "Lasso Brush" }, - React.createElement("i", { className: "fas fa-paint-brush" })), - React.createElement("input", { checked: dragMode === EScatterSelectSettings.ZOOM, onChange: () => callback(EScatterSelectSettings.ZOOM), type: "checkbox", className: "btn-check", id: "zoomBrushSelection", autoComplete: "off" }), - React.createElement("label", { className: "btn btn-outline-primary", htmlFor: "zoomBrushSelection", title: "Zoom" }, - React.createElement("i", { className: "fas fa-search-plus" })), - React.createElement("input", { checked: dragMode === EScatterSelectSettings.PAN, onChange: () => callback(EScatterSelectSettings.PAN), type: "checkbox", className: "btn-check", id: "panSelection", autoComplete: "off" }), - React.createElement("label", { className: "btn btn-outline-primary", htmlFor: "panSelection", title: "Pan" }, - React.createElement("i", { className: "fas fa-arrows-alt" })))); +export function BrushOptionButtons({ callback, dragMode, options = [EScatterSelectSettings.RECTANGLE, EScatterSelectSettings.LASSO, EScatterSelectSettings.PAN, EScatterSelectSettings.ZOOM], }) { + return (React.createElement(SegmentedControl, { value: dragMode, onChange: callback, data: [ + { + label: (React.createElement(Tooltip, { withinPortal: true, withArrow: true, arrowSize: 6, label: "Rectangular brush" }, + React.createElement(FontAwesomeIcon, { icon: faSquare }))), + value: EScatterSelectSettings.RECTANGLE, + }, + { + label: (React.createElement(Tooltip, { withinPortal: true, withArrow: true, arrowSize: 6, label: "Lasso brush" }, + React.createElement(FontAwesomeIcon, { icon: faPaintBrush }))), + value: EScatterSelectSettings.LASSO, + }, + { + label: (React.createElement(Tooltip, { withinPortal: true, withArrow: true, arrowSize: 6, label: "Zoom/Pan" }, + React.createElement(FontAwesomeIcon, { icon: faArrowsAlt }))), + value: EScatterSelectSettings.PAN, + }, + { + label: (React.createElement(Tooltip, { withinPortal: true, withArrow: true, arrowSize: 6, label: "Rectangular zoom" }, + React.createElement(FontAwesomeIcon, { icon: faSearchPlus }))), + value: EScatterSelectSettings.ZOOM, + }, + ].filter((d) => options.includes(d.value)) })); } //# sourceMappingURL=BrushOptionButtons.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/BrushOptionButtons.js.map b/dist/vis/sidebar/BrushOptionButtons.js.map index b2c9a9180..8919c41f2 100644 --- a/dist/vis/sidebar/BrushOptionButtons.js.map +++ b/dist/vis/sidebar/BrushOptionButtons.js.map @@ -1 +1 @@ -{"version":3,"file":"BrushOptionButtons.js","sourceRoot":"","sources":["../../../src/vis/sidebar/BrushOptionButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAOvD,MAAM,UAAU,kBAAkB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAoB;IACzE,OAAO,CACL,6BAAK,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,OAAO;QACrC,+BACE,OAAO,EAAE,QAAQ,KAAK,sBAAsB,CAAC,SAAS,EACtD,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAC1D,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,WAAW,EACrB,EAAE,EAAC,oBAAoB,EACvB,YAAY,EAAC,KAAK,GAClB;QACF,+BAAO,SAAS,EAAC,yBAAyB,EAAC,OAAO,EAAC,oBAAoB,EAAC,KAAK,EAAC,mBAAmB;YAC/F,2BAAG,SAAS,EAAC,eAAe,GAAG,CACzB;QAER,+BACE,OAAO,EAAE,QAAQ,KAAK,sBAAsB,CAAC,KAAK,EAClD,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC,KAAK,CAAC,EACtD,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,WAAW,EACrB,EAAE,EAAC,qBAAqB,EACxB,YAAY,EAAC,KAAK,GAClB;QACF,+BAAO,SAAS,EAAC,yBAAyB,EAAC,OAAO,EAAC,qBAAqB,EAAC,KAAK,EAAC,aAAa;YAC1F,2BAAG,SAAS,EAAC,oBAAoB,GAAG,CAC9B;QACR,+BACE,OAAO,EAAE,QAAQ,KAAK,sBAAsB,CAAC,IAAI,EACjD,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,EACrD,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,WAAW,EACrB,EAAE,EAAC,oBAAoB,EACvB,YAAY,EAAC,KAAK,GAClB;QACF,+BAAO,SAAS,EAAC,yBAAyB,EAAC,OAAO,EAAC,oBAAoB,EAAC,KAAK,EAAC,MAAM;YAClF,2BAAG,SAAS,EAAC,oBAAoB,GAAG,CAC9B;QACR,+BACE,OAAO,EAAE,QAAQ,KAAK,sBAAsB,CAAC,GAAG,EAChD,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC,GAAG,CAAC,EACpD,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,WAAW,EACrB,EAAE,EAAC,cAAc,EACjB,YAAY,EAAC,KAAK,GAClB;QACF,+BAAO,SAAS,EAAC,yBAAyB,EAAC,OAAO,EAAC,cAAc,EAAC,KAAK,EAAC,KAAK;YAC3E,2BAAG,SAAS,EAAC,mBAAmB,GAAG,CAC7B,CACJ,CACP,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"BrushOptionButtons.js","sourceRoot":"","sources":["../../../src/vis/sidebar/BrushOptionButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AACtG,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAQvD,MAAM,UAAU,kBAAkB,CAAC,EACjC,QAAQ,EACR,QAAQ,EACR,OAAO,GAAG,CAAC,sBAAsB,CAAC,SAAS,EAAE,sBAAsB,CAAC,KAAK,EAAE,sBAAsB,CAAC,GAAG,EAAE,sBAAsB,CAAC,IAAI,CAAC,GAClH;IACjB,OAAO,CACL,oBAAC,gBAAgB,IACf,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE;YACJ;gBACE,KAAK,EAAE,CACL,oBAAC,OAAO,IAAC,YAAY,QAAC,SAAS,QAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAC,mBAAmB;oBACrE,oBAAC,eAAe,IAAC,IAAI,EAAE,QAAQ,GAAI,CAC3B,CACX;gBACD,KAAK,EAAE,sBAAsB,CAAC,SAAS;aACxC;YACD;gBACE,KAAK,EAAE,CACL,oBAAC,OAAO,IAAC,YAAY,QAAC,SAAS,QAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAC,aAAa;oBAC/D,oBAAC,eAAe,IAAC,IAAI,EAAE,YAAY,GAAI,CAC/B,CACX;gBACD,KAAK,EAAE,sBAAsB,CAAC,KAAK;aACpC;YACD;gBACE,KAAK,EAAE,CACL,oBAAC,OAAO,IAAC,YAAY,QAAC,SAAS,QAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAC,UAAU;oBAC5D,oBAAC,eAAe,IAAC,IAAI,EAAE,WAAW,GAAI,CAC9B,CACX;gBACD,KAAK,EAAE,sBAAsB,CAAC,GAAG;aAClC;YACD;gBACE,KAAK,EAAE,CACL,oBAAC,OAAO,IAAC,YAAY,QAAC,SAAS,QAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAC,kBAAkB;oBACpE,oBAAC,eAAe,IAAC,IAAI,EAAE,YAAY,GAAI,CAC/B,CACX;gBACD,KAAK,EAAE,sBAAsB,CAAC,IAAI;aACnC;SACF,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAC1C,CACH,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/CategoricalColumnSelect.d.ts.map b/dist/vis/sidebar/CategoricalColumnSelect.d.ts.map index 420c4ef01..eba6afb30 100644 --- a/dist/vis/sidebar/CategoricalColumnSelect.d.ts.map +++ b/dist/vis/sidebar/CategoricalColumnSelect.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"CategoricalColumnSelect.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/CategoricalColumnSelect.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAgB,SAAS,EAAE,MAAM,eAAe,CAAC;AAGpE,UAAU,4BAA4B;IACpC,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IACpC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,eAAe,EAAE,UAAU,EAAE,CAAC;CAC/B;AAED,wBAAgB,uBAAuB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,4BAA4B,eAqB3G"} \ No newline at end of file +{"version":3,"file":"CategoricalColumnSelect.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/CategoricalColumnSelect.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAgB,SAAS,EAAE,MAAM,eAAe,CAAC;AAEpE,UAAU,4BAA4B;IACpC,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IACpC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,eAAe,EAAE,UAAU,EAAE,CAAC;CAC/B;AAED,wBAAgB,uBAAuB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,4BAA4B,eAgB3G"} \ No newline at end of file diff --git a/dist/vis/sidebar/CategoricalColumnSelect.js b/dist/vis/sidebar/CategoricalColumnSelect.js index b1ffbeede..8c4544e61 100644 --- a/dist/vis/sidebar/CategoricalColumnSelect.js +++ b/dist/vis/sidebar/CategoricalColumnSelect.js @@ -1,13 +1,10 @@ +import { MultiSelect } from '@mantine/core'; import * as React from 'react'; -import Select from 'react-select'; import { EColumnTypes } from '../interfaces'; -import { formatOptionLabel } from './utils'; export function CategoricalColumnSelect({ callback, columns, currentSelected }) { const selectCatOptions = React.useMemo(() => { - return columns.filter((c) => c.type === EColumnTypes.CATEGORICAL).map((c) => c.info); + return columns.filter((c) => c.type === EColumnTypes.CATEGORICAL).map((c) => ({ value: c.info.id, label: c.info.name })); }, [columns]); - return (React.createElement(React.Fragment, null, - React.createElement("label", { className: "pt-2 pb-1" }, "Categorical Columns"), - React.createElement(Select, { closeMenuOnSelect: false, isMulti: true, formatOptionLabel: formatOptionLabel, getOptionLabel: (option) => option.name, getOptionValue: (option) => option.id, onChange: (e) => callback(e.map((c) => c)), name: "numColumns", options: selectCatOptions, value: selectCatOptions.filter((c) => currentSelected.filter((d) => d.id === c.id).length > 0) }))); + return (React.createElement(MultiSelect, { placeholder: "Select Column", label: "Categorical columns", clearable: true, onChange: (e) => callback(columns.filter((c) => e.includes(c.info.id)).map((c) => c.info)), name: "numColumns", data: selectCatOptions, value: selectCatOptions.filter((c) => currentSelected.filter((d) => d.id === c.value).length > 0).map((c) => c.value) })); } //# sourceMappingURL=CategoricalColumnSelect.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/CategoricalColumnSelect.js.map b/dist/vis/sidebar/CategoricalColumnSelect.js.map index d62511fba..330d9579d 100644 --- a/dist/vis/sidebar/CategoricalColumnSelect.js.map +++ b/dist/vis/sidebar/CategoricalColumnSelect.js.map @@ -1 +1 @@ -{"version":3,"file":"CategoricalColumnSelect.js","sourceRoot":"","sources":["../../../src/vis/sidebar/CategoricalColumnSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EAAc,YAAY,EAAa,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAQ5C,MAAM,UAAU,uBAAuB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAgC;IAC1G,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC1C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvF,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACL;QACE,+BAAO,SAAS,EAAC,WAAW,0BAA4B;QACxD,oBAAC,MAAM,IACL,iBAAiB,EAAE,KAAK,EACxB,OAAO,QACP,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EACvC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EACrC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAC1C,IAAI,EAAC,YAAY,EACjB,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAC9F,CACD,CACJ,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"CategoricalColumnSelect.js","sourceRoot":"","sources":["../../../src/vis/sidebar/CategoricalColumnSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAc,YAAY,EAAa,MAAM,eAAe,CAAC;AAQpE,MAAM,UAAU,uBAAuB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAgC;IAC1G,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC1C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3H,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACL,oBAAC,WAAW,IACV,WAAW,EAAC,eAAe,EAC3B,KAAK,EAAC,qBAAqB,EAC3B,SAAS,QACT,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAC1F,IAAI,EAAC,YAAY,EACjB,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GACrH,CACH,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/CloseButton.js b/dist/vis/sidebar/CloseButton.js index 61198e436..a49a59e11 100644 --- a/dist/vis/sidebar/CloseButton.js +++ b/dist/vis/sidebar/CloseButton.js @@ -1,6 +1,6 @@ import * as React from 'react'; export function CloseButton({ closeCallback }) { - return (React.createElement("div", { className: "position-absolute end-0 top-0" }, + return (React.createElement("div", { className: "position-absolute start-0 top-0" }, React.createElement("button", { onClick: () => closeCallback(), type: "button", className: "btn-close m-1", "aria-label": "Close" }))); } //# sourceMappingURL=CloseButton.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/CloseButton.js.map b/dist/vis/sidebar/CloseButton.js.map index a1ba70775..c738e41ac 100644 --- a/dist/vis/sidebar/CloseButton.js.map +++ b/dist/vis/sidebar/CloseButton.js.map @@ -1 +1 @@ -{"version":3,"file":"CloseButton.js","sourceRoot":"","sources":["../../../src/vis/sidebar/CloseButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,UAAU,WAAW,CAAC,EAAE,aAAa,EAAiC;IAC1E,OAAO,CACL,6BAAK,SAAS,EAAC,+BAA+B;QAC5C,gCAAQ,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,EAAE,EAAE,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,eAAe,gBAAY,OAAO,GAAG,CACjG,CACP,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"CloseButton.js","sourceRoot":"","sources":["../../../src/vis/sidebar/CloseButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,UAAU,WAAW,CAAC,EAAE,aAAa,EAAiC;IAC1E,OAAO,CACL,6BAAK,SAAS,EAAC,iCAAiC;QAC9C,gCAAQ,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,EAAE,EAAE,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,eAAe,gBAAY,OAAO,GAAG,CACjG,CACP,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/ColorSelect.d.ts.map b/dist/vis/sidebar/ColorSelect.d.ts.map index 4bd8192f9..90f5ee62d 100644 --- a/dist/vis/sidebar/ColorSelect.d.ts.map +++ b/dist/vis/sidebar/ColorSelect.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"ColorSelect.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/ColorSelect.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAgB,SAAS,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAI9F,UAAU,gBAAgB;IACxB,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,wBAAwB,KAAK,IAAI,CAAC;IACxD,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAC1C,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;CACpC;AAED,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,eAA4B,EAAE,cAAqB,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,gBAAgB,eAmBxI"} \ No newline at end of file +{"version":3,"file":"ColorSelect.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/ColorSelect.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAgB,SAAS,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAI9F,UAAU,gBAAgB;IACxB,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,wBAAwB,KAAK,IAAI,CAAC;IACxD,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAC1C,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;CACpC;AAED,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,eAA4B,EAAE,cAAqB,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,gBAAgB,eAiBxI"} \ No newline at end of file diff --git a/dist/vis/sidebar/ColorSelect.js b/dist/vis/sidebar/ColorSelect.js index 3942d182d..95822e1b6 100644 --- a/dist/vis/sidebar/ColorSelect.js +++ b/dist/vis/sidebar/ColorSelect.js @@ -1,12 +1,11 @@ import * as React from 'react'; -import Select from 'react-select'; +import { Select, Stack } from '@mantine/core'; import { EColumnTypes } from '../interfaces'; -import { formatOptionLabel, getCol } from './utils'; +import { getCol } from './utils'; import { NumericalColorButtons } from './NumericalColorButtons'; export function ColorSelect({ callback, numTypeCallback = () => null, currentNumType = null, columns, currentSelected }) { - return (React.createElement(React.Fragment, null, - React.createElement("label", { className: "pt-2 pb-1" }, "Color"), - React.createElement(Select, { isClearable: true, onChange: (e) => callback(e), name: "colorSelect", formatOptionLabel: formatOptionLabel, getOptionLabel: (option) => option.name, getOptionValue: (option) => option.id, options: columns.map((c) => c.info), value: currentSelected || [] }), + return (React.createElement(Stack, { spacing: "sm" }, + React.createElement(Select, { clearable: true, placeholder: "Select Column", label: "Color", onChange: (e) => callback(columns.find((c) => c.info.id === e)?.info), name: "colorSelect", data: columns.map((c) => ({ value: c.info.id, label: c.info.name })), value: currentSelected?.id }), currentNumType && currentSelected && getCol(columns, currentSelected).type === EColumnTypes.NUMERICAL ? (React.createElement(NumericalColorButtons, { callback: numTypeCallback, currentSelected: currentNumType })) : null)); } //# sourceMappingURL=ColorSelect.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/ColorSelect.js.map b/dist/vis/sidebar/ColorSelect.js.map index 4d4a5e1bc..d2d56d934 100644 --- a/dist/vis/sidebar/ColorSelect.js.map +++ b/dist/vis/sidebar/ColorSelect.js.map @@ -1 +1 @@ -{"version":3,"file":"ColorSelect.js","sourceRoot":"","sources":["../../../src/vis/sidebar/ColorSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EAAc,YAAY,EAAuC,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAUhE,MAAM,UAAU,WAAW,CAAC,EAAE,QAAQ,EAAE,eAAe,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,EAAE,OAAO,EAAE,eAAe,EAAoB;IACvI,OAAO,CACL;QACE,+BAAO,SAAS,EAAC,WAAW,YAAc;QAC1C,oBAAC,MAAM,IACL,WAAW,QACX,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC5B,IAAI,EAAC,aAAa,EAClB,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EACvC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EACrC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACnC,KAAK,EAAE,eAAe,IAAI,EAAE,GAC5B;QACD,cAAc,IAAI,eAAe,IAAI,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CACvG,oBAAC,qBAAqB,IAAC,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,GAAI,CACtF,CAAC,CAAC,CAAC,IAAI,CACP,CACJ,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"ColorSelect.js","sourceRoot":"","sources":["../../../src/vis/sidebar/ColorSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAc,YAAY,EAAuC,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAUhE,MAAM,UAAU,WAAW,CAAC,EAAE,QAAQ,EAAE,eAAe,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,EAAE,OAAO,EAAE,eAAe,EAAoB;IACvI,OAAO,CACL,oBAAC,KAAK,IAAC,OAAO,EAAC,IAAI;QACjB,oBAAC,MAAM,IACL,SAAS,QACT,WAAW,EAAC,eAAe,EAC3B,KAAK,EAAC,OAAO,EACb,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EACrE,IAAI,EAAC,aAAa,EAClB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EACpE,KAAK,EAAE,eAAe,EAAE,EAAE,GAC1B;QACD,cAAc,IAAI,eAAe,IAAI,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CACvG,oBAAC,qBAAqB,IAAC,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,GAAI,CACtF,CAAC,CAAC,CAAC,IAAI,CACF,CACT,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/FilterButtons.d.ts.map b/dist/vis/sidebar/FilterButtons.d.ts.map index 3384abbac..73638c8ea 100644 --- a/dist/vis/sidebar/FilterButtons.d.ts.map +++ b/dist/vis/sidebar/FilterButtons.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"FilterButtons.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/FilterButtons.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;CACvC;AAOD,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,kBAAkB,eA0C7D"} \ No newline at end of file +{"version":3,"file":"FilterButtons.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/FilterButtons.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;CACvC;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,kBAAkB,eAsB7D"} \ No newline at end of file diff --git a/dist/vis/sidebar/FilterButtons.js b/dist/vis/sidebar/FilterButtons.js index eb25faa96..3ffdefdca 100644 --- a/dist/vis/sidebar/FilterButtons.js +++ b/dist/vis/sidebar/FilterButtons.js @@ -1,24 +1,14 @@ +import { Button, Container, Tooltip } from '@mantine/core'; import * as React from 'react'; import { EFilterOptions } from '../interfaces'; export function FilterButtons({ callback }) { - const options = [ - { - name: EFilterOptions.IN, - tooltip: 'Filters any point not currently selected', - }, - { - name: EFilterOptions.OUT, - tooltip: 'Filters all currently selected points', - }, - { - name: EFilterOptions.CLEAR, - tooltip: 'Removes any existing filter', - }, - ]; - return (React.createElement("div", { key: "buttonGroupFilter", className: "btn-group w-100 px-2 pt-3", role: "group", "aria-label": "Basic outlined example" }, options.map((opt) => { - return (React.createElement(React.Fragment, { key: `radioButtonsFilter${opt.name}` }, - React.createElement("input", { checked: false, onChange: (e) => callback(e.currentTarget.value), value: opt.name, type: "checkbox", className: "btn-check", id: `formButton${opt.name}`, autoComplete: "off" }), - React.createElement("label", { title: opt.tooltip, className: "align-items-center justify-content-center d-flex btn btn-outline-primary w-100", htmlFor: `formButton${opt.name}` }, opt.name))); - }))); + return (React.createElement(Container, { mt: "md", p: 0, fluid: true, sx: { width: '100%' } }, + React.createElement(Button.Group, { buttonBorderWidth: 2 }, + React.createElement(Tooltip, { withinPortal: true, label: "Filters any point not currently selected" }, + React.createElement(Button, { sx: { flexGrow: 1 }, p: 0, variant: "default", onClick: () => callback(EFilterOptions.IN) }, EFilterOptions.IN)), + React.createElement(Tooltip, { withinPortal: true, label: "Filters all currently selected points" }, + React.createElement(Button, { sx: { flexGrow: 1 }, p: 0, variant: "default", onClick: () => callback(EFilterOptions.OUT) }, EFilterOptions.OUT)), + React.createElement(Tooltip, { withinPortal: true, label: "Removes any existing filter" }, + React.createElement(Button, { sx: { flexGrow: 1 }, p: 0, variant: "default", onClick: () => callback(EFilterOptions.CLEAR) }, EFilterOptions.CLEAR))))); } //# sourceMappingURL=FilterButtons.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/FilterButtons.js.map b/dist/vis/sidebar/FilterButtons.js.map index 5f882e210..51825c9eb 100644 --- a/dist/vis/sidebar/FilterButtons.js.map +++ b/dist/vis/sidebar/FilterButtons.js.map @@ -1 +1 @@ -{"version":3,"file":"FilterButtons.js","sourceRoot":"","sources":["../../../src/vis/sidebar/FilterButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAW/C,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAsB;IAC5D,MAAM,OAAO,GAAkB;QAC7B;YACE,IAAI,EAAE,cAAc,CAAC,EAAE;YACvB,OAAO,EAAE,0CAA0C;SACpD;QACD;YACE,IAAI,EAAE,cAAc,CAAC,GAAG;YACxB,OAAO,EAAE,uCAAuC;SACjD;QACD;YACE,IAAI,EAAE,cAAc,CAAC,KAAK;YAC1B,OAAO,EAAE,6BAA6B;SACvC;KACF,CAAC;IAEF,OAAO,CACL,6BAAK,GAAG,EAAC,mBAAmB,EAAC,SAAS,EAAC,2BAA2B,EAAC,IAAI,EAAC,OAAO,gBAAY,wBAAwB,IAChH,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,OAAO,CACL,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,qBAAqB,GAAG,CAAC,IAAI,EAAE;YAClD,+BACE,OAAO,EAAE,KAAK,EACd,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,KAAuB,CAAC,EAClE,KAAK,EAAE,GAAG,CAAC,IAAI,EACf,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,WAAW,EACrB,EAAE,EAAE,aAAa,GAAG,CAAC,IAAI,EAAE,EAC3B,YAAY,EAAC,KAAK,GAClB;YACF,+BACE,KAAK,EAAE,GAAG,CAAC,OAAO,EAClB,SAAS,EAAC,gFAAgF,EAC1F,OAAO,EAAE,aAAa,GAAG,CAAC,IAAI,EAAE,IAE/B,GAAG,CAAC,IAAI,CACH,CACO,CAClB,CAAC;IACJ,CAAC,CAAC,CACE,CACP,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"FilterButtons.js","sourceRoot":"","sources":["../../../src/vis/sidebar/FilterButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAM/C,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAsB;IAC5D,OAAO,CACL,oBAAC,SAAS,IAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAE,CAAC,EAAE,KAAK,QAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QAClD,oBAAC,MAAM,CAAC,KAAK,IAAC,iBAAiB,EAAE,CAAC;YAChC,oBAAC,OAAO,IAAC,YAAY,QAAC,KAAK,EAAC,0CAA0C;gBACpE,oBAAC,MAAM,IAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,IAC5F,cAAc,CAAC,EAAE,CACX,CACD;YACV,oBAAC,OAAO,IAAC,YAAY,QAAC,KAAK,EAAC,uCAAuC;gBACjE,oBAAC,MAAM,IAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,IAC7F,cAAc,CAAC,GAAG,CACZ,CACD;YACV,oBAAC,OAAO,IAAC,YAAY,QAAC,KAAK,EAAC,6BAA6B;gBACvD,oBAAC,MAAM,IAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,IAC/F,cAAc,CAAC,KAAK,CACd,CACD,CACG,CACL,CACb,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/GroupSelect.d.ts.map b/dist/vis/sidebar/GroupSelect.d.ts.map index e9b010e2d..8c6e4c3cf 100644 --- a/dist/vis/sidebar/GroupSelect.d.ts.map +++ b/dist/vis/sidebar/GroupSelect.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"GroupSelect.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/GroupSelect.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAgB,SAAS,EAAE,MAAM,eAAe,CAAC;AAKvG,UAAU,gBAAgB;IACxB,yBAAyB,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACnD,uBAAuB,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACvD,0BAA0B,EAAE,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;IACzD,SAAS,EAAE,gBAAgB,CAAC;IAC5B,WAAW,EAAE,eAAe,CAAC;IAC7B,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;CACpC;AAED,wBAAgB,WAAW,CAAC,EAC1B,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,EAC1B,SAAS,EACT,WAAW,EACX,OAAO,EACP,eAAe,GAChB,EAAE,gBAAgB,eAsBlB"} \ No newline at end of file +{"version":3,"file":"GroupSelect.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/GroupSelect.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAgB,SAAS,EAAE,MAAM,eAAe,CAAC;AAIvG,UAAU,gBAAgB;IACxB,yBAAyB,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACnD,uBAAuB,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACvD,0BAA0B,EAAE,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;IACzD,SAAS,EAAE,gBAAgB,CAAC;IAC5B,WAAW,EAAE,eAAe,CAAC;IAC7B,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;CACpC;AAED,wBAAgB,WAAW,CAAC,EAC1B,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,EAC1B,SAAS,EACT,WAAW,EACX,OAAO,EACP,eAAe,GAChB,EAAE,gBAAgB,eAmBlB"} \ No newline at end of file diff --git a/dist/vis/sidebar/GroupSelect.js b/dist/vis/sidebar/GroupSelect.js index 0a27e2468..e66ca7848 100644 --- a/dist/vis/sidebar/GroupSelect.js +++ b/dist/vis/sidebar/GroupSelect.js @@ -1,13 +1,11 @@ +import { Select, Stack } from '@mantine/core'; import * as React from 'react'; -import Select from 'react-select'; import { EBarGroupingType, EColumnTypes } from '../interfaces'; import { BarDisplayButtons } from './BarDisplayTypeButtons'; import { BarGroupTypeButtons } from './BarGroupTypeButtons'; -import { formatOptionLabel } from './utils'; export function GroupSelect({ groupColumnSelectCallback, groupTypeSelectCallback, groupDisplaySelectCallback, groupType, displayType, columns, currentSelected, }) { - return (React.createElement(React.Fragment, null, - React.createElement("label", { className: "pt-2 pb-1" }, "Group"), - React.createElement(Select, { isClearable: true, onChange: (e) => groupColumnSelectCallback(e), name: "groupSelect", formatOptionLabel: formatOptionLabel, getOptionLabel: (option) => option.name, getOptionValue: (option) => option.id, options: columns.filter((c) => c.type === EColumnTypes.CATEGORICAL).map((c) => c.info), value: currentSelected || [] }), + return (React.createElement(Stack, { spacing: "sm" }, + React.createElement(Select, { clearable: true, placeholder: "Select Column", label: "Group", onChange: (e) => groupColumnSelectCallback(columns.find((c) => c.info.id === e)?.info), data: columns.filter((c) => c.type === EColumnTypes.CATEGORICAL).map((c) => ({ value: c.info.id, label: c.info.name })), value: currentSelected?.id }), currentSelected ? (React.createElement(BarGroupTypeButtons, { callback: (newGroupType) => groupTypeSelectCallback(newGroupType), currentSelected: groupType })) : null, currentSelected && groupType === EBarGroupingType.STACK ? (React.createElement(BarDisplayButtons, { callback: (display) => groupDisplaySelectCallback(display), currentSelected: displayType })) : null)); } diff --git a/dist/vis/sidebar/GroupSelect.js.map b/dist/vis/sidebar/GroupSelect.js.map index 0f94546d4..0c1551251 100644 --- a/dist/vis/sidebar/GroupSelect.js.map +++ b/dist/vis/sidebar/GroupSelect.js.map @@ -1 +1 @@ -{"version":3,"file":"GroupSelect.js","sourceRoot":"","sources":["../../../src/vis/sidebar/GroupSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EAA+B,gBAAgB,EAAE,YAAY,EAAa,MAAM,eAAe,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAY5C,MAAM,UAAU,WAAW,CAAC,EAC1B,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,EAC1B,SAAS,EACT,WAAW,EACX,OAAO,EACP,eAAe,GACE;IACjB,OAAO,CACL;QACE,+BAAO,SAAS,EAAC,WAAW,YAAc;QAC1C,oBAAC,MAAM,IACL,WAAW,QACX,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAC7C,IAAI,EAAC,aAAa,EAClB,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EACvC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EACrC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACtF,KAAK,EAAE,eAAe,IAAI,EAAE,GAC5B;QACD,eAAe,CAAC,CAAC,CAAC,CACjB,oBAAC,mBAAmB,IAAC,QAAQ,EAAE,CAAC,YAA8B,EAAE,EAAE,CAAC,uBAAuB,CAAC,YAAY,CAAC,EAAE,eAAe,EAAE,SAAS,GAAI,CACzI,CAAC,CAAC,CAAC,IAAI;QACP,eAAe,IAAI,SAAS,KAAK,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CACzD,oBAAC,iBAAiB,IAAC,QAAQ,EAAE,CAAC,OAAwB,EAAE,EAAE,CAAC,0BAA0B,CAAC,OAAO,CAAC,EAAE,eAAe,EAAE,WAAW,GAAI,CACjI,CAAC,CAAC,CAAC,IAAI,CACP,CACJ,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"GroupSelect.js","sourceRoot":"","sources":["../../../src/vis/sidebar/GroupSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAA+B,gBAAgB,EAAE,YAAY,EAAa,MAAM,eAAe,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAY5D,MAAM,UAAU,WAAW,CAAC,EAC1B,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,EAC1B,SAAS,EACT,WAAW,EACX,OAAO,EACP,eAAe,GACE;IACjB,OAAO,CACL,oBAAC,KAAK,IAAC,OAAO,EAAC,IAAI;QACjB,oBAAC,MAAM,IACL,SAAS,QACT,WAAW,EAAC,eAAe,EAC3B,KAAK,EAAC,OAAO,EACb,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EACtF,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EACvH,KAAK,EAAE,eAAe,EAAE,EAAE,GAC1B;QACD,eAAe,CAAC,CAAC,CAAC,CACjB,oBAAC,mBAAmB,IAAC,QAAQ,EAAE,CAAC,YAA8B,EAAE,EAAE,CAAC,uBAAuB,CAAC,YAAY,CAAC,EAAE,eAAe,EAAE,SAAS,GAAI,CACzI,CAAC,CAAC,CAAC,IAAI;QACP,eAAe,IAAI,SAAS,KAAK,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CACzD,oBAAC,iBAAiB,IAAC,QAAQ,EAAE,CAAC,OAAwB,EAAE,EAAE,CAAC,0BAA0B,CAAC,OAAO,CAAC,EAAE,eAAe,EAAE,WAAW,GAAI,CACjI,CAAC,CAAC,CAAC,IAAI,CACF,CACT,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/HexOpacitySwitch.d.ts b/dist/vis/sidebar/HexOpacitySwitch.d.ts new file mode 100644 index 000000000..734c23c20 --- /dev/null +++ b/dist/vis/sidebar/HexOpacitySwitch.d.ts @@ -0,0 +1,8 @@ +/// +interface HexOpacitySwitchProps { + callback: (b: boolean) => void; + currentValue: boolean; +} +export declare function HexOpacitySwitch({ callback, currentValue }: HexOpacitySwitchProps): JSX.Element; +export {}; +//# sourceMappingURL=HexOpacitySwitch.d.ts.map \ No newline at end of file diff --git a/dist/vis/sidebar/HexOpacitySwitch.d.ts.map b/dist/vis/sidebar/HexOpacitySwitch.d.ts.map new file mode 100644 index 000000000..a2ec8d3f3 --- /dev/null +++ b/dist/vis/sidebar/HexOpacitySwitch.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HexOpacitySwitch.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/HexOpacitySwitch.tsx"],"names":[],"mappings":";AAGA,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,qBAAqB,eAEjF"} \ No newline at end of file diff --git a/dist/vis/sidebar/HexOpacitySwitch.js b/dist/vis/sidebar/HexOpacitySwitch.js new file mode 100644 index 000000000..ebbf95a9d --- /dev/null +++ b/dist/vis/sidebar/HexOpacitySwitch.js @@ -0,0 +1,6 @@ +import { Switch } from '@mantine/core'; +import * as React from 'react'; +export function HexOpacitySwitch({ callback, currentValue }) { + return React.createElement(Switch, { checked: currentValue, onChange: (event) => callback(event.currentTarget.checked), label: "Opacity scale" }); +} +//# sourceMappingURL=HexOpacitySwitch.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/HexOpacitySwitch.js.map b/dist/vis/sidebar/HexOpacitySwitch.js.map new file mode 100644 index 000000000..0d0ca231e --- /dev/null +++ b/dist/vis/sidebar/HexOpacitySwitch.js.map @@ -0,0 +1 @@ +{"version":3,"file":"HexOpacitySwitch.js","sourceRoot":"","sources":["../../../src/vis/sidebar/HexOpacitySwitch.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,MAAM,UAAU,gBAAgB,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAyB;IAChF,OAAO,oBAAC,MAAM,IAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,EAAC,eAAe,GAAG,CAAC;AAC7H,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/HexSizeSlider.d.ts b/dist/vis/sidebar/HexSizeSlider.d.ts new file mode 100644 index 000000000..105fbf36a --- /dev/null +++ b/dist/vis/sidebar/HexSizeSlider.d.ts @@ -0,0 +1,8 @@ +/// +interface OpacitySliderProps { + callback: (n: number) => void; + currentValue: number; +} +export declare function HexSizeSlider({ callback, currentValue }: OpacitySliderProps): JSX.Element; +export {}; +//# sourceMappingURL=HexSizeSlider.d.ts.map \ No newline at end of file diff --git a/dist/vis/sidebar/HexSizeSlider.d.ts.map b/dist/vis/sidebar/HexSizeSlider.d.ts.map new file mode 100644 index 000000000..82564110a --- /dev/null +++ b/dist/vis/sidebar/HexSizeSlider.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HexSizeSlider.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/HexSizeSlider.tsx"],"names":[],"mappings":";AAMA,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,kBAAkB,eA8B3E"} \ No newline at end of file diff --git a/dist/vis/sidebar/HexSizeSlider.js b/dist/vis/sidebar/HexSizeSlider.js new file mode 100644 index 000000000..251a11c49 --- /dev/null +++ b/dist/vis/sidebar/HexSizeSlider.js @@ -0,0 +1,22 @@ +import { Box, Slider, Stack, Text } from '@mantine/core'; +import { debounce } from 'lodash'; +import * as React from 'react'; +import { useMemo } from 'react'; +import { useSyncedRef } from '../../hooks'; +export function HexSizeSlider({ callback, currentValue }) { + const syncedCallback = useSyncedRef(callback); + const debouncedCallback = useMemo(() => { + return debounce((n) => syncedCallback.current?.(n), 10); + }, [syncedCallback]); + return (React.createElement(Stack, { spacing: 0, mb: 15 }, + React.createElement(Text, { weight: 500, size: 14 }, "Size"), + React.createElement(Box, { sx: { width: '200px' } }, + React.createElement(Slider, { step: 1, value: currentValue, max: 25, min: 5, marks: [ + { value: 10, label: '10' }, + { value: 15, label: '15' }, + { value: 20, label: '20' }, + ], onChange: (n) => { + debouncedCallback(n); + } })))); +} +//# sourceMappingURL=HexSizeSlider.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/HexSizeSlider.js.map b/dist/vis/sidebar/HexSizeSlider.js.map new file mode 100644 index 000000000..8f0365f97 --- /dev/null +++ b/dist/vis/sidebar/HexSizeSlider.js.map @@ -0,0 +1 @@ +{"version":3,"file":"HexSizeSlider.js","sourceRoot":"","sources":["../../../src/vis/sidebar/HexSizeSlider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO3C,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAsB;IAC1E,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAE9C,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE;QACrC,OAAO,QAAQ,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,OAAO,CACL,oBAAC,KAAK,IAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;QACvB,oBAAC,IAAI,IAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,WAEpB;QACP,oBAAC,GAAG,IAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YACzB,oBAAC,MAAM,IACL,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,EAAE,EACP,GAAG,EAAE,CAAC,EACN,KAAK,EAAE;oBACL,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;oBAC1B,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;oBAC1B,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;iBAC3B,EACD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;oBACd,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBACvB,CAAC,GACD,CACE,CACA,CACT,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/HexSizeSwitch.d.ts b/dist/vis/sidebar/HexSizeSwitch.d.ts new file mode 100644 index 000000000..2f081bce4 --- /dev/null +++ b/dist/vis/sidebar/HexSizeSwitch.d.ts @@ -0,0 +1,8 @@ +/// +interface HexSizeSwitchProps { + callback: (b: boolean) => void; + currentValue: boolean; +} +export declare function HexSizeSwitch({ callback, currentValue }: HexSizeSwitchProps): JSX.Element; +export {}; +//# sourceMappingURL=HexSizeSwitch.d.ts.map \ No newline at end of file diff --git a/dist/vis/sidebar/HexSizeSwitch.d.ts.map b/dist/vis/sidebar/HexSizeSwitch.d.ts.map new file mode 100644 index 000000000..7f1cb60f2 --- /dev/null +++ b/dist/vis/sidebar/HexSizeSwitch.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HexSizeSwitch.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/HexSizeSwitch.tsx"],"names":[],"mappings":";AAGA,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,kBAAkB,eAE3E"} \ No newline at end of file diff --git a/dist/vis/sidebar/HexSizeSwitch.js b/dist/vis/sidebar/HexSizeSwitch.js new file mode 100644 index 000000000..66f2153dc --- /dev/null +++ b/dist/vis/sidebar/HexSizeSwitch.js @@ -0,0 +1,6 @@ +import { Switch } from '@mantine/core'; +import * as React from 'react'; +export function HexSizeSwitch({ callback, currentValue }) { + return React.createElement(Switch, { checked: currentValue, onChange: (event) => callback(event.currentTarget.checked), label: "Size scale" }); +} +//# sourceMappingURL=HexSizeSwitch.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/HexSizeSwitch.js.map b/dist/vis/sidebar/HexSizeSwitch.js.map new file mode 100644 index 000000000..05b1d1743 --- /dev/null +++ b/dist/vis/sidebar/HexSizeSwitch.js.map @@ -0,0 +1 @@ +{"version":3,"file":"HexSizeSwitch.js","sourceRoot":"","sources":["../../../src/vis/sidebar/HexSizeSwitch.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAsB;IAC1E,OAAO,oBAAC,MAAM,IAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,EAAC,YAAY,GAAG,CAAC;AAC1H,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/HexbinOptionSelect.d.ts b/dist/vis/sidebar/HexbinOptionSelect.d.ts new file mode 100644 index 000000000..030aafb4d --- /dev/null +++ b/dist/vis/sidebar/HexbinOptionSelect.d.ts @@ -0,0 +1,9 @@ +/// +import { EHexbinOptions } from '../interfaces'; +interface HexbinOptionSelectProps { + callback: (c: EHexbinOptions) => void; + currentSelected: EHexbinOptions; +} +export declare function HexbinOptionSelect({ callback, currentSelected }: HexbinOptionSelectProps): JSX.Element; +export {}; +//# sourceMappingURL=HexbinOptionSelect.d.ts.map \ No newline at end of file diff --git a/dist/vis/sidebar/HexbinOptionSelect.d.ts.map b/dist/vis/sidebar/HexbinOptionSelect.d.ts.map new file mode 100644 index 000000000..5da23033a --- /dev/null +++ b/dist/vis/sidebar/HexbinOptionSelect.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HexbinOptionSelect.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/HexbinOptionSelect.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IACtC,eAAe,EAAE,cAAc,CAAC;CACjC;AAED,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,uBAAuB,eAcxF"} \ No newline at end of file diff --git a/dist/vis/sidebar/HexbinOptionSelect.js b/dist/vis/sidebar/HexbinOptionSelect.js new file mode 100644 index 000000000..77c2e84e6 --- /dev/null +++ b/dist/vis/sidebar/HexbinOptionSelect.js @@ -0,0 +1,13 @@ +import { Select } from '@mantine/core'; +import * as React from 'react'; +import { I18nextManager } from '../../i18n/I18nextManager'; +import { EHexbinOptions } from '../interfaces'; +export function HexbinOptionSelect({ callback, currentSelected }) { + const options = [ + { value: EHexbinOptions.COLOR, label: EHexbinOptions.COLOR }, + { value: EHexbinOptions.BINS, label: EHexbinOptions.BINS }, + { value: EHexbinOptions.PIE, label: EHexbinOptions.PIE }, + ]; + return (React.createElement(Select, { label: I18nextManager.getInstance().i18n.t('tdp:core.vis.hexbinOptions'), onChange: (e) => callback(e), data: options, value: currentSelected })); +} +//# sourceMappingURL=HexbinOptionSelect.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/HexbinOptionSelect.js.map b/dist/vis/sidebar/HexbinOptionSelect.js.map new file mode 100644 index 000000000..07b533728 --- /dev/null +++ b/dist/vis/sidebar/HexbinOptionSelect.js.map @@ -0,0 +1 @@ +{"version":3,"file":"HexbinOptionSelect.js","sourceRoot":"","sources":["../../../src/vis/sidebar/HexbinOptionSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAO/C,MAAM,UAAU,kBAAkB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAA2B;IACvF,MAAM,OAAO,GAAG;QACd,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE;QAC5D,EAAE,KAAK,EAAE,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,IAAI,EAAE;QAC1D,EAAE,KAAK,EAAE,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,cAAc,CAAC,GAAG,EAAE;KACzD,CAAC;IACF,OAAO,CACL,oBAAC,MAAM,IACL,KAAK,EAAE,cAAc,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,EACxE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAmB,CAAC,EAC9C,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,eAAe,GACtB,CACH,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/MultiplesSelect.d.ts b/dist/vis/sidebar/MultiplesSelect.d.ts deleted file mode 100644 index 656b4773c..000000000 --- a/dist/vis/sidebar/MultiplesSelect.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/// -import { ColumnInfo, VisColumn } from '../interfaces'; -interface MultiplesSelectProps { - callback: (c: ColumnInfo) => void; - columns: VisColumn[]; - currentSelected: ColumnInfo | null; -} -export declare function MultiplesSelect({ callback, columns, currentSelected }: MultiplesSelectProps): JSX.Element; -export {}; -//# sourceMappingURL=MultiplesSelect.d.ts.map \ No newline at end of file diff --git a/dist/vis/sidebar/MultiplesSelect.d.ts.map b/dist/vis/sidebar/MultiplesSelect.d.ts.map deleted file mode 100644 index 65e7bd40f..000000000 --- a/dist/vis/sidebar/MultiplesSelect.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"MultiplesSelect.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/MultiplesSelect.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAgB,SAAS,EAAE,MAAM,eAAe,CAAC;AAGpE,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;CACpC;AAED,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,oBAAoB,eAgB3F"} \ No newline at end of file diff --git a/dist/vis/sidebar/MultiplesSelect.js b/dist/vis/sidebar/MultiplesSelect.js deleted file mode 100644 index 3196e8187..000000000 --- a/dist/vis/sidebar/MultiplesSelect.js +++ /dev/null @@ -1,10 +0,0 @@ -import * as React from 'react'; -import Select from 'react-select'; -import { EColumnTypes } from '../interfaces'; -import { formatOptionLabel } from './utils'; -export function MultiplesSelect({ callback, columns, currentSelected }) { - return (React.createElement(React.Fragment, null, - React.createElement("label", { className: "pt-2 pb-1" }, "Multiples"), - React.createElement(Select, { isClearable: true, onChange: (e) => callback(e), name: "multiplesSelect", formatOptionLabel: formatOptionLabel, getOptionLabel: (option) => option.name, getOptionValue: (option) => option.id, options: columns.filter((c) => c.type === EColumnTypes.CATEGORICAL).map((c) => c.info), value: currentSelected || [] }))); -} -//# sourceMappingURL=MultiplesSelect.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/MultiplesSelect.js.map b/dist/vis/sidebar/MultiplesSelect.js.map deleted file mode 100644 index 713a0af0e..000000000 --- a/dist/vis/sidebar/MultiplesSelect.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"MultiplesSelect.js","sourceRoot":"","sources":["../../../src/vis/sidebar/MultiplesSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EAAc,YAAY,EAAa,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAQ5C,MAAM,UAAU,eAAe,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAwB;IAC1F,OAAO,CACL;QACE,+BAAO,SAAS,EAAC,WAAW,gBAAkB;QAC9C,oBAAC,MAAM,IACL,WAAW,QACX,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC5B,IAAI,EAAC,iBAAiB,EACtB,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EACvC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EACrC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACtF,KAAK,EAAE,eAAe,IAAI,EAAE,GAC5B,CACD,CACJ,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/NumericalColorButtons.d.ts.map b/dist/vis/sidebar/NumericalColorButtons.d.ts.map index 0b5013e51..331b1b8b1 100644 --- a/dist/vis/sidebar/NumericalColorButtons.d.ts.map +++ b/dist/vis/sidebar/NumericalColorButtons.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"NumericalColorButtons.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/NumericalColorButtons.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEzD,UAAU,0BAA0B;IAClC,QAAQ,EAAE,CAAC,CAAC,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAChD,eAAe,EAAE,wBAAwB,CAAC;CAC3C;AAED,wBAAgB,qBAAqB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,0BAA0B,eA0D9F"} \ No newline at end of file +{"version":3,"file":"NumericalColorButtons.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/NumericalColorButtons.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEzD,UAAU,0BAA0B;IAClC,QAAQ,EAAE,CAAC,CAAC,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAChD,eAAe,EAAE,wBAAwB,CAAC;CAC3C;AAED,wBAAgB,qBAAqB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,0BAA0B,eAgC9F"} \ No newline at end of file diff --git a/dist/vis/sidebar/NumericalColorButtons.js b/dist/vis/sidebar/NumericalColorButtons.js index 7f9312530..fd8076bb6 100644 --- a/dist/vis/sidebar/NumericalColorButtons.js +++ b/dist/vis/sidebar/NumericalColorButtons.js @@ -1,20 +1,22 @@ +import { Group, SegmentedControl } from '@mantine/core'; import * as React from 'react'; import { ENumericalColorScaleType } from '../interfaces'; export function NumericalColorButtons({ callback, currentSelected }) { const sequentialColors = ['#002245', '#214066', '#3e618a', '#5c84af', '#83a8c9', '#a9cfe4', '#cff6ff']; const divergentColors = ['#337ab7', '#7496c1', '#a5b4ca', '#d3d3d3', '#e5b19d', '#ec8e6a', '#ec6836']; - return (React.createElement(React.Fragment, null, - React.createElement("div", { key: "numericalColorChooserRadio", className: "btn-group w-100 px-2 pt-2", role: "group", "aria-label": "Basic outlined example" }, - React.createElement("input", { checked: currentSelected === ENumericalColorScaleType.SEQUENTIAL, onChange: (e) => callback(e.currentTarget.value), value: ENumericalColorScaleType.SEQUENTIAL, type: "checkbox", className: "btn-check", id: `formButton${ENumericalColorScaleType.SEQUENTIAL}`, autoComplete: "off" }), - React.createElement("label", { style: { zIndex: 0 }, className: "btn btn-outline-primary w-100", htmlFor: `formButton${ENumericalColorScaleType.SEQUENTIAL}`, title: "Sequential Color Scale" }, ENumericalColorScaleType.SEQUENTIAL), - React.createElement("input", { checked: currentSelected === ENumericalColorScaleType.DIVERGENT, onChange: (e) => callback(e.currentTarget.value), value: ENumericalColorScaleType.DIVERGENT, type: "checkbox", className: "btn-check", id: `formButton${ENumericalColorScaleType.DIVERGENT}`, autoComplete: "off" }), - React.createElement("label", { style: { zIndex: 0 }, className: "btn btn-outline-primary w-100", htmlFor: `formButton${ENumericalColorScaleType.DIVERGENT}`, title: "Divergent Color Scale" }, ENumericalColorScaleType.DIVERGENT)), - React.createElement("div", { className: "d-flex w-100 px-2 pt-1 pb-3" }, - React.createElement("div", { className: "d-flex w-100 mx-2" }, sequentialColors.map((d) => { - return React.createElement("span", { key: `colorScale ${d}`, className: "w-100", style: { border: '1px solid lightgrey', background: `${d}`, height: '1rem' } }); - })), - React.createElement("div", { className: "d-flex w-100 mx-2" }, divergentColors.map((d) => { - return React.createElement("span", { key: `colorScale ${d}`, className: "w-100", style: { border: '1px solid lightgrey', background: `${d}`, height: '1rem' } }); - }))))); + return (React.createElement(SegmentedControl, { value: currentSelected, onChange: callback, data: [ + { + label: (React.createElement(Group, { spacing: 0, noWrap: true }, divergentColors.map((d) => { + return React.createElement("span", { key: `colorScale ${d}`, className: "w-100", style: { border: '1px solid lightgrey', background: `${d}`, height: '1rem' } }); + }))), + value: ENumericalColorScaleType.DIVERGENT, + }, + { + label: (React.createElement(Group, { spacing: 0, noWrap: true }, sequentialColors.map((d) => { + return React.createElement("span", { key: `colorScale ${d}`, className: "w-100", style: { border: '1px solid lightgrey', background: `${d}`, height: '1rem' } }); + }))), + value: ENumericalColorScaleType.SEQUENTIAL, + }, + ] })); } //# sourceMappingURL=NumericalColorButtons.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/NumericalColorButtons.js.map b/dist/vis/sidebar/NumericalColorButtons.js.map index 98ec694f8..6e13501bb 100644 --- a/dist/vis/sidebar/NumericalColorButtons.js.map +++ b/dist/vis/sidebar/NumericalColorButtons.js.map @@ -1 +1 @@ -{"version":3,"file":"NumericalColorButtons.js","sourceRoot":"","sources":["../../../src/vis/sidebar/NumericalColorButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAOzD,MAAM,UAAU,qBAAqB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAA8B;IAC7F,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACvG,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAEtG,OAAO,CACL;QACE,6BAAK,GAAG,EAAC,4BAA4B,EAAC,SAAS,EAAC,2BAA2B,EAAC,IAAI,EAAC,OAAO,gBAAY,wBAAwB;YAC1H,+BACE,OAAO,EAAE,eAAe,KAAK,wBAAwB,CAAC,UAAU,EAChE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,KAAiC,CAAC,EAC5E,KAAK,EAAE,wBAAwB,CAAC,UAAU,EAC1C,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,WAAW,EACrB,EAAE,EAAE,aAAa,wBAAwB,CAAC,UAAU,EAAE,EACtD,YAAY,EAAC,KAAK,GAClB;YACF,+BACE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EACpB,SAAS,EAAC,+BAA+B,EACzC,OAAO,EAAE,aAAa,wBAAwB,CAAC,UAAU,EAAE,EAC3D,KAAK,EAAC,wBAAwB,IAE7B,wBAAwB,CAAC,UAAU,CAC9B;YAER,+BACE,OAAO,EAAE,eAAe,KAAK,wBAAwB,CAAC,SAAS,EAC/D,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,KAAiC,CAAC,EAC5E,KAAK,EAAE,wBAAwB,CAAC,SAAS,EACzC,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,WAAW,EACrB,EAAE,EAAE,aAAa,wBAAwB,CAAC,SAAS,EAAE,EACrD,YAAY,EAAC,KAAK,GAClB;YACF,+BACE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EACpB,SAAS,EAAC,+BAA+B,EACzC,OAAO,EAAE,aAAa,wBAAwB,CAAC,SAAS,EAAE,EAC1D,KAAK,EAAC,uBAAuB,IAE5B,wBAAwB,CAAC,SAAS,CAC7B,CACJ;QACN,6BAAK,SAAS,EAAC,6BAA6B;YAC1C,6BAAK,SAAS,EAAC,mBAAmB,IAC/B,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC1B,OAAO,8BAAM,GAAG,EAAE,cAAc,CAAC,EAAE,EAAE,SAAS,EAAC,OAAO,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAI,CAAC;YAC1I,CAAC,CAAC,CACE;YAEN,6BAAK,SAAS,EAAC,mBAAmB,IAC/B,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzB,OAAO,8BAAM,GAAG,EAAE,cAAc,CAAC,EAAE,EAAE,SAAS,EAAC,OAAO,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAI,CAAC;YAC1I,CAAC,CAAC,CACE,CACF,CACL,CACJ,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"NumericalColorButtons.js","sourceRoot":"","sources":["../../../src/vis/sidebar/NumericalColorButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAOzD,MAAM,UAAU,qBAAqB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAA8B;IAC7F,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACvG,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAEtG,OAAO,CACL,oBAAC,gBAAgB,IACf,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE;YACJ;gBACE,KAAK,EAAE,CACL,oBAAC,KAAK,IAAC,OAAO,EAAE,CAAC,EAAE,MAAM,UACtB,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACzB,OAAO,8BAAM,GAAG,EAAE,cAAc,CAAC,EAAE,EAAE,SAAS,EAAC,OAAO,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAI,CAAC;gBAC1I,CAAC,CAAC,CACI,CACT;gBACD,KAAK,EAAE,wBAAwB,CAAC,SAAS;aAC1C;YACD;gBACE,KAAK,EAAE,CACL,oBAAC,KAAK,IAAC,OAAO,EAAE,CAAC,EAAE,MAAM,UACtB,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC1B,OAAO,8BAAM,GAAG,EAAE,cAAc,CAAC,EAAE,EAAE,SAAS,EAAC,OAAO,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAI,CAAC;gBAC1I,CAAC,CAAC,CACI,CACT;gBACD,KAAK,EAAE,wBAAwB,CAAC,UAAU;aAC3C;SACF,GACD,CACH,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/NumericalColumnSelect.d.ts.map b/dist/vis/sidebar/NumericalColumnSelect.d.ts.map index ab63dfaff..3b3264b94 100644 --- a/dist/vis/sidebar/NumericalColumnSelect.d.ts.map +++ b/dist/vis/sidebar/NumericalColumnSelect.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"NumericalColumnSelect.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/NumericalColumnSelect.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,UAAU,EAAgB,SAAS,EAAE,MAAM,eAAe,CAAC;AAGpE,UAAU,0BAA0B;IAClC,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IACpC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,eAAe,EAAE,UAAU,EAAE,CAAC;CAC/B;AAwBD,wBAAgB,qBAAqB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,0BAA0B,eAqCvG"} \ No newline at end of file +{"version":3,"file":"NumericalColumnSelect.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/NumericalColumnSelect.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAgB,SAAS,EAAE,MAAM,eAAe,CAAC;AAEpE,UAAU,0BAA0B;IAClC,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IACpC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,eAAe,EAAE,UAAU,EAAE,CAAC;CAC/B;AAED,wBAAgB,qBAAqB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,0BAA0B,eAiBvG"} \ No newline at end of file diff --git a/dist/vis/sidebar/NumericalColumnSelect.js b/dist/vis/sidebar/NumericalColumnSelect.js index 741d02aa4..100736dbf 100644 --- a/dist/vis/sidebar/NumericalColumnSelect.js +++ b/dist/vis/sidebar/NumericalColumnSelect.js @@ -1,41 +1,12 @@ import * as React from 'react'; -import Select, { components } from 'react-select'; -import { SortableContainer, SortableElement, SortableHandle } from 'react-sortable-hoc'; +import { MultiSelect } from '@mantine/core'; import { EColumnTypes } from '../interfaces'; -import { formatOptionLabel } from './utils'; -function arrayMove(array, from, to) { - const slicedArray = array.slice(); - slicedArray.splice(to < 0 ? array.length + to : to, 0, slicedArray.splice(from, 1)[0]); - return slicedArray; -} -const SortableMultiValue = SortableElement((props) => { - // this prevents the menu from being opened/closed when the user clicks - // on a value to begin dragging it. ideally, detecting a click (instead of - // a drag) would still focus the control and toggle the menu - const onMouseDown = (e) => { - e.preventDefault(); - e.stopPropagation(); - }; - const innerProps = { ...props.innerProps, onMouseDown }; - return React.createElement(components.MultiValue, { ...props, innerProps: innerProps }); -}); -const SortableMultiValueLabel = SortableHandle((props) => React.createElement(components.MultiValueLabel, { ...props })); -const SortableSelect = SortableContainer(Select); export function NumericalColumnSelect({ callback, columns, currentSelected }) { const selectNumOptions = React.useMemo(() => { - return columns.filter((c) => c.type === EColumnTypes.NUMERICAL).map((c) => c.info); + return columns.filter((c) => c.type === EColumnTypes.NUMERICAL).map((c) => ({ value: c.info.id, label: c.info.name })); }, [columns]); - const onSortEnd = ({ oldIndex, newIndex }) => { - const newValue = arrayMove(currentSelected, oldIndex, newIndex); - callback(newValue); - }; - return (React.createElement(React.Fragment, null, - React.createElement("label", { className: "pt-2 pb-1" }, "Numerical Columns"), - React.createElement(SortableSelect, { useDragHandle: true, axis: "xy", onSortEnd: onSortEnd, distance: 4, getHelperDimensions: ({ node }) => node.getBoundingClientRect(), closeMenuOnSelect: false, isMulti: true, formatOptionLabel: formatOptionLabel, getOptionLabel: (option) => option.name, getOptionValue: (option) => option.id, onChange: (e) => { - callback(e.map((c) => c)); - }, components: { - MultiValue: SortableMultiValue, - MultiValueLabel: SortableMultiValueLabel, - }, name: "numColumns", options: selectNumOptions, value: currentSelected }))); + return (React.createElement(MultiSelect, { clearable: true, label: "Numerical columns", onChange: (e) => { + callback(columns.filter((c) => e.includes(c.info.id)).map((c) => c.info)); + }, name: "numColumns", data: selectNumOptions, value: currentSelected.map((c) => c.id) })); } //# sourceMappingURL=NumericalColumnSelect.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/NumericalColumnSelect.js.map b/dist/vis/sidebar/NumericalColumnSelect.js.map index 41d04aaca..0d41c18bd 100644 --- a/dist/vis/sidebar/NumericalColumnSelect.js.map +++ b/dist/vis/sidebar/NumericalColumnSelect.js.map @@ -1 +1 @@ -{"version":3,"file":"NumericalColumnSelect.js","sourceRoot":"","sources":["../../../src/vis/sidebar/NumericalColumnSelect.tsx"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"NumericalColumnSelect.js","sourceRoot":"","sources":["../../../src/vis/sidebar/NumericalColumnSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAc,YAAY,EAAa,MAAM,eAAe,CAAC;AAQpE,MAAM,UAAU,qBAAqB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAA8B;IACtG,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC1C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACzH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACL,oBAAC,WAAW,IACV,SAAS,QACT,KAAK,EAAC,mBAAmB,EACzB,QAAQ,EAAE,CAAC,CAAW,EAAE,EAAE;YACxB,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5E,CAAC,EACD,IAAI,EAAC,YAAY,EACjB,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACvC,CACH,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/OpacitySlider.d.ts.map b/dist/vis/sidebar/OpacitySlider.d.ts.map index bf07359dc..dad0e7484 100644 --- a/dist/vis/sidebar/OpacitySlider.d.ts.map +++ b/dist/vis/sidebar/OpacitySlider.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"OpacitySlider.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/OpacitySlider.tsx"],"names":[],"mappings":";AAEA,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,kBAAkB,eAkB3E"} \ No newline at end of file +{"version":3,"file":"OpacitySlider.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/OpacitySlider.tsx"],"names":[],"mappings":";AAOA,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,kBAAkB,eA8B3E"} \ No newline at end of file diff --git a/dist/vis/sidebar/OpacitySlider.js b/dist/vis/sidebar/OpacitySlider.js index 73bf69a6e..b9f41a35b 100644 --- a/dist/vis/sidebar/OpacitySlider.js +++ b/dist/vis/sidebar/OpacitySlider.js @@ -1,7 +1,22 @@ +import { Box, Slider, Stack, Text } from '@mantine/core'; +import { debounce } from 'lodash'; +import { useMemo } from 'react'; import * as React from 'react'; +import { useSyncedRef } from '../../hooks'; export function OpacitySlider({ callback, currentValue }) { - return (React.createElement("div", { className: "ps-2 pt-0 m-0" }, - React.createElement("label", { htmlFor: "alphaSlider", className: "form-label m-0 p-0" }, "Opacity"), - React.createElement("input", { type: "range", onChange: (e) => callback(+e.currentTarget.value), className: "form-range", value: currentValue, min: "=0", max: "1", step: ".1", id: "alphaSlider" }))); + const syncedCallback = useSyncedRef(callback); + const debouncedCallback = useMemo(() => { + return debounce((n) => syncedCallback.current?.(n), 10); + }, [syncedCallback]); + return (React.createElement(Stack, { spacing: 0 }, + React.createElement(Text, { weight: 500, size: 14 }, "Opacity"), + React.createElement(Box, { sx: { width: '200px' } }, + React.createElement(Slider, { step: 0.05, value: +currentValue.toFixed(2), max: 1, min: 0, marks: [ + { value: 0.2, label: '20%' }, + { value: 0.5, label: '50%' }, + { value: 0.8, label: '80%' }, + ], onChange: (n) => { + debouncedCallback(n); + } })))); } //# sourceMappingURL=OpacitySlider.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/OpacitySlider.js.map b/dist/vis/sidebar/OpacitySlider.js.map index 1e958d3b2..3edd26396 100644 --- a/dist/vis/sidebar/OpacitySlider.js.map +++ b/dist/vis/sidebar/OpacitySlider.js.map @@ -1 +1 @@ -{"version":3,"file":"OpacitySlider.js","sourceRoot":"","sources":["../../../src/vis/sidebar/OpacitySlider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAsB;IAC1E,OAAO,CACL,6BAAK,SAAS,EAAC,eAAe;QAC5B,+BAAO,OAAO,EAAC,aAAa,EAAC,SAAS,EAAC,oBAAoB,cAEnD;QACR,+BACE,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,EACjD,SAAS,EAAC,YAAY,EACtB,KAAK,EAAE,YAAY,EACnB,GAAG,EAAC,IAAI,EACR,GAAG,EAAC,GAAG,EACP,IAAI,EAAC,IAAI,EACT,EAAE,EAAC,aAAa,GAChB,CACE,CACP,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"OpacitySlider.js","sourceRoot":"","sources":["../../../src/vis/sidebar/OpacitySlider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO3C,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAsB;IAC1E,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAE9C,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE;QACrC,OAAO,QAAQ,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,OAAO,CACL,oBAAC,KAAK,IAAC,OAAO,EAAE,CAAC;QACf,oBAAC,IAAI,IAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,cAEpB;QACP,oBAAC,GAAG,IAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YACzB,oBAAC,MAAM,IACL,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAC/B,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,CAAC,EACN,KAAK,EAAE;oBACL,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;oBAC5B,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;oBAC5B,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;iBAC7B,EACD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;oBACd,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBACvB,CAAC,GACD,CACE,CACA,CACT,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/ShapeSelect.d.ts b/dist/vis/sidebar/ShapeSelect.d.ts deleted file mode 100644 index 64c274d10..000000000 --- a/dist/vis/sidebar/ShapeSelect.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/// -import { ColumnInfo, VisColumn } from '../interfaces'; -interface ShapeSelectProps { - callback: (shape: ColumnInfo) => void; - columns: VisColumn[]; - currentSelected: ColumnInfo | null; -} -export declare function ShapeSelect({ callback, columns, currentSelected }: ShapeSelectProps): JSX.Element; -export {}; -//# sourceMappingURL=ShapeSelect.d.ts.map \ No newline at end of file diff --git a/dist/vis/sidebar/ShapeSelect.d.ts.map b/dist/vis/sidebar/ShapeSelect.d.ts.map deleted file mode 100644 index 0003a7287..000000000 --- a/dist/vis/sidebar/ShapeSelect.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ShapeSelect.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/ShapeSelect.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAgB,SAAS,EAAE,MAAM,eAAe,CAAC;AAGpE,UAAU,gBAAgB;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACtC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;CACpC;AAED,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,gBAAgB,eAgBnF"} \ No newline at end of file diff --git a/dist/vis/sidebar/ShapeSelect.js b/dist/vis/sidebar/ShapeSelect.js deleted file mode 100644 index 952b95e98..000000000 --- a/dist/vis/sidebar/ShapeSelect.js +++ /dev/null @@ -1,10 +0,0 @@ -import * as React from 'react'; -import Select from 'react-select'; -import { EColumnTypes } from '../interfaces'; -import { formatOptionLabel } from './utils'; -export function ShapeSelect({ callback, columns, currentSelected }) { - return (React.createElement(React.Fragment, null, - React.createElement("label", { className: "pt-2 pb-1" }, "Shape"), - React.createElement(Select, { isClearable: true, onChange: (e) => callback(e), name: "shapeSelect", formatOptionLabel: formatOptionLabel, getOptionLabel: (option) => option.name, getOptionValue: (option) => option.id, options: columns.filter((c) => c.type === EColumnTypes.CATEGORICAL).map((c) => c.info), value: currentSelected || [] }))); -} -//# sourceMappingURL=ShapeSelect.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/ShapeSelect.js.map b/dist/vis/sidebar/ShapeSelect.js.map deleted file mode 100644 index 3db3279b0..000000000 --- a/dist/vis/sidebar/ShapeSelect.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ShapeSelect.js","sourceRoot":"","sources":["../../../src/vis/sidebar/ShapeSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EAAc,YAAY,EAAa,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAQ5C,MAAM,UAAU,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAoB;IAClF,OAAO,CACL;QACE,+BAAO,SAAS,EAAC,WAAW,YAAc;QAC1C,oBAAC,MAAM,IACL,WAAW,QACX,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC5B,IAAI,EAAC,aAAa,EAClB,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EACvC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EACrC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACtF,KAAK,EAAE,eAAe,IAAI,EAAE,GAC5B,CACD,CACJ,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/SingleColumnSelect.d.ts.map b/dist/vis/sidebar/SingleColumnSelect.d.ts.map index 0cd214fde..91c9e02ad 100644 --- a/dist/vis/sidebar/SingleColumnSelect.d.ts.map +++ b/dist/vis/sidebar/SingleColumnSelect.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"SingleColumnSelect.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/SingleColumnSelect.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAGpE,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,eAAe,EAAE,UAAU,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,EAAE,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,uBAAuB,eAoB9G"} \ No newline at end of file +{"version":3,"file":"SingleColumnSelect.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/SingleColumnSelect.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEpE,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,eAAe,EAAE,UAAU,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,EAAE,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,uBAAuB,eAgB9G"} \ No newline at end of file diff --git a/dist/vis/sidebar/SingleColumnSelect.js b/dist/vis/sidebar/SingleColumnSelect.js index 23dd1190c..34c1ad5e2 100644 --- a/dist/vis/sidebar/SingleColumnSelect.js +++ b/dist/vis/sidebar/SingleColumnSelect.js @@ -1,12 +1,9 @@ +import { Select } from '@mantine/core'; import * as React from 'react'; -import Select from 'react-select'; -import { formatOptionLabel } from './utils'; export function SingleColumnSelect({ callback, columns, currentSelected, label, type }) { - const selectCatOptions = React.useMemo(() => { - return columns.filter((c) => type.includes(c.type)).map((c) => c.info); + const filteredColumnsByType = React.useMemo(() => { + return columns.filter((c) => type.includes(c.type)).map((c) => ({ value: c.info.id, label: c.info.name })); }, [columns, type]); - return (React.createElement(React.Fragment, null, - React.createElement("label", { className: "pt-2 pb-1" }, label), - React.createElement(Select, { closeMenuOnSelect: true, formatOptionLabel: formatOptionLabel, getOptionLabel: (option) => option.name, getOptionValue: (option) => option.id, onChange: (e) => callback(e), name: "numColumns", options: selectCatOptions, value: selectCatOptions.filter((c) => currentSelected?.id === c.id) }))); + return (React.createElement(Select, { clearable: true, placeholder: "Select column", label: label, onChange: (e) => callback(columns.find((c) => c.info.id === e)?.info), name: "numColumns", data: filteredColumnsByType, value: currentSelected?.id })); } //# sourceMappingURL=SingleColumnSelect.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/SingleColumnSelect.js.map b/dist/vis/sidebar/SingleColumnSelect.js.map index 3ead91b62..3278d612b 100644 --- a/dist/vis/sidebar/SingleColumnSelect.js.map +++ b/dist/vis/sidebar/SingleColumnSelect.js.map @@ -1 +1 @@ -{"version":3,"file":"SingleColumnSelect.js","sourceRoot":"","sources":["../../../src/vis/sidebar/SingleColumnSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,MAAM,MAAM,cAAc,CAAC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAU5C,MAAM,UAAU,kBAAkB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAA2B;IAC7G,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC1C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzE,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAEpB,OAAO,CACL;QACE,+BAAO,SAAS,EAAC,WAAW,IAAE,KAAK,CAAS;QAC5C,oBAAC,MAAM,IACL,iBAAiB,QACjB,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EACvC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EACrC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC5B,IAAI,EAAC,YAAY,EACjB,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,GACnE,CACD,CACJ,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"SingleColumnSelect.js","sourceRoot":"","sources":["../../../src/vis/sidebar/SingleColumnSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,MAAM,UAAU,kBAAkB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAA2B;IAC7G,MAAM,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC/C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7G,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAEpB,OAAO,CACL,oBAAC,MAAM,IACL,SAAS,QACT,WAAW,EAAC,eAAe,EAC3B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EACrE,IAAI,EAAC,YAAY,EACjB,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE,eAAe,EAAE,EAAE,GAC1B,CACH,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/ViolinOverlayButtons.d.ts.map b/dist/vis/sidebar/ViolinOverlayButtons.d.ts.map index b78f22f95..2386ebced 100644 --- a/dist/vis/sidebar/ViolinOverlayButtons.d.ts.map +++ b/dist/vis/sidebar/ViolinOverlayButtons.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"ViolinOverlayButtons.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/ViolinOverlayButtons.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IACtC,eAAe,EAAE,cAAc,CAAC;CACjC;AAED,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,kBAAkB,eA2BrF"} \ No newline at end of file +{"version":3,"file":"ViolinOverlayButtons.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/ViolinOverlayButtons.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IACtC,eAAe,EAAE,cAAc,CAAC;CACjC;AAED,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,kBAAkB,eAkBrF"} \ No newline at end of file diff --git a/dist/vis/sidebar/ViolinOverlayButtons.js b/dist/vis/sidebar/ViolinOverlayButtons.js index bce20fcf5..1fad405cc 100644 --- a/dist/vis/sidebar/ViolinOverlayButtons.js +++ b/dist/vis/sidebar/ViolinOverlayButtons.js @@ -1,13 +1,13 @@ +import { Container, SegmentedControl, Stack, Text } from '@mantine/core'; import * as React from 'react'; import { EViolinOverlay } from '../interfaces'; export function ViolinOverlayButtons({ callback, currentSelected }) { - const options = [EViolinOverlay.NONE, EViolinOverlay.BOX, EViolinOverlay.STRIP]; - return (React.createElement(React.Fragment, null, - React.createElement("label", { className: "px-2 pt-3 pb-1" }, "Overlay"), - React.createElement("div", { key: "buttonGroupFilter", className: "btn-group w-100 px-2 pt-0", role: "group", "aria-label": "Basic outlined example" }, options.map((opt) => { - return (React.createElement(React.Fragment, { key: `radioButtonsFilter${opt}` }, - React.createElement("input", { checked: currentSelected === opt, onChange: (e) => callback(e.currentTarget.value), value: opt, type: "checkbox", className: "btn-check", id: `formButton${opt}`, autoComplete: "off" }), - React.createElement("label", { style: { zIndex: 0 }, className: "btn btn-outline-primary w-100", htmlFor: `formButton${opt}` }, opt))); - })))); + return (React.createElement(Container, { p: 0, fluid: true, sx: { width: '100%' } }, + React.createElement(Stack, { spacing: 0 }, + React.createElement(Text, { weight: 500, size: 14 }, "Overlay"), + React.createElement(SegmentedControl, { value: currentSelected, onChange: callback, data: [ + { label: EViolinOverlay.NONE, value: EViolinOverlay.NONE }, + { label: EViolinOverlay.BOX, value: EViolinOverlay.BOX }, + ] })))); } //# sourceMappingURL=ViolinOverlayButtons.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/ViolinOverlayButtons.js.map b/dist/vis/sidebar/ViolinOverlayButtons.js.map index 6889c863b..8d7a8324b 100644 --- a/dist/vis/sidebar/ViolinOverlayButtons.js.map +++ b/dist/vis/sidebar/ViolinOverlayButtons.js.map @@ -1 +1 @@ -{"version":3,"file":"ViolinOverlayButtons.js","sourceRoot":"","sources":["../../../src/vis/sidebar/ViolinOverlayButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAO/C,MAAM,UAAU,oBAAoB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAsB;IACpF,MAAM,OAAO,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,GAAG,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;IAChF,OAAO,CACL;QACE,+BAAO,SAAS,EAAC,gBAAgB,cAAgB;QACjD,6BAAK,GAAG,EAAC,mBAAmB,EAAC,SAAS,EAAC,2BAA2B,EAAC,IAAI,EAAC,OAAO,gBAAY,wBAAwB,IAChH,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACnB,OAAO,CACL,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,qBAAqB,GAAG,EAAE;gBAC7C,+BACE,OAAO,EAAE,eAAe,KAAK,GAAG,EAChC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,KAAuB,CAAC,EAClE,KAAK,EAAE,GAAG,EACV,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,WAAW,EACrB,EAAE,EAAE,aAAa,GAAG,EAAE,EACtB,YAAY,EAAC,KAAK,GAClB;gBACF,+BAAO,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,SAAS,EAAC,+BAA+B,EAAC,OAAO,EAAE,aAAa,GAAG,EAAE,IAC/F,GAAG,CACE,CACO,CAClB,CAAC;QACJ,CAAC,CAAC,CACE,CACL,CACJ,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"ViolinOverlayButtons.js","sourceRoot":"","sources":["../../../src/vis/sidebar/ViolinOverlayButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAO/C,MAAM,UAAU,oBAAoB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAsB;IACpF,OAAO,CACL,oBAAC,SAAS,IAAC,CAAC,EAAE,CAAC,EAAE,KAAK,QAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QAC1C,oBAAC,KAAK,IAAC,OAAO,EAAE,CAAC;YACf,oBAAC,IAAI,IAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,cAEpB;YACP,oBAAC,gBAAgB,IACf,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE;oBACJ,EAAE,KAAK,EAAE,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,IAAI,EAAE;oBAC1D,EAAE,KAAK,EAAE,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,cAAc,CAAC,GAAG,EAAE;iBACzD,GACD,CACI,CACE,CACb,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/VisTypeSelect.d.ts.map b/dist/vis/sidebar/VisTypeSelect.d.ts.map index 88a9289a7..acb0970c6 100644 --- a/dist/vis/sidebar/VisTypeSelect.d.ts.map +++ b/dist/vis/sidebar/VisTypeSelect.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"VisTypeSelect.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/VisTypeSelect.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAe,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEjE,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,CAAC,CAAC,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC3C,eAAe,EAAE,mBAAmB,CAAC;CACtC;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,kBAAkB,eAmB9E"} \ No newline at end of file +{"version":3,"file":"VisTypeSelect.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/VisTypeSelect.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAe,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEjE,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,CAAC,CAAC,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC3C,eAAe,EAAE,mBAAmB,CAAC;CACtC;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,kBAAkB,eAgB9E"} \ No newline at end of file diff --git a/dist/vis/sidebar/VisTypeSelect.js b/dist/vis/sidebar/VisTypeSelect.js index 0ca1bd993..30f91b42b 100644 --- a/dist/vis/sidebar/VisTypeSelect.js +++ b/dist/vis/sidebar/VisTypeSelect.js @@ -1,16 +1,14 @@ +import { Select } from '@mantine/core'; import * as React from 'react'; -import Select from 'react-select'; import { allVisTypes } from '../interfaces'; export function VisTypeSelect({ callback, currentSelected }) { - return (React.createElement(React.Fragment, null, - React.createElement("label", { className: "pt-2 pb-1" }, "Visualization Type"), - React.createElement(Select, { closeMenuOnSelect: true, - // components={{Option: optionLayout}} - onChange: (e) => callback(e.value), name: "visTypes", options: allVisTypes.map((t) => { - return { - value: t, - label: t, - }; - }), value: { value: currentSelected, label: currentSelected } }))); + return (React.createElement(Select, { label: "Visualization type", + // components={{Option: optionLayout}} + onChange: (e) => callback(e), name: "visTypes", data: allVisTypes.map((t) => { + return { + value: t, + label: t, + }; + }), value: currentSelected })); } //# sourceMappingURL=VisTypeSelect.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/VisTypeSelect.js.map b/dist/vis/sidebar/VisTypeSelect.js.map index 482c6eb86..d3d8106ce 100644 --- a/dist/vis/sidebar/VisTypeSelect.js.map +++ b/dist/vis/sidebar/VisTypeSelect.js.map @@ -1 +1 @@ -{"version":3,"file":"VisTypeSelect.js","sourceRoot":"","sources":["../../../src/vis/sidebar/VisTypeSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,WAAW,EAAuB,MAAM,eAAe,CAAC;AAOjE,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAsB;IAC7E,OAAO,CACL;QACE,+BAAO,SAAS,EAAC,WAAW,yBAA2B;QACvD,oBAAC,MAAM,IACL,iBAAiB;YACjB,sCAAsC;YACtC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAClC,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7B,OAAO;oBACL,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;iBACT,CAAC;YACJ,CAAC,CAAC,EACF,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,GACzD,CACD,CACJ,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"VisTypeSelect.js","sourceRoot":"","sources":["../../../src/vis/sidebar/VisTypeSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAuB,MAAM,eAAe,CAAC;AAOjE,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAsB;IAC7E,OAAO,CACL,oBAAC,MAAM,IACL,KAAK,EAAC,oBAAoB;QAC1B,sCAAsC;QACtC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAwB,CAAC,EACnD,IAAI,EAAC,UAAU,EACf,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1B,OAAO;gBACL,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,CAAC;aACT,CAAC;QACJ,CAAC,CAAC,EACF,KAAK,EAAE,eAAe,GACtB,CACH,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/WarningMessage.d.ts b/dist/vis/sidebar/WarningMessage.d.ts deleted file mode 100644 index ea6aa808b..000000000 --- a/dist/vis/sidebar/WarningMessage.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -export declare function WarningMessage(): JSX.Element; -//# sourceMappingURL=WarningMessage.d.ts.map \ No newline at end of file diff --git a/dist/vis/sidebar/WarningMessage.d.ts.map b/dist/vis/sidebar/WarningMessage.d.ts.map deleted file mode 100644 index 944b32ad6..000000000 --- a/dist/vis/sidebar/WarningMessage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"WarningMessage.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/WarningMessage.tsx"],"names":[],"mappings":";AAEA,wBAAgB,cAAc,gBAM7B"} \ No newline at end of file diff --git a/dist/vis/sidebar/WarningMessage.js b/dist/vis/sidebar/WarningMessage.js deleted file mode 100644 index a05ba106f..000000000 --- a/dist/vis/sidebar/WarningMessage.js +++ /dev/null @@ -1,7 +0,0 @@ -import * as React from 'react'; -export function WarningMessage() { - return (React.createElement("div", { className: "alert alert-warning", role: "alert" }, - React.createElement("strong", null, "Please note:"), - " This feature is still under development. Please report any problems you might observe.")); -} -//# sourceMappingURL=WarningMessage.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/WarningMessage.js.map b/dist/vis/sidebar/WarningMessage.js.map deleted file mode 100644 index 5f87b8fa1..000000000 --- a/dist/vis/sidebar/WarningMessage.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"WarningMessage.js","sourceRoot":"","sources":["../../../src/vis/sidebar/WarningMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,UAAU,cAAc;IAC5B,OAAO,CACL,6BAAK,SAAS,EAAC,qBAAqB,EAAC,IAAI,EAAC,OAAO;QAC/C,mDAA6B;kGACzB,CACP,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/index.d.ts b/dist/vis/sidebar/index.d.ts index 518e6f8ef..53f7a0578 100644 --- a/dist/vis/sidebar/index.d.ts +++ b/dist/vis/sidebar/index.d.ts @@ -1,4 +1,3 @@ -export * from './AllColumnSelect'; export * from './BarDirectionButtons'; export * from './BarDisplayTypeButtons'; export * from './BarGroupTypeButtons'; @@ -7,13 +6,10 @@ export * from './CategoricalColumnSelect'; export * from './ColorSelect'; export * from './FilterButtons'; export * from './GroupSelect'; -export * from './MultiplesSelect'; export * from './NumericalColorButtons'; export * from './NumericalColumnSelect'; export * from './OpacitySlider'; -export * from './ShapeSelect'; export * from './utils'; export * from './ViolinOverlayButtons'; export * from './VisTypeSelect'; -export * from './WarningMessage'; //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/dist/vis/sidebar/index.d.ts.map b/dist/vis/sidebar/index.d.ts.map index c984ee8b8..604b8588c 100644 --- a/dist/vis/sidebar/index.d.ts.map +++ b/dist/vis/sidebar/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vis/sidebar/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC"} \ No newline at end of file diff --git a/dist/vis/sidebar/index.js b/dist/vis/sidebar/index.js index 706d20e99..f85b1eef3 100644 --- a/dist/vis/sidebar/index.js +++ b/dist/vis/sidebar/index.js @@ -1,4 +1,3 @@ -export * from './AllColumnSelect'; export * from './BarDirectionButtons'; export * from './BarDisplayTypeButtons'; export * from './BarGroupTypeButtons'; @@ -7,13 +6,10 @@ export * from './CategoricalColumnSelect'; export * from './ColorSelect'; export * from './FilterButtons'; export * from './GroupSelect'; -export * from './MultiplesSelect'; export * from './NumericalColorButtons'; export * from './NumericalColumnSelect'; export * from './OpacitySlider'; -export * from './ShapeSelect'; export * from './utils'; export * from './ViolinOverlayButtons'; export * from './VisTypeSelect'; -export * from './WarningMessage'; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/vis/sidebar/index.js.map b/dist/vis/sidebar/index.js.map index 8e7aa2a4e..e2bbaee54 100644 --- a/dist/vis/sidebar/index.js.map +++ b/dist/vis/sidebar/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/vis/sidebar/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/vis/sidebar/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC"} \ No newline at end of file diff --git a/dist/vis/stories/Iris.stories.d.ts b/dist/vis/stories/Iris.stories.d.ts index c81e2df19..8c980f738 100644 --- a/dist/vis/stories/Iris.stories.d.ts +++ b/dist/vis/stories/Iris.stories.d.ts @@ -7,6 +7,4 @@ export default _default; export declare const ScatterPlot: ComponentStory; export declare const BarChart: ComponentStory; export declare const ViolinPlot: ComponentStory; -export declare const StripPlot: ComponentStory; -export declare const ParallelCoordinatesPlot: ComponentStory; //# sourceMappingURL=Iris.stories.d.ts.map \ No newline at end of file diff --git a/dist/vis/stories/Iris.stories.d.ts.map b/dist/vis/stories/Iris.stories.d.ts.map index 22f38c1b2..e949cafd4 100644 --- a/dist/vis/stories/Iris.stories.d.ts.map +++ b/dist/vis/stories/Iris.stories.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Iris.stories.d.ts","sourceRoot":"","sources":["../../../src/vis/stories/Iris.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAUL,SAAS,EACV,MAAM,eAAe,CAAC;AAEvB,wBAAgB,aAAa,IAAI,SAAS,EAAE,CAkD3C;;AAGD,wBAI+B;AAW/B,eAAO,MAAM,WAAW,4BAAuC,CAAC;AA4BhE,eAAO,MAAM,QAAQ,4BAAuC,CAAC;AAoB7D,eAAO,MAAM,UAAU,4BAAuC,CAAC;AA2B/D,eAAO,MAAM,SAAS,4BAAuC,CAAC;AA0B9D,eAAO,MAAM,uBAAuB,4BAAuC,CAAC"} \ No newline at end of file +{"version":3,"file":"Iris.stories.d.ts","sourceRoot":"","sources":["../../../src/vis/stories/Iris.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAUL,SAAS,EACV,MAAM,eAAe,CAAC;AAEvB,wBAAgB,aAAa,IAAI,SAAS,EAAE,CAkD3C;;AAGD,wBAI+B;AAiB/B,eAAO,MAAM,WAAW,4BAAuC,CAAC;AA4BhE,eAAO,MAAM,QAAQ,4BAAuC,CAAC;AAoB7D,eAAO,MAAM,UAAU,4BAAuC,CAAC"} \ No newline at end of file diff --git a/dist/vis/stories/Iris.stories.js b/dist/vis/stories/Iris.stories.js index 3ed693245..c65caa701 100644 --- a/dist/vis/stories/Iris.stories.js +++ b/dist/vis/stories/Iris.stories.js @@ -61,7 +61,9 @@ export default { // eslint-disable-next-line react/function-component-definition const Template = (args) => { const columns = React.useMemo(() => fetchIrisData(), []); - return React.createElement(Vis, { ...args, columns: columns }); + return (React.createElement("div", { style: { height: '100vh', width: '100%', display: 'flex', justifyContent: 'center', alignContent: 'center', flexWrap: 'wrap' } }, + React.createElement("div", { style: { width: '70%', height: '80%' } }, + React.createElement(Vis, { ...args, columns: columns })))); }; // More on args: https://storybook.js.org/docs/react/writing-stories/args export const ScatterPlot = Template.bind({}); @@ -136,47 +138,4 @@ ViolinPlot.args = { violinOverlay: EViolinOverlay.NONE, }, }; -export const StripPlot = Template.bind({}); -StripPlot.args = { - externalConfig: { - type: ESupportedPlotlyVis.STRIP, - numColumnsSelected: [ - { - description: '', - id: 'sepalLength', - name: 'Sepal Length', - }, - { - description: '', - id: 'sepalWidth', - name: 'Sepal Width', - }, - ], - catColumnsSelected: [ - { - description: '', - id: 'species', - name: 'Species', - }, - ], - }, -}; -export const ParallelCoordinatesPlot = Template.bind({}); -ParallelCoordinatesPlot.args = { - externalConfig: { - type: ESupportedPlotlyVis.PCP, - allColumnsSelected: [ - { - description: '', - id: 'sepalLength', - name: 'Sepal Length', - }, - { - description: '', - id: 'sepalWidth', - name: 'Sepal Width', - }, - ], - }, -}; //# sourceMappingURL=Iris.stories.js.map \ No newline at end of file diff --git a/dist/vis/stories/Iris.stories.js.map b/dist/vis/stories/Iris.stories.js.map index 06a54f905..4cebc3178 100644 --- a/dist/vis/stories/Iris.stories.js.map +++ b/dist/vis/stories/Iris.stories.js.map @@ -1 +1 @@ -{"version":3,"file":"Iris.stories.js","sourceRoot":"","sources":["../../../src/vis/stories/Iris.stories.tsx"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Iris.stories.js","sourceRoot":"","sources":["../../../src/vis/stories/Iris.stories.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/stories/Random.stories.d.ts b/dist/vis/stories/Random.stories.d.ts index 8fbb75507..6afafc5d2 100644 --- a/dist/vis/stories/Random.stories.d.ts +++ b/dist/vis/stories/Random.stories.d.ts @@ -5,6 +5,4 @@ export default _default; export declare const ScatterPlot: ComponentStory; export declare const BarChart: ComponentStory; export declare const ViolinPlot: ComponentStory; -export declare const StripPlot: ComponentStory; -export declare const ParallelCoordinatesPlot: ComponentStory; //# sourceMappingURL=Random.stories.d.ts.map \ No newline at end of file diff --git a/dist/vis/stories/Random.stories.d.ts.map b/dist/vis/stories/Random.stories.d.ts.map index 9f7db55c3..e3160a74b 100644 --- a/dist/vis/stories/Random.stories.d.ts.map +++ b/dist/vis/stories/Random.stories.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Random.stories.d.ts","sourceRoot":"","sources":["../../../src/vis/stories/Random.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;;AAyE7B,wBAS+B;AAY/B,eAAO,MAAM,WAAW,4BAAuC,CAAC;AAwBhE,eAAO,MAAM,QAAQ,4BAAuC,CAAC;AAoB7D,eAAO,MAAM,UAAU,4BAAuC,CAAC;AAqB/D,eAAO,MAAM,SAAS,4BAAuC,CAAC;AAoB9D,eAAO,MAAM,uBAAuB,4BAAuC,CAAC"} \ No newline at end of file +{"version":3,"file":"Random.stories.d.ts","sourceRoot":"","sources":["../../../src/vis/stories/Random.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;;AAyE7B,wBAS+B;AAkB/B,eAAO,MAAM,WAAW,4BAAuC,CAAC;AAwBhE,eAAO,MAAM,QAAQ,4BAAuC,CAAC;AAoB7D,eAAO,MAAM,UAAU,4BAAuC,CAAC"} \ No newline at end of file diff --git a/dist/vis/stories/Random.stories.js b/dist/vis/stories/Random.stories.js index e1b2e9b0a..cc721cdb2 100644 --- a/dist/vis/stories/Random.stories.js +++ b/dist/vis/stories/Random.stories.js @@ -64,7 +64,7 @@ export default { pointCount: { control: 'number' }, }, args: { - pointCount: 1000, + pointCount: 100000, }, }; // More on component templates: https://storybook.js.org/docs/react/writing-stories/introduction#using-args @@ -72,7 +72,9 @@ export default { const Template = (args) => { // @ts-ignore TODO: The pointCount is an injected property, but we are using typeof Vis such that this prop does not exist. const columns = React.useMemo(() => fetchData(args.pointCount), [args.pointCount]); - return React.createElement(Vis, { ...args, columns: columns }); + return (React.createElement("div", { style: { height: '100vh', width: '100%', display: 'flex', justifyContent: 'center', alignContent: 'center', flexWrap: 'wrap' } }, + React.createElement("div", { style: { width: '70%', height: '80%' } }, + React.createElement(Vis, { ...args, columns: columns })))); }; // More on args: https://storybook.js.org/docs/react/writing-stories/args export const ScatterPlot = Template.bind({}); @@ -137,41 +139,4 @@ ViolinPlot.args = { violinOverlay: EViolinOverlay.NONE, }, }; -export const StripPlot = Template.bind({}); -StripPlot.args = { - externalConfig: { - type: ESupportedPlotlyVis.STRIP, - numColumnsSelected: [ - { - description: '', - id: 'pca_x', - name: 'pca_x', - }, - { - description: '', - id: 'pca_y', - name: 'pca_y', - }, - ], - catColumnsSelected: [], - }, -}; -export const ParallelCoordinatesPlot = Template.bind({}); -ParallelCoordinatesPlot.args = { - externalConfig: { - type: ESupportedPlotlyVis.PCP, - allColumnsSelected: [ - { - description: '', - id: 'pca_x', - name: 'pca_x', - }, - { - description: '', - id: 'pca_y', - name: 'pca_y', - }, - ], - }, -}; //# sourceMappingURL=Random.stories.js.map \ No newline at end of file diff --git a/dist/vis/stories/Random.stories.js.map b/dist/vis/stories/Random.stories.js.map index 047606c9d..1695d7286 100644 --- a/dist/vis/stories/Random.stories.js.map +++ b/dist/vis/stories/Random.stories.js.map @@ -1 +1 @@ -{"version":3,"file":"Random.stories.js","sourceRoot":"","sources":["../../../src/vis/stories/Random.stories.tsx"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Random.stories.js","sourceRoot":"","sources":["../../../src/vis/stories/Random.stories.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/strip/StripVis.d.ts b/dist/vis/strip/StripVis.d.ts deleted file mode 100644 index 85eec2f80..000000000 --- a/dist/vis/strip/StripVis.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -import * as React from 'react'; -import { IVisConfig, VisColumn, IStripConfig, Scales } from '../interfaces'; -interface StripVisProps { - config: IStripConfig; - extensions?: { - prePlot?: React.ReactNode; - postPlot?: React.ReactNode; - preSidebar?: React.ReactNode; - postSidebar?: React.ReactNode; - }; - columns: VisColumn[]; - setConfig: (config: IVisConfig) => void; - scales: Scales; - selectionCallback?: (s: string[]) => void; - closeButtonCallback?: () => void; - selected?: { - [key: string]: boolean; - }; - hideSidebar?: boolean; - showCloseButton?: boolean; -} -export declare function StripVis({ config, extensions, columns, setConfig, selectionCallback, selected, scales, hideSidebar, showCloseButton, closeButtonCallback, }: StripVisProps): JSX.Element; -export {}; -//# sourceMappingURL=StripVis.d.ts.map \ No newline at end of file diff --git a/dist/vis/strip/StripVis.d.ts.map b/dist/vis/strip/StripVis.d.ts.map deleted file mode 100644 index d245af370..000000000 --- a/dist/vis/strip/StripVis.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StripVis.d.ts","sourceRoot":"","sources":["../../../src/vis/strip/StripVis.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAU5E,UAAU,aAAa;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC1C,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AASD,wBAAgB,QAAQ,CAAC,EACvB,MAAM,EACN,UAAU,EACV,OAAO,EACP,SAAS,EACT,iBAA8B,EAC9B,QAAa,EACb,MAAM,EACN,WAAmB,EACnB,eAAuB,EACvB,mBAAgC,GACjC,EAAE,aAAa,eAqGf"} \ No newline at end of file diff --git a/dist/vis/strip/StripVis.js b/dist/vis/strip/StripVis.js deleted file mode 100644 index 454aa0448..000000000 --- a/dist/vis/strip/StripVis.js +++ /dev/null @@ -1,83 +0,0 @@ -import * as React from 'react'; -import d3v3 from 'd3v3'; -import { merge, uniqueId } from 'lodash'; -import { useMemo, useEffect } from 'react'; -import { PlotlyComponent, Plotly } from '../Plot'; -import { InvalidCols } from '../general'; -import { beautifyLayout } from '../general/layoutUtils'; -import { createStripTraces } from './utils'; -import { useAsync } from '../../hooks'; -import { StripVisSidebar } from './StripVisSidebar'; -import { VisSidebarWrapper } from '../VisSidebarWrapper'; -import { CloseButton } from '../sidebar/CloseButton'; -const defaultExtensions = { - prePlot: null, - postPlot: null, - preSidebar: null, - postSidebar: null, -}; -export function StripVis({ config, extensions, columns, setConfig, selectionCallback = () => null, selected = {}, scales, hideSidebar = false, showCloseButton = false, closeButtonCallback = () => null, }) { - const mergedExtensions = useMemo(() => { - return merge({}, defaultExtensions, extensions); - }, [extensions]); - const { value: traces, status: traceStatus, error: traceError } = useAsync(createStripTraces, [columns, config, selected, scales]); - const id = React.useMemo(() => uniqueId('StripVis'), []); - const plotlyDivRef = React.useRef(null); - useEffect(() => { - const ro = new ResizeObserver(() => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - if (plotlyDivRef) { - ro.observe(plotlyDivRef.current); - } - if (hideSidebar) { - return; - } - const menu = document.getElementById(`generalVisBurgerMenu${id}`); - menu.addEventListener('hidden.bs.collapse', () => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - menu.addEventListener('shown.bs.collapse', () => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - }, [id, hideSidebar, plotlyDivRef]); - const layout = React.useMemo(() => { - if (!traces) { - return null; - } - const innerLayout = { - showlegend: true, - legend: { - // @ts-ignore - itemclick: false, - itemdoubleclick: false, - }, - font: { - family: 'Roboto, sans-serif', - }, - autosize: true, - grid: { rows: traces.rows, columns: traces.cols, xgap: 0.3, pattern: 'independent' }, - shapes: [], - dragmode: 'select', - }; - return beautifyLayout(traces, innerLayout); - }, [traces]); - return (React.createElement("div", { ref: plotlyDivRef, className: "d-flex flex-row w-100 h-100", style: { minHeight: '0px' } }, - React.createElement("div", { className: `position-relative d-flex justify-content-center align-items-center flex-grow-1 ${traceStatus === 'pending' ? 'tdp-busy-partial-overlay' : ''}` }, - mergedExtensions.prePlot, - traceStatus === 'success' && traces?.plots.length > 0 ? (React.createElement(PlotlyComponent, { divId: `plotlyDiv${id}`, data: [...traces.plots.map((p) => p.data), ...traces.legendPlots.map((p) => p.data)], layout: layout, config: { responsive: true, displayModeBar: false }, useResizeHandler: true, style: { width: '100%', height: '100%' }, onSelected: (sel) => { - selectionCallback(sel ? sel.points.map((d) => d.id) : []); - }, - // plotly redraws everything on updates, so you need to reappend title and - onUpdate: () => { - for (const p of traces.plots) { - d3v3.select(`g .${p.data.xaxis}title`).style('pointer-events', 'all').append('title').text(p.xLabel); - d3v3.select(`g .${p.data.yaxis}title`).style('pointer-events', 'all').append('title').text(p.yLabel); - } - } })) : traceStatus !== 'pending' ? (React.createElement(InvalidCols, { headerMessage: traces?.errorMessageHeader, bodyMessage: traceError?.message || traces?.errorMessage })) : null, - mergedExtensions.postPlot, - showCloseButton ? React.createElement(CloseButton, { closeCallback: closeButtonCallback }) : null), - !hideSidebar ? (React.createElement(VisSidebarWrapper, { id: id }, - React.createElement(StripVisSidebar, { config: config, extensions: extensions, columns: columns, setConfig: setConfig }))) : null)); -} -//# sourceMappingURL=StripVis.js.map \ No newline at end of file diff --git a/dist/vis/strip/StripVis.js.map b/dist/vis/strip/StripVis.js.map deleted file mode 100644 index 70ddda35f..000000000 --- a/dist/vis/strip/StripVis.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StripVis.js","sourceRoot":"","sources":["../../../src/vis/strip/StripVis.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/strip/StripVisSidebar.d.ts b/dist/vis/strip/StripVisSidebar.d.ts deleted file mode 100644 index fb95fecd8..000000000 --- a/dist/vis/strip/StripVisSidebar.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import * as React from 'react'; -import { IStripConfig, IVisConfig, VisColumn, ICommonVisSideBarProps } from '../interfaces'; -export declare function StripVisSidebar({ config, extensions, columns, setConfig, className, style: { width, ...style }, }: { - config: IStripConfig; - extensions?: { - prePlot?: React.ReactNode; - postPlot?: React.ReactNode; - preSidebar?: React.ReactNode; - postSidebar?: React.ReactNode; - }; - columns: VisColumn[]; - setConfig: (config: IVisConfig) => void; -} & ICommonVisSideBarProps): JSX.Element; -//# sourceMappingURL=StripVisSidebar.d.ts.map \ No newline at end of file diff --git a/dist/vis/strip/StripVisSidebar.d.ts.map b/dist/vis/strip/StripVisSidebar.d.ts.map deleted file mode 100644 index 00ab023aa..000000000 --- a/dist/vis/strip/StripVisSidebar.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StripVisSidebar.d.ts","sourceRoot":"","sources":["../../../src/vis/strip/StripVisSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAmC,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAY7H,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,UAAU,EACV,OAAO,EACP,SAAS,EACT,SAAc,EACd,KAAK,EAAE,EAAE,KAAc,EAAE,GAAG,KAAK,EAAO,GACzC,EAAE;IACD,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CACzC,GAAG,sBAAsB,eAyBzB"} \ No newline at end of file diff --git a/dist/vis/strip/StripVisSidebar.js b/dist/vis/strip/StripVisSidebar.js deleted file mode 100644 index ac59c1ed4..000000000 --- a/dist/vis/strip/StripVisSidebar.js +++ /dev/null @@ -1,28 +0,0 @@ -import * as React from 'react'; -import { useMemo } from 'react'; -import { merge } from 'lodash'; -import { VisTypeSelect } from '../sidebar/VisTypeSelect'; -import { NumericalColumnSelect } from '../sidebar/NumericalColumnSelect'; -import { WarningMessage } from '../sidebar/WarningMessage'; -import { CategoricalColumnSelect } from '../sidebar/CategoricalColumnSelect'; -const defaultExtensions = { - prePlot: null, - postPlot: null, - preSidebar: null, - postSidebar: null, -}; -export function StripVisSidebar({ config, extensions, columns, setConfig, className = '', style: { width = '20em', ...style } = {}, }) { - const mergedExtensions = useMemo(() => { - return merge({}, defaultExtensions, extensions); - }, [extensions]); - return (React.createElement("div", { className: `container pb-3 pt-2 ${className}`, style: { width, ...style } }, - React.createElement(WarningMessage, null), - React.createElement(VisTypeSelect, { callback: (type) => setConfig({ ...config, type }), currentSelected: config.type }), - React.createElement("hr", null), - React.createElement(NumericalColumnSelect, { callback: (numColumnsSelected) => setConfig({ ...config, numColumnsSelected }), columns: columns, currentSelected: config.numColumnsSelected || [] }), - React.createElement(CategoricalColumnSelect, { callback: (catColumnsSelected) => setConfig({ ...config, catColumnsSelected }), columns: columns, currentSelected: config.catColumnsSelected || [] }), - React.createElement("hr", null), - mergedExtensions.preSidebar, - mergedExtensions.postSidebar)); -} -//# sourceMappingURL=StripVisSidebar.js.map \ No newline at end of file diff --git a/dist/vis/strip/StripVisSidebar.js.map b/dist/vis/strip/StripVisSidebar.js.map deleted file mode 100644 index e3b98b4c6..000000000 --- a/dist/vis/strip/StripVisSidebar.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StripVisSidebar.js","sourceRoot":"","sources":["../../../src/vis/strip/StripVisSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAE7E,MAAM,iBAAiB,GAAG;IACxB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;CAClB,CAAC;AACF,MAAM,UAAU,eAAe,CAAC,EAC9B,MAAM,EACN,UAAU,EACV,OAAO,EACP,SAAS,EACT,SAAS,GAAG,EAAE,EACd,KAAK,EAAE,EAAE,KAAK,GAAG,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,GAWhB;IACxB,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,OAAO,KAAK,CAAC,EAAE,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,CACL,6BAAK,SAAS,EAAE,uBAAuB,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE;QAC5E,oBAAC,cAAc,OAAG;QAClB,oBAAC,aAAa,IAAC,QAAQ,EAAE,CAAC,IAAyB,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAI,MAAc,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,IAAI,GAAI;QACjI,+BAAM;QACN,oBAAC,qBAAqB,IACpB,QAAQ,EAAE,CAAC,kBAAgC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,kBAAkB,EAAE,CAAC,EAC5F,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,MAAM,CAAC,kBAAkB,IAAI,EAAE,GAChD;QACF,oBAAC,uBAAuB,IACtB,QAAQ,EAAE,CAAC,kBAAgC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,kBAAkB,EAAE,CAAC,EAC5F,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,MAAM,CAAC,kBAAkB,IAAI,EAAE,GAChD;QACF,+BAAM;QACL,gBAAgB,CAAC,UAAU;QAC3B,gBAAgB,CAAC,WAAW,CACzB,CACP,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/dist/vis/strip/index.d.ts b/dist/vis/strip/index.d.ts deleted file mode 100644 index 4fa970238..000000000 --- a/dist/vis/strip/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './StripVis'; -export * from './utils'; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/dist/vis/strip/index.d.ts.map b/dist/vis/strip/index.d.ts.map deleted file mode 100644 index 034276b01..000000000 --- a/dist/vis/strip/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vis/strip/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"} \ No newline at end of file diff --git a/dist/vis/strip/index.js b/dist/vis/strip/index.js deleted file mode 100644 index c9ec128b5..000000000 --- a/dist/vis/strip/index.js +++ /dev/null @@ -1,3 +0,0 @@ -export * from './StripVis'; -export * from './utils'; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/vis/strip/index.js.map b/dist/vis/strip/index.js.map deleted file mode 100644 index 3b1421b5f..000000000 --- a/dist/vis/strip/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/vis/strip/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"} \ No newline at end of file diff --git a/dist/vis/strip/utils.d.ts b/dist/vis/strip/utils.d.ts deleted file mode 100644 index 45bab5cf0..000000000 --- a/dist/vis/strip/utils.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { PlotlyInfo, IVisConfig, Scales, VisColumn, IStripConfig } from '../interfaces'; -export declare function isStrip(s: IVisConfig): s is IStripConfig; -export declare function stripMergeDefaultConfig(columns: VisColumn[], config: IStripConfig): IVisConfig; -export declare function createStripTraces(columns: VisColumn[], config: IStripConfig, selected: { - [key: string]: boolean; -}, scales: Scales): Promise; -//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/dist/vis/strip/utils.d.ts.map b/dist/vis/strip/utils.d.ts.map deleted file mode 100644 index 87bfcc1ac..000000000 --- a/dist/vis/strip/utils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/vis/strip/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EAKV,UAAU,EAEV,MAAM,EACN,SAAS,EACT,YAAY,EACb,MAAM,eAAe,CAAC;AAIvB,wBAAgB,OAAO,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,IAAI,YAAY,CAExD;AAQD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,YAAY,GAAG,UAAU,CAU9F;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAuI7J"} \ No newline at end of file diff --git a/dist/vis/strip/utils.js b/dist/vis/strip/utils.js deleted file mode 100644 index 5f054ce8e..000000000 --- a/dist/vis/strip/utils.js +++ /dev/null @@ -1,152 +0,0 @@ -import { merge } from 'lodash'; -import { I18nextManager } from '../../i18n'; -import { EColumnTypes, ESupportedPlotlyVis, } from '../interfaces'; -import { columnNameWithDescription, resolveColumnValues } from '../general/layoutUtils'; -import { DEFAULT_COLOR, SELECT_COLOR } from '../general/constants'; -export function isStrip(s) { - return s.type === ESupportedPlotlyVis.STRIP; -} -const defaultConfig = { - type: ESupportedPlotlyVis.STRIP, - numColumnsSelected: [], - catColumnsSelected: [], -}; -export function stripMergeDefaultConfig(columns, config) { - const merged = merge({}, defaultConfig, config); - const numCols = columns.filter((c) => c.type === EColumnTypes.NUMERICAL); - if (merged.numColumnsSelected.length === 0 && numCols.length > 0) { - merged.numColumnsSelected.push(numCols[numCols.length - 1].info); - } - return merged; -} -export async function createStripTraces(columns, config, selected, scales) { - let plotCounter = 1; - if (!config.numColumnsSelected || !config.catColumnsSelected) { - return { - plots: [], - legendPlots: [], - rows: 0, - cols: 0, - errorMessage: I18nextManager.getInstance().i18n.t('tdp:core.vis.stripError'), - errorMessageHeader: I18nextManager.getInstance().i18n.t('tdp:core.vis.errorHeader'), - }; - } - const numCols = config.numColumnsSelected.map((c) => columns.find((col) => col.info.id === c.id)); - const catCols = config.catColumnsSelected.map((c) => columns.find((col) => col.info.id === c.id)); - const plots = []; - const numColValues = await resolveColumnValues(numCols); - const catColValues = await resolveColumnValues(catCols); - // if we only have numerical columns, add them individually - if (catColValues.length === 0) { - for (const numCurr of numColValues) { - plots.push({ - data: { - y: numCurr.resolvedValues.map((v) => v.val), - xaxis: plotCounter === 1 ? 'x' : `x${plotCounter}`, - yaxis: plotCounter === 1 ? 'y' : `y${plotCounter}`, - ids: numCurr.resolvedValues.map((v) => v.id.toString()), - showlegend: false, - type: 'box', - boxpoints: 'all', - name: 'All points', - mode: 'none', - pointpos: 0, - selectedpoints: numCurr.resolvedValues - .map((v, i) => { - return { index: i, selected: selected[v.id] }; - }) - .filter((v) => v.selected) - .map((v) => v.index), - // @ts-ignore - selected: { - marker: { - color: SELECT_COLOR, - opacity: 1, - }, - }, - unselected: { - marker: { - color: DEFAULT_COLOR, - opacity: 0.5, - }, - }, - // @ts-ignore - box: { - visible: true, - }, - line: { - color: 'rgba(255, 255, 255, 0)', - }, - }, - xLabel: columnNameWithDescription(numCurr.info), - yLabel: columnNameWithDescription(numCurr.info), - }); - plotCounter += 1; - } - } - for (const numCurr of numColValues) { - for (const catCurr of catColValues) { - plots.push({ - data: { - x: catCurr.resolvedValues.map((v) => v.val), - y: numCurr.resolvedValues.map((v) => v.val), - ids: numCurr.resolvedValues.map((v) => v.id.toString()), - xaxis: plotCounter === 1 ? 'x' : `x${plotCounter}`, - yaxis: plotCounter === 1 ? 'y' : `y${plotCounter}`, - showlegend: false, - type: 'box', - boxpoints: 'all', - name: 'All points', - mode: 'none', - pointpos: 0, - selectedpoints: catCurr.resolvedValues - .map((v, i) => { - return { index: i, selected: selected[v.id] }; - }) - .filter((v) => v.selected) - .map((v) => v.index), - // @ts-ignore - selected: { - marker: { - color: SELECT_COLOR, - opacity: 1, - }, - }, - unselected: { - marker: { - color: DEFAULT_COLOR, - opacity: 0.5, - }, - }, - box: { - visible: true, - }, - line: { - color: '#FFFFFF', - }, - meanline: { - visible: true, - }, - transforms: [ - { - type: 'groupby', - groups: catCurr.resolvedValues.map((v) => v.val), - }, - ], - }, - xLabel: columnNameWithDescription(catCurr.info), - yLabel: columnNameWithDescription(numCurr.info), - }); - plotCounter += 1; - } - } - return { - plots, - legendPlots: [], - rows: numColValues.length, - cols: catColValues.length > 0 ? catColValues.length : 1, - errorMessage: I18nextManager.getInstance().i18n.t('tdp:core.vis.stripError'), - errorMessageHeader: I18nextManager.getInstance().i18n.t('tdp:core.vis.errorHeader'), - }; -} -//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/dist/vis/strip/utils.js.map b/dist/vis/strip/utils.js.map deleted file mode 100644 index 16e8d770a..000000000 --- a/dist/vis/strip/utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/vis/strip/utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/violin/ViolinVis.d.ts b/dist/vis/violin/ViolinVis.d.ts index 5c1a2bc2a..c1b90371f 100644 --- a/dist/vis/violin/ViolinVis.d.ts +++ b/dist/vis/violin/ViolinVis.d.ts @@ -1,6 +1,6 @@ import * as React from 'react'; import { Scales, VisColumn, IVisConfig, IViolinConfig } from '../interfaces'; -interface ViolinVisProps { +export declare function ViolinVis({ config, optionsConfig, extensions, columns, setConfig, scales, showSidebar, setShowSidebar, enableSidebar, showCloseButton, closeButtonCallback, }: { config: IViolinConfig; optionsConfig?: { overlay?: { @@ -18,9 +18,9 @@ interface ViolinVisProps { setConfig: (config: IVisConfig) => void; closeButtonCallback?: () => void; scales: Scales; - hideSidebar?: boolean; + showSidebar?: boolean; + setShowSidebar?(show: boolean): void; + enableSidebar?: boolean; showCloseButton?: boolean; -} -export declare function ViolinVis({ config, optionsConfig, extensions, columns, setConfig, scales, hideSidebar, showCloseButton, closeButtonCallback, }: ViolinVisProps): JSX.Element; -export {}; +}): JSX.Element; //# sourceMappingURL=ViolinVis.d.ts.map \ No newline at end of file diff --git a/dist/vis/violin/ViolinVis.d.ts.map b/dist/vis/violin/ViolinVis.d.ts.map index f1bce641d..a74c4c3d3 100644 --- a/dist/vis/violin/ViolinVis.d.ts.map +++ b/dist/vis/violin/ViolinVis.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"ViolinVis.d.ts","sourceRoot":"","sources":["../../../src/vis/violin/ViolinVis.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAU7E,UAAU,cAAc;IACtB,MAAM,EAAE,aAAa,CAAC;IACtB,aAAa,CAAC,EAAE;QACd,OAAO,CAAC,EAAE;YACR,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;KACH,CAAC;IACF,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IAEjC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AASD,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,EACP,SAAS,EACT,MAAM,EACN,WAAmB,EACnB,eAAuB,EACvB,mBAAgC,GACjC,EAAE,cAAc,eAiGhB"} \ No newline at end of file +{"version":3,"file":"ViolinVis.d.ts","sourceRoot":"","sources":["../../../src/vis/violin/ViolinVis.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAkB7E,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,EACP,SAAS,EACT,MAAM,EACN,WAAW,EACX,cAAc,EACd,aAAa,EACb,eAAuB,EACvB,mBAAgC,GACjC,EAAE;IACD,MAAM,EAAE,aAAa,CAAC;IACtB,aAAa,CAAC,EAAE;QACd,OAAO,CAAC,EAAE;YACR,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;KACH,CAAC;IACF,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IAEjC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,eAmGA"} \ No newline at end of file diff --git a/dist/vis/violin/ViolinVis.js b/dist/vis/violin/ViolinVis.js index 5b338ac3c..5c995a044 100644 --- a/dist/vis/violin/ViolinVis.js +++ b/dist/vis/violin/ViolinVis.js @@ -1,7 +1,10 @@ import * as React from 'react'; import d3v3 from 'd3v3'; import { merge, uniqueId } from 'lodash'; -import { useEffect } from 'react'; +import { useEffect, useState } from 'react'; +import { ActionIcon, Container, Space, Tooltip } from '@mantine/core'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faGear } from '@fortawesome/free-solid-svg-icons'; import { PlotlyComponent, Plotly } from '../Plot'; import { InvalidCols } from '../general'; import { beautifyLayout } from '../general/layoutUtils'; @@ -10,18 +13,20 @@ import { useAsync } from '../../hooks'; import { ViolinVisSidebar } from './ViolinVisSidebar'; import { VisSidebarWrapper } from '../VisSidebarWrapper'; import { CloseButton } from '../sidebar/CloseButton'; +import { I18nextManager } from '../../i18n'; const defaultExtensions = { prePlot: null, postPlot: null, preSidebar: null, postSidebar: null, }; -export function ViolinVis({ config, optionsConfig, extensions, columns, setConfig, scales, hideSidebar = false, showCloseButton = false, closeButtonCallback = () => null, }) { +export function ViolinVis({ config, optionsConfig, extensions, columns, setConfig, scales, showSidebar, setShowSidebar, enableSidebar, showCloseButton = false, closeButtonCallback = () => null, }) { const mergedExtensions = React.useMemo(() => { return merge({}, defaultExtensions, extensions); }, [extensions]); const { value: traces, status: traceStatus, error: traceError } = useAsync(createViolinTraces, [columns, config, scales]); const id = React.useMemo(() => uniqueId('ViolinVis'), []); + const [layout, setLayout] = useState(null); const plotlyDivRef = React.useRef(null); useEffect(() => { const ro = new ResizeObserver(() => { @@ -30,20 +35,11 @@ export function ViolinVis({ config, optionsConfig, extensions, columns, setConfi if (plotlyDivRef) { ro.observe(plotlyDivRef.current); } - if (hideSidebar) { - return; - } - const menu = document.getElementById(`generalVisBurgerMenu${id}`); - menu.addEventListener('hidden.bs.collapse', () => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - menu.addEventListener('shown.bs.collapse', () => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - }, [id, hideSidebar, plotlyDivRef]); - const layout = React.useMemo(() => { + return () => ro.disconnect(); + }, [id, plotlyDivRef]); + React.useEffect(() => { if (!traces) { - return null; + return; } const innerLayout = { showlegend: true, @@ -52,6 +48,12 @@ export function ViolinVis({ config, optionsConfig, extensions, columns, setConfi itemclick: false, itemdoubleclick: false, }, + margin: { + t: 25, + r: 25, + l: 25, + b: 25, + }, font: { family: 'Roboto, sans-serif', }, @@ -59,22 +61,27 @@ export function ViolinVis({ config, optionsConfig, extensions, columns, setConfi grid: { rows: traces.rows, columns: traces.cols, xgap: 0.3, pattern: 'independent' }, shapes: [], }; - return beautifyLayout(traces, innerLayout); + setLayout({ ...layout, ...beautifyLayout(traces, innerLayout, layout) }); + // WARNING: Do not update when layout changes, that would be an infinite loop. + // eslint-disable-next-line react-hooks/exhaustive-deps }, [traces]); - return (React.createElement("div", { ref: plotlyDivRef, className: "d-flex flex-row w-100 h-100", style: { minHeight: '0px' } }, - React.createElement("div", { className: `position-relative d-flex justify-content-center align-items-center flex-grow-1 ${traceStatus === 'pending' ? 'tdp-busy-partial-overlay' : ''}` }, - mergedExtensions.prePlot, - traceStatus === 'success' && traces?.plots.length > 0 ? (React.createElement(PlotlyComponent, { divId: `plotlyDiv${id}`, data: [...traces.plots.map((p) => p.data), ...traces.legendPlots.map((p) => p.data)], layout: layout, config: { responsive: true, displayModeBar: false }, useResizeHandler: true, style: { width: '100%', height: '100%' }, - // plotly redraws everything on updates, so you need to reappend title and - onUpdate: () => { - for (const p of traces.plots) { - d3v3.select(`g .${p.data.xaxis}title`).style('pointer-events', 'all').append('title').text(p.xLabel); - d3v3.select(`g .${p.data.yaxis}title`).style('pointer-events', 'all').append('title').text(p.yLabel); - } - } })) : traceStatus !== 'pending' ? (React.createElement(InvalidCols, { headerMessage: traces?.errorMessageHeader, bodyMessage: traceError?.message || traces?.errorMessage })) : null, - mergedExtensions.postPlot, - showCloseButton ? React.createElement(CloseButton, { closeCallback: closeButtonCallback }) : null), - !hideSidebar ? (React.createElement(VisSidebarWrapper, { id: id }, + return (React.createElement(Container, { fluid: true, sx: { flexGrow: 1, height: '100%', width: '100%', position: 'relative' }, ref: plotlyDivRef }, + React.createElement(Space, { h: "xl" }), + showCloseButton ? React.createElement(CloseButton, { closeCallback: closeButtonCallback }) : null, + enableSidebar ? (React.createElement(Tooltip, { withinPortal: true, label: I18nextManager.getInstance().i18n.t('tdp:core.vis.openSettings') }, + React.createElement(ActionIcon, { sx: { zIndex: 10, position: 'absolute', top: '10px', right: '10px' }, onClick: () => setShowSidebar(true) }, + React.createElement(FontAwesomeIcon, { icon: faGear })))) : null, + mergedExtensions.prePlot, + traceStatus === 'success' && layout && traces?.plots.length > 0 ? (React.createElement(PlotlyComponent, { divId: `plotlyDiv${id}`, className: "tdpCoreVis", data: [...traces.plots.map((p) => p.data), ...traces.legendPlots.map((p) => p.data)], layout: layout, config: { responsive: true, displayModeBar: false }, useResizeHandler: true, style: { width: '100%', height: '100%' }, + // plotly redraws everything on updates, so you need to reappend title and + onUpdate: () => { + for (const p of traces.plots) { + d3v3.select(`g .${p.data.xaxis}title`).style('pointer-events', 'all').append('title').text(p.xLabel); + d3v3.select(`g .${p.data.yaxis}title`).style('pointer-events', 'all').append('title').text(p.yLabel); + } + } })) : traceStatus !== 'pending' ? (React.createElement(InvalidCols, { headerMessage: traces?.errorMessageHeader, bodyMessage: traceError?.message || traces?.errorMessage })) : null, + mergedExtensions.postPlot, + showSidebar ? (React.createElement(VisSidebarWrapper, { id: id, target: plotlyDivRef.current, open: showSidebar, onClose: () => setShowSidebar(false) }, React.createElement(ViolinVisSidebar, { config: config, optionsConfig: optionsConfig, extensions: extensions, columns: columns, setConfig: setConfig }))) : null)); } //# sourceMappingURL=ViolinVis.js.map \ No newline at end of file diff --git a/dist/vis/violin/ViolinVis.js.map b/dist/vis/violin/ViolinVis.js.map index 2fad93524..3524bdf4b 100644 --- a/dist/vis/violin/ViolinVis.js.map +++ b/dist/vis/violin/ViolinVis.js.map @@ -1 +1 @@ -{"version":3,"file":"ViolinVis.js","sourceRoot":"","sources":["../../../src/vis/violin/ViolinVis.tsx"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ViolinVis.js","sourceRoot":"","sources":["../../../src/vis/violin/ViolinVis.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/violin/ViolinVisSidebar.d.ts.map b/dist/vis/violin/ViolinVisSidebar.d.ts.map index ad0b943c1..6bcdf0a40 100644 --- a/dist/vis/violin/ViolinVisSidebar.d.ts.map +++ b/dist/vis/violin/ViolinVisSidebar.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"ViolinVisSidebar.d.ts","sourceRoot":"","sources":["../../../src/vis/violin/ViolinVisSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAmD,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAmB9I,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,EACP,SAAS,EACT,SAAc,EACd,KAAK,EAAE,EAAE,KAAc,EAAE,GAAG,KAAK,EAAO,GACzC,EAAE;IACD,MAAM,EAAE,aAAa,CAAC;IACtB,aAAa,CAAC,EAAE;QACd,OAAO,CAAC,EAAE;YACR,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;KACH,CAAC;IACF,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CACzC,GAAG,sBAAsB,eAuCzB"} \ No newline at end of file +{"version":3,"file":"ViolinVisSidebar.d.ts","sourceRoot":"","sources":["../../../src/vis/violin/ViolinVisSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAmD,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAkB9I,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,EACP,SAAS,EACT,SAAc,EACd,KAAK,EAAE,EAAE,KAAc,EAAE,GAAG,KAAK,EAAO,GACzC,EAAE;IACD,MAAM,EAAE,aAAa,CAAC;IACtB,aAAa,CAAC,EAAE;QACd,OAAO,CAAC,EAAE;YACR,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;SACnC,CAAC;KACH,CAAC;IACF,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CACzC,GAAG,sBAAsB,eAwCzB"} \ No newline at end of file diff --git a/dist/vis/violin/ViolinVisSidebar.js b/dist/vis/violin/ViolinVisSidebar.js index 2324adc74..dc05e2316 100644 --- a/dist/vis/violin/ViolinVisSidebar.js +++ b/dist/vis/violin/ViolinVisSidebar.js @@ -1,9 +1,9 @@ import * as React from 'react'; import { useMemo } from 'react'; import { merge } from 'lodash'; +import { Container, Divider, Stack } from '@mantine/core'; import { VisTypeSelect } from '../sidebar/VisTypeSelect'; import { NumericalColumnSelect } from '../sidebar/NumericalColumnSelect'; -import { WarningMessage } from '../sidebar/WarningMessage'; import { CategoricalColumnSelect } from '../sidebar/CategoricalColumnSelect'; import { ViolinOverlayButtons } from '../sidebar/ViolinOverlayButtons'; const defaultConfig = { @@ -25,13 +25,13 @@ export function ViolinVisSidebar({ config, optionsConfig, extensions, columns, s const mergedExtensions = useMemo(() => { return merge({}, defaultExtensions, extensions); }, [extensions]); - return (React.createElement("div", { className: `container pb-3 pt-2 ${className}`, style: { width, ...style } }, - React.createElement(WarningMessage, null), + return (React.createElement(Container, { fluid: true, sx: { width: '100%' }, p: 10 }, React.createElement(VisTypeSelect, { callback: (type) => setConfig({ ...config, type }), currentSelected: config.type }), - React.createElement("hr", null), - React.createElement(NumericalColumnSelect, { callback: (numColumnsSelected) => setConfig({ ...config, numColumnsSelected }), columns: columns, currentSelected: config.numColumnsSelected || [] }), - React.createElement(CategoricalColumnSelect, { callback: (catColumnsSelected) => setConfig({ ...config, catColumnsSelected }), columns: columns, currentSelected: config.catColumnsSelected || [] }), - React.createElement("hr", null), + React.createElement(Divider, { my: "sm" }), + React.createElement(Stack, { spacing: "sm" }, + React.createElement(NumericalColumnSelect, { callback: (numColumnsSelected) => setConfig({ ...config, numColumnsSelected }), columns: columns, currentSelected: config.numColumnsSelected || [] }), + React.createElement(CategoricalColumnSelect, { callback: (catColumnsSelected) => setConfig({ ...config, catColumnsSelected }), columns: columns, currentSelected: config.catColumnsSelected || [] })), + React.createElement(Divider, { my: "sm" }), mergedExtensions.preSidebar, mergedOptionsConfig.overlay.enable ? mergedOptionsConfig.overlay.customComponent || (React.createElement(ViolinOverlayButtons, { callback: (violinOverlay) => setConfig({ ...config, violinOverlay }), currentSelected: config.violinOverlay })) diff --git a/dist/vis/violin/ViolinVisSidebar.js.map b/dist/vis/violin/ViolinVisSidebar.js.map index 609886eef..8865cbac3 100644 --- a/dist/vis/violin/ViolinVisSidebar.js.map +++ b/dist/vis/violin/ViolinVisSidebar.js.map @@ -1 +1 @@ -{"version":3,"file":"ViolinVisSidebar.js","sourceRoot":"","sources":["../../../src/vis/violin/ViolinVisSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAEvE,MAAM,aAAa,GAAG;IACpB,OAAO,EAAE;QACP,MAAM,EAAE,IAAI;QACZ,eAAe,EAAE,IAAI;KACtB;CACF,CAAC;AACF,MAAM,iBAAiB,GAAG;IACxB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;CAClB,CAAC;AACF,MAAM,UAAU,gBAAgB,CAAC,EAC/B,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,EACP,SAAS,EACT,SAAS,GAAG,EAAE,EACd,KAAK,EAAE,EAAE,KAAK,GAAG,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,GAiBhB;IACxB,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,EAAE;QACvC,OAAO,KAAK,CAAC,EAAE,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;IACjD,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,OAAO,KAAK,CAAC,EAAE,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,CACL,6BAAK,SAAS,EAAE,uBAAuB,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE;QAC5E,oBAAC,cAAc,OAAG;QAClB,oBAAC,aAAa,IAAC,QAAQ,EAAE,CAAC,IAAyB,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAI,MAAc,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,IAAI,GAAI;QACjI,+BAAM;QACN,oBAAC,qBAAqB,IACpB,QAAQ,EAAE,CAAC,kBAAgC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,kBAAkB,EAAE,CAAC,EAC5F,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,MAAM,CAAC,kBAAkB,IAAI,EAAE,GAChD;QACF,oBAAC,uBAAuB,IACtB,QAAQ,EAAE,CAAC,kBAAgC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,kBAAkB,EAAE,CAAC,EAC5F,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,MAAM,CAAC,kBAAkB,IAAI,EAAE,GAChD;QACF,+BAAM;QACL,gBAAgB,CAAC,UAAU;QAE3B,mBAAmB,CAAC,OAAO,CAAC,MAAM;YACjC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,eAAe,IAAI,CAC7C,oBAAC,oBAAoB,IACnB,QAAQ,EAAE,CAAC,aAA6B,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,CAAC,EACpF,eAAe,EAAE,MAAM,CAAC,aAAa,GACrC,CACH;YACH,CAAC,CAAC,IAAI;QAEP,gBAAgB,CAAC,WAAW,CACzB,CACP,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"ViolinVisSidebar.js","sourceRoot":"","sources":["../../../src/vis/violin/ViolinVisSidebar.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis/violin/utils.js b/dist/vis/violin/utils.js index 648ab73a5..8d3f754d1 100644 --- a/dist/vis/violin/utils.js +++ b/dist/vis/violin/utils.js @@ -49,7 +49,7 @@ export async function createViolinTraces(columns, config, scales) { jitter: 0.3, // @ts-ignore hoveron: 'violins', - points: config.violinOverlay === EViolinOverlay.STRIP ? 'all' : false, + points: false, box: { visible: config.violinOverlay === EViolinOverlay.BOX, }, @@ -86,7 +86,7 @@ export async function createViolinTraces(columns, config, scales) { scalemode: 'width', pointpos: 0, jitter: 0.3, - points: config.violinOverlay === EViolinOverlay.STRIP ? 'all' : false, + points: false, box: { visible: config.violinOverlay === EViolinOverlay.BOX, }, diff --git a/dist/vis/violin/utils.js.map b/dist/vis/violin/utils.js.map index 158fe9b95..af31d07b4 100644 --- a/dist/vis/violin/utils.js.map +++ b/dist/vis/violin/utils.js.map @@ -1 +1 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/vis/violin/utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/vis/violin/utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 94e359285..585e83221 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "tdp_core", "description": "Target discovery platform for exploring rankings of genes, disease models, and other entities.", - "version": "16.2.2", + "version": "16.3.0", "author": { "name": "datavisyn GmbH", "email": "contact@datavisyn.io", @@ -45,6 +45,7 @@ "lint:fix": "visyn_scripts lint --fix", "lint": "visyn_scripts lint", "predist": "yarn run lint && yarn run test && yarn run build", + "start:fast": "visyn_scripts start --env workspace_mode=single fast=true", "start": "visyn_scripts start --env workspace_mode=single", "storybook:build": "NODE_OPTIONS=--max_old_space_size=4096 build-storybook", "storybook": "NODE_OPTIONS=--max_old_space_size=4096 start-storybook -p 6006", @@ -64,6 +65,7 @@ "@mantine/hooks": "^5.0.0", "@popperjs/core": "^2.9.3", "@types/bootstrap": "~5.0.15", + "@types/d3-hexbin": "^0.2.3", "@types/d3v3": "npm:@types/d3@~3.5.36", "@types/d3v7": "npm:@types/d3@^7.4.0", "@types/jquery": "~3.5.5", @@ -76,6 +78,7 @@ "bootstrap": "~5.1.0", "core-js": "2.6.5", "crypto-js": "^4.0.0", + "d3-hexbin": "^0.2.2", "d3v3": "npm:d3@~3.5.17", "d3v7": "npm:d3@^7.4.0", "i18next": "^19.8.4", @@ -104,15 +107,17 @@ "devDependencies": { "@babel/core": "^7.17.7", "@babel/plugin-transform-typescript": "7.17.12", - "@storybook/addon-actions": "^6.5.9", - "@storybook/addon-essentials": "^6.5.9", - "@storybook/addon-interactions": "^6.5.9", - "@storybook/addon-links": "^6.5.9", + "@storybook/addon-actions": "^6.5.15", + "@storybook/addon-essentials": "^6.5.15", + "@storybook/addon-interactions": "^6.5.15", + "@storybook/addon-links": "^6.5.15", + "@storybook/builder-webpack5": "^6.5.15", + "@storybook/manager-webpack5": "^6.5.15", "@storybook/preset-scss": "^1.0.3", - "@storybook/react": "^6.5.9", + "@storybook/react": "^6.5.15", "@storybook/testing-library": "0.0.9", - "cypress": "^9.5.2", - "local-cypress": "^1.2.5" + "cypress": "^11.2.0", + "storybook-addon-swc": "^1.1.9" }, "overrides": { "@types/react": "^16.9.23", diff --git a/pyrightconfig.json b/pyrightconfig.json new file mode 100644 index 000000000..5a3459637 --- /dev/null +++ b/pyrightconfig.json @@ -0,0 +1,4 @@ +{ + "typeCheckingMode": "basic", + "useLibraryCodeForTypes": true, +} diff --git a/requirements.txt b/requirements.txt index bc7496ad6..89c5937b2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,30 +1,27 @@ -alembic==1.7.7 -fastapi==0.75.0 -cachetools==5.0.0 -flask-smorest==0.37.0 +# a2wsgi==1.6.0 # This WSIGMiddleware is not compatible with starlette_context +alembic==1.9.0 +cachetools==5.2.0 +fastapi[all]==0.89.0 flask-swagger-ui==3.36.0 -Flask==2.0.3 +Flask[async]>=2.1.0,<=2.2.2 json-cfg==0.4.2 -marshmallow-sqlalchemy==0.28.0 -marshmallow==3.15.0 -numba==0.55.1 -numpy==1.21.6 +marshmallow-sqlalchemy>=0.26.0,<=0.28.1 +marshmallow==3.19.0 openpyxl==3.0.9 -pandas==1.4.1 -Pillow==9.0.1 -psycopg2==2.9.3 -pydantic==1.9.0 -pyjwt==2.4.0 +Pillow==9.3.0 +psycopg==3.1.7 +psycopg2==2.9.5 +pydantic==1.10.2 +pyjwt==2.6.0 pymongo~=3.11.1 +pytest-postgresql==4.1.1 python-dateutil==2.8.2 python-memcached==1.59 python-multipart==0.0.5 -requests==2.27.1 -SQLAlchemy==1.4.32 -sqlmodel==0.0.6 +rdkit==2022.3.5 +requests==2.28.1 +SQLAlchemy>=1.4.40,<=1.4.46 +starlette-context==0.3.5 urllib3==1.26.9 -uvicorn[standard]==0.17.6 +uvicorn[standard]==0.20.0 yamlreader==3.0.4 -pytest-postgresql==4.1.1 -psycopg==3.0.16 -rdkit==2022.3.5 diff --git a/requirements_dev.txt b/requirements_dev.txt index a79d5013e..4193b14d3 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -1,9 +1,5 @@ -black~=22.3.0 -debugpy~=1.5.1 -flake8~=4.0.1 -isort~=5.10.1 -mkdocs-material~=8.2.8 -pep8-naming~=0.12.1 +black~=22.12.0 +pyright~=1.1.285 pytest-runner~=6.0.0 -pytest~=7.1.1 -recommonmark~=0.7.1 +pytest~=7.2.0 +ruff==0.0.218 diff --git a/setup.py b/setup.py index 8b2a15e33..95445360f 100644 --- a/setup.py +++ b/setup.py @@ -55,7 +55,7 @@ def requirements(file): package_data={}, # Although 'package_data' is the preferred approach, in some case you may # need to place data files outside of your packages. See: - # http://docs.python.org/3.4/distutils/setupscript.html#installing-additional-files # noqa + # http://docs.python.org/3.4/distutils/setupscript.html#installing-additional-files # In this case, 'data_file' will be installed into '/my_data' data_files=[], # [('my_data', ['data/data_file'])], ) diff --git a/src/clue/base/mode.ts b/src/clue/base/mode.ts index de52f61da..c23badf26 100644 --- a/src/clue/base/mode.ts +++ b/src/clue/base/mode.ts @@ -229,11 +229,11 @@ export class ButtonModeSelector { // */ // export class SliderModeSelector { // private options = {}; -// private $node:d3.Selection; +// private $node:d3v3.Selection; // // constructor(parent:Element, options:any = {}) { // mixin(this.options, options); -// this.$node = d3.select(parent).append('div').classed('clue_modeselector', true).datum(this); +// this.$node = d3v3.select(parent).append('div').classed('clue_modeselector', true).datum(this); // this.build(this.$node); // // const listener = (event:IEvent, newMode:CLUEMode) => { @@ -247,7 +247,7 @@ export class ButtonModeSelector { // }); // } // -// private build($parent:d3.Selection) { +// private build($parent:d3v3.Selection) { // const $root = $parent.append('div').classed('clue_slidermodeselector', true); // const $modes = $root.selectAll('label').data([modes.Exploration, modes.Authoring, modes.Presentation]); // @@ -300,7 +300,7 @@ export class ButtonModeSelector { // */ // offset: 5 // }; -// private $node:d3.Selection; +// private $node:d3v3.Selection; // // private e = [0, 30]; // private a = [30, 0]; @@ -310,7 +310,7 @@ export class ButtonModeSelector { // mixin(this.options, options); // this.e[1] = this.a[0] = this.p[1] = this.options.height; // this.p[0] = this.options.height * 2; -// this.$node = d3.select(parent).append('div').classed('clue_trianglemodeselector', true).datum(this); +// this.$node = d3v3.select(parent).append('div').classed('clue_trianglemodeselector', true).datum(this); // this.build(this.$node); // // const listener = (event:IEvent, newMode:CLUEMode) => { @@ -346,15 +346,15 @@ export class ButtonModeSelector { // return mode(e, a, p); // } // -// private build($parent:d3.Selection) { +// private build($parent:d3v3.Selection) { // const $root = $parent.append('svg').classed('clue_trianglemodeselector', true).attr({ // width: this.p[0] + this.options.offset, // height: this.p[1] + this.options.offset // }); // const that = this; // const $g = $root.append('g').attr('transform', `translate(${this.options.offset / 2},${this.options.offset / 2})`); -// $g.append('path').attr('d', d3.svg.line().interpolate('linear-closed')([this.e, this.a, this.p])).on('click', function () { -// const xy = d3.mouse(this); +// $g.append('path').attr('d', d3v3.svg.line().interpolate('linear-closed')([this.e, this.a, this.p])).on('click', function () { +// const xy = d3v3.mouse(this); // const m = that.fromCoordinates(xy[0], xy[1]); // setMode(m); // }); @@ -363,8 +363,8 @@ export class ButtonModeSelector { // cx: xy[0], // cy: xy[1], // r: 2 -// }).call(d3.behavior.drag().on('drag', () => { -// const m = this.fromCoordinates((d3.event).x, (d3.event).y); +// }).call(d3v3.behavior.drag().on('drag', () => { +// const m = this.fromCoordinates((d3v3.event).x, (d3v3.event).y); // setMode(m); // })); // return $root; diff --git a/src/clue/provenance/ProvenanceGraphMenu.ts b/src/clue/provenance/ProvenanceGraphMenu.ts index 24cf0e9c2..9a0f61bc2 100644 --- a/src/clue/provenance/ProvenanceGraphMenu.ts +++ b/src/clue/provenance/ProvenanceGraphMenu.ts @@ -1,4 +1,4 @@ -import { event as d3event, select, time } from 'd3v3'; +import { event as d3event, select, time, Selection } from 'd3v3'; import * as $ from 'jquery'; import { Dialog, PHOVEA_UI_FormDialog } from '../../components'; import type { CLUEGraphManager } from '../base/CLUEGraphManager'; @@ -8,7 +8,7 @@ import type { ProvenanceGraph } from './ProvenanceGraph'; import type { IProvenanceGraphDataDescription } from './ICmd'; export class ProvenanceGraphMenu { - private readonly $node: d3.Selection; + private readonly $node: Selection; private graph: ProvenanceGraph; diff --git a/src/clue/provvis/provvis.ts b/src/clue/provvis/provvis.ts index 562d3736c..ad3fb315e 100644 --- a/src/clue/provvis/provvis.ts +++ b/src/clue/provvis/provvis.ts @@ -733,16 +733,16 @@ export class LayoutedProvVis extends AVisInstance implements IVisInstance { $inner.append('span').classed('icon', true); /* $states_enter.append('span').attr('class','fas fa-star').on('click', (d) => { d.s.setAttr('starred',!d.s.getAttr('starred',false)); - d3.event.stopPropagation(); - d3.event.preventDefault(); + d3v3.event.stopPropagation(); + d3v3.event.preventDefault(); }); $states_enter.append('span').attr('class','fas fa-tags').on('click', (d) => { var tags = d.s.getAttr('tags',[]).join(' '); dialogs.prompt(tags, 'Tags').then((new_) => { d.s.setAttr('tags', new_.split(' ')); }); - d3.event.stopPropagation(); - d3.event.preventDefault(); + d3v3.event.stopPropagation(); + d3v3.event.preventDefault(); }); */ $inner.append('span').classed('slabel', true); $inner.append('div').classed('sthumbnail', true); @@ -787,7 +787,7 @@ export class LayoutedProvVis extends AVisInstance implements IVisInstance { // const id = +$icon.data('popoup'); // clearTimeout(id); // $icon.removeData('popup'); - // const d:StateRepr = d3.select(this).datum(); + // const d:StateRepr = d3v3.select(this).datum(); // if (d && $icon.has('textarea')) { // const val = $(this).find('textarea').val(); // d.s.setAttr('tags', extractTags(val)); diff --git a/src/clue/provvis/storyvis.ts b/src/clue/provvis/storyvis.ts index e1f1dbf7f..2dbebcf7a 100644 --- a/src/clue/provvis/storyvis.ts +++ b/src/clue/provvis/storyvis.ts @@ -552,8 +552,8 @@ export class VerticalStoryVis extends AVisInstance implements IVisInstance { /* $toolbar_enter.append('i').attr('class', 'fas fa-camera').attr('title','force update of preview').on('click', (d) => { //remove me - d3.event.stopPropagation(); - d3.event.preventDefault(); + d3v3.event.stopPropagation(); + d3v3.event.preventDefault(); this.data.moveSlide(this.data.cloneSingleSlideNode(d), d, false); this.update(); return false; diff --git a/src/clue/wrapper/ACLUEWrapper.ts b/src/clue/wrapper/ACLUEWrapper.ts index a23e9da8b..ea1d92366 100644 --- a/src/clue/wrapper/ACLUEWrapper.ts +++ b/src/clue/wrapper/ACLUEWrapper.ts @@ -142,7 +142,7 @@ export abstract class ACLUEWrapper extends EventHandler { document.body.dataset.clue = newMode.toString(); // lazy jquery import('jquery').then((jquery) => { - // $('nav').css('background-color', d3.rgb(255 * new_.exploration, 255 * new_.authoring, 255 * new_.presentation).darker().darker().toString()); + // $('nav').css('background-color', d3v3.rgb(255 * new_.exploration, 255 * new_.authoring, 255 * new_.presentation).darker().darker().toString()); if (newMode.presentation > 0.8) { $($right).animate({ width: 'hide' }, 'fast'); } else { @@ -167,7 +167,7 @@ export abstract class ACLUEWrapper extends EventHandler { // no animation initially const mode = ModeWrapper.getInstance().getMode(); document.body.dataset.clue = mode.toString(); - // $('nav').css('background-color', d3.rgb(255 * new_.exploration, 255 * new_.authoring, 255 * new_.presentation).darker().darker().toString()); + // $('nav').css('background-color', d3v3.rgb(255 * new_.exploration, 255 * new_.authoring, 255 * new_.presentation).darker().darker().toString()); if (mode.presentation > 0.8) { $right.style.display = 'none'; } else { diff --git a/src/demo/MainApp.tsx b/src/demo/MainApp.tsx index 894c397c5..53f75e1b9 100644 --- a/src/demo/MainApp.tsx +++ b/src/demo/MainApp.tsx @@ -9,5 +9,7 @@ const irisData = fetchIrisData(); export function MainApp() { const { status } = useAsync(initializeLibrary, []); - return
{status === 'success' ? : null}
; + const [show, setShow] = React.useState(false); + + return
{status === 'success' ? : null}
; } diff --git a/src/lineup/ARankingView.ts b/src/lineup/ARankingView.ts index e565e24b3..b24130d98 100644 --- a/src/lineup/ARankingView.ts +++ b/src/lineup/ARankingView.ts @@ -71,7 +71,7 @@ export abstract class ARankingView extends AView { private readonly panel: LineUpPanelActions; - private readonly generalVis: LineupVisWrapper; + private readonly generalVis: Promise; /** * clears and rebuilds this lineup instance from scratch @@ -247,21 +247,31 @@ export abstract class ARankingView extends AView { this.selectionHelper = new LineUpSelectionHelper(this.provider, () => this.itemIDType); this.panel = new LineUpPanelActions(this.provider, this.taggle.ctx, this.options, this.node.ownerDocument); + if (this.options.enableVisPanel) { - this.generalVis = new LineupVisWrapper({ - provider: this.provider, - selectionCallback: (ids: string[]) => { - // The incoming selection is already working with row.v.id instead of row.v._id, so we have to convert first. - this.selectionHelper.setGeneralVisSelection({ idtype: IDTypeManager.getInstance().resolveIdType(this.itemIDType.id), ids }); - }, - doc: this.node.ownerDocument, - }); + this.generalVis = import('../vis').then(() => { + const newVis = new LineupVisWrapper({ + provider: this.provider, + selectionCallback: (ids: string[]) => { + // The incoming selection is already working with row.v.id instead of row.v._id, so we have to convert first. + this.selectionHelper.setGeneralVisSelection({ idtype: IDTypeManager.getInstance().resolveIdType(this.itemIDType.id), ids }); + }, + doc: this.node.ownerDocument, + }); + + this.node.appendChild(newVis.node); - this.panel.on(LineUpPanelActions.EVENT_OPEN_VIS, () => { - this.generalVis.toggleCustomVis(); + this.selectionHelper.on(LineUpSelectionHelper.EVENT_SET_ITEM_SELECTION, (_event, sel: ISelection) => { + newVis.updateCustomVis(); + }); + + this.panel.on(LineUpPanelActions.EVENT_OPEN_VIS, () => { + newVis.toggleCustomVis(); + }); + + return newVis; }); } - // When a new column desc is added to the provider, update the panel chooser this.provider.on(LocalDataProvider.EVENT_ADD_DESC, () => this.updatePanelChooser()); // TODO: Include this when the remove event is included: https://github.com/lineupjs/lineupjs/issues/338 @@ -281,6 +291,7 @@ export abstract class ARankingView extends AView { this.panel.on(LineUpPanelActions.EVENT_ZOOM_IN, () => { this.taggle.zoomIn(); }); + if (this.options.enableOverviewMode) { const rule = spaceFillingRule(taggleOptions); @@ -296,11 +307,6 @@ export abstract class ARankingView extends AView { if (this.options.enableSidePanel) { this.node.appendChild(this.panel.node); - - if (options.enableVisPanel) { - this.node.appendChild(this.generalVis.node); - } - if (this.options.enableSidePanel !== 'top') { this.taggle.pushUpdateAble((ctx) => this.panel.panel.update(ctx)); } @@ -308,10 +314,6 @@ export abstract class ARankingView extends AView { this.selectionHelper.on(LineUpSelectionHelper.EVENT_SET_ITEM_SELECTION, (_event, sel: ISelection) => { this.setItemSelection(sel); - - if (options.enableVisPanel) { - this.generalVis.updateCustomVis(); - } }); this.selectionAdapter = this.createSelectionAdapter(); } @@ -465,9 +467,9 @@ export abstract class ARankingView extends AView { } this.panel.hide(); - if (this.options.enableVisPanel) { - this.generalVis.hide(); - } + this.generalVis?.then((vis) => { + vis.hide(); + }); if (this.dump !== null) { return; @@ -519,7 +521,7 @@ export abstract class ARankingView extends AView { const columnPromise: Promise = new Promise((resolve) => { columnResolve = resolve; }); - const data: Promise[]> = new Promise((resolve) => { + const data: Promise[]> = new Promise((resolve, reject) => { (async () => { // Wait for the column to be initialized const col = await columnPromise; @@ -592,7 +594,8 @@ export abstract class ARankingView extends AView { } continue; } else { - throw e; + reject(e); + done = true; } } } diff --git a/src/lineup/Ranking.tsx b/src/lineup/Ranking.tsx index 493a79340..f5d3ff19f 100644 --- a/src/lineup/Ranking.tsx +++ b/src/lineup/Ranking.tsx @@ -55,6 +55,7 @@ import { useAsync } from '../hooks/useAsync'; import { StructureImageColumn, StructureImageFilterDialog, StructureImageRenderer } from './structureImage'; import TDPLocalDataProvider from './provider/TDPLocalDataProvider'; import { WebpackEnv } from '../base'; +import { LineupVisWrapper } from '../vis/LineupVisWrapper'; export interface IScoreResult { instance: ILazyLoadedColumn; @@ -90,6 +91,7 @@ const defaults: IRankingOptions = { itemNamePlural: 'items', itemRowHeight: null, itemIDType: null, + idField: 'id', additionalScoreParameter: null, additionalComputeScoreParameter: null, subType: { key: '', value: '' }, @@ -152,6 +154,7 @@ const defaults: IRankingOptions = { export interface IRankingOptions extends IARankingViewOptions { mode: EViewMode; enableCustomVis: boolean; + idField?: string; } function suffix(name: string): string { @@ -428,7 +431,19 @@ export function Ranking({ const luBackdrop = lineupContainerRef.current.querySelector('.lu-backdrop'); lineupContainerRef.current.parentElement.appendChild(luBackdrop); } - selectionHelperRef.current = new LineUpSelectionHelper(providerRef.current, () => itemIDType as IDType); + selectionHelperRef.current = new LineUpSelectionHelper(providerRef.current, () => itemIDType as IDType, { + idField: options.idField, + }); + + const generalVis = new LineupVisWrapper({ + provider: providerRef.current, + selectionCallback: (ids: string[]) => { + // The incoming selection is already working with row.v.id instead of row.v._id, so we have to convert first. + selectionHelperRef.current.setGeneralVisSelection({ idtype: itemIDType ? IDTypeManager.getInstance().resolveIdType(itemIDType.id) : null, ids }); + }, + doc: lineupContainerRef.current.ownerDocument, + idField: options.idField, + }); panelRef.current = new LineUpPanelActions(providerRef.current, taggleRef.current.ctx, options, lineupContainerRef.current.ownerDocument); @@ -482,9 +497,9 @@ export function Ranking({ taggleRef.current.zoomIn(); }); - // TODO: panelRef.current.on(LineUpPanelActions.EVENT_OPEN_VIS, () => { - // this.generalVis.toggleCustomVis(); - // }); + panelRef.current.on(LineUpPanelActions.EVENT_OPEN_VIS, () => { + generalVis.toggleCustomVis(); + }); if (options.enableOverviewMode) { const rule = spaceFillingRule(taggleOptions); @@ -498,9 +513,14 @@ export function Ranking({ panelRef.current.fire(LineUpPanelActions.EVENT_TOGGLE_OVERVIEW, true); } } + if (options.enableSidePanel) { lineupContainerRef.current.parentElement.appendChild(panelRef.current.node); + if (options.enableVisPanel) { + lineupContainerRef.current.parentElement.appendChild(generalVis.node); + } + if (options.enableSidePanel !== 'top') { taggleRef.current.pushUpdateAble((ctx) => panelRef.current.panel.update(ctx)); } diff --git a/src/lineup/internal/LineUpSelectionHelper.ts b/src/lineup/internal/LineUpSelectionHelper.ts index 5eb3a0480..e5d8b7aef 100644 --- a/src/lineup/internal/LineUpSelectionHelper.ts +++ b/src/lineup/internal/LineUpSelectionHelper.ts @@ -9,6 +9,8 @@ export class LineUpSelectionHelper extends EventHandler { private _rows: IRow[] = []; + private idField: string; + /** * selected indices ordered by selection order, i.e. the first selected is the 0. item * @type {number[]} @@ -17,16 +19,25 @@ export class LineUpSelectionHelper extends EventHandler { private uid2index = new Map(); - constructor(private readonly provider: LocalDataProvider, private readonly idType: () => IDType) { + constructor( + private readonly provider: LocalDataProvider, + private readonly idType: () => IDType, + { + idField = 'id', + }: { + idField?: string; + } = {}, + ) { super(); this.addEventListener(); + this.idField = idField; } private buildCache() { this.uid2index.clear(); // create lookup cache this._rows.forEach((row, i) => { - this.uid2index.set(row.id, i); + this.uid2index.set(row[this.idField], i); }); } @@ -60,7 +71,7 @@ export class LineUpSelectionHelper extends EventHandler { console.warn('no idType defined for this ranking view'); return; } - const selection: ISelection = { idtype: idType, ids: this.orderedSelectedIndices.map((i) => this._rows[i].id) }; + const selection: ISelection = { idtype: idType, ids: this.orderedSelectedIndices.map((i) => this._rows[i][this.idField]) }; // Note: listener of that event calls LineUpSelectionHelper.setItemSelection() this.fire(LineUpSelectionHelper.EVENT_SET_ITEM_SELECTION, selection); } @@ -78,7 +89,7 @@ export class LineUpSelectionHelper extends EventHandler { * gets the rows ids as a set, i.e. the order doesn't mean anything */ rowIdsAsSet(indices: number[]): string[] { - return (indices.length === this._rows.length ? this._rows.map((d) => d.id) : indices.map((i) => this._rows[i].id)).sort(); + return (indices.length === this._rows.length ? this._rows.map((d) => d[this.idField]) : indices.map((i) => this._rows[i][this.idField])).sort(); } setItemSelection(sel: ISelection) { diff --git a/src/lineup/panel/LineUpOrderedRowIndicies.ts b/src/lineup/panel/LineUpOrderedRowIndicies.ts index da218b27d..645cb7b32 100644 --- a/src/lineup/panel/LineUpOrderedRowIndicies.ts +++ b/src/lineup/panel/LineUpOrderedRowIndicies.ts @@ -74,7 +74,8 @@ export class LineUpOrderedRowIndicies extends EventHandler { // NOTE: the `indices` does not reflect the sorting of the (first) ranking, instead the ids are always ordered ascending if (provider.getFirstRanking() != null) { const order = Array.from(provider.getFirstRanking().getOrder()); // use order of the first ranking - this._selected = this.sortValues(provider.getSelection(), order); + + this._selected = this.sortValues(provider.getSelection(), Object.fromEntries(order.map((o, i) => [o, i]))); this.fire(LineUpOrderedRowIndicies.EVENT_UPDATE_SELECTED, this._selected); } }); @@ -109,7 +110,7 @@ export class LineUpOrderedRowIndicies extends EventHandler { // update sorting of selected rows if (dirtyReason.indexOf(EDirtyReason.SORT_CRITERIA_CHANGED) > -1) { const order = Array.from(provider.getFirstRanking().getOrder()); // use order of the first ranking - this._selected = this.sortValues(provider.getSelection(), order); + this._selected = this.sortValues(provider.getSelection(), Object.fromEntries(order.map((o, i) => [o, i]))); this.fire(LineUpOrderedRowIndicies.EVENT_UPDATE_SELECTED, this._selected); } }, @@ -126,10 +127,10 @@ export class LineUpOrderedRowIndicies extends EventHandler { }); } - private sortValues(values: number[], order: number[]): number[] { + private sortValues(values: number[], order: Record): number[] { return values.sort((a, b) => { - const aIndex = order.indexOf(a); - const bIndex = order.indexOf(b); + const aIndex = order[a]; + const bIndex = order[b]; return (aIndex > -1 ? aIndex : Infinity) - (bIndex > -1 ? bIndex : Infinity); // sort missing values in the order array to the end }); } diff --git a/src/lineup/structureImage/StructureImageFilterDialog.ts b/src/lineup/structureImage/StructureImageFilterDialog.ts index 393e72349..c8094b9a2 100644 --- a/src/lineup/structureImage/StructureImageFilterDialog.ts +++ b/src/lineup/structureImage/StructureImageFilterDialog.ts @@ -59,8 +59,7 @@ export class StructureImageFilterDialog extends ADialog { } const provider = this.ctx.provider as LocalDataProvider; - const data = provider.viewRawRows(new Array(provider.getFirstRanking().length).fill(null).map((_, i) => i)); - const structures = data.map((d) => this.column.getValue(d)); + const structures = provider.viewRawRows(provider.data.map((_, i) => i)).map((d) => this.column.getValue(d)); // empty input field, but missing values checkbox is checked if (filter == null && filterMissing) { @@ -123,7 +122,7 @@ export class StructureImageFilterDialog extends ADialog { node.insertAdjacentHTML( 'beforeend', ` - diff --git a/src/lineup/structureImage/StructureImageRenderer.ts b/src/lineup/structureImage/StructureImageRenderer.ts index 58a093fd7..fa165bd61 100644 --- a/src/lineup/structureImage/StructureImageRenderer.ts +++ b/src/lineup/structureImage/StructureImageRenderer.ts @@ -13,7 +13,7 @@ import { abortAble } from 'lineupengine'; import { StructureImageColumn } from './StructureImageColumn'; import { I18nextManager } from '../../i18n'; -const template = ''; +const template = '
'; function getImageURL(structure: string, substructure: string | null = null, align: string | null = null): string { return `/api/rdkit/?structure=${encodeURIComponent(structure)}${substructure ? `&substructure=${encodeURIComponent(substructure)}` : ''}${ @@ -94,7 +94,6 @@ export class StructureImageRenderer implements ICellRendererFactory { } n.style.backgroundImage = `url('${getImageURL(value, col.getFilter()?.filter, col.getAlign())}')`; n.title = value; - n.href = `https://pubchem.ncbi.nlm.nih.gov/#query=${value}`; }); } return null; diff --git a/src/locales/en/tdp.json b/src/locales/en/tdp.json index ae7714199..f7256b202 100644 --- a/src/locales/en/tdp.json +++ b/src/locales/en/tdp.json @@ -177,12 +177,14 @@ }, "vis": { - "violinError": "To create a Violin plot, please select at least 1 numerical column.", - "scatterError": "To create a Scatterplot, please select at least 2 numerical columns.", - "stripError": "To create a Strip plot, please select at least 1 numerical column.", - "barError": "To create a Bar chart, please select 1 categorical column.", - "pcpError": "To create a Parallel Coordinates Plot, please select at least 2 numerical or categorical columns.", - "errorHeader": "Invalid Settings", + "violinError": "To create a violin plot, please select at least 1 numerical column.", + "scatterError": "To create a scatter plot, please select at least 2 numerical columns.", + "hexbinError": "To create a hexbin plot, please select at least 2 numerical columns.", + "stripError": "To create a strip plot, please select at least 1 numerical column.", + "barError": "To create a bar chart, please select 1 categorical column.", + "errorHeader": "Invalid settings", + "openSettings": "Open settings", + "hexbinOptions": "Hexbin options", "missingValue": "n/a" }, diff --git a/src/scss/main.scss b/src/scss/main.scss index 08eea8b3c..105207abb 100644 --- a/src/scss/main.scss +++ b/src/scss/main.scss @@ -15,6 +15,8 @@ @import './vendors/select2'; @import './vendors/select3'; @import './vendors/lineup'; +@import './vendors/plotly'; + @import './components/form_builder'; @import './components/button_group'; diff --git a/src/scss/vendors/_lineup.scss b/src/scss/vendors/_lineup.scss index 1413a6492..b8a98a1a1 100644 --- a/src/scss/vendors/_lineup.scss +++ b/src/scss/vendors/_lineup.scss @@ -112,10 +112,13 @@ $lu_include_font_awesome: false !default; .lu-dialog { .lu-checkbox { display: flex; - align-items: baseline; gap: 5px; margin: unset; } + + .lu-color-gradient { + margin: 5px; + } } .lu-dialog.lu-more-options { diff --git a/src/scss/vendors/_plotly.scss b/src/scss/vendors/_plotly.scss new file mode 100644 index 000000000..d03e4d5ef --- /dev/null +++ b/src/scss/vendors/_plotly.scss @@ -0,0 +1,8 @@ +.tdpCoreVis .nsewdrag { + // Remove crosshair mouse pointer -> use regular mouse pointer + cursor: default !important +} + +.hexbinSvg .overlay { + cursor: default !important +} \ No newline at end of file diff --git a/src/views/visyn/demo/VisynDemoView.tsx b/src/views/visyn/demo/VisynDemoView.tsx index f9a90e5b3..337504743 100644 --- a/src/views/visyn/demo/VisynDemoView.tsx +++ b/src/views/visyn/demo/VisynDemoView.tsx @@ -82,7 +82,6 @@ export function VisynDemoView({ desc, parameters, onParametersChanged }: DemoVis { onParametersChanged((p) => ({ ...p, diff --git a/src/vis/LineupVisWrapper.ts b/src/vis/LineupVisWrapper.ts index c8101e0c1..ee8ec85c8 100644 --- a/src/vis/LineupVisWrapper.ts +++ b/src/vis/LineupVisWrapper.ts @@ -16,6 +16,8 @@ export class LineupVisWrapper { private viewable: boolean; + private idField: string; + constructor( protected readonly props: { provider: LocalDataProvider; @@ -25,19 +27,21 @@ export class LineupVisWrapper { */ selectionCallback(visynIds: string[]): void; doc: Document; + idField?: string; }, ) { this.node = props.doc.createElement('div'); this.node.id = 'customVisDiv'; this.node.classList.add('custom-vis-panel'); this.viewable = false; + this.idField = props.idField ?? 'id'; this.PLOTLY_CATEGORICAL_MISSING_VALUE = I18nextManager.getInstance().i18n.t('tdp:core.vis.missingValue'); } getSelectedList = (): string[] => { const selectedRows = this.props.provider.viewRaw(this.props.provider.getSelection()) as IRow[]; - return selectedRows.map((r) => r.id.toString()); + return selectedRows.map((r) => r[this.idField].toString()); }; filterCallback = (s: string) => { @@ -73,7 +77,7 @@ export class LineupVisWrapper { }; const mapData = >(innerData: IDataRow[], column: T) => { - return innerData.map((d) => >>{ id: d.v.id, val: column.getRaw(d) }); + return innerData.map((d) => >>{ id: d.v[this.idField], val: column.getRaw(d) }); }; const getColumnValue = async >(column: T) => { diff --git a/src/vis/Vis.tsx b/src/vis/Vis.tsx index 0affc9f48..75c7bc065 100644 --- a/src/vis/Vis.tsx +++ b/src/vis/Vis.tsx @@ -1,6 +1,7 @@ import * as React from 'react'; import d3v3 from 'd3v3'; import { useMemo, useEffect } from 'react'; +import { useUncontrolled } from '@mantine/hooks'; import { ESupportedPlotlyVis, IVisConfig, @@ -18,30 +19,17 @@ import { import { isScatter, scatterMergeDefaultConfig, ScatterVis } from './scatter'; import { barMergeDefaultConfig, isBar, BarVis } from './bar'; import { isViolin, violinMergeDefaultConfig, ViolinVis } from './violin'; -import { isStrip, stripMergeDefaultConfig, StripVis } from './strip'; -import { isPCP, pcpMergeDefaultConfig, PCPVis } from './pcp'; import { getCssValue } from '../utils'; import { useSyncedRef } from '../hooks/useSyncedRef'; - -const DEFAULT_COLORS = [ - getCssValue('visyn-c1'), - getCssValue('visyn-c2'), - getCssValue('visyn-c3'), - getCssValue('visyn-c4'), - getCssValue('visyn-c5'), - getCssValue('visyn-c6'), - getCssValue('visyn-c7'), - getCssValue('visyn-c8'), - getCssValue('visyn-c9'), - getCssValue('visyn-c10'), -]; +import { hexinbMergeDefaultConfig, isHexbin } from './hexbin/utils'; +import { HexbinVis } from './hexbin/HexbinVis'; const DEFAULT_SHAPES = ['circle', 'square', 'triangle-up', 'star']; export function Vis({ columns, selected = [], - colors = DEFAULT_COLORS, + colors = null, shapes = DEFAULT_SHAPES, selectionCallback = () => null, filterCallback = () => null, @@ -49,7 +37,10 @@ export function Vis({ closeCallback = () => null, showCloseButton = false, externalConfig = null, - hideSidebar = false, + enableSidebar = true, + showSidebar: internalShowSidebar, + setShowSidebar: internalSetShowSidebar, + showSidebarDefault = false, }: { /** * Required data columns which are displayed. @@ -79,8 +70,18 @@ export function Vis({ closeCallback?: () => void; showCloseButton?: boolean; externalConfig?: IVisConfig; - hideSidebar?: boolean; + enableSidebar?: boolean; + showSidebar?: boolean; + setShowSidebar?(show: boolean): void; + showSidebarDefault?: boolean; }) { + const [showSidebar, setShowSidebar] = useUncontrolled({ + value: internalShowSidebar, + defaultValue: showSidebarDefault, + finalValue: false, + onChange: internalSetShowSidebar, + }); + // Each time you switch between vis config types, there is one render where the config is inconsistent with the type before the merge functions in the useEffect below can be called. // To ensure that we never render an incosistent config, keep a consistent and a current in the config. Always render the consistent. // eslint-disable-next-line @typescript-eslint/naming-convention @@ -144,18 +145,14 @@ export function Vis({ const newConfig = violinMergeDefaultConfig(columns, inconsistentVisConfig); _setVisConfig({ current: newConfig, consistent: newConfig }); } - if (isStrip(inconsistentVisConfig)) { - const newConfig = stripMergeDefaultConfig(columns, inconsistentVisConfig); - _setVisConfig({ current: newConfig, consistent: newConfig }); - } - if (isPCP(inconsistentVisConfig)) { - const newConfig = pcpMergeDefaultConfig(columns, inconsistentVisConfig); - _setVisConfig({ current: newConfig, consistent: newConfig }); - } if (isBar(inconsistentVisConfig)) { const newConfig = barMergeDefaultConfig(columns, inconsistentVisConfig); _setVisConfig({ current: newConfig, consistent: newConfig }); } + if (isHexbin(inconsistentVisConfig)) { + const newConfig = hexinbMergeDefaultConfig(columns, inconsistentVisConfig); + _setVisConfig({ current: newConfig, consistent: newConfig }); + } // DANGER:: this useEffect should only occur when the visConfig.type changes. adding visconfig into the dep array will cause an infinite loop. // eslint-disable-next-line react-hooks/exhaustive-deps }, [inconsistentVisConfig.type]); @@ -178,7 +175,22 @@ export function Vis({ }, [selected]); const scales: Scales = useMemo(() => { - const colorScale = d3v3.scale.ordinal().range(colors); + const colorScale = d3v3.scale + .ordinal() + .range( + colors || [ + getCssValue('visyn-c1'), + getCssValue('visyn-c2'), + getCssValue('visyn-c3'), + getCssValue('visyn-c4'), + getCssValue('visyn-c5'), + getCssValue('visyn-c6'), + getCssValue('visyn-c7'), + getCssValue('visyn-c8'), + getCssValue('visyn-c9'), + getCssValue('visyn-c10'), + ], + ); return { color: colorScale, @@ -189,6 +201,12 @@ export function Vis({ return
; } + const commonProps = { + showSidebar, + setShowSidebar, + enableSidebar, + }; + return ( <> {isScatter(visConfig) ? ( @@ -207,9 +225,10 @@ export function Vis({ selectedList={selected} columns={columns} scales={scales} - hideSidebar={hideSidebar} + showSidebar={showSidebar} showCloseButton={showCloseButton} closeButtonCallback={closeCallback} + {...commonProps} /> ) : null} @@ -224,50 +243,34 @@ export function Vis({ setConfig={setVisConfig} columns={columns} scales={scales} - hideSidebar={hideSidebar} showCloseButton={showCloseButton} closeButtonCallback={closeCallback} + {...commonProps} /> ) : null} - - {isStrip(visConfig) ? ( - ) : null} - {isPCP(visConfig) ? ( - - ) : null} - - {isBar(visConfig) ? ( - ) : null} diff --git a/src/vis/VisSidebar.tsx b/src/vis/VisSidebar.tsx index 7ea97eadb..4335fe23e 100644 --- a/src/vis/VisSidebar.tsx +++ b/src/vis/VisSidebar.tsx @@ -3,11 +3,7 @@ import { isBar } from './bar/utils'; import { isScatter } from './scatter/utils'; import { IVisConfig, VisColumn, ICommonVisSideBarProps } from './interfaces'; import { isViolin } from './violin/utils'; -import { isStrip } from './strip/utils'; -import { isPCP } from './pcp/utils'; -import { PCPVisSidebar } from './pcp/PCPVisSidebar'; import { BarVisSidebar } from './bar/BarVisSidebar'; -import { StripVisSidebar } from './strip/StripVisSidebar'; import { ViolinVisSidebar } from './violin/ViolinVisSidebar'; import { ScatterVisSidebar } from './scatter/ScatterVisSidebar'; @@ -62,14 +58,6 @@ export function VisSidebar({ columns, filterCallback = () => null, externalConfi /> ) : null} - {isStrip(externalConfig) ? ( - - ) : null} - - {isPCP(externalConfig) ? ( - - ) : null} - {isBar(externalConfig) ? ( ) : null} diff --git a/src/vis/VisSidebarWrapper.tsx b/src/vis/VisSidebarWrapper.tsx index 0f8de9804..b96e760e1 100644 --- a/src/vis/VisSidebarWrapper.tsx +++ b/src/vis/VisSidebarWrapper.tsx @@ -1,22 +1,37 @@ +import { Container, Drawer } from '@mantine/core'; import * as React from 'react'; -import { ReactNode } from 'react'; +import { ReactNode, useRef } from 'react'; -export function VisSidebarWrapper({ id, children }: { id: string; children: ReactNode }) { +export function VisSidebarWrapper({ + id, + children, + open = true, + target, + onClose, +}: { + id: string; + children: ReactNode; + open?: boolean; + target: HTMLElement; + onClose: () => void; +}) { return ( -
- -
- {children} -
-
+ onClose()} + size="sm" + > + {children} + ); } diff --git a/src/vis/bar/BarVis.tsx b/src/vis/bar/BarVis.tsx index 7f1417502..315971207 100644 --- a/src/vis/bar/BarVis.tsx +++ b/src/vis/bar/BarVis.tsx @@ -1,7 +1,11 @@ import * as React from 'react'; -import d3 from 'd3v3'; +import d3v3 from 'd3v3'; import { merge, uniqueId, difference } from 'lodash'; import { useEffect, useMemo, useState } from 'react'; +import { ActionIcon, Container, Space, Tooltip } from '@mantine/core'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faGear } from '@fortawesome/free-solid-svg-icons'; +import { Layout } from 'plotly.js-dist-min'; import { Scales, VisColumn, IVisConfig, IBarConfig, EBarGroupingType } from '../interfaces'; import { PlotlyComponent, Plotly } from '../Plot'; import { InvalidCols } from '../general'; @@ -11,8 +15,31 @@ import { createBarTraces } from './utils'; import { BarVisSidebar } from './BarVisSidebar'; import { VisSidebarWrapper } from '../VisSidebarWrapper'; import { CloseButton } from '../sidebar/CloseButton'; +import { I18nextManager } from '../../i18n'; -interface BarVisProps { +const defaultExtensions = { + prePlot: null, + postPlot: null, + preSidebar: null, + postSidebar: null, +}; + +export function BarVis({ + config, + optionsConfig, + extensions, + columns, + setConfig, + scales, + selectionCallback = () => null, + selectedMap = {}, + selectedList = [], + enableSidebar, + showSidebar, + setShowSidebar, + showCloseButton = false, + closeButtonCallback = () => null, +}: { config: IBarConfig; optionsConfig?: { group?: { @@ -50,36 +77,18 @@ interface BarVisProps { selectedList: string[]; setConfig: (config: IVisConfig) => void; scales: Scales; - hideSidebar?: boolean; -} - -const defaultExtensions = { - prePlot: null, - postPlot: null, - preSidebar: null, - postSidebar: null, -}; - -export function BarVis({ - config, - optionsConfig, - extensions, - columns, - setConfig, - scales, - selectionCallback = () => null, - selectedMap = {}, - selectedList = [], - hideSidebar = false, - showCloseButton = false, - closeButtonCallback = () => null, -}: BarVisProps) { + showSidebar?: boolean; + setShowSidebar?(show: boolean): void; + enableSidebar?: boolean; +}) { const mergedExtensions = React.useMemo(() => { return merge({}, defaultExtensions, extensions); }, [extensions]); const { value: traces, status: traceStatus, error: traceError } = useAsync(createBarTraces, [columns, config, scales]); + const [layout, setLayout] = useState>(null); + // Make sure selected values is right for each plot. const finalTraces = useMemo(() => { if (!traces) { @@ -140,24 +149,12 @@ export function BarVis({ ro.observe(plotlyDivRef.current); } - if (hideSidebar) { - return; - } - - const menu = document.getElementById(`generalVisBurgerMenu${id}`); - - menu.addEventListener('hidden.bs.collapse', () => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - - menu.addEventListener('shown.bs.collapse', () => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - }, [id, hideSidebar, plotlyDivRef]); + return () => ro.disconnect(); + }, [id, plotlyDivRef]); - const layout = React.useMemo(() => { + React.useEffect(() => { if (!finalTraces) { - return null; + return; } const innerLayout: Partial = { @@ -170,6 +167,12 @@ export function BarVis({ font: { family: 'Roboto, sans-serif', }, + margin: { + t: 25, + r: 25, + l: 25, + b: 25, + }, autosize: true, grid: { rows: finalTraces.rows, columns: finalTraces.cols, xgap: 0.3, pattern: 'independent' }, shapes: [], @@ -177,7 +180,9 @@ export function BarVis({ dragmode: false, }; - return beautifyLayout(finalTraces, innerLayout); + setLayout({ ...layout, ...beautifyLayout(finalTraces, innerLayout, null) }); + // WARNING: Do not update when layout changes, that would be an infinite loop. + // eslint-disable-next-line react-hooks/exhaustive-deps }, [finalTraces, config.groupType]); const traceData = useMemo(() => { @@ -189,64 +194,68 @@ export function BarVis({ }, [finalTraces]); return ( -
-
- {mergedExtensions.prePlot} - {traceStatus === 'success' && finalTraces?.plots.length > 0 ? ( - { - // plotly types here are just wrong. So have to convert to unknown first. - const selectedPoints: string[] = e.points[0].customdata as unknown as string[]; - - let removeSelectionFlag = true; - - for (const pointId of selectedPoints) { - if (!selectedMap[pointId]) { - removeSelectionFlag = false; - break; - } - } + + {showCloseButton ? : null} - if (removeSelectionFlag) { - const newList = difference(selectedList, selectedPoints); - selectionCallback(newList); - } else if (e.event.ctrlKey) { - const newList = Array.from(new Set([...selectedList, ...selectedPoints])); - selectionCallback(newList); - } else { - selectionCallback(selectedPoints); - } - }} - // plotly redraws everything on updates, so you need to reappend title and - onUpdate={() => { - for (const p of finalTraces.plots) { - d3.select(`g .${p.data.xaxis}title`).style('pointer-events', 'all').append('title').text(p.xLabel); + {mergedExtensions.prePlot} + + {enableSidebar ? ( + + setShowSidebar(true)}> + + + + ) : null} + {traceStatus === 'success' && layout && finalTraces?.plots.length > 0 ? ( + { + // plotly types here are just wrong. So have to convert to unknown first. + const selectedPoints: string[] = e.points[0].customdata as unknown as string[]; + + let removeSelectionFlag = true; - d3.select(`g .${p.data.yaxis}title`).style('pointer-events', 'all').append('title').text(p.yLabel); + for (const pointId of selectedPoints) { + if (!selectedMap[pointId]) { + removeSelectionFlag = false; + break; } - }} - /> - ) : traceStatus !== 'pending' ? ( - - ) : null} - {mergedExtensions.postPlot} - {showCloseButton ? : null} -
- {!hideSidebar ? ( - + } + + if (removeSelectionFlag) { + const newList = difference(selectedList, selectedPoints); + selectionCallback(newList); + } else if (e.event.ctrlKey) { + const newList = Array.from(new Set([...selectedList, ...selectedPoints])); + selectionCallback(newList); + } else { + selectionCallback(selectedPoints); + } + }} + // plotly redraws everything on updates, so you need to reappend title and + onUpdate={() => { + for (const p of finalTraces.plots) { + d3v3.select(`g .${p.data.xaxis}title`).style('pointer-events', 'all').append('title').text(p.xLabel); + + d3v3.select(`g .${p.data.yaxis}title`).style('pointer-events', 'all').append('title').text(p.yLabel); + } + }} + /> + ) : traceStatus !== 'pending' ? ( + + ) : null} + {mergedExtensions.postPlot} + {showSidebar ? ( + setShowSidebar(false)}> ) : null} -
+ ); } diff --git a/src/vis/bar/BarVisSidebar.tsx b/src/vis/bar/BarVisSidebar.tsx index 6f60ee4bb..f3dee77ee 100644 --- a/src/vis/bar/BarVisSidebar.tsx +++ b/src/vis/bar/BarVisSidebar.tsx @@ -1,6 +1,7 @@ import * as React from 'react'; import { useMemo } from 'react'; import { merge } from 'lodash'; +import { Container, Divider, Stack } from '@mantine/core'; import { ColumnInfo, EBarDirection, @@ -15,9 +16,7 @@ import { EColumnTypes, } from '../interfaces'; import { VisTypeSelect } from '../sidebar/VisTypeSelect'; -import { WarningMessage } from '../sidebar/WarningMessage'; import { GroupSelect } from '../sidebar/GroupSelect'; -import { MultiplesSelect } from '../sidebar/MultiplesSelect'; import { BarDirectionButtons } from '../sidebar/BarDirectionButtons'; import { BarGroupTypeButtons } from '../sidebar/BarGroupTypeButtons'; import { BarDisplayButtons } from '../sidebar/BarDisplayTypeButtons'; @@ -104,63 +103,68 @@ export function BarVisSidebar({ }, [extensions]); return ( -
- + setConfig({ ...(config as any), type })} currentSelected={config.type} /> -
- - setConfig({ - ...config, - catColumnSelected, - multiples: config.multiples && config.multiples.id === catColumnSelected.id ? null : config.multiples, - group: config.group && config.group.id === catColumnSelected.id ? null : config.group, - }) - } - columns={columns} - currentSelected={config.catColumnSelected} - type={[EColumnTypes.CATEGORICAL]} - label="Categorical Column" - /> - { - if (config.aggregateColumn === null) { - setConfig({ ...config, aggregateType, aggregateColumn: columns.find((col) => col.type === EColumnTypes.NUMERICAL).info }); - } else { - setConfig({ ...config, aggregateType }); + + + + setConfig({ + ...config, + catColumnSelected, + multiples: config.multiples && config.multiples.id === catColumnSelected?.id ? null : config.multiples, + group: config.group && config.group.id === catColumnSelected?.id ? null : config.group, + }) } - }} - aggregateColumnSelectCallback={(aggregateColumn: ColumnInfo) => setConfig({ ...config, aggregateColumn })} - columns={columns} - currentSelected={config.aggregateType} - aggregateColumn={config.aggregateColumn} - /> -
+ columns={columns} + currentSelected={config.catColumnSelected} + type={[EColumnTypes.CATEGORICAL]} + label="Categorical column" + /> + { + if (config.aggregateColumn === null) { + setConfig({ ...config, aggregateType, aggregateColumn: columns.find((col) => col.type === EColumnTypes.NUMERICAL).info }); + } else { + setConfig({ ...config, aggregateType }); + } + }} + aggregateColumnSelectCallback={(aggregateColumn: ColumnInfo) => setConfig({ ...config, aggregateColumn })} + columns={columns} + currentSelected={config.aggregateType} + aggregateColumn={config.aggregateColumn} + /> +
+ {mergedExtensions.preSidebar} - {mergedOptionsConfig.group.enable - ? mergedOptionsConfig.group.customComponent || ( - setConfig({ ...config, group })} - groupTypeSelectCallback={(groupType: EBarGroupingType) => setConfig({ ...config, groupType })} - groupDisplaySelectCallback={(display: EBarDisplayType) => setConfig({ ...config, display })} - displayType={config.display} - groupType={config.groupType} - columns={columns.filter((c) => config.catColumnSelected && c.info.id !== config.catColumnSelected.id)} - currentSelected={config.group} - /> - ) - : null} - {mergedOptionsConfig.multiples.enable - ? mergedOptionsConfig.multiples.customComponent || ( - setConfig({ ...config, multiples })} - columns={columns.filter((c) => config.catColumnSelected && c.info.id !== config.catColumnSelected.id)} - currentSelected={config.multiples} - /> - ) - : null} -
+ + {mergedOptionsConfig.group.enable + ? mergedOptionsConfig.group.customComponent || ( + setConfig({ ...config, group })} + groupTypeSelectCallback={(groupType: EBarGroupingType) => setConfig({ ...config, groupType })} + groupDisplaySelectCallback={(display: EBarDisplayType) => setConfig({ ...config, display })} + displayType={config.display} + groupType={config.groupType} + columns={columns.filter((c) => config.catColumnSelected && c.info.id !== config.catColumnSelected.id)} + currentSelected={config.group} + /> + ) + : null} + {mergedOptionsConfig.multiples.enable + ? mergedOptionsConfig.multiples.customComponent || ( + setConfig({ ...config, multiples })} + columns={columns.filter((c) => config.catColumnSelected && c.info.id !== config.catColumnSelected.id)} + currentSelected={config.multiples} + label="Multiples" + type={[EColumnTypes.CATEGORICAL]} + /> + ) + : null} + + {mergedOptionsConfig.direction.enable ? mergedOptionsConfig.direction.customComponent || ( setConfig({ ...config, direction })} currentSelected={config.direction} /> @@ -168,6 +172,6 @@ export function BarVisSidebar({ : null} {mergedExtensions.postSidebar} -
+ ); } diff --git a/src/vis/general/InvalidCols.tsx b/src/vis/general/InvalidCols.tsx index 192ea72f2..30cc12a2e 100644 --- a/src/vis/general/InvalidCols.tsx +++ b/src/vis/general/InvalidCols.tsx @@ -1,12 +1,14 @@ import * as React from 'react'; +import { Alert, Center, Stack } from '@mantine/core'; export function InvalidCols({ headerMessage, bodyMessage }: { headerMessage: string; bodyMessage: string }) { return ( -
-
{headerMessage}
-
-

{bodyMessage}

-
-
+ +
+ + {bodyMessage} + +
+
); } diff --git a/src/vis/general/layoutUtils.ts b/src/vis/general/layoutUtils.ts index 3f508369d..f0cfd4aa5 100644 --- a/src/vis/general/layoutUtils.ts +++ b/src/vis/general/layoutUtils.ts @@ -7,7 +7,7 @@ import { Plotly } from '../Plot'; * @param maxLength Maximum text length (default: 50) */ export function truncateText(text: string, maxLength = 50) { - return text.length > maxLength ? `${text.substring(0, maxLength)}\u2026` : text; + return text?.length > maxLength ? `${text.substring(0, maxLength)}\u2026` : text; } export function columnNameWithDescription(col: ColumnInfo) { @@ -20,19 +20,18 @@ export function columnNameWithDescription(col: ColumnInfo) { * @param layout the current layout to be changed. Typed to any because the plotly types complain.p * @returns the changed layout */ -export function beautifyLayout(traces: PlotlyInfo, layout: Partial) { - const layoutEdit = layout; - layoutEdit.annotations = []; +export function beautifyLayout(traces: PlotlyInfo, layout: Partial, oldLayout: Partial, automargin = true) { + layout.annotations = []; traces.plots.forEach((t, i) => { - layoutEdit[`xaxis${i > 0 ? i + 1 : ''}`] = { - automargin: true, + layout[`xaxis${i > 0 ? i + 1 : ''}`] = { + ...oldLayout?.[`xaxis${i > 0 ? i + 1 : ''}`], + automargin, + // rangemode: 'tozero', tickvals: t.xTicks, ticktext: t.xTickLabels, text: t.xTicks, showline: false, - showspikes: true, - spikecolor: 'black', - spikethickness: 2, + showspikes: false, spikedash: 'dash', ticks: 'outside', title: { @@ -46,15 +45,15 @@ export function beautifyLayout(traces: PlotlyInfo, layout: Partial 0 ? i + 1 : ''}`] = { - automargin: true, + layout[`yaxis${i > 0 ? i + 1 : ''}`] = { + ...oldLayout?.[`yaxis${i > 0 ? i + 1 : ''}`], + automargin, + // rangemode: 'tozero', tickvals: t.yTicks, ticktext: t.yTickLabels, text: t.yTicks, showline: false, - showspikes: true, - spikecolor: 'black', - spikethickness: 2, + showspikes: false, spikedash: 'dash', ticks: 'outside', title: { @@ -68,7 +67,7 @@ export function beautifyLayout(traces: PlotlyInfo, layout: Partial 0 ? i + 1 : ''} domain`, @@ -87,7 +86,7 @@ export function beautifyLayout(traces: PlotlyInfo, layout: Partial 0 ? i + 1 : ''} domain`, @@ -106,7 +105,7 @@ export function beautifyLayout(traces: PlotlyInfo, layout: Partial 0 ? i + 1 : ''} domain`, @@ -125,7 +124,7 @@ export function beautifyLayout(traces: PlotlyInfo, layout: Partial 0 ? i + 1 : ''} domain`, @@ -145,7 +144,7 @@ export function beautifyLayout(traces: PlotlyInfo, layout: Partial null, + selected = {}, + enableSidebar, + setShowSidebar, + showSidebar, +}: { + config: IHexbinConfig; + extensions?: { + prePlot?: React.ReactNode; + postPlot?: React.ReactNode; + preSidebar?: React.ReactNode; + postSidebar?: React.ReactNode; + }; + columns: VisColumn[]; + setConfig: (config: IVisConfig) => void; + selectionCallback?: (ids: string[]) => void; + selected?: { [key: string]: boolean }; + showSidebar?: boolean; + setShowSidebar?(show: boolean): void; + enableSidebar?: boolean; +}) { + const mergedExtensions = useMemo(() => { + return merge({}, defaultExtensions, extensions); + }, [extensions]); + + const setShowSidebarRef = useSyncedRef(setShowSidebar); + // Cheating to open the sidebar after the first render, since it requires the container to be mounted + useEffect(() => { + setShowSidebarRef.current(true); + }, [setShowSidebarRef]); + + const ref = useRef(); + const id = React.useMemo(() => uniqueId('HexbinVis'), []); + + return ( + + {enableSidebar ? ( + + setShowSidebar(true)}> + + + + ) : null} + + +
+ + setConfig({ ...config, dragMode })} + options={[EScatterSelectSettings.RECTANGLE, EScatterSelectSettings.PAN]} + dragMode={config.dragMode} + /> + +
+ 2 ? config.numColumnsSelected.length : 1}> + {config.numColumnsSelected.length < 2 ? ( + + ) : ( + <> + {config.numColumnsSelected.length > 2 ? ( + config.numColumnsSelected.map((xCol) => { + return config.numColumnsSelected.map((yCol) => { + if (xCol.id !== yCol.id) { + return ( + col.info.id === yCol.id), + columns.find((col) => col.info.id === xCol.id), + columns.find((col) => col.info.id === config.color?.id), + ]} + /> + ); + } + + return
; + }); + }) + ) : ( + col.info.id === config.numColumnsSelected[0].id), + columns.find((col) => col.info.id === config.numColumnsSelected[1].id), + columns.find((col) => col.info.id === config.color?.id), + ]} + /> + )} + {mergedExtensions.postPlot} + + )} + + + {showSidebar ? ( + setShowSidebar(false)}> + + + ) : null} + + ); +} diff --git a/src/vis/hexbin/HexbinVisSidebar.tsx b/src/vis/hexbin/HexbinVisSidebar.tsx new file mode 100644 index 000000000..faf4e9a6a --- /dev/null +++ b/src/vis/hexbin/HexbinVisSidebar.tsx @@ -0,0 +1,71 @@ +import * as React from 'react'; +import { useMemo } from 'react'; +import { merge } from 'lodash'; +import { Container, Divider, Stack } from '@mantine/core'; +import { ColumnInfo, EColumnTypes, EHexbinOptions, ESupportedPlotlyVis, IHexbinConfig, IVisConfig, VisColumn } from '../interfaces'; +import { VisTypeSelect } from '../sidebar/VisTypeSelect'; +import { NumericalColumnSelect } from '../sidebar'; +import { SingleColumnSelect } from '../sidebar/SingleColumnSelect'; +import { HexSizeSlider } from '../sidebar/HexSizeSlider'; +import { HexbinOptionSelect } from '../sidebar/HexbinOptionSelect'; +import { HexSizeSwitch } from '../sidebar/HexSizeSwitch'; +import { HexOpacitySwitch } from '../sidebar/HexOpacitySwitch'; + +interface DensityVisSidebarProps { + config: IHexbinConfig; + extensions?: { + prePlot?: React.ReactNode; + postPlot?: React.ReactNode; + preSidebar?: React.ReactNode; + postSidebar?: React.ReactNode; + }; + columns: VisColumn[]; + setConfig: (config: IVisConfig) => void; +} + +const defaultExtensions = { + prePlot: null, + postPlot: null, + preSidebar: null, + postSidebar: null, +}; + +export function HexbinVisSidebar({ config, extensions, columns, setConfig }: DensityVisSidebarProps) { + const mergedExtensions = useMemo(() => { + return merge({}, defaultExtensions, extensions); + }, [extensions]); + + return ( + + + setConfig({ ...(config as any), type })} currentSelected={config.type} /> + + + setConfig({ ...config, numColumnsSelected })} + columns={columns} + currentSelected={config.numColumnsSelected || []} + /> + setConfig({ ...config, color })} + columns={columns} + currentSelected={config.color} + /> + {config.color ? ( + setConfig({ ...config, hexbinOptions })} currentSelected={config.hexbinOptions} /> + ) : null} + + + + setConfig({ ...config, hexRadius })} /> + setConfig({ ...config, isSizeScale })} /> + setConfig({ ...config, isOpacityScale })} /> + + {mergedExtensions.preSidebar} + {mergedExtensions.postSidebar} + + + ); +} diff --git a/src/vis/hexbin/Hexplot.tsx b/src/vis/hexbin/Hexplot.tsx new file mode 100644 index 000000000..15021eab5 --- /dev/null +++ b/src/vis/hexbin/Hexplot.tsx @@ -0,0 +1,441 @@ +import { Container, Stack, Chip, Tooltip, Box, ScrollArea } from '@mantine/core'; +import * as hex from 'd3-hexbin'; +import { HexbinBin } from 'd3-hexbin'; +import * as d3v7 from 'd3v7'; +import { D3BrushEvent, D3ZoomEvent } from 'd3v7'; +import { uniqueId } from 'lodash'; +import * as React from 'react'; +import { useEffect, useMemo, useRef, useState } from 'react'; +import { useAsync } from '../../hooks/useAsync'; +import { VisColumn, IHexbinConfig, EScatterSelectSettings } from '../interfaces'; +import { SingleHex } from './SingleHex'; +import { getHexData } from './utils'; +import { XAxis } from './XAxis'; +import { YAxis } from './YAxis'; + +interface HexagonalBinProps { + config: IHexbinConfig; + columns: VisColumn[]; + selectionCallback?: (ids: string[]) => void; + selected?: { [key: string]: boolean }; +} + +function Legend({ + categories, + filteredCategories, + colorScale, + onClick, + height, +}: { + categories: string[]; + filteredCategories: string[]; + colorScale: d3v7.ScaleOrdinal; + onClick: (string) => void; + height: number; +}) { + return ( + + + {categories.map((c) => { + return ( + + + onClick(c)} + checked={false} + styles={{ + label: { + width: '100%', + backgroundColor: filteredCategories.includes(c) ? 'lightgrey' : `${colorScale(c)} !important`, + textAlign: 'center', + paddingLeft: '10px', + paddingRight: '10px', + overflow: 'hidden', + color: filteredCategories.includes(c) ? 'black' : 'white', + textOverflow: 'ellipsis', + }, + }} + > + {c} + + + + ); + })} + + + ); +} + +export function Hexplot({ config, columns, selectionCallback = () => null, selected = {} }: HexagonalBinProps) { + const ref = useRef(null); + const [height, setHeight] = useState(0); + const [width, setWidth] = useState(0); + const xZoomedScale = useRef>(null); + const yZoomedScale = useRef>(null); + const [xZoomTransform, setXZoomTransform] = useState(0); + const [yZoomTransform, setYZoomTransform] = useState(0); + const [zoomScale, setZoomScale] = useState(1); + + const [filteredCategories, setFilteredCategories] = useState([]); + + const { value: allColumns, status: colsStatus } = useAsync(getHexData, [columns, config.numColumnsSelected, config.color]); + + const id = React.useMemo(() => uniqueId('HexPlot'), []); + + // getting current categorical column values, original and filtered + const currentColorColumn = useMemo(() => { + if (colsStatus === 'success' && config.color && allColumns.colorColVals) { + return { + allValues: allColumns.colorColVals.resolvedValues, + filteredValues: allColumns.colorColVals.resolvedValues.filter((val) => !filteredCategories.includes(val.val as string)), + }; + } + + return null; + }, [allColumns?.colorColVals, config.color, colsStatus, filteredCategories]); + + const margin = useMemo(() => { + return { + left: 52, + right: config.color ? 80 : 25, + top: 25, + bottom: 53, + }; + }, [config.color]); + + // getting currentX data values, both original and filtered. + const currentX = useMemo(() => { + if (colsStatus === 'success' && allColumns) { + if (config.color && allColumns.colorColVals) { + return { + allValues: allColumns.numColVals[0].resolvedValues, + filteredValues: allColumns.numColVals[0].resolvedValues.filter((val, i) => { + return !filteredCategories.includes(allColumns.colorColVals.resolvedValues[i].val as string); + }), + }; + } + return { + allValues: allColumns.numColVals[0].resolvedValues, + filteredValues: allColumns.numColVals[0].resolvedValues, + }; + } + + return null; + }, [allColumns, config.color, colsStatus, filteredCategories]); + + // getting currentY data values, both original and filtered. + const currentY = useMemo(() => { + if (colsStatus === 'success' && allColumns) { + if (config.color && allColumns.colorColVals) { + return { + allValues: allColumns.numColVals[1].resolvedValues, + filteredValues: allColumns.numColVals[1].resolvedValues.filter((val, i) => { + return !filteredCategories.includes(allColumns.colorColVals.resolvedValues[i].val as string); + }), + }; + } + return { + allValues: allColumns.numColVals[1].resolvedValues, + filteredValues: allColumns.numColVals[1].resolvedValues, + }; + } + + return null; + }, [allColumns, colsStatus, config.color, filteredCategories]); + + // resize observer for setting size of the svg and updating on size change + useEffect(() => { + const ro = new ResizeObserver((entries: ResizeObserverEntry[]) => { + setHeight(entries[0].contentRect.height - margin.top - margin.bottom); + setWidth(entries[0].contentRect.width - margin.left - margin.right); + }); + + if (ref) { + ro.observe(ref.current); + } + + return () => { + ro.disconnect(); + }; + }, [margin]); + + // create x scale + const xScale = useMemo(() => { + if (currentX?.allValues) { + const min = d3v7.min(currentX.allValues.map((c) => c.val as number)); + const max = d3v7.max(currentX.allValues.map((c) => c.val as number)); + + const newScale = d3v7 + .scaleLinear() + .domain([min - min / 20, max + max / 20]) + .range([margin.left, margin.left + width]); + + return newScale; + } + + return null; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [currentX?.allValues, width]); + + // create y scale + const yScale = useMemo(() => { + if (currentY?.allValues) { + const min = d3v7.min(currentY.allValues.map((c) => c.val as number)); + const max = d3v7.max(currentY.allValues.map((c) => c.val as number)); + + const newScale = d3v7 + .scaleLinear() + .domain([min - min / 20, max + max / 20]) + .range([margin.top + height, margin.top]); + + return newScale; + } + + return null; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [currentY?.allValues, height]); + + // creating d3 hexbin object to do hex math for me + const d3Hexbin = useMemo(() => { + return hex + .hexbin() + .radius(config.hexRadius) + .extent([ + [0, 0], + [width, height], + ]); + }, [config.hexRadius, height, width]); + + // generating the actual hexes + const hexes: HexbinBin<[number, number, string, string]>[] = useMemo(() => { + const inputForHexbin = []; + + if (currentX && currentY) { + currentX.filteredValues.forEach((c, i) => { + inputForHexbin.push([ + xScale(c.val as number), + yScale(currentY.filteredValues[i].val as number), + currentColorColumn ? currentColorColumn.filteredValues[i].val : '', + c.id, + ]); + }); + } + + // TODO: Im cheating a bit here by appending the id/color value to each hex, breaking the types. + // is there a better way to type this? + return d3Hexbin(inputForHexbin) as unknown as HexbinBin<[number, number, string, string]>[]; + }, [currentColorColumn, currentX, d3Hexbin, xScale, yScale, currentY]); + + // simple radius scale for the hexes + const radiusScale = useMemo(() => { + if (colsStatus === 'success') { + const [min, max] = d3v7.extent(hexes, (h) => h.length); + + return d3v7 + .scaleLinear() + .domain([min, max]) + .range([config.hexRadius / 2, config.hexRadius]); + } + + return null; + }, [colsStatus, hexes, config.hexRadius]); + + // simple opacity scale for the hexes + const opacityScale = useMemo(() => { + if (colsStatus === 'success') { + const [min, max] = d3v7.extent(hexes, (h) => h.length); + + return d3v7.scaleLinear().domain([min, max]).range([0.1, 1]); + } + + return null; + }, [colsStatus, hexes]); + + // Create a default color scale + const colorScale = useMemo(() => { + if (colsStatus !== 'success' || !currentColorColumn?.allValues) { + return null; + } + + const colorOptions = currentColorColumn.allValues.map((val) => val.val as string); + + return d3v7.scaleOrdinal(d3v7.schemeCategory10).domain(Array.from(new Set(colorOptions))); + }, [colsStatus, currentColorColumn?.allValues]); + + // memoize the actual hexes since they do not need to change on zoom/drag + const hexObjects = React.useMemo(() => { + return ( + <> + {hexes.map((singleHex) => { + return ( + + ); + })} + + ); + }, [ + colorScale, + config.hexRadius, + config.isOpacityScale, + config.isSizeScale, + d3Hexbin, + hexes, + opacityScale, + radiusScale, + selected, + config.hexbinOptions, + config.color, + ]); + + // // apply zoom/panning + useEffect(() => { + const zoom = d3v7.zoom(); + + if (!xScale || !yScale) { + return; + } + + zoom.on('zoom', (event: D3ZoomEvent) => { + const { transform } = event; + + const newX = transform.rescaleX(xScale); + const newY = transform.rescaleY(yScale); + + xZoomedScale.current = newX; + yZoomedScale.current = newY; + + setZoomScale(transform.k); + setXZoomTransform(transform.x); + setYZoomTransform(transform.y); + }); + + d3v7.select(`#${id}zoom`).call(zoom); + }, [id, xScale, yScale, height, width]); + + // apply brushing + useEffect(() => { + // Since our brush doesnt persist after selection anyways, we can safely just do nothing + if (config.dragMode !== EScatterSelectSettings.RECTANGLE) { + return undefined; + } + + const brush = d3v7.brush().extent([ + [margin.left, margin.top], + [margin.left + width, margin.top + height], + ]); + + d3v7.select(`#${id}brush`).call( + // this is a real function and not a => so that I can use d3v7.select(this) inside to clear the brush + brush.on('end', function (event: D3BrushEvent) { + if (!event.sourceEvent) return; + if (!event.selection) { + selectionCallback([]); + return; + } + + // To figure out if brushing is finding hexes after changing the axis via pan/zoom, need to do this. + // Invert your "zoomed" scale to find the actual scaled values inside of your svg coords. Use the original scale to find the values. + const startX = xZoomedScale.current ? xScale(xZoomedScale.current.invert(event.selection[0][0])) : event.selection[0][0]; + const startY = yZoomedScale.current ? yScale(yZoomedScale.current.invert(event.selection[0][1])) : event.selection[0][1]; + const endX = xZoomedScale.current ? xScale(xZoomedScale.current.invert(event.selection[1][0])) : event.selection[1][0]; + const endY = yZoomedScale.current ? yScale(yZoomedScale.current.invert(event.selection[1][1])) : event.selection[1][1]; + + // to find the selected hexes + const selectedHexes = hexes.filter((currHex) => + xZoomedScale.current + ? currHex.x >= startX && currHex.x <= endX && currHex.y >= startY && currHex.y <= endY + : currHex.x >= event.selection[0][0] && + currHex.x <= event.selection[1][0] && + currHex.y >= event.selection[0][1] && + currHex.y <= event.selection[1][1], + ); + + const allSelectedPoints = selectedHexes.map((currHex) => currHex.map((points) => points[3])).flat(); + + selectionCallback(allSelectedPoints); + + d3v7.select(this).call(brush.move, null); + }), + ); + + return () => { + brush.on('end', null); + }; + }, [width, height, id, hexes, selectionCallback, config.dragMode, xScale, yScale, margin]); + + return ( + + + + + + + + + + + {hexObjects} + + + + {xScale ? : null} + {yScale ? : null} + + + {allColumns?.numColVals[0]?.info.name} + + + {allColumns?.numColVals[1]?.info.name} + + + +
+ + filteredCategories.includes(s) + ? setFilteredCategories(filteredCategories.filter((f) => f !== s)) + : setFilteredCategories([...filteredCategories, s]) + } + height={height} + /> +
+
+ ); +} diff --git a/src/vis/hexbin/PieChart.tsx b/src/vis/hexbin/PieChart.tsx new file mode 100644 index 000000000..3ff58103c --- /dev/null +++ b/src/vis/hexbin/PieChart.tsx @@ -0,0 +1,34 @@ +import * as d3v7 from 'd3v7'; +import { uniqueId } from 'lodash'; +import * as React from 'react'; +import { useMemo } from 'react'; + +export interface PieChartProps { + data: number[]; + dataCategories: string[]; + radius: number; + transform: string; + colorScale: d3v7.ScaleOrdinal; +} + +export function PieChart({ data, dataCategories, radius, transform, colorScale }: PieChartProps) { + const pie = useMemo(() => { + return d3v7.pie(); + }, []); + + const createArc = useMemo(() => { + return d3v7.arc().innerRadius(0).outerRadius(radius); + }, [radius]); + + const id = React.useMemo(() => uniqueId('PieNum'), []); + + return ( + + {pie(data).map((slice, i) => { + // TODO: Why are indexes bad in the key? how else to do this? Also, I think the typings for arc are wrong, which is why im typing slice to any + // eslint-disable-next-line react/no-array-index-key + return ; + })} + + ); +} diff --git a/src/vis/hexbin/SingleHex.tsx b/src/vis/hexbin/SingleHex.tsx new file mode 100644 index 000000000..43fdc6564 --- /dev/null +++ b/src/vis/hexbin/SingleHex.tsx @@ -0,0 +1,148 @@ +import * as React from 'react'; +import * as hex from 'd3-hexbin'; +import * as d3v7 from 'd3v7'; +import { useMemo } from 'react'; +import { Tooltip } from '@mantine/core'; +import { PieChart } from './PieChart'; +import { cutHex } from './utils'; +import { EHexbinOptions } from '../interfaces'; + +export interface SingleHexProps { + hexbinOption: EHexbinOptions; + hexData: hex.HexbinBin<[number, number, string, string]>; + d3Hexbin: hex.Hexbin<[number, number]>; + isSizeScale: boolean; + radiusScale: d3v7.ScaleLinear | null; + isOpacityScale: boolean; + opacityScale: d3v7.ScaleLinear | null; + hexRadius: number; + colorScale: d3v7.ScaleOrdinal; + selected?: { [key: string]: boolean }; + isCategorySelected: boolean; +} + +export function SingleHex({ + hexbinOption, + hexData, + d3Hexbin, + isSizeScale, + radiusScale, + isOpacityScale, + opacityScale, + hexRadius, + colorScale, + selected = {}, + isCategorySelected, +}: SingleHexProps) { + const { catMap, catMapKeys, catMapVals } = useMemo(() => { + const currMap = {}; + + hexData.forEach((point: [number, number, string, string]) => { + currMap[point[2]] = currMap[point[2]] ? currMap[point[2]] + 1 : 1; + }); + + return { catMap: currMap, catMapKeys: Object.keys(currMap), catMapVals: Object.values(currMap) }; + }, [hexData]); + + const isSelected = useMemo(() => { + return hexData.find((point: [number, number, string, string]) => selected[point[3]] !== true) === undefined; + }, [hexData, selected]); + + const topCategory = useMemo(() => { + let highestVal = 0; + let highestCategory = ''; + for (const i in catMap) { + if (catMap[i] > highestVal) { + highestVal = catMap[i]; + highestCategory = i; + } + } + + return highestCategory; + }, [catMap]); + + const hexDivisor = hexData.length / 6; + + let counter = 0; + + return ( + + + + + {hexbinOption === EHexbinOptions.BINS && isCategorySelected + ? catMapKeys.sort().map((key) => { + const currPath = cutHex( + d3Hexbin.hexagon(isSizeScale ? radiusScale(hexData.length) : hexRadius), + isSizeScale ? radiusScale(hexData.length) : hexRadius, + counter, + Math.ceil(catMap[key] / hexDivisor), + ); + counter += Math.ceil(catMap[key] / hexDivisor); + + return ( + + + + ); + }) + : null} + + {hexbinOption === EHexbinOptions.COLOR || !isCategorySelected ? ( + + + + ) : null} + {hexbinOption === EHexbinOptions.PIE && isCategorySelected ? ( + <> + {isOpacityScale ? ( + + + + ) : null} + + + + + ) : null} + + ); +} diff --git a/src/vis/hexbin/XAxis.tsx b/src/vis/hexbin/XAxis.tsx new file mode 100644 index 000000000..14facd59d --- /dev/null +++ b/src/vis/hexbin/XAxis.tsx @@ -0,0 +1,36 @@ +import * as React from 'react'; +import { useMemo } from 'react'; + +// code taken from https://wattenberger.com/blog/react-and-d3 +export function XAxis({ xScale, yRange, vertPosition }) { + const ticks = useMemo(() => { + return xScale.ticks(5).map((value) => ({ + value, + xOffset: xScale(value), + })); + }, [xScale]); + + return ( + <> + + + + {ticks.map(({ value, xOffset }) => ( + + + + + {value} + + + ))} + + ); +} diff --git a/src/vis/hexbin/YAxis.tsx b/src/vis/hexbin/YAxis.tsx new file mode 100644 index 000000000..5837e6e67 --- /dev/null +++ b/src/vis/hexbin/YAxis.tsx @@ -0,0 +1,41 @@ +import * as React from 'react'; +import { useMemo } from 'react'; + +// code taken from https://wattenberger.com/blog/react-and-d3 +export function YAxis({ yScale, xRange, horizontalPosition }) { + const ticks = useMemo(() => { + return yScale.ticks(5).map((value) => ({ + value, + yOffset: yScale(value), + })); + }, [yScale]); + + return ( + <> + + + {ticks.map(({ value, yOffset }) => ( + + + + + {value} + + + ))} + + ); +} diff --git a/src/vis/hexbin/utils.tsx b/src/vis/hexbin/utils.tsx new file mode 100644 index 000000000..314afdca2 --- /dev/null +++ b/src/vis/hexbin/utils.tsx @@ -0,0 +1,113 @@ +import { merge } from 'lodash'; +import { + EColumnTypes, + ESupportedPlotlyVis, + IVisConfig, + VisColumn, + IHexbinConfig, + VisNumericalValue, + VisCategoricalValue, + ColumnInfo, + VisNumericalColumn, + EHexbinOptions, + EScatterSelectSettings, +} from '../interfaces'; +import { resolveColumnValues, resolveSingleColumn } from '../general/layoutUtils'; + +export function isHexbin(s: IVisConfig): s is IHexbinConfig { + return s.type === ESupportedPlotlyVis.HEXBIN; +} + +export const defaultDensityConfig: IHexbinConfig = { + type: ESupportedPlotlyVis.HEXBIN, + numColumnsSelected: [], + color: null, + isOpacityScale: true, + isSizeScale: false, + hexRadius: 10, + dragMode: EScatterSelectSettings.PAN, + hexbinOptions: EHexbinOptions.COLOR, +}; + +export function hexinbMergeDefaultConfig(columns: VisColumn[], config: IHexbinConfig): IVisConfig { + const merged = merge({}, defaultDensityConfig, config); + const numCols = columns.filter((c) => c.type === EColumnTypes.NUMERICAL); + + if (merged.numColumnsSelected.length === 0 && numCols.length > 1) { + merged.numColumnsSelected.push(numCols[numCols.length - 1].info); + merged.numColumnsSelected.push(numCols[numCols.length - 2].info); + } else if (merged.numColumnsSelected.length === 1 && numCols.length > 1) { + if (numCols[numCols.length - 1].info.id !== merged.numColumnsSelected[0].id) { + merged.numColumnsSelected.push(numCols[numCols.length - 1].info); + } else { + merged.numColumnsSelected.push(numCols[numCols.length - 2].info); + } + } + return merged; +} + +export async function getHexData( + columns: VisColumn[], + numColumnsSelected: ColumnInfo[], + colorColumn: ColumnInfo | null, +): Promise<{ + numColVals: { + resolvedValues: (VisNumericalValue | VisCategoricalValue)[]; + type: EColumnTypes.NUMERICAL | EColumnTypes.CATEGORICAL; + info: ColumnInfo; + }[]; + colorColVals: { + resolvedValues: (VisNumericalValue | VisCategoricalValue)[]; + type: EColumnTypes.NUMERICAL | EColumnTypes.CATEGORICAL; + info: ColumnInfo; + }; +}> { + const numCols: VisNumericalColumn[] = [columns[0] as VisNumericalColumn, columns[1] as VisNumericalColumn]; + + const numColVals = await resolveColumnValues(numCols); + + const colorColVals = await resolveSingleColumn(colorColumn ? columns.find((col) => col.info.id === colorColumn.id) : null); + + return { numColVals, colorColVals }; +} + +/** + * Creates a path for a portion of a single hex in a hexbin plot + * @param path svg path for the entire hex, generated by d3 + * @param radius radius given to d3 when generating the svg path + * @param start value between 0-5 reflecting where the cut version of the hex should begin. Rotating clockwise + * @param sixths value between 0-5 reflecting where the cut version of the hex should end. Rotating clockwise + * @returns svg path "d" attribute for the portion of the hex. + */ +export function cutHex(path: string, radius: number, start: number, sixths: number): string { + if (sixths === 6) { + return path; + } + + if (sixths === 0 || start > 5) { + return ''; + } + + const splitPath = path.slice(1, path.length - 1).split(/[l]/); + + const currPos = [0, -radius]; + + for (let i = 1; i <= start; i++) { + currPos[0] += +splitPath[i].split(',')[0]; + currPos[1] += +splitPath[i].split(',')[1]; + } + + let finalString = `m${currPos}`; + + for (let i = 0; i < sixths; i++) { + finalString += start + 1 + i >= 6 ? '' : `l${splitPath[start + 1 + i]}`; + } + + if (start + sixths >= 6) { + finalString += `L 0 -${radius}`; + } + + finalString += 'L 0 0 z'; + + return `${finalString}`; +} diff --git a/src/vis/index.ts b/src/vis/index.ts index c1388ed69..622113150 100644 --- a/src/vis/index.ts +++ b/src/vis/index.ts @@ -1,8 +1,6 @@ export * from './bar'; export * from './general'; -export * from './pcp'; export * from './scatter'; -export * from './strip'; export * from './violin'; export * from './interfaces'; export * from './Plot'; diff --git a/src/vis/interfaces.ts b/src/vis/interfaces.ts index 8f9369507..6cbdde058 100644 --- a/src/vis/interfaces.ts +++ b/src/vis/interfaces.ts @@ -1,26 +1,32 @@ import { Plotly } from './Plot'; export enum ESupportedPlotlyVis { - SCATTER = 'Scatter Plot', - PCP = 'Parallel Coordinates Plot', - VIOLIN = 'Violin Plot', - STRIP = 'Strip Plot', - BAR = 'Bar Chart', + SCATTER = 'Scatter plot', + VIOLIN = 'Violin plot', + BAR = 'Bar chart', + HEXBIN = 'Hexbin plot', } export const allVisTypes: ESupportedPlotlyVis[] = [ ESupportedPlotlyVis.SCATTER, ESupportedPlotlyVis.BAR, ESupportedPlotlyVis.VIOLIN, - ESupportedPlotlyVis.STRIP, - ESupportedPlotlyVis.PCP, + ESupportedPlotlyVis.HEXBIN, ]; +export type IVisConfig = IScatterConfig | IViolinConfig | IBarConfig | IHexbinConfig; + export enum EBarDisplayType { ABSOLUTE = 'Absolute', NORMALIZED = 'Normalized', } +export enum EHexbinOptions { + COLOR = 'Color', + PIE = 'Pie', + BINS = 'Bins', +} + export enum EBarDirection { VERTICAL = 'Vertical', HORIZONTAL = 'Horizontal', @@ -28,7 +34,6 @@ export enum EBarDirection { export enum EViolinOverlay { NONE = 'None', - STRIP = 'Strip', BOX = 'Box', } @@ -57,8 +62,8 @@ export enum EGeneralFormType { } export enum EFilterOptions { - IN = 'Filter In', - OUT = 'Filter Out', + IN = 'Filter in', + OUT = 'Filter out', CLEAR = 'Clear', } @@ -81,12 +86,6 @@ export interface IViolinConfig { violinOverlay: EViolinOverlay; } -export interface IStripConfig { - type: ESupportedPlotlyVis.STRIP; - numColumnsSelected: ColumnInfo[]; - catColumnsSelected: ColumnInfo[]; -} - export interface IScatterConfig { type: ESupportedPlotlyVis.SCATTER; numColumnsSelected: ColumnInfo[]; @@ -110,13 +109,17 @@ export interface IBarConfig { aggregateColumn: ColumnInfo | null; } -export interface IPCPConfig { - type: ESupportedPlotlyVis.PCP; - allColumnsSelected: ColumnInfo[]; +export interface IHexbinConfig { + type: ESupportedPlotlyVis.HEXBIN; + numColumnsSelected: ColumnInfo[]; + color: ColumnInfo | null; + hexRadius: number; + isOpacityScale: boolean; + isSizeScale: boolean; + dragMode: EScatterSelectSettings; + hexbinOptions: EHexbinOptions; } -export type IVisConfig = IScatterConfig | IViolinConfig | IBarConfig | IStripConfig | IPCPConfig; - type ValueGetter = () => T | Promise; export interface IVisCommonValue { diff --git a/src/vis/pcp/PCPVis.tsx b/src/vis/pcp/PCPVis.tsx deleted file mode 100644 index 25115e36b..000000000 --- a/src/vis/pcp/PCPVis.tsx +++ /dev/null @@ -1,127 +0,0 @@ -import * as React from 'react'; -import { merge, uniqueId } from 'lodash'; -import { useMemo, useEffect } from 'react'; -import { VisColumn, IVisConfig, IPCPConfig } from '../interfaces'; -import { PlotlyComponent, Plotly } from '../Plot'; -import { InvalidCols } from '../general'; -import { createPCPTraces } from './utils'; -import { useAsync } from '../../hooks'; -import { PCPVisSidebar } from './PCPVisSidebar'; -import { VisSidebarWrapper } from '../VisSidebarWrapper'; -import { CloseButton } from '../sidebar/CloseButton'; - -interface PCPVisProps { - config: IPCPConfig; - extensions?: { - prePlot?: React.ReactNode; - postPlot?: React.ReactNode; - preSidebar?: React.ReactNode; - postSidebar?: React.ReactNode; - }; - columns: VisColumn[]; - setConfig: (config: IVisConfig) => void; - selected?: { [key: string]: boolean }; - hideSidebar?: boolean; - closeButtonCallback?: () => void; - showCloseButton?: boolean; -} - -const defaultExtensions = { - prePlot: null, - postPlot: null, - preSidebar: null, - postSidebar: null, -}; - -export function PCPVis({ - config, - extensions, - columns, - setConfig, - showCloseButton = false, - closeButtonCallback = () => null, - selected = {}, - hideSidebar = false, -}: PCPVisProps) { - const mergedExtensions = useMemo(() => { - return merge({}, defaultExtensions, extensions); - }, [extensions]); - - const { value: traces, status: traceStatus, error: traceError } = useAsync(createPCPTraces, [columns, config, selected]); - - const id = React.useMemo(() => uniqueId('PCPVis'), []); - - const plotlyDivRef = React.useRef(null); - - useEffect(() => { - const ro = new ResizeObserver(() => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - - if (plotlyDivRef) { - ro.observe(plotlyDivRef.current); - } - - if (hideSidebar) { - return; - } - - const menu = document.getElementById(`generalVisBurgerMenu${id}`); - - menu.addEventListener('hidden.bs.collapse', () => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - - menu.addEventListener('shown.bs.collapse', () => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - }, [id, hideSidebar, plotlyDivRef]); - - const layout = React.useMemo | null>(() => { - return traces - ? { - showlegend: true, - autosize: true, - grid: { rows: traces.rows, columns: traces.cols, xgap: 0.3, pattern: 'independent' }, - font: { - family: 'Roboto, sans-serif', - }, - shapes: [], - violingap: 0, - } - : null; - }, [traces]); - - return ( -
-
- {mergedExtensions.prePlot} - {traceStatus === 'success' && traces?.plots.length > 0 ? ( - p.data), ...traces.legendPlots.map((p) => p.data)]} - layout={layout} - config={{ responsive: true, displayModeBar: false }} - useResizeHandler - style={{ width: '100%', height: '100%' }} - // plotly redraws everything on updates, so you need to reappend title and - // change opacity on update, instead of just in a use effect - /> - ) : traceStatus !== 'pending' ? ( - - ) : null} - {mergedExtensions.postPlot} - {showCloseButton ? : null} -
- {!hideSidebar ? ( - - - - ) : null} -
- ); -} diff --git a/src/vis/pcp/PCPVisSidebar.tsx b/src/vis/pcp/PCPVisSidebar.tsx deleted file mode 100644 index 7c761ee4d..000000000 --- a/src/vis/pcp/PCPVisSidebar.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import * as React from 'react'; -import { useMemo } from 'react'; -import { merge } from 'lodash'; -import { ColumnInfo, ESupportedPlotlyVis, IPCPConfig, IVisConfig, VisColumn, ICommonVisSideBarProps } from '../interfaces'; -import { VisTypeSelect } from '../sidebar/VisTypeSelect'; -import { WarningMessage } from '../sidebar/WarningMessage'; -import { AllColumnSelect } from '../sidebar'; - -const defaultExtensions = { - prePlot: null, - postPlot: null, - preSidebar: null, - postSidebar: null, -}; - -export function PCPVisSidebar({ - config, - extensions, - columns, - setConfig, - className = '', - style: { width = '20em', ...style } = {}, -}: { - config: IPCPConfig; - extensions?: { - prePlot?: React.ReactNode; - postPlot?: React.ReactNode; - preSidebar?: React.ReactNode; - postSidebar?: React.ReactNode; - }; - columns: VisColumn[]; - setConfig: (config: IVisConfig) => void; -} & ICommonVisSideBarProps) { - const mergedExtensions = useMemo(() => { - return merge({}, defaultExtensions, extensions); - }, [extensions]); - - return ( -
- - setConfig({ ...(config as any), type })} currentSelected={config.type} /> -
- setConfig({ ...config, allColumnsSelected })} - columns={columns} - currentSelected={config.allColumnsSelected || []} - /> -
- {mergedExtensions.preSidebar} - {mergedExtensions.postSidebar} -
- ); -} diff --git a/src/vis/pcp/index.ts b/src/vis/pcp/index.ts deleted file mode 100644 index 70dfcb691..000000000 --- a/src/vis/pcp/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './PCPVis'; -export * from './utils'; diff --git a/src/vis/pcp/utils.ts b/src/vis/pcp/utils.ts deleted file mode 100644 index df6686c05..000000000 --- a/src/vis/pcp/utils.ts +++ /dev/null @@ -1,105 +0,0 @@ -import d3v3 from 'd3v3'; -import { merge } from 'lodash'; -import { I18nextManager } from '../../i18n'; -import { PlotlyInfo, PlotlyData, EColumnTypes, ESupportedPlotlyVis, IVisConfig, VisColumn, IPCPConfig } from '../interfaces'; -import { columnNameWithDescription, resolveColumnValues } from '../general/layoutUtils'; - -export function isPCP(s: IVisConfig): s is IPCPConfig { - return s.type === ESupportedPlotlyVis.PCP; -} - -const defaultConfig: IPCPConfig = { - type: ESupportedPlotlyVis.PCP, - allColumnsSelected: [], -}; - -export function pcpMergeDefaultConfig(columns: VisColumn[], config: IPCPConfig): IVisConfig { - const merged = merge({}, defaultConfig, config); - - if (merged.allColumnsSelected.length === 0 && columns.length > 1) { - // FIXME It is always selecting the last two columns, no matter their type. (@see https://github.com/datavisyn/reprovisyn/issues/199) - merged.allColumnsSelected.push(columns[columns.length - 1].info); - merged.allColumnsSelected.push(columns[columns.length - 2].info); - } else if (merged.allColumnsSelected.length === 1 && columns.length > 1) { - if (columns[columns.length - 1].info.id !== merged.allColumnsSelected[0].id) { - merged.allColumnsSelected.push(columns[columns.length - 1].info); - } else { - merged.allColumnsSelected.push(columns[columns.length - 2].info); - } - } - - return merged; -} - -export async function createPCPTraces(columns: VisColumn[], config: IPCPConfig, selectedMap: { [key: string]: boolean }): Promise { - if (!config.allColumnsSelected) { - return { - plots: [], - legendPlots: [], - rows: 0, - cols: 0, - errorMessage: I18nextManager.getInstance().i18n.t('tdp:core.vis.pcpError'), - errorMessageHeader: I18nextManager.getInstance().i18n.t('tdp:core.vis.errorHeader'), - }; - } - - const allCols: VisColumn[] = config.allColumnsSelected.map((c) => columns.find((col) => col.info.id === c.id)); - - if (config.allColumnsSelected.length < 2) { - return { - plots: [], - legendPlots: [], - rows: 0, - cols: 0, - errorMessage: I18nextManager.getInstance().i18n.t('tdp:core.vis.pcpError'), - errorMessageHeader: I18nextManager.getInstance().i18n.t('tdp:core.vis.errorHeader'), - }; - } - - const allColValues = await resolveColumnValues(allCols); - - const plot: PlotlyData = { - xLabel: null, - yLabel: null, - data: { - type: 'parcoords', - // leaving this code here to show how you could change the colors of selected values. - // But this is useless without opacity, and the colorscale does not support alpha values. - // line: { - // color: allColValues[0].resolvedValues.map((v) => (selectedMap[v.id] ? 0 : 1)), - // colorscale: [ - // [0, 'rgba(215, 212, 206, 1)'], - // [1, 'rgba(215, 212, 206, 0.32)'], - // ], - // }, - // @ts-ignore - dimensions: allColValues.map((c) => { - if (c.type === EColumnTypes.NUMERICAL) { - return { - range: [d3v3.min(c.resolvedValues.map((v) => v.val) as number[]), d3v3.max(c.resolvedValues.map((v) => v.val) as number[])], - label: columnNameWithDescription(c.info), - values: c.resolvedValues.map((v) => v.val), - }; - } - const uniqueList = [...new Set(c.resolvedValues.map((v) => v.val) as string[])]; - - return { - range: [0, uniqueList.length - 1], - label: columnNameWithDescription(c.info), - values: c.resolvedValues.map((curr) => uniqueList.indexOf(curr.val as string)), - tickvals: [...uniqueList.keys()], - ticktext: uniqueList, - }; - }), - }, - }; - - return { - plots: [plot], - legendPlots: [], - rows: 1, - cols: 1, - errorMessage: I18nextManager.getInstance().i18n.t('tdp:core.vis.pcpError'), - errorMessageHeader: I18nextManager.getInstance().i18n.t('tdp:core.vis.errorHeader'), - }; -} diff --git a/src/vis/scatter/ScatterVis.tsx b/src/vis/scatter/ScatterVis.tsx index ac824537a..a11a67d31 100644 --- a/src/vis/scatter/ScatterVis.tsx +++ b/src/vis/scatter/ScatterVis.tsx @@ -1,18 +1,20 @@ import * as React from 'react'; -import d3v3 from 'd3v3'; import { merge, uniqueId } from 'lodash'; -import { useEffect } from 'react'; +import { useEffect, useMemo, useState } from 'react'; +import { ActionIcon, Center, Container, Group, Stack, Tooltip } from '@mantine/core'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faGear } from '@fortawesome/free-solid-svg-icons'; import { EFilterOptions, IVisConfig, Scales, IScatterConfig, VisColumn, EScatterSelectSettings } from '../interfaces'; import { InvalidCols } from '../general/InvalidCols'; import { createScatterTraces } from './utils'; import { beautifyLayout } from '../general/layoutUtils'; import { BrushOptionButtons } from '../sidebar/BrushOptionButtons'; -import { OpacitySlider } from '../sidebar/OpacitySlider'; import { ScatterVisSidebar } from './ScatterVisSidebar'; import { PlotlyComponent, Plotly } from '../Plot'; import { useAsync } from '../../hooks'; import { VisSidebarWrapper } from '../VisSidebarWrapper'; import { CloseButton } from '../sidebar/CloseButton'; +import { I18nextManager } from '../../i18n'; const defaultExtensions = { prePlot: null, @@ -32,7 +34,9 @@ export function ScatterVis({ selectedMap = {}, selectedList = [], setConfig, - hideSidebar = false, + enableSidebar, + setShowSidebar, + showSidebar, showCloseButton = false, closeButtonCallback = () => null, scales, @@ -67,12 +71,16 @@ export function ScatterVis({ selectedList: string[]; setConfig: (config: IVisConfig) => void; scales: Scales; - hideSidebar?: boolean; + showSidebar?: boolean; + setShowSidebar?(show: boolean): void; + enableSidebar?: boolean; showCloseButton?: boolean; }) { const id = React.useMemo(() => uniqueId('ScatterVis'), []); const plotlyDivRef = React.useRef(null); + const [layout, setLayout] = useState>(null); + useEffect(() => { const ro = new ResizeObserver(() => { const plotDiv = document.getElementById(`plotlyDiv${id}`); @@ -84,31 +92,31 @@ export function ScatterVis({ if (plotlyDivRef) { ro.observe(plotlyDivRef.current); } - - if (hideSidebar) { - return; - } - - const menu = document.getElementById(`generalVisBurgerMenu${id}`); - - menu.addEventListener('hidden.bs.collapse', () => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - - menu.addEventListener('shown.bs.collapse', () => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - }, [id, hideSidebar, plotlyDivRef]); + return () => ro.disconnect(); + }, [id, plotlyDivRef]); const mergedExtensions = React.useMemo(() => { return merge({}, defaultExtensions, extensions); }, [extensions]); - const { value: traces, status: traceStatus, error: traceError } = useAsync(createScatterTraces, [columns, selectedMap, config, scales, shapes]); + const { + value: traces, + status: traceStatus, + error: traceError, + } = useAsync(createScatterTraces, [ + columns, + config.numColumnsSelected, + config.shape, + config.color, + config.alphaSliderVal, + config.numColorScaleType, + scales, + shapes, + ]); - const layout = React.useMemo(() => { + React.useEffect(() => { if (!traces) { - return null; + return; } const innerLayout: Partial = { @@ -125,71 +133,118 @@ export function ScatterVis({ font: { family: 'Roboto, sans-serif', }, - autosize: true, + margin: { + t: 25, + r: 25, + l: 100, + b: 100, + }, grid: { rows: traces.rows, columns: traces.cols, xgap: 0.3, pattern: 'independent' }, shapes: [], dragmode: config.dragMode, }; - return beautifyLayout(traces, innerLayout); + setLayout({ ...layout, ...beautifyLayout(traces, innerLayout, layout, false) }); + // WARNING: Do not update when layout changes, that would be an infinite loop. + // eslint-disable-next-line react-hooks/exhaustive-deps }, [traces, config.dragMode]); + const plotsWithSelectedPoints = useMemo(() => { + if (traces) { + const allPlots = traces.plots; + allPlots + .filter((trace) => trace.data.type === 'scattergl') + .forEach((p) => { + const temp = []; + + (p.data.ids as any).forEach((currId, index) => { + if (selectedMap[currId] || (selectedList.length === 0 && config.color)) { + temp.push(index); + } + }); + + p.data.selectedpoints = temp; + + if (selectedList.length === 0 && config.color) { + // @ts-ignore + p.data.selected.marker.opacity = config.alphaSliderVal; + } else { + // @ts-ignore + p.data.selected.marker.opacity = 1; + } + }); + + return allPlots; + } + + return []; + }, [selectedMap, traces, selectedList, config.color, config.alphaSliderVal]); + + const plotlyData = useMemo(() => { + if (traces) { + return [...plotsWithSelectedPoints.map((p) => p.data), ...traces.legendPlots.map((p) => p.data)]; + } + + return []; + }, [plotsWithSelectedPoints, traces]); + + const plotly = useMemo(() => { + if (traces?.plots && plotsWithSelectedPoints) { + return ( + { + const clickedId = (event.points[0] as any).id; + if (selectedMap[clickedId]) { + selectionCallback(selectedList.filter((s) => s !== clickedId)); + } else { + selectionCallback([...selectedList, clickedId]); + } + }} + className="tdpCoreVis" + onSelected={(sel) => { + selectionCallback(sel ? sel.points.map((d) => (d as any).id) : []); + }} + /> + ); + } + return null; + }, [id, plotsWithSelectedPoints, layout, selectedMap, selectionCallback, selectedList, traces?.plots, plotlyData]); + return ( -
-
+ + {enableSidebar ? ( + + setShowSidebar(true)}> + + + + ) : null} + {showCloseButton ? : null} + + +
+ + setConfig({ ...config, dragMode })} dragMode={config.dragMode} /> + +
{mergedExtensions.prePlot} - {traceStatus === 'success' && traces?.plots.length > 0 ? ( - p.data), ...traces.legendPlots.map((p) => p.data)]} - layout={layout} - config={{ responsive: true, displayModeBar: false }} - useResizeHandler - style={{ width: '100%', height: '100%' }} - onClick={(event) => { - const clickedId = (event.points[0] as any).id; - if (selectedMap[clickedId]) { - selectionCallback(selectedList.filter((s) => s !== clickedId)); - } else { - selectionCallback([...selectedList, clickedId]); - } - }} - onSelected={(sel) => { - selectionCallback(sel ? sel.points.map((d) => (d as any).id) : []); - }} - // plotly redraws everything on updates, so you need to reappend title and - // change opacity on update, instead of just in a use effect - onInitialized={() => { - d3v3.selectAll('g .traces').style('opacity', 1); - d3v3.selectAll('.scatterpts').style('opacity', selectedList.length > 0 ? 1 : config.alphaSliderVal); - }} - onUpdate={() => { - d3v3.selectAll('g .traces').style('opacity', 1); - d3v3.selectAll('.scatterpts').style('opacity', selectedList.length > 0 ? 1 : config.alphaSliderVal); - - for (const p of traces.plots) { - d3v3.select(`g .${p.data.xaxis}title`).style('pointer-events', 'all').append('title').text(p.xLabel); - - d3v3.select(`g .${p.data.yaxis}title`).style('pointer-events', 'all').append('title').text(p.yLabel); - } - }} - /> + {traceStatus === 'success' && layout && plotsWithSelectedPoints.length > 0 ? ( + plotly ) : traceStatus !== 'pending' ? ( ) : null} -
- setConfig({ ...config, dragMode })} dragMode={config.dragMode} /> - setConfig({ ...config, alphaSliderVal: e })} currentValue={config.alphaSliderVal} /> -
+ {mergedExtensions.postPlot} - {showCloseButton ? : null} -
- {!hideSidebar ? ( - + + {showSidebar ? ( + setShowSidebar(false)}> ) : null} -
+ ); } diff --git a/src/vis/scatter/ScatterVisSidebar.tsx b/src/vis/scatter/ScatterVisSidebar.tsx index df07d7fd4..7a280ff45 100644 --- a/src/vis/scatter/ScatterVisSidebar.tsx +++ b/src/vis/scatter/ScatterVisSidebar.tsx @@ -1,6 +1,7 @@ import * as React from 'react'; import { useMemo } from 'react'; import { merge } from 'lodash'; +import { Container, Divider, Stack } from '@mantine/core'; import { ColumnInfo, EFilterOptions, @@ -10,13 +11,14 @@ import { IVisConfig, VisColumn, ICommonVisSideBarProps, + EColumnTypes, } from '../interfaces'; import { VisTypeSelect } from '../sidebar/VisTypeSelect'; import { NumericalColumnSelect } from '../sidebar/NumericalColumnSelect'; import { ColorSelect } from '../sidebar/ColorSelect'; -import { ShapeSelect } from '../sidebar/ShapeSelect'; import { FilterButtons } from '../sidebar/FilterButtons'; -import { WarningMessage } from '../sidebar/WarningMessage'; +import { SingleColumnSelect } from '../sidebar/SingleColumnSelect'; +import { OpacitySlider } from '../sidebar/OpacitySlider'; const defaultConfig = { color: { @@ -47,8 +49,6 @@ export function ScatterVisSidebar({ columns, filterCallback = () => null, setConfig, - className = '', - style: { width = '20em', ...style } = {}, }: { config: IScatterConfig; optionsConfig?: { @@ -84,38 +84,56 @@ export function ScatterVisSidebar({ }, [extensions]); return ( -
- - setConfig({ ...(config as any), type })} currentSelected={config.type} /> -
- setConfig({ ...config, numColumnsSelected })} - columns={columns} - currentSelected={config.numColumnsSelected || []} - /> -
- {mergedExtensions.preSidebar} + + + setConfig({ ...(config as any), type })} currentSelected={config.type} /> + + setConfig({ ...config, numColumnsSelected })} + columns={columns} + currentSelected={config.numColumnsSelected || []} + /> + + {mergedExtensions.preSidebar} - {mergedOptionsConfig.color.enable - ? mergedOptionsConfig.color.customComponent || ( - setConfig({ ...config, color })} - numTypeCallback={(numColorScaleType: ENumericalColorScaleType) => setConfig({ ...config, numColorScaleType })} - currentNumType={config.numColorScaleType} - columns={columns} - currentSelected={config.color} - /> - ) - : null} - {mergedOptionsConfig.shape.enable - ? mergedOptionsConfig.shape.customComponent || ( - setConfig({ ...config, shape })} columns={columns} currentSelected={config.shape} /> - ) - : null} -
- {mergedOptionsConfig.filter.enable ? mergedOptionsConfig.filter.customComponent || : null} - - {mergedExtensions.postSidebar} -
+ + {mergedOptionsConfig.color.enable + ? mergedOptionsConfig.color.customComponent || ( + setConfig({ ...config, color })} + numTypeCallback={(numColorScaleType: ENumericalColorScaleType) => setConfig({ ...config, numColorScaleType })} + currentNumType={config.numColorScaleType} + columns={columns} + currentSelected={config.color} + /> + ) + : null} + {mergedOptionsConfig.shape.enable + ? mergedOptionsConfig.shape.customComponent || ( + setConfig({ ...config, shape })} + columns={columns} + currentSelected={config.shape} + /> + ) + : null} + + + + { + if (config.alphaSliderVal !== e) { + setConfig({ ...config, alphaSliderVal: e }); + } + }} + currentValue={config.alphaSliderVal} + /> + {mergedOptionsConfig.filter.enable ? mergedOptionsConfig.filter.customComponent || : null} + + {mergedExtensions.postSidebar} + + ); } diff --git a/src/vis/scatter/utils.ts b/src/vis/scatter/utils.ts index 78454a02b..9a53dba45 100644 --- a/src/vis/scatter/utils.ts +++ b/src/vis/scatter/utils.ts @@ -14,6 +14,7 @@ import { VisCategoricalValue, VisNumericalValue, EScatterSelectSettings, + ColumnInfo, } from '../interfaces'; import { getCol } from '../sidebar'; import { getCssValue } from '../../utils'; @@ -68,8 +69,11 @@ export function moveSelectedToFront( export async function createScatterTraces( columns: VisColumn[], - selected: { [key: string]: boolean }, - config: IScatterConfig, + numColumnsSelected: ColumnInfo[], + shape: ColumnInfo, + color: ColumnInfo, + alphaSliderVal: number, + colorScaleType: ENumericalColorScaleType, scales: Scales, shapes: string[] | null, ): Promise { @@ -86,28 +90,18 @@ export async function createScatterTraces( formList: ['color', 'shape', 'bubble', 'opacity'], }; - if (!config.numColumnsSelected) { + if (!numColumnsSelected) { return emptyVal; } - const hasSelected = Object.values(selected).includes(true); - - const numCols: VisNumericalColumn[] = config.numColumnsSelected.map((c) => columns.find((col) => col.info.id === c.id) as VisNumericalColumn); + const numCols: VisNumericalColumn[] = numColumnsSelected.map((c) => columns.find((col) => col.info.id === c.id) as VisNumericalColumn); const plots: PlotlyData[] = []; const validCols = await resolveColumnValues(numCols); - const shapeCol = await resolveSingleColumn(getCol(columns, config.shape)); - const colorCol = await resolveSingleColumn(getCol(columns, config.color)); - - validCols.forEach((c) => { - c.resolvedValues = moveSelectedToFront(c.resolvedValues, selected); - }); - - if (colorCol) { - colorCol.resolvedValues = moveSelectedToFront(colorCol.resolvedValues, selected); - } + const shapeCol = await resolveSingleColumn(getCol(columns, shape)); + const colorCol = await resolveSingleColumn(getCol(columns, color)); - const shapeScale = config.shape + const shapeScale = shape ? d3v3.scale .ordinal() .domain([...new Set(shapeCol.resolvedValues.map((v) => v.val))] as string[]) @@ -117,17 +111,17 @@ export async function createScatterTraces( let min = 0; let max = 0; - if (config.color) { + if (color) { min = d3v3.min(colorCol.resolvedValues.map((v) => +v.val).filter((v) => v !== null)); max = d3v3.max(colorCol.resolvedValues.map((v) => +v.val).filter((v) => v !== null)); } - const numericalColorScale = config.color + const numericalColorScale = color ? d3v3.scale .linear() .domain([max, (max + min) / 2, min]) .range( - config.numColorScaleType === ENumericalColorScaleType.SEQUENTIAL + colorScaleType === ENumericalColorScaleType.SEQUENTIAL ? [getCssValue('visyn-s9-blue'), getCssValue('visyn-s5-blue'), getCssValue('visyn-s1-blue')] : [getCssValue('visyn-c1'), '#d3d3d3', getCssValue('visyn-c2')], ) @@ -163,20 +157,34 @@ export async function createScatterTraces( ), hoverinfo: 'text', text: validCols[0].resolvedValues.map((v) => v.id.toString()), + marker: { - line: { - width: 0, - }, - symbol: shapeCol ? shapeCol.resolvedValues.map((v) => shapeScale(v.val as string)) : 'circle', color: colorCol - ? hasSelected - ? colorCol.resolvedValues.map((v) => - selected[v.id] ? (colorCol.type === EColumnTypes.NUMERICAL ? numericalColorScale(v.val as number) : scales.color(v.val)) : DEFAULT_COLOR, - ) - : colorCol.resolvedValues.map((v) => (colorCol.type === EColumnTypes.NUMERICAL ? numericalColorScale(v.val as number) : scales.color(v.val))) - : validCols[0].resolvedValues.map((v) => (selected[v.id] ? SELECT_COLOR : DEFAULT_COLOR)), - opacity: validCols[0].resolvedValues.map((v) => (selected[v.id] ? 1 : hasSelected && colorCol ? 0.2 : config.alphaSliderVal)), - size: 8, + ? colorCol.resolvedValues.map((v) => (colorCol.type === EColumnTypes.NUMERICAL ? numericalColorScale(v.val as number) : scales.color(v.val))) + : SELECT_COLOR, + }, + // plotly is stupid and doesnt know its own types + // @ts-ignore + selected: { + marker: { + line: { + width: 0, + }, + symbol: shapeCol ? shapeCol.resolvedValues.map((v) => shapeScale(v.val as string)) : 'circle', + opacity: 1, + size: 8, + }, + }, + unselected: { + marker: { + line: { + width: 0, + }, + symbol: shapeCol ? shapeCol.resolvedValues.map((v) => shapeScale(v.val as string)) : 'circle', + color: DEFAULT_COLOR, + opacity: alphaSliderVal, + size: 8, + }, }, }, xLabel: columnNameWithDescription(validCols[0].info), @@ -200,7 +208,7 @@ export async function createScatterTraces( marker: { color: DEFAULT_COLOR, }, - opacity: config.alphaSliderVal, + opacity: alphaSliderVal, }, xLabel: columnNameWithDescription(xCurr.info), yLabel: columnNameWithDescription(yCurr.info), @@ -229,25 +237,33 @@ export async function createScatterTraces( showlegend: false, text: validCols[0].resolvedValues.map((v) => v.id.toString()), marker: { - line: { - width: 0, - }, - symbol: shapeCol ? shapeCol.resolvedValues.map((v) => shapeScale(v.val as string)) : 'circle', color: colorCol - ? hasSelected - ? colorCol.resolvedValues.map((v) => - selected[v.id] - ? colorCol.type === EColumnTypes.NUMERICAL - ? numericalColorScale(v.val as number) - : scales.color(v.val) - : DEFAULT_COLOR, - ) - : colorCol.resolvedValues.map((v) => - colorCol.type === EColumnTypes.NUMERICAL ? numericalColorScale(v.val as number) : scales.color(v.val), - ) - : xCurr.resolvedValues.map((v) => (selected[v.id] ? SELECT_COLOR : DEFAULT_COLOR)), - opacity: xCurr.resolvedValues.map((v) => (selected[v.id] ? 1 : hasSelected && colorCol ? 0.2 : config.alphaSliderVal)), - size: 8, + ? colorCol.resolvedValues.map((v) => (colorCol.type === EColumnTypes.NUMERICAL ? numericalColorScale(v.val as number) : scales.color(v.val))) + : SELECT_COLOR, + }, + // plotly is stupid and doesnt know its own types + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + selected: { + marker: { + line: { + width: 0, + }, + symbol: shapeCol ? shapeCol.resolvedValues.map((v) => shapeScale(v.val as string)) : 'circle', + opacity: 1, + size: 8, + }, + }, + unselected: { + marker: { + line: { + width: 0, + }, + symbol: shapeCol ? shapeCol.resolvedValues.map((v) => shapeScale(v.val as string)) : 'circle', + color: DEFAULT_COLOR, + opacity: alphaSliderVal, + size: 8, + }, }, }, xLabel: columnNameWithDescription(xCurr.info), @@ -273,6 +289,8 @@ export async function createScatterTraces( mode: 'markers', visible: 'legendonly', legendgroup: 'color', + hoverinfo: 'skip', + // @ts-ignore legendgrouptitle: { text: columnNameWithDescription(colorCol.info), @@ -284,7 +302,7 @@ export async function createScatterTraces( symbol: 'circle', size: 8, color: colorCol ? colorCol.resolvedValues.map((v) => scales.color(v.val)) : DEFAULT_COLOR, - opacity: config.alphaSliderVal, + opacity: 1, }, transforms: [ { @@ -317,6 +335,8 @@ export async function createScatterTraces( visible: 'legendonly', showlegend: true, legendgroup: 'shape', + hoverinfo: 'skip', + // @ts-ignore legendgrouptitle: { text: columnNameWithDescription(shapeCol.info), @@ -325,7 +345,7 @@ export async function createScatterTraces( line: { width: 0, }, - opacity: config.alphaSliderVal, + opacity: alphaSliderVal, size: 8, symbol: shapeCol ? shapeCol.resolvedValues.map((v) => shapeScale(v.val as string)) : 'circle', color: DEFAULT_COLOR, diff --git a/src/vis/sidebar/AggregateTypeSelect.tsx b/src/vis/sidebar/AggregateTypeSelect.tsx index 00fc156e8..0c9da68dc 100644 --- a/src/vis/sidebar/AggregateTypeSelect.tsx +++ b/src/vis/sidebar/AggregateTypeSelect.tsx @@ -1,6 +1,6 @@ +import { Select } from '@mantine/core'; import * as React from 'react'; import { useMemo } from 'react'; -import Select from 'react-select'; import { ColumnInfo, EAggregateTypes, EColumnTypes, VisColumn } from '../interfaces'; import { SingleColumnSelect } from './SingleColumnSelect'; @@ -35,16 +35,12 @@ export function AggregateTypeSelect({ return ( <> - callback(e.currentTarget.value as EBarDirection)} - value={opt} - type="checkbox" - className="btn-check" - id={`formButton${opt}`} - autoComplete="off" - /> - - - ); - })} -
- + + + + Direction + + + + ); } diff --git a/src/vis/sidebar/BarDisplayTypeButtons.tsx b/src/vis/sidebar/BarDisplayTypeButtons.tsx index 47785c02a..136d70894 100644 --- a/src/vis/sidebar/BarDisplayTypeButtons.tsx +++ b/src/vis/sidebar/BarDisplayTypeButtons.tsx @@ -1,3 +1,4 @@ +import { Container, SegmentedControl, Stack, Text } from '@mantine/core'; import * as React from 'react'; import { EBarDisplayType } from '../interfaces'; @@ -7,27 +8,18 @@ interface BarDisplayProps { } export function BarDisplayButtons({ callback, currentSelected }: BarDisplayProps) { - const options = [EBarDisplayType.ABSOLUTE, EBarDisplayType.NORMALIZED]; return ( -
- {options.map((opt) => { - return ( - - callback(e.currentTarget.value as EBarDisplayType)} - value={opt} - type="checkbox" - className="btn-check" - id={`formButton${opt}`} - autoComplete="off" - /> - - - ); - })} -
+ + + + + ); } diff --git a/src/vis/sidebar/BarGroupTypeButtons.tsx b/src/vis/sidebar/BarGroupTypeButtons.tsx index 48a73f4dd..83016b82c 100644 --- a/src/vis/sidebar/BarGroupTypeButtons.tsx +++ b/src/vis/sidebar/BarGroupTypeButtons.tsx @@ -1,3 +1,4 @@ +import { Container, SegmentedControl, Stack } from '@mantine/core'; import * as React from 'react'; import { EBarGroupingType } from '../interfaces'; @@ -7,27 +8,18 @@ interface BarGroupTypeProps { } export function BarGroupTypeButtons({ callback, currentSelected }: BarGroupTypeProps) { - const options = [EBarGroupingType.GROUP, EBarGroupingType.STACK]; return ( -
- {options.map((opt) => { - return ( - - callback(e.currentTarget.value as EBarGroupingType)} - value={opt} - type="checkbox" - className="btn-check" - id={`formButton${opt}`} - autoComplete="off" - /> - - - ); - })} -
+ + + + + ); } diff --git a/src/vis/sidebar/BrushOptionButtons.tsx b/src/vis/sidebar/BrushOptionButtons.tsx index 007451469..99dec6296 100644 --- a/src/vis/sidebar/BrushOptionButtons.tsx +++ b/src/vis/sidebar/BrushOptionButtons.tsx @@ -1,59 +1,58 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faPaintBrush, faSquare, faSearchPlus, faArrowsAlt } from '@fortawesome/free-solid-svg-icons'; +import { SegmentedControl, Tooltip } from '@mantine/core'; import * as React from 'react'; import { EScatterSelectSettings } from '../interfaces'; interface BrushOptionProps { callback: (dragMode: EScatterSelectSettings) => void; dragMode: EScatterSelectSettings; + options?: EScatterSelectSettings[]; } -export function BrushOptionButtons({ callback, dragMode }: BrushOptionProps) { +export function BrushOptionButtons({ + callback, + dragMode, + options = [EScatterSelectSettings.RECTANGLE, EScatterSelectSettings.LASSO, EScatterSelectSettings.PAN, EScatterSelectSettings.ZOOM], +}: BrushOptionProps) { return ( -
- callback(EScatterSelectSettings.RECTANGLE)} - type="checkbox" - className="btn-check" - id="rectBrushSelection" - autoComplete="off" - /> - - - callback(EScatterSelectSettings.LASSO)} - type="checkbox" - className="btn-check" - id="lassoBrushSelection" - autoComplete="off" - /> - - callback(EScatterSelectSettings.ZOOM)} - type="checkbox" - className="btn-check" - id="zoomBrushSelection" - autoComplete="off" - /> - - callback(EScatterSelectSettings.PAN)} - type="checkbox" - className="btn-check" - id="panSelection" - autoComplete="off" - /> - -
+ + + + ), + value: EScatterSelectSettings.RECTANGLE, + }, + { + label: ( + + + + ), + value: EScatterSelectSettings.LASSO, + }, + { + label: ( + + + + ), + value: EScatterSelectSettings.PAN, + }, + { + label: ( + + + + ), + value: EScatterSelectSettings.ZOOM, + }, + ].filter((d) => options.includes(d.value))} + /> ); } diff --git a/src/vis/sidebar/CategoricalColumnSelect.tsx b/src/vis/sidebar/CategoricalColumnSelect.tsx index 67b51581a..d6c0e26e9 100644 --- a/src/vis/sidebar/CategoricalColumnSelect.tsx +++ b/src/vis/sidebar/CategoricalColumnSelect.tsx @@ -1,7 +1,6 @@ +import { MultiSelect } from '@mantine/core'; import * as React from 'react'; -import Select from 'react-select'; import { ColumnInfo, EColumnTypes, VisColumn } from '../interfaces'; -import { formatOptionLabel } from './utils'; interface CategoricalColumnSelectProps { callback: (s: ColumnInfo[]) => void; @@ -11,23 +10,18 @@ interface CategoricalColumnSelectProps { export function CategoricalColumnSelect({ callback, columns, currentSelected }: CategoricalColumnSelectProps) { const selectCatOptions = React.useMemo(() => { - return columns.filter((c) => c.type === EColumnTypes.CATEGORICAL).map((c) => c.info); + return columns.filter((c) => c.type === EColumnTypes.CATEGORICAL).map((c) => ({ value: c.info.id, label: c.info.name })); }, [columns]); return ( - <> - - callback(e)} + clearable + placeholder="Select Column" + label="Color" + onChange={(e) => callback(columns.find((c) => c.info.id === e)?.info)} name="colorSelect" - formatOptionLabel={formatOptionLabel} - getOptionLabel={(option) => option.name} - getOptionValue={(option) => option.id} - options={columns.map((c) => c.info)} - value={currentSelected || []} + data={columns.map((c) => ({ value: c.info.id, label: c.info.name }))} + value={currentSelected?.id} /> {currentNumType && currentSelected && getCol(columns, currentSelected).type === EColumnTypes.NUMERICAL ? ( ) : null} - +
); } diff --git a/src/vis/sidebar/FilterButtons.tsx b/src/vis/sidebar/FilterButtons.tsx index b0184d767..fa64fa108 100644 --- a/src/vis/sidebar/FilterButtons.tsx +++ b/src/vis/sidebar/FilterButtons.tsx @@ -1,3 +1,4 @@ +import { Button, Container, Tooltip } from '@mantine/core'; import * as React from 'react'; import { EFilterOptions } from '../interfaces'; @@ -5,51 +6,26 @@ interface FilterButtonsProps { callback: (s: EFilterOptions) => void; } -interface IFilterDesc { - name: EFilterOptions; - tooltip: string; -} - export function FilterButtons({ callback }: FilterButtonsProps) { - const options: IFilterDesc[] = [ - { - name: EFilterOptions.IN, - tooltip: 'Filters any point not currently selected', - }, - { - name: EFilterOptions.OUT, - tooltip: 'Filters all currently selected points', - }, - { - name: EFilterOptions.CLEAR, - tooltip: 'Removes any existing filter', - }, - ]; - return ( -
- {options.map((opt) => { - return ( - - callback(e.currentTarget.value as EFilterOptions)} - value={opt.name} - type="checkbox" - className="btn-check" - id={`formButton${opt.name}`} - autoComplete="off" - /> - - - ); - })} -
+ + + + + + + + + + + + + ); } diff --git a/src/vis/sidebar/GroupSelect.tsx b/src/vis/sidebar/GroupSelect.tsx index 52b8a84a6..f66789a1e 100644 --- a/src/vis/sidebar/GroupSelect.tsx +++ b/src/vis/sidebar/GroupSelect.tsx @@ -1,9 +1,8 @@ +import { Select, Stack } from '@mantine/core'; import * as React from 'react'; -import Select from 'react-select'; import { ColumnInfo, EBarDisplayType, EBarGroupingType, EColumnTypes, VisColumn } from '../interfaces'; import { BarDisplayButtons } from './BarDisplayTypeButtons'; import { BarGroupTypeButtons } from './BarGroupTypeButtons'; -import { formatOptionLabel } from './utils'; interface GroupSelectProps { groupColumnSelectCallback: (c: ColumnInfo) => void; @@ -25,17 +24,14 @@ export function GroupSelect({ currentSelected, }: GroupSelectProps) { return ( - <> - + callback(e as EHexbinOptions)} + data={options} + value={currentSelected} + /> + ); +} diff --git a/src/vis/sidebar/MultiplesSelect.tsx b/src/vis/sidebar/MultiplesSelect.tsx deleted file mode 100644 index 2561c9b58..000000000 --- a/src/vis/sidebar/MultiplesSelect.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import * as React from 'react'; -import Select from 'react-select'; -import { ColumnInfo, EColumnTypes, VisColumn } from '../interfaces'; -import { formatOptionLabel } from './utils'; - -interface MultiplesSelectProps { - callback: (c: ColumnInfo) => void; - columns: VisColumn[]; - currentSelected: ColumnInfo | null; -} - -export function MultiplesSelect({ callback, columns, currentSelected }: MultiplesSelectProps) { - return ( - <> - - callback(e.currentTarget.value as ENumericalColorScaleType)} - value={ENumericalColorScaleType.SEQUENTIAL} - type="checkbox" - className="btn-check" - id={`formButton${ENumericalColorScaleType.SEQUENTIAL}`} - autoComplete="off" - /> - - - callback(e.currentTarget.value as ENumericalColorScaleType)} - value={ENumericalColorScaleType.DIVERGENT} - type="checkbox" - className="btn-check" - id={`formButton${ENumericalColorScaleType.DIVERGENT}`} - autoComplete="off" - /> - -
-
-
- {sequentialColors.map((d) => { - return ; - })} -
- -
- {divergentColors.map((d) => { - return ; - })} -
-
- + + {divergentColors.map((d) => { + return ; + })} + + ), + value: ENumericalColorScaleType.DIVERGENT, + }, + { + label: ( + + {sequentialColors.map((d) => { + return ; + })} + + ), + value: ENumericalColorScaleType.SEQUENTIAL, + }, + ]} + /> ); } diff --git a/src/vis/sidebar/NumericalColumnSelect.tsx b/src/vis/sidebar/NumericalColumnSelect.tsx index cd195aba3..b32ece3d9 100644 --- a/src/vis/sidebar/NumericalColumnSelect.tsx +++ b/src/vis/sidebar/NumericalColumnSelect.tsx @@ -1,9 +1,6 @@ import * as React from 'react'; -import Select, { components, MultiValueProps, Props } from 'react-select'; -import { SortableContainer, SortableContainerProps, SortableElement, SortEndHandler, SortableHandle } from 'react-sortable-hoc'; -import { MultiValueGenericProps } from 'react-select/src/components/MultiValue'; +import { MultiSelect } from '@mantine/core'; import { ColumnInfo, EColumnTypes, VisColumn } from '../interfaces'; -import { formatOptionLabel } from './utils'; interface NumericalColumnSelectProps { callback: (s: ColumnInfo[]) => void; @@ -11,63 +8,21 @@ interface NumericalColumnSelectProps { currentSelected: ColumnInfo[]; } -function arrayMove(array: readonly T[], from: number, to: number) { - const slicedArray = array.slice(); - slicedArray.splice(to < 0 ? array.length + to : to, 0, slicedArray.splice(from, 1)[0]); - return slicedArray; -} - -const SortableMultiValue = SortableElement((props: MultiValueProps) => { - // this prevents the menu from being opened/closed when the user clicks - // on a value to begin dragging it. ideally, detecting a click (instead of - // a drag) would still focus the control and toggle the menu - const onMouseDown: React.MouseEventHandler = (e) => { - e.preventDefault(); - e.stopPropagation(); - }; - const innerProps = { ...props.innerProps, onMouseDown }; - return ; -}); - -const SortableMultiValueLabel = SortableHandle((props: MultiValueGenericProps) => ); - -const SortableSelect = SortableContainer(Select) as unknown as React.ComponentClass & SortableContainerProps>; - export function NumericalColumnSelect({ callback, columns, currentSelected }: NumericalColumnSelectProps) { const selectNumOptions = React.useMemo(() => { - return columns.filter((c) => c.type === EColumnTypes.NUMERICAL).map((c) => c.info); + return columns.filter((c) => c.type === EColumnTypes.NUMERICAL).map((c) => ({ value: c.info.id, label: c.info.name })); }, [columns]); - const onSortEnd: SortEndHandler = ({ oldIndex, newIndex }) => { - const newValue = arrayMove(currentSelected, oldIndex, newIndex); - callback(newValue); - }; - return ( - <> - - node.getBoundingClientRect()} - closeMenuOnSelect={false} - isMulti - formatOptionLabel={formatOptionLabel} - getOptionLabel={(option) => option.name} - getOptionValue={(option) => option.id} - onChange={(e: ColumnInfo[]) => { - callback(e.map((c) => c)); - }} - components={{ - MultiValue: SortableMultiValue, - MultiValueLabel: SortableMultiValueLabel, - }} - name="numColumns" - options={selectNumOptions} - value={currentSelected} - /> - + { + callback(columns.filter((c) => e.includes(c.info.id)).map((c) => c.info)); + }} + name="numColumns" + data={selectNumOptions} + value={currentSelected.map((c) => c.id)} + /> ); } diff --git a/src/vis/sidebar/OpacitySlider.tsx b/src/vis/sidebar/OpacitySlider.tsx index fee0c592a..961441029 100644 --- a/src/vis/sidebar/OpacitySlider.tsx +++ b/src/vis/sidebar/OpacitySlider.tsx @@ -1,4 +1,9 @@ +import { Box, Slider, Stack, Text } from '@mantine/core'; +import { debounce } from 'lodash'; +import { useMemo } from 'react'; + import * as React from 'react'; +import { useSyncedRef } from '../../hooks'; interface OpacitySliderProps { callback: (n: number) => void; @@ -6,21 +11,33 @@ interface OpacitySliderProps { } export function OpacitySlider({ callback, currentValue }: OpacitySliderProps) { + const syncedCallback = useSyncedRef(callback); + + const debouncedCallback = useMemo(() => { + return debounce((n: number) => syncedCallback.current?.(n), 10); + }, [syncedCallback]); + return ( -
- - callback(+e.currentTarget.value)} - className="form-range" - value={currentValue} - min="=0" - max="1" - step=".1" - id="alphaSlider" - /> -
+ + + { + debouncedCallback(n); + }} + /> + + ); } diff --git a/src/vis/sidebar/ShapeSelect.tsx b/src/vis/sidebar/ShapeSelect.tsx deleted file mode 100644 index d9f3ce069..000000000 --- a/src/vis/sidebar/ShapeSelect.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import * as React from 'react'; -import Select from 'react-select'; -import { ColumnInfo, EColumnTypes, VisColumn } from '../interfaces'; -import { formatOptionLabel } from './utils'; - -interface ShapeSelectProps { - callback: (shape: ColumnInfo) => void; - columns: VisColumn[]; - currentSelected: ColumnInfo | null; -} - -export function ShapeSelect({ callback, columns, currentSelected }: ShapeSelectProps) { - return ( - <> - - option.name} - getOptionValue={(option) => option.id} - onChange={(e) => callback(e)} - name="numColumns" - options={selectCatOptions} - value={selectCatOptions.filter((c) => currentSelected?.id === c.id)} - /> - + callback(e.currentTarget.value as EViolinOverlay)} - value={opt} - type="checkbox" - className="btn-check" - id={`formButton${opt}`} - autoComplete="off" - /> - - - ); - })} - - + + + + Overlay + + + + ); } diff --git a/src/vis/sidebar/VisTypeSelect.tsx b/src/vis/sidebar/VisTypeSelect.tsx index 09127d006..d4753c52f 100644 --- a/src/vis/sidebar/VisTypeSelect.tsx +++ b/src/vis/sidebar/VisTypeSelect.tsx @@ -1,5 +1,5 @@ +import { Select } from '@mantine/core'; import * as React from 'react'; -import Select from 'react-select'; import { allVisTypes, ESupportedPlotlyVis } from '../interfaces'; interface VisTypeSelectProps { @@ -9,21 +9,18 @@ interface VisTypeSelectProps { export function VisTypeSelect({ callback, currentSelected }: VisTypeSelectProps) { return ( - <> - - callback(e as ESupportedPlotlyVis)} + name="visTypes" + data={allVisTypes.map((t) => { + return { + value: t, + label: t, + }; + })} + value={currentSelected} + /> ); } diff --git a/src/vis/sidebar/WarningMessage.tsx b/src/vis/sidebar/WarningMessage.tsx deleted file mode 100644 index 6190a44e1..000000000 --- a/src/vis/sidebar/WarningMessage.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import * as React from 'react'; - -export function WarningMessage() { - return ( -
- Please note: This feature is still under development. Please report any problems you might observe. -
- ); -} diff --git a/src/vis/sidebar/index.ts b/src/vis/sidebar/index.ts index 2d2f4bdc5..dee6a8e2b 100644 --- a/src/vis/sidebar/index.ts +++ b/src/vis/sidebar/index.ts @@ -1,4 +1,3 @@ -export * from './AllColumnSelect'; export * from './BarDirectionButtons'; export * from './BarDisplayTypeButtons'; export * from './BarGroupTypeButtons'; @@ -7,12 +6,9 @@ export * from './CategoricalColumnSelect'; export * from './ColorSelect'; export * from './FilterButtons'; export * from './GroupSelect'; -export * from './MultiplesSelect'; export * from './NumericalColorButtons'; export * from './NumericalColumnSelect'; export * from './OpacitySlider'; -export * from './ShapeSelect'; export * from './utils'; export * from './ViolinOverlayButtons'; export * from './VisTypeSelect'; -export * from './WarningMessage'; diff --git a/src/vis/stories/Iris.stories.tsx b/src/vis/stories/Iris.stories.tsx index 36b8e0eb6..0d46de478 100644 --- a/src/vis/stories/Iris.stories.tsx +++ b/src/vis/stories/Iris.stories.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { ComponentStory, ComponentMeta } from '@storybook/react'; +import { Center } from '@mantine/core'; import { Vis } from '../Vis'; import { EAggregateTypes, @@ -77,7 +78,13 @@ export default { // eslint-disable-next-line react/function-component-definition const Template: ComponentStory = (args) => { const columns = React.useMemo(() => fetchIrisData(), []); - return ; + return ( +
+
+ +
+
+ ); }; // More on args: https://storybook.js.org/docs/react/writing-stories/args @@ -156,48 +163,3 @@ ViolinPlot.args = { violinOverlay: EViolinOverlay.NONE, }, }; - -export const StripPlot = Template.bind({}) as typeof Template; -StripPlot.args = { - externalConfig: { - type: ESupportedPlotlyVis.STRIP, - numColumnsSelected: [ - { - description: '', - id: 'sepalLength', - name: 'Sepal Length', - }, - { - description: '', - id: 'sepalWidth', - name: 'Sepal Width', - }, - ], - catColumnsSelected: [ - { - description: '', - id: 'species', - name: 'Species', - }, - ], - }, -}; - -export const ParallelCoordinatesPlot = Template.bind({}) as typeof Template; -ParallelCoordinatesPlot.args = { - externalConfig: { - type: ESupportedPlotlyVis.PCP, - allColumnsSelected: [ - { - description: '', - id: 'sepalLength', - name: 'Sepal Length', - }, - { - description: '', - id: 'sepalWidth', - name: 'Sepal Width', - }, - ], - }, -}; diff --git a/src/vis/stories/Random.stories.tsx b/src/vis/stories/Random.stories.tsx index 3cb5118b1..072248f86 100644 --- a/src/vis/stories/Random.stories.tsx +++ b/src/vis/stories/Random.stories.tsx @@ -80,7 +80,7 @@ export default { pointCount: { control: 'number' }, }, args: { - pointCount: 1000, + pointCount: 100000, }, } as ComponentMeta; @@ -90,7 +90,13 @@ const Template: ComponentStory = (args) => { // @ts-ignore TODO: The pointCount is an injected property, but we are using typeof Vis such that this prop does not exist. const columns = React.useMemo(() => fetchData(args.pointCount), [args.pointCount]); - return ; + return ( +
+
+ +
+
+ ); }; // More on args: https://storybook.js.org/docs/react/writing-stories/args @@ -158,42 +164,3 @@ ViolinPlot.args = { violinOverlay: EViolinOverlay.NONE, }, }; - -export const StripPlot = Template.bind({}) as typeof Template; -StripPlot.args = { - externalConfig: { - type: ESupportedPlotlyVis.STRIP, - numColumnsSelected: [ - { - description: '', - id: 'pca_x', - name: 'pca_x', - }, - { - description: '', - id: 'pca_y', - name: 'pca_y', - }, - ], - catColumnsSelected: [], - }, -}; - -export const ParallelCoordinatesPlot = Template.bind({}) as typeof Template; -ParallelCoordinatesPlot.args = { - externalConfig: { - type: ESupportedPlotlyVis.PCP, - allColumnsSelected: [ - { - description: '', - id: 'pca_x', - name: 'pca_x', - }, - { - description: '', - id: 'pca_y', - name: 'pca_y', - }, - ], - }, -}; diff --git a/src/vis/strip/StripVis.tsx b/src/vis/strip/StripVis.tsx deleted file mode 100644 index b0de62770..000000000 --- a/src/vis/strip/StripVis.tsx +++ /dev/null @@ -1,152 +0,0 @@ -import * as React from 'react'; -import d3v3 from 'd3v3'; -import { merge, uniqueId } from 'lodash'; -import { useMemo, useEffect } from 'react'; -import { IVisConfig, VisColumn, IStripConfig, Scales } from '../interfaces'; -import { PlotlyComponent, Plotly } from '../Plot'; -import { InvalidCols } from '../general'; -import { beautifyLayout } from '../general/layoutUtils'; -import { createStripTraces } from './utils'; -import { useAsync } from '../../hooks'; -import { StripVisSidebar } from './StripVisSidebar'; -import { VisSidebarWrapper } from '../VisSidebarWrapper'; -import { CloseButton } from '../sidebar/CloseButton'; - -interface StripVisProps { - config: IStripConfig; - extensions?: { - prePlot?: React.ReactNode; - postPlot?: React.ReactNode; - preSidebar?: React.ReactNode; - postSidebar?: React.ReactNode; - }; - columns: VisColumn[]; - setConfig: (config: IVisConfig) => void; - scales: Scales; - selectionCallback?: (s: string[]) => void; - closeButtonCallback?: () => void; - selected?: { [key: string]: boolean }; - hideSidebar?: boolean; - showCloseButton?: boolean; -} - -const defaultExtensions = { - prePlot: null, - postPlot: null, - preSidebar: null, - postSidebar: null, -}; - -export function StripVis({ - config, - extensions, - columns, - setConfig, - selectionCallback = () => null, - selected = {}, - scales, - hideSidebar = false, - showCloseButton = false, - closeButtonCallback = () => null, -}: StripVisProps) { - const mergedExtensions = useMemo(() => { - return merge({}, defaultExtensions, extensions); - }, [extensions]); - - const { value: traces, status: traceStatus, error: traceError } = useAsync(createStripTraces, [columns, config, selected, scales]); - - const id = React.useMemo(() => uniqueId('StripVis'), []); - - const plotlyDivRef = React.useRef(null); - - useEffect(() => { - const ro = new ResizeObserver(() => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - - if (plotlyDivRef) { - ro.observe(plotlyDivRef.current); - } - - if (hideSidebar) { - return; - } - - const menu = document.getElementById(`generalVisBurgerMenu${id}`); - - menu.addEventListener('hidden.bs.collapse', () => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - - menu.addEventListener('shown.bs.collapse', () => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - }, [id, hideSidebar, plotlyDivRef]); - - const layout = React.useMemo(() => { - if (!traces) { - return null; - } - - const innerLayout: Partial = { - showlegend: true, - legend: { - // @ts-ignore - itemclick: false, - itemdoubleclick: false, - }, - font: { - family: 'Roboto, sans-serif', - }, - autosize: true, - grid: { rows: traces.rows, columns: traces.cols, xgap: 0.3, pattern: 'independent' }, - shapes: [], - dragmode: 'select', - }; - - return beautifyLayout(traces, innerLayout); - }, [traces]); - - return ( -
-
- {mergedExtensions.prePlot} - - {traceStatus === 'success' && traces?.plots.length > 0 ? ( - p.data), ...traces.legendPlots.map((p) => p.data)]} - layout={layout} - config={{ responsive: true, displayModeBar: false }} - useResizeHandler - style={{ width: '100%', height: '100%' }} - onSelected={(sel) => { - selectionCallback(sel ? sel.points.map((d) => (d as any).id) : []); - }} - // plotly redraws everything on updates, so you need to reappend title and - onUpdate={() => { - for (const p of traces.plots) { - d3v3.select(`g .${p.data.xaxis}title`).style('pointer-events', 'all').append('title').text(p.xLabel); - - d3v3.select(`g .${p.data.yaxis}title`).style('pointer-events', 'all').append('title').text(p.yLabel); - } - }} - /> - ) : traceStatus !== 'pending' ? ( - - ) : null} - {mergedExtensions.postPlot} - {showCloseButton ? : null} -
- {!hideSidebar ? ( - - - - ) : null} -
- ); -} diff --git a/src/vis/strip/StripVisSidebar.tsx b/src/vis/strip/StripVisSidebar.tsx deleted file mode 100644 index 53498c706..000000000 --- a/src/vis/strip/StripVisSidebar.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import * as React from 'react'; -import { useMemo } from 'react'; -import { merge } from 'lodash'; -import { ColumnInfo, ESupportedPlotlyVis, IStripConfig, IVisConfig, VisColumn, ICommonVisSideBarProps } from '../interfaces'; -import { VisTypeSelect } from '../sidebar/VisTypeSelect'; -import { NumericalColumnSelect } from '../sidebar/NumericalColumnSelect'; -import { WarningMessage } from '../sidebar/WarningMessage'; -import { CategoricalColumnSelect } from '../sidebar/CategoricalColumnSelect'; - -const defaultExtensions = { - prePlot: null, - postPlot: null, - preSidebar: null, - postSidebar: null, -}; -export function StripVisSidebar({ - config, - extensions, - columns, - setConfig, - className = '', - style: { width = '20em', ...style } = {}, -}: { - config: IStripConfig; - extensions?: { - prePlot?: React.ReactNode; - postPlot?: React.ReactNode; - preSidebar?: React.ReactNode; - postSidebar?: React.ReactNode; - }; - columns: VisColumn[]; - setConfig: (config: IVisConfig) => void; -} & ICommonVisSideBarProps) { - const mergedExtensions = useMemo(() => { - return merge({}, defaultExtensions, extensions); - }, [extensions]); - - return ( -
- - setConfig({ ...(config as any), type })} currentSelected={config.type} /> -
- setConfig({ ...config, numColumnsSelected })} - columns={columns} - currentSelected={config.numColumnsSelected || []} - /> - setConfig({ ...config, catColumnsSelected })} - columns={columns} - currentSelected={config.catColumnsSelected || []} - /> -
- {mergedExtensions.preSidebar} - {mergedExtensions.postSidebar} -
- ); -} diff --git a/src/vis/strip/index.ts b/src/vis/strip/index.ts deleted file mode 100644 index f2cfb673d..000000000 --- a/src/vis/strip/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './StripVis'; -export * from './utils'; diff --git a/src/vis/strip/utils.ts b/src/vis/strip/utils.ts deleted file mode 100644 index 702207e87..000000000 --- a/src/vis/strip/utils.ts +++ /dev/null @@ -1,175 +0,0 @@ -import { merge } from 'lodash'; -import { I18nextManager } from '../../i18n'; -import { - PlotlyInfo, - PlotlyData, - VisCategoricalColumn, - EColumnTypes, - ESupportedPlotlyVis, - IVisConfig, - VisNumericalColumn, - Scales, - VisColumn, - IStripConfig, -} from '../interfaces'; -import { columnNameWithDescription, resolveColumnValues } from '../general/layoutUtils'; -import { DEFAULT_COLOR, SELECT_COLOR } from '../general/constants'; - -export function isStrip(s: IVisConfig): s is IStripConfig { - return s.type === ESupportedPlotlyVis.STRIP; -} - -const defaultConfig: IStripConfig = { - type: ESupportedPlotlyVis.STRIP, - numColumnsSelected: [], - catColumnsSelected: [], -}; - -export function stripMergeDefaultConfig(columns: VisColumn[], config: IStripConfig): IVisConfig { - const merged = merge({}, defaultConfig, config); - - const numCols = columns.filter((c) => c.type === EColumnTypes.NUMERICAL); - - if (merged.numColumnsSelected.length === 0 && numCols.length > 0) { - merged.numColumnsSelected.push(numCols[numCols.length - 1].info); - } - - return merged; -} - -export async function createStripTraces(columns: VisColumn[], config: IStripConfig, selected: { [key: string]: boolean }, scales: Scales): Promise { - let plotCounter = 1; - - if (!config.numColumnsSelected || !config.catColumnsSelected) { - return { - plots: [], - legendPlots: [], - rows: 0, - cols: 0, - errorMessage: I18nextManager.getInstance().i18n.t('tdp:core.vis.stripError'), - errorMessageHeader: I18nextManager.getInstance().i18n.t('tdp:core.vis.errorHeader'), - }; - } - - const numCols: VisNumericalColumn[] = config.numColumnsSelected.map((c) => columns.find((col) => col.info.id === c.id) as VisNumericalColumn); - const catCols: VisCategoricalColumn[] = config.catColumnsSelected.map((c) => columns.find((col) => col.info.id === c.id) as VisCategoricalColumn); - const plots: PlotlyData[] = []; - - const numColValues = await resolveColumnValues(numCols); - const catColValues = await resolveColumnValues(catCols); - - // if we only have numerical columns, add them individually - if (catColValues.length === 0) { - for (const numCurr of numColValues) { - plots.push({ - data: { - y: numCurr.resolvedValues.map((v) => v.val), - xaxis: plotCounter === 1 ? 'x' : `x${plotCounter}`, - yaxis: plotCounter === 1 ? 'y' : `y${plotCounter}`, - ids: numCurr.resolvedValues.map((v) => v.id.toString()), - showlegend: false, - type: 'box', - boxpoints: 'all', - name: 'All points', - mode: 'none', - pointpos: 0, - selectedpoints: numCurr.resolvedValues - .map((v, i) => { - return { index: i, selected: selected[v.id] }; - }) - .filter((v) => v.selected) - .map((v) => v.index), - // @ts-ignore - selected: { - marker: { - color: SELECT_COLOR, - opacity: 1, - }, - }, - unselected: { - marker: { - color: DEFAULT_COLOR, - opacity: 0.5, - }, - }, - // @ts-ignore - box: { - visible: true, - }, - line: { - color: 'rgba(255, 255, 255, 0)', - }, - }, - xLabel: columnNameWithDescription(numCurr.info), - yLabel: columnNameWithDescription(numCurr.info), - }); - plotCounter += 1; - } - } - - for (const numCurr of numColValues) { - for (const catCurr of catColValues) { - plots.push({ - data: { - x: catCurr.resolvedValues.map((v) => v.val), - y: numCurr.resolvedValues.map((v) => v.val), - ids: numCurr.resolvedValues.map((v) => v.id.toString()), - xaxis: plotCounter === 1 ? 'x' : `x${plotCounter}`, - yaxis: plotCounter === 1 ? 'y' : `y${plotCounter}`, - showlegend: false, - type: 'box', - boxpoints: 'all', - name: 'All points', - mode: 'none', - pointpos: 0, - selectedpoints: catCurr.resolvedValues - .map((v, i) => { - return { index: i, selected: selected[v.id] }; - }) - .filter((v) => v.selected) - .map((v) => v.index), - // @ts-ignore - selected: { - marker: { - color: SELECT_COLOR, - opacity: 1, - }, - }, - unselected: { - marker: { - color: DEFAULT_COLOR, - opacity: 0.5, - }, - }, - box: { - visible: true, - }, - line: { - color: '#FFFFFF', - }, - meanline: { - visible: true, - }, - transforms: [ - { - type: 'groupby', - groups: catCurr.resolvedValues.map((v) => v.val) as string[], - }, - ], - }, - xLabel: columnNameWithDescription(catCurr.info), - yLabel: columnNameWithDescription(numCurr.info), - }); - plotCounter += 1; - } - } - - return { - plots, - legendPlots: [], - rows: numColValues.length, - cols: catColValues.length > 0 ? catColValues.length : 1, - errorMessage: I18nextManager.getInstance().i18n.t('tdp:core.vis.stripError'), - errorMessageHeader: I18nextManager.getInstance().i18n.t('tdp:core.vis.errorHeader'), - }; -} diff --git a/src/vis/violin/ViolinVis.tsx b/src/vis/violin/ViolinVis.tsx index 2b5dbf982..4c7f7f468 100644 --- a/src/vis/violin/ViolinVis.tsx +++ b/src/vis/violin/ViolinVis.tsx @@ -1,7 +1,10 @@ import * as React from 'react'; import d3v3 from 'd3v3'; import { merge, uniqueId } from 'lodash'; -import { useEffect } from 'react'; +import { useEffect, useState } from 'react'; +import { ActionIcon, Container, Space, Tooltip } from '@mantine/core'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faGear } from '@fortawesome/free-solid-svg-icons'; import { Scales, VisColumn, IVisConfig, IViolinConfig } from '../interfaces'; import { PlotlyComponent, Plotly } from '../Plot'; import { InvalidCols } from '../general'; @@ -11,8 +14,28 @@ import { useAsync } from '../../hooks'; import { ViolinVisSidebar } from './ViolinVisSidebar'; import { VisSidebarWrapper } from '../VisSidebarWrapper'; import { CloseButton } from '../sidebar/CloseButton'; +import { I18nextManager } from '../../i18n'; -interface ViolinVisProps { +const defaultExtensions = { + prePlot: null, + postPlot: null, + preSidebar: null, + postSidebar: null, +}; + +export function ViolinVis({ + config, + optionsConfig, + extensions, + columns, + setConfig, + scales, + showSidebar, + setShowSidebar, + enableSidebar, + showCloseButton = false, + closeButtonCallback = () => null, +}: { config: IViolinConfig; optionsConfig?: { overlay?: { @@ -31,28 +54,11 @@ interface ViolinVisProps { closeButtonCallback?: () => void; scales: Scales; - hideSidebar?: boolean; + showSidebar?: boolean; + setShowSidebar?(show: boolean): void; + enableSidebar?: boolean; showCloseButton?: boolean; -} - -const defaultExtensions = { - prePlot: null, - postPlot: null, - preSidebar: null, - postSidebar: null, -}; - -export function ViolinVis({ - config, - optionsConfig, - extensions, - columns, - setConfig, - scales, - hideSidebar = false, - showCloseButton = false, - closeButtonCallback = () => null, -}: ViolinVisProps) { +}) { const mergedExtensions = React.useMemo(() => { return merge({}, defaultExtensions, extensions); }, [extensions]); @@ -61,6 +67,8 @@ export function ViolinVis({ const id = React.useMemo(() => uniqueId('ViolinVis'), []); + const [layout, setLayout] = useState>(null); + const plotlyDivRef = React.useRef(null); useEffect(() => { @@ -72,24 +80,12 @@ export function ViolinVis({ ro.observe(plotlyDivRef.current); } - if (hideSidebar) { - return; - } - - const menu = document.getElementById(`generalVisBurgerMenu${id}`); - - menu.addEventListener('hidden.bs.collapse', () => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - - menu.addEventListener('shown.bs.collapse', () => { - Plotly.Plots.resize(document.getElementById(`plotlyDiv${id}`)); - }); - }, [id, hideSidebar, plotlyDivRef]); + return () => ro.disconnect(); + }, [id, plotlyDivRef]); - const layout = React.useMemo(() => { + React.useEffect(() => { if (!traces) { - return null; + return; } const innerLayout: Partial = { @@ -99,6 +95,12 @@ export function ViolinVis({ itemclick: false, itemdoubleclick: false, }, + margin: { + t: 25, + r: 25, + l: 25, + b: 25, + }, font: { family: 'Roboto, sans-serif', }, @@ -107,46 +109,52 @@ export function ViolinVis({ shapes: [], }; - return beautifyLayout(traces, innerLayout); + setLayout({ ...layout, ...beautifyLayout(traces, innerLayout, layout) }); + // WARNING: Do not update when layout changes, that would be an infinite loop. + // eslint-disable-next-line react-hooks/exhaustive-deps }, [traces]); return ( -
-
- {mergedExtensions.prePlot} - - {traceStatus === 'success' && traces?.plots.length > 0 ? ( - p.data), ...traces.legendPlots.map((p) => p.data)]} - layout={layout} - config={{ responsive: true, displayModeBar: false }} - useResizeHandler - style={{ width: '100%', height: '100%' }} - // plotly redraws everything on updates, so you need to reappend title and - onUpdate={() => { - for (const p of traces.plots) { - d3v3.select(`g .${p.data.xaxis}title`).style('pointer-events', 'all').append('title').text(p.xLabel); - - d3v3.select(`g .${p.data.yaxis}title`).style('pointer-events', 'all').append('title').text(p.yLabel); - } - }} - /> - ) : traceStatus !== 'pending' ? ( - - ) : null} - {mergedExtensions.postPlot} - {showCloseButton ? : null} -
- {!hideSidebar ? ( - + + + {showCloseButton ? : null} + + {enableSidebar ? ( + + setShowSidebar(true)}> + + + + ) : null} + {mergedExtensions.prePlot} + + {traceStatus === 'success' && layout && traces?.plots.length > 0 ? ( + p.data), ...traces.legendPlots.map((p) => p.data)]} + layout={layout} + config={{ responsive: true, displayModeBar: false }} + useResizeHandler + style={{ width: '100%', height: '100%' }} + // plotly redraws everything on updates, so you need to reappend title and + onUpdate={() => { + for (const p of traces.plots) { + d3v3.select(`g .${p.data.xaxis}title`).style('pointer-events', 'all').append('title').text(p.xLabel); + + d3v3.select(`g .${p.data.yaxis}title`).style('pointer-events', 'all').append('title').text(p.yLabel); + } + }} + /> + ) : traceStatus !== 'pending' ? ( + + ) : null} + {mergedExtensions.postPlot} + {showSidebar ? ( + setShowSidebar(false)}> ) : null} -
+ ); } diff --git a/src/vis/violin/ViolinVisSidebar.tsx b/src/vis/violin/ViolinVisSidebar.tsx index 496fca081..62c464c84 100644 --- a/src/vis/violin/ViolinVisSidebar.tsx +++ b/src/vis/violin/ViolinVisSidebar.tsx @@ -1,10 +1,10 @@ import * as React from 'react'; import { useMemo } from 'react'; import { merge } from 'lodash'; +import { Container, Divider, Stack } from '@mantine/core'; import { ColumnInfo, ESupportedPlotlyVis, EViolinOverlay, IViolinConfig, IVisConfig, VisColumn, ICommonVisSideBarProps } from '../interfaces'; import { VisTypeSelect } from '../sidebar/VisTypeSelect'; import { NumericalColumnSelect } from '../sidebar/NumericalColumnSelect'; -import { WarningMessage } from '../sidebar/WarningMessage'; import { CategoricalColumnSelect } from '../sidebar/CategoricalColumnSelect'; import { ViolinOverlayButtons } from '../sidebar/ViolinOverlayButtons'; @@ -54,21 +54,22 @@ export function ViolinVisSidebar({ }, [extensions]); return ( -
- + setConfig({ ...(config as any), type })} currentSelected={config.type} /> -
- setConfig({ ...config, numColumnsSelected })} - columns={columns} - currentSelected={config.numColumnsSelected || []} - /> - setConfig({ ...config, catColumnsSelected })} - columns={columns} - currentSelected={config.catColumnsSelected || []} - /> -
+ + + setConfig({ ...config, numColumnsSelected })} + columns={columns} + currentSelected={config.numColumnsSelected || []} + /> + setConfig({ ...config, catColumnsSelected })} + columns={columns} + currentSelected={config.catColumnsSelected || []} + /> + + {mergedExtensions.preSidebar} {mergedOptionsConfig.overlay.enable @@ -81,6 +82,6 @@ export function ViolinVisSidebar({ : null} {mergedExtensions.postSidebar} -
+ ); } diff --git a/src/vis/violin/utils.ts b/src/vis/violin/utils.ts index e0d591204..e25c25038 100644 --- a/src/vis/violin/utils.ts +++ b/src/vis/violin/utils.ts @@ -72,7 +72,7 @@ export async function createViolinTraces(columns: VisColumn[], config: IViolinCo jitter: 0.3, // @ts-ignore hoveron: 'violins', - points: config.violinOverlay === EViolinOverlay.STRIP ? 'all' : false, + points: false, box: { visible: config.violinOverlay === EViolinOverlay.BOX, }, @@ -110,7 +110,7 @@ export async function createViolinTraces(columns: VisColumn[], config: IViolinCo scalemode: 'width', pointpos: 0, jitter: 0.3, - points: config.violinOverlay === EViolinOverlay.STRIP ? 'all' : false, + points: false, box: { visible: config.violinOverlay === EViolinOverlay.BOX, }, diff --git a/tdp_core/__init__.py b/tdp_core/__init__.py index a71a8f764..a05618cbf 100644 --- a/tdp_core/__init__.py +++ b/tdp_core/__init__.py @@ -10,6 +10,10 @@ def init_app(self, app: FastAPI): app.include_router(img_api.app) def register(self, registry: RegHelper): + import logging + + _log = logging.getLogger(__name__) + # phovea_server registry.append( "namespace", @@ -23,7 +27,14 @@ def register(self, registry: RegHelper): "tdp_core.id_mapping.idtype_api", {"namespace": "/api/idtype", "factory": "create_idtype"}, ) - registry.append("json-encoder", "numpy", "tdp_core.encoder.json_encoder") + + try: + import numpy # noqa, type: ignore + + registry.append("json-encoder", "numpy", "tdp_core.encoder.json_encoder") + except ImportError: + _log.info('numpy not available, skipping "numpy" json encoder') + registry.append("json-encoder", "set-encoder", "tdp_core.encoder.set_encoder", {}) registry.append( @@ -63,8 +74,6 @@ def register(self, registry: RegHelper): registry.append_router("tdp_plugin_router", "tdp_core.plugin.router", {}) registry.append("namespace", "tdp_xlsx2json", "tdp_core.xlsx", {"namespace": "/api/tdp/xlsx"}) registry.append("mapping_provider", "tdp_core", "tdp_core.mapping_table") - # TODO: Check if this is still required? - registry.append("greenifier", "psycopg2", "tdp_core.sql_use_gevent", {}) # DB migration plugins registry.append( diff --git a/tdp_core/dataset/dataset.py b/tdp_core/dataset/dataset.py index ecbf75033..cfcea8c2d 100644 --- a/tdp_core/dataset/dataset.py +++ b/tdp_core/dataset/dataset.py @@ -1,5 +1,4 @@ import itertools -from builtins import str from .. import manager @@ -41,7 +40,7 @@ def get(dataset_id): return None -def add(desc, files=[], id=None): +def add(desc, files=None, id=None): """ adds a new dataset to this storage :param desc: the dict description information @@ -49,6 +48,8 @@ def add(desc, files=[], id=None): :param id: optional the unique id to use :return: the newly created dataset or None if an error occurred """ + if files is None: + files = [] for p in _providers(): r = p.upload(desc, files, id) if r: @@ -56,7 +57,7 @@ def add(desc, files=[], id=None): return None -def update(dataset, desc, files=[]): +def update(dataset, desc, files=None): """ updates the given dataset :param dataset: a dataset or a dataset id @@ -64,6 +65,8 @@ def update(dataset, desc, files=[]): :param files: a list of FileStorage :return: """ + if files is None: + files = [] old = get(dataset) if isinstance(dataset, str) else dataset if old is None: return add(desc, files) @@ -80,7 +83,4 @@ def remove(dataset): old = get(dataset) if isinstance(dataset, str) else dataset if old is None: return False - for p in _providers(): - if p.remove(old): - return True - return False + return any(p.remove(old) for p in _providers()) diff --git a/tdp_core/dataset/dataset_api.py b/tdp_core/dataset/dataset_api.py index e3cabfa99..a7f2471a8 100644 --- a/tdp_core/dataset/dataset_api.py +++ b/tdp_core/dataset/dataset_api.py @@ -1,10 +1,10 @@ import logging -from builtins import str -from flask import Flask, Response, abort, make_response, request +from flask import Flask, abort, make_response, request +from flask.wrappers import Response from .. import manager -from ..utils import etag, jsonify, to_json +from ..utils import jsonify, to_json from .dataset import add, get, iter, list_datasets, remove app = Flask(__name__) @@ -17,7 +17,7 @@ def on_value_error(error): _log.error("ValueError: (" + str(error) + ") at " + str(request.environ)) _log.error(error) return ( - "{2} - {0}
{1}
".format("ValueError", error, 500), + "{} - {}
{}
".format(500, "ValueError", error), 500, ) @@ -27,13 +27,13 @@ def _list_format_json(data): def _list_format_treejson(data): - r = dict() + r = {} for d in data: levels = d["fqname"].split("/") act = r for level in levels[:-1]: if level not in act: - act[level] = dict() + act[level] = {} act = act[level] act[d["name"]] = d return jsonify(r, indent=1) @@ -85,22 +85,21 @@ def filter_elem(elem): @app.route("/", methods=["GET", "POST"]) -@etag def _list_datasets(): if request.method == "GET": query = _to_query(request.values) data = [d.to_description() for d in iter() if query(d)] limit = request.values.get("limit", -1) - if 0 < limit < len(data): + if 0 < int(limit) < len(data): data = data[:limit] format = request.args.get("format", "json") - formats = dict(json=_list_format_json, treejson=_list_format_treejson, csv=_list_format_csv) + formats = {"json": _list_format_json, "treejson": _list_format_treejson, "csv": _list_format_csv} if format not in formats: abort( make_response( - 'invalid format: "{0}" possible ones: {1}'.format(format, ",".join(list(formats.keys()))), + 'invalid format: "{}" possible ones: {}'.format(format, ",".join(list(formats.keys()))), 400, ) ) @@ -110,7 +109,6 @@ def _list_datasets(): @app.route("/", methods=["PUT", "GET", "DELETE", "POST"]) -@etag def _get_dataset(dataset_id): if request.method == "PUT": return _update_dataset(dataset_id, request) @@ -127,7 +125,6 @@ def _get_dataset(dataset_id): @app.route("//desc") -@etag def _get_dataset_desc(dataset_id): d = get(dataset_id) if not d: @@ -211,11 +208,11 @@ def _remove_dataset(dataset_id): r = remove(dataset_id) if r: return jsonify( - dict( - state="success", - msg="Successfully deleted dataset " + dataset_id, - id=dataset_id, - ), + { + "state": "success", + "msg": "Successfully deleted dataset " + dataset_id, + "id": dataset_id, + }, indent=1, ) return "invalid request", 400 diff --git a/tdp_core/dataset/dataset_def.py b/tdp_core/dataset/dataset_def.py index 82ffc4418..d45dc4615 100644 --- a/tdp_core/dataset/dataset_def.py +++ b/tdp_core/dataset/dataset_def.py @@ -1,5 +1,4 @@ import abc -from builtins import object from ..security import can_read, can_write from ..utils import fix_id @@ -12,10 +11,10 @@ def to_plural(s): def to_idtype_description(id): - return dict(id=id, name=id, names=to_plural(id)) + return {"id": id, "name": id, "names": to_plural(id)} -class ADataSetEntry(object, metaclass=abc.ABCMeta): +class ADataSetEntry(metaclass=abc.ABCMeta): """ A basic dataset entry """ @@ -43,7 +42,7 @@ def to_description(self): """ :return: a dictionary describing this dataset in a client understandable format """ - return dict(type=self.type, name=self.name, id=self.id, fqname=self.fqname) + return {"type": self.type, "name": self.name, "id": self.id, "fqname": self.fqname} def to_idtype_descriptions(self): """ @@ -84,7 +83,7 @@ def asjson(self): converts this dataset to a json compatible format :return: a json compatible dataset representation """ - return dict() + return {} def can_read(self, user=None): return can_read(self.to_description(), user) @@ -93,11 +92,11 @@ def can_write(self, user=None): return can_write(self.to_description(), user) -class ADataSetProvider(object, metaclass=abc.ABCMeta): +class ADataSetProvider(metaclass=abc.ABCMeta): def __len__(self): import itertools - return itertools.count(self) + return itertools.count(self) # type: ignore @abc.abstractmethod def __iter__(self): diff --git a/tdp_core/dataset/graph/graph.py b/tdp_core/dataset/graph/graph.py index 54fde4925..6d2ab1815 100644 --- a/tdp_core/dataset/graph/graph.py +++ b/tdp_core/dataset/graph/graph.py @@ -1,21 +1,20 @@ import abc -from builtins import object from ... import manager from ..dataset_def import ADataSetEntry -class GraphNode(object): +class GraphNode: def __init__(self, t, id, attrs=None): self.type = t self.id = id self.attrs = {} if attrs is None else attrs def asjson(self): - return dict(type=self.type, id=self.id, attrs=self.attrs) + return {"type": self.type, "id": self.id, "attrs": self.attrs} -class GraphEdge(object): +class GraphEdge: def __init__(self, t, id, source=None, target=None, attrs=None): self.type = t self.id = id @@ -24,18 +23,18 @@ def __init__(self, t, id, source=None, target=None, attrs=None): self.attrs = {} if attrs is None else attrs def asjson(self): - return dict( - type=self.type, - id=self.id, - source=self.source, - target=self.target, - attrs=self.attrs, - ) + return { + "type": self.type, + "id": self.id, + "source": self.source, + "target": self.target, + "attrs": self.attrs, + } class AGraph(ADataSetEntry, metaclass=abc.ABCMeta): def __init__(self, name, project, id=None, attrs=None): - super(AGraph, self).__init__(name, project, "graph", id) + super().__init__(name, project, "graph", id) self.attrs = {} if attrs is None else attrs @abc.abstractmethod @@ -55,7 +54,7 @@ def nedges(self): return len(self.edges()) def to_description(self): - r = super(AGraph, self).to_description() + r = super().to_description() r["size"] = [self.nnodes, self.nedges] r["attrs"] = self.attrs return r @@ -64,7 +63,7 @@ def asjson(self): nodes = [a.asjson() for a in self.nodes()] edges = [a.asjson() for a in self.edges()] - r = dict(nodes=nodes, edges=edges) + r = {"nodes": nodes, "edges": edges} return r def add_node(self, data): @@ -112,7 +111,7 @@ def resolve_edges(self, edges): def _resolve_parser(format): for p in manager.registry.list("graph-parser"): - if p.format == format: + if p.format == format: # type: ignore return p.load() diff --git a/tdp_core/dataset/graph/graph_api.py b/tdp_core/dataset/graph/graph_api.py index d6c9128fa..c16b0a78c 100644 --- a/tdp_core/dataset/graph/graph_api.py +++ b/tdp_core/dataset/graph/graph_api.py @@ -1,7 +1,6 @@ from flask import abort, jsonify, request from ... import manager -from ...utils import etag def _to_desc(): @@ -23,10 +22,10 @@ def format_json(dataset, args): def resolve_formatter(type, format): for p in manager.registry.list(type + "-formatter"): - if p.format == format: + if p.format == format: # type: ignore return p.load() - formats = ",".join(p.format for p in manager.registry.list(type + "-formatter")) - abort(400, 'unknown format "{0}" possible formats are: {1}'.format(format, formats)) + formats = ",".join(p.format for p in manager.registry.list(type + "-formatter")) # type: ignore + abort(400, 'unknown format "{}" possible formats are: {}'.format(format, formats)) def _list_items(dataset_getter, name, datasetid): @@ -87,13 +86,11 @@ def handleitem(datasetid, itemid): def add_graph_handler(app, dataset_getter): @app.route("/graph/") - @etag def list_graphs(datasetid): d = dataset_getter(datasetid, "graph") return jsonify(d.to_description()) @app.route("/graph//data") - @etag def get_graph_data(datasetid): d = dataset_getter(datasetid, "graph") formatter = resolve_formatter("graph", request.args.get("format", "json")) @@ -103,13 +100,13 @@ def get_graph_data(datasetid): app.add_url_rule( "/graph//node", "list_nodes", - etag(list_nodes), + list_nodes, methods=["GET", "POST", "DELETE"], ) app.add_url_rule( "/graph//node/", "handle_node", - etag(handle_node), + handle_node, methods=["GET", "PUT", "DELETE"], ) @@ -117,13 +114,13 @@ def get_graph_data(datasetid): app.add_url_rule( "/graph//edge", "list_edges", - etag(list_edges), + list_edges, methods=["GET", "POST", "DELETE"], ) app.add_url_rule( "/graph//edge/", "handle_edge", - etag(handle_edge), + handle_edge, methods=["GET", "PUT", "DELETE"], ) diff --git a/tdp_core/db.py b/tdp_core/db.py index 714b10918..8d29052a1 100644 --- a/tdp_core/db.py +++ b/tdp_core/db.py @@ -1,6 +1,9 @@ import logging +from typing import Any from flask import abort +from sqlalchemy.exc import OperationalError +from sqlalchemy.orm import Session from werkzeug.datastructures import MultiDict from . import manager @@ -90,7 +93,7 @@ def to_query(q, supports_array_parameter, parameters): subparameters = {(k + str(i)): vi for i, vi in enumerate(v)} q = q.replace( ":" + k, - "({ids})".format(ids=", ".join(":" + p for p in subparameters.keys())), + "({ids})".format(ids=", ".join(":" + p for p in subparameters)), ) del parameters[k] # delete single parameters.update(subparameters) # add sub @@ -98,14 +101,14 @@ def to_query(q, supports_array_parameter, parameters): return sqlalchemy.sql.text(q) -class WrappedSession(object): +class WrappedSession: def __init__(self, engine): """ session wrapper of sql alchemy with auto cleanup :param engine: """ _log.info("creating session") - self._session = manager.db.create_session(engine) + self._session: Session = manager.db.create_session(engine) self._supports_array_parameter = _supports_sql_parameters(engine.name) def execute(self, sql, **kwargs): @@ -115,13 +118,11 @@ def execute(self, sql, **kwargs): :param kwargs: additional args to replace :return: the session result """ - import sqlalchemy - parsed = to_query(sql, self._supports_array_parameter, kwargs) _log.info("%s (%s)", parsed, kwargs) try: return self._session.execute(parsed, kwargs) - except sqlalchemy.exc.OperationalError as error: + except OperationalError as error: abort(408, error) def run(self, sql, **kwargs): @@ -154,7 +155,7 @@ def _destroy(self): if self._session: _log.info("removing session again") self._session.close() - self._session = None + self._session = None # type: ignore def __del__(self): self._destroy() @@ -188,13 +189,13 @@ def get_columns(engine, table_name): def _normalize_columns(col): from sqlalchemy import types - r = dict(label=col["name"], type="string", column=col["name"]) + r = {"label": col["name"], "type": "string", "column": col["name"]} t = col["type"] - if isinstance(t, types.Integer) or isinstance(t, types.Numeric): + if isinstance(t, (types.Integer, types.Numeric)): r["type"] = "number" elif isinstance(t, types.Enum): r["type"] = "categorical" - r["categories"] = sorted(t.enums, key=lambda s: s.lower()) + r["categories"] = sorted(t.enums, key=lambda s: s.lower()) # type: ignore return r return map(_normalize_columns, columns) @@ -235,7 +236,7 @@ def _handle_aggregated_score(base_view, config, replacements, args): return replacements -def prepare_arguments(view, config, replacements=None, arguments=None, extra_sql_argument=None): +def prepare_arguments(view, config, replacements=None, arguments: dict | None = None, extra_sql_argument=None): """ prepares for the given view the kwargs and replacements based on the given input :param view: db view @@ -267,10 +268,10 @@ def prepare_arguments(view, config, replacements=None, arguments=None, extra_sql parser = info.type if info and info.type is not None else lambda x: x try: if info and info.as_list: - vs = arguments.getlist(lookup_key) if hasattr(arguments, "getlist") else arguments.get(lookup_key) + vs: list[Any] = arguments.getlist(lookup_key) if hasattr(arguments, "getlist") else arguments.get(lookup_key) # type: ignore value = tuple([parser(v) for v in vs]) # multi values need to be a tuple not a list elif info and info.list_as_tuple: - vs = arguments.getlist(lookup_key) if hasattr(arguments, "getlist") else arguments.get(lookup_key, []) + vs = arguments.getlist(lookup_key) if hasattr(arguments, "getlist") else arguments.get(lookup_key, []) # type: ignore if len(vs) == 0: value = "(1, null)" else: @@ -299,10 +300,9 @@ def prepare_arguments(view, config, replacements=None, arguments=None, extra_sql if view.replacements is not None: for arg in view.replacements: fallback = arguments.get(arg, "") - if arg in secure_replacements: # has to be part of the replacements - value = replacements.get(arg, "") - else: - value = replacements.get(arg, fallback) # if not a secure one fallback with an argument + value = ( + replacements.get(arg, "") if arg in secure_replacements else replacements.get(arg, fallback) + ) # if not a secure one fallback with an argument if not view.is_valid_replacement(arg, value): _log.warn( 'invalid replacement value detected "%s": "%s"="%s"', @@ -346,7 +346,7 @@ def get_data( return query(engine, arguments, filters), view with session(engine) as sess: - if config.statement_timeout is not None: + if config.statement_timeout and config.statement_timeout_query: _log.info("set statement_timeout to {}".format(config.statement_timeout)) sess.execute(config.statement_timeout_query.format(config.statement_timeout)) r = sess.run(query.format(**replace), **kwargs) @@ -361,9 +361,9 @@ def get_query(database, view_name, replacements=None, arguments=None, extra_sql_ query = view.query if callable(query): - return dict(query="custom function", args=kwargs) + return {"query": "custom function", "args": kwargs} - return dict(query=clean_query(query.format(**replace)), args=kwargs) + return {"query": clean_query(query.format(**replace)), "args": kwargs} def get_filtered_data(database, view_name, args): @@ -434,7 +434,7 @@ def get_count(database, view_name, args): return count_query(engine, processed_args, where_clause) with session(engine) as sess: - if config.statement_timeout is not None: + if config.statement_timeout and config.statement_timeout_query: _log.info("set statement_timeout to {}".format(config.statement_timeout)) sess.execute(config.statement_timeout_query.format(config.statement_timeout)) r = sess.run(count_query.format(**replace), **kwargs) @@ -455,9 +455,9 @@ def get_count_query(database, view_name, args): ) = _get_count(database, view_name, args) if callable(count_query): - return dict(query="custom function", args=kwargs) + return {"query": "custom function", "args": kwargs} - return dict(query=count_query.format(**replace), args=kwargs) + return {"query": count_query.format(**replace), "args": kwargs} def derive_columns(table_name, engine, columns=None): @@ -502,7 +502,7 @@ def derive_columns(table_name, engine, columns=None): separator = getattr(columns[col], "separator", ";") separated_categories = [category.split(separator) for category in categories] # flatten array - categories = list(set([category for sublist in separated_categories for category in sublist])) + categories = list({category for sublist in separated_categories for category in sublist}) categories.sort() # sort list to avoid random order with each run columns[col]["categories"] = categories @@ -527,7 +527,7 @@ def _lookup(database, view_name, query, page, limit, args): arguments["query_start"] = "{}%".format(query) arguments["query_match"] = "{}".format(query) # add 1 for checking if we have more - replacements = dict(limit=limit + 1, offset=offset, offset2=(offset + limit + 1)) + replacements = {"limit": limit + 1, "offset": offset, "offset2": (offset + limit + 1)} kwargs, replace = prepare_arguments(view, config, replacements, arguments) @@ -538,9 +538,9 @@ def lookup_query(database, view_name, query, page, limit, args): engine, _, sql, replace, kwargs = _lookup(database, view_name, query, page, limit, args) if callable(sql): - return dict(query="custom function", args=kwargs) + return {"query": "custom function", "args": kwargs} - return dict(query=sql.format(**replace), args=kwargs) + return {"query": sql.format(**replace), "args": kwargs} def lookup(database, view_name, query, page, limit, args): diff --git a/tdp_core/dbmanager.py b/tdp_core/dbmanager.py index 29b8bd05f..7dc284ab5 100644 --- a/tdp_core/dbmanager.py +++ b/tdp_core/dbmanager.py @@ -1,5 +1,5 @@ import logging -from typing import Dict, Union +from typing import Any from fastapi import FastAPI from sqlalchemy.engine import Engine @@ -8,26 +8,25 @@ from . import manager from .dbview import DBConnector from .middleware.close_web_sessions_middleware import CloseWebSessionsMiddleware -from .middleware.request_context_middleware import get_request +from .middleware.request_context_plugin import get_request _log = logging.getLogger(__name__) -class DBManager(object): +class DBManager: def __init__(self): - self._initialized = False - - self.connectors: Dict[str, DBConnector] = {} + self.connectors: dict[str, DBConnector] = {} self._plugins = {} - self._engines = dict() - self._sessionmakers = dict() + self._engines = {} + self._sessionmakers = {} def init_app(self, app: FastAPI): app.add_middleware(CloseWebSessionsMiddleware) for p in manager.registry.list("tdp-sql-database-definition"): - config = manager.settings.get_nested(p.configKey) - connector: DBConnector = p.load().factory() + config: dict[str, Any] = manager.settings.get_nested(p.configKey) # type: ignore + # Only instantiate the connector if it has a module factory, otherwise use an empty one + connector: DBConnector = p.load().factory() if p.module else DBConnector() if not connector.dburl: connector.dburl = config["dburl"] if not connector.statement_timeout: @@ -38,7 +37,7 @@ def init_app(self, app: FastAPI): _log.critical( "no db url defined for %s at config key %s - is your configuration up to date?", p.id, - p.configKey, + p.configKey, # type: ignore ) continue @@ -46,11 +45,6 @@ def init_app(self, app: FastAPI): self.connectors[p.id] = connector def _load_engine(self, item): - if not self._initialized: - self._initialized = True - for p in manager.registry.list("greenifier"): - _log.info("run greenifier: %s", p.id) - p.load().factory() if item in self._engines: return self._engines[item] @@ -76,7 +70,7 @@ def connector(self, item) -> DBConnector: raise NotImplementedError("missing db connector: " + item) return self.connectors[item] - def engine(self, item: Union[Engine, str]) -> Engine: + def engine(self, item: Engine | str) -> Engine: if isinstance(item, Engine): return item @@ -84,20 +78,23 @@ def engine(self, item: Union[Engine, str]) -> Engine: raise NotImplementedError("missing db connector: " + item) return self._load_engine(item) - def create_session(self, engine_or_id: Union[Engine, str]) -> Session: + def create_session(self, engine_or_id: Engine | str) -> Session: return self._sessionmakers[self.engine(engine_or_id)]() - def create_web_session(self, engine_or_id: Union[Engine, str]) -> Session: + def create_web_session(self, engine_or_id: Engine | str) -> Session: """ Create a session that is added to the request state as db_session, which automatically closes it in the db_session middleware. """ session = self.create_session(engine_or_id) + r = get_request() + if not r: + raise Exception("No request found, did you use a create_web_sesssion outside of a request?") try: - existing_sessions = get_request().state.db_sessions + existing_sessions = r.state.db_sessions except (KeyError, AttributeError): existing_sessions = [] - get_request().state.db_sessions = existing_sessions + r.state.db_sessions = existing_sessions existing_sessions.append(session) return session diff --git a/tdp_core/dbmigration/env.py b/tdp_core/dbmigration/env.py index b06c2fe0c..a6a3b1da6 100644 --- a/tdp_core/dbmigration/env.py +++ b/tdp_core/dbmigration/env.py @@ -39,7 +39,7 @@ def run_migrations_online(): additional_configuration["version_table_schema"] = version_table_schema connectable = engine_from_config( - config.get_section(config.config_ini_section), + config.get_section(config.config_ini_section), # type: ignore prefix="sqlalchemy.", poolclass=pool.NullPool, ) diff --git a/tdp_core/dbmigration/manager.py b/tdp_core/dbmigration/manager.py index 3da6c0909..9cecbb300 100644 --- a/tdp_core/dbmigration/manager.py +++ b/tdp_core/dbmigration/manager.py @@ -2,10 +2,11 @@ import re from argparse import REMAINDER from os import path -from typing import Dict, List, Optional +from typing import Any import alembic.command import alembic.config +from alembic.util.exc import CommandError from fastapi import FastAPI from .. import manager @@ -17,7 +18,7 @@ alembic_cfg = alembic.config.Config(path.join(path.abspath(path.dirname(__file__)), "dbmigration.ini")) -class DBMigration(object): +class DBMigration: """ DBMigration object stores the required arguments to execute commands using Alembic. """ @@ -29,7 +30,7 @@ def __init__( script_location: str, *, auto_upgrade: bool = False, - version_table_schema: str = None, + version_table_schema: str | None = None, ): """ Initializes a new migration object and optionally carries out an upgrade. @@ -46,8 +47,8 @@ def __init__( self.db_url: str = db_url self.script_location: str = script_location self.auto_upgrade: bool = auto_upgrade - self.version_table_schema: Optional[str] = version_table_schema - self.custom_commands: Dict[str, str] = dict() + self.version_table_schema: str | None = version_table_schema + self.custom_commands: dict[str, str] = {} # Because we can't easily pass "-1" as npm argument, we add a custom command for that without the space self.add_custom_command(r"downgrade-(\d+)", "downgrade -{}") @@ -59,7 +60,7 @@ def __init__( self.execute(["upgrade", "head"]) _log.info(f"Successfully upgraded database {self.id}") # As alembic is actually a commandline tool, it sometimes uses sys.exit (https://github.com/sqlalchemy/alembic/blob/master/alembic/util/messaging.py#L63) - except (SystemExit, alembic.util.exc.CommandError): + except (SystemExit, CommandError): _log.exception(f"Error upgrading database {self.id}") def __repr__(self) -> str: @@ -83,30 +84,32 @@ def add_custom_command(self, pattern: str, target: str): def remove_custom_command(self, origin: str): self.custom_commands.pop(origin, None) - def get_custom_command(self, arguments: List[str] = []) -> Optional[List[str]]: + def get_custom_command(self, arguments: list[str] | None = None) -> list[str] | None: """ Returns the rewritten command if it matches the pattern of a custom command. :param List[str] arguments: Argument to rewrite. """ if arguments: # Join the list with spaces - arguments = " ".join(arguments) + arguments_str = " ".join(arguments) # For all the command patterns we have .. for key, value in self.custom_commands.items(): # .. check if we can match the command pattern with the given string - matched = re.match(f"{key}$", arguments) + matched = re.match(f"{key}$", arguments_str) if matched: # If we have a match, call format with the captured groups and split by ' ' return value.format(*matched.groups()).split(" ") return None - def execute(self, arguments: List[str] = []) -> bool: + def execute(self, arguments: list[str] | None = None) -> bool: """ Executes a command on the migration object. :param List[str] arguments: Arguments for the underlying Alembic instance. See https://alembic.sqlalchemy.org/en/latest/api/ for details. Example usage: migration.execute(['upgrade', 'head']) upgrades to the database to head. """ + if arguments is None: + arguments = [] # Rewrite command if possible rewritten_arguments = self.get_custom_command(arguments) if rewritten_arguments: @@ -133,7 +136,7 @@ def execute(self, arguments: List[str] = []) -> bool: return True -class DBMigrationManager(object): +class DBMigrationManager: """ DBMigrationManager retrieves all 'tdp-sql-database-migration' plugins and initializes DBMigration objects. The possible configuration keys for this extension point are: @@ -152,18 +155,22 @@ class DBMigrationManager(object): """ def __init__(self): - self._migrations: Dict[str, DBMigration] = dict() - - def init_app(self, app: FastAPI, plugins: List[AExtensionDesc] = []): - _log.info("Initializing DBMigrationManager") + self._migrations: dict[str, DBMigration] = {} + def init_app(self, app: FastAPI, plugins: list[AExtensionDesc] | None = None): + if plugins is None: + plugins = [] + _log.info(f"Initializing DBMigrationManager with {', '.join([p.id for p in plugins]) or 'no plugins'}") auto_upgrade_default = manager.settings.tdp_core.migrations.autoUpgrade for p in plugins: - _log.info("DBMigration found: %s", p.id) + _log.info(f"Database migration found: {p.id}") + + # TODO: The AExtensionDesc doesn't have any typing information, so we need to cast it to Any here + p: Any = p # Check if configKey is set, otherwise use the plugin configuration - config = manager.settings.get_nested(p.configKey, {}) if hasattr(p, "configKey") else {} + config: dict = manager.settings.get_nested(p.configKey, {}) if hasattr(p, "configKey") else {} # type: ignore # Priority of assignments: Configuration File -> Plugin Definition id = config.get("id") or (p.id if hasattr(p, "id") else None) @@ -211,10 +218,10 @@ def init_app(self, app: FastAPI, plugins: List[AExtensionDesc] = []): # Create new migration migration = DBMigration( - id, - db_url, - script_location, - auto_upgrade=auto_upgrade, + id, # type: ignore + db_url, # type: ignore + script_location, # type: ignore + auto_upgrade=auto_upgrade, # type: ignore version_table_schema=version_table_schema, ) @@ -233,11 +240,11 @@ def __len__(self): return len(self._migrations) @property - def ids(self) -> List[str]: + def ids(self) -> list[str]: return list(self._migrations.keys()) @property - def migrations(self) -> List[DBMigration]: + def migrations(self) -> list[DBMigration]: return list(self._migrations.values()) @@ -276,6 +283,6 @@ def execute(args): # Using REMAINDER as nargs causes the argument to be be optional, but '+' does not work because it also parses additional --attr with the parser which should actually be ignored. # Therefore, args.command might be empty and we simply pass None to trigger the error message - manager.db_migration[args.id].execute(args.command if len(args.command) > 0 else None) + manager.db_migration[args.id].execute(args.command if len(args.command) > 0 else None) # type: ignore return lambda args: lambda: execute(args) diff --git a/tdp_core/dbview.py b/tdp_core/dbview.py index 8e3b3c703..4dac07bc7 100644 --- a/tdp_core/dbview.py +++ b/tdp_core/dbview.py @@ -1,6 +1,7 @@ import logging import re from collections import OrderedDict +from typing import Any import sqlalchemy from sqlalchemy.engine import Engine @@ -14,7 +15,7 @@ REGEX_TYPE = type(re.compile("")) -class ArgumentInfo(object): +class ArgumentInfo: def __init__( self, type=None, @@ -32,14 +33,14 @@ def __init__( self.list_as_tuple = list_as_tuple -class DBFilterData(object): +class DBFilterData: def __init__(self, group, sub_query, join): self.group = group self.sub_query = sub_query self.join = join -class DBView(object): +class DBView: def __init__(self, idtype=None, query=None): self.description = "" self.summary = "" @@ -49,7 +50,7 @@ def __init__(self, idtype=None, query=None): self.query = query self.queries = {} self.columns = OrderedDict() - self.columns_filled_up = None + self.columns_filled_up = False self.replacements = [] self.valid_replacements = {} self.arguments = [] @@ -65,10 +66,10 @@ def needs_to_fill_up_columns(self): def dump(self, name): from collections import OrderedDict - r = OrderedDict(name=name, description=self.description, type=self.query_type) + r: OrderedDict[str, Any] = OrderedDict(name=name, description=self.description, type=self.query_type) r["idType"] = self.idtype r["query"] = clean_query(self.query) - args = [a for a in self.arguments] + args = list(self.arguments) args.extend(self.replacements) r["arguments"] = args r["columns"] = list(self.columns.values()) if self.columns else [] # some views have no columns -> return empty array @@ -105,7 +106,7 @@ def get_filter_subjoin(self, key): return None def filter_groups(self): - r = set([v.group for v in list(self.filters.values())]) + r = {v.group for v in list(self.filters.values())} if None in r: r.remove(None) return r @@ -162,7 +163,7 @@ def can_access(self, check_default_security=False): return is_logged_in() # because security is not disabled check if the user is at least logged in -class DBViewBuilder(object): +class DBViewBuilder: """ db view builder pattern implementation """ @@ -584,7 +585,7 @@ def add_common_queries( default_agg_score = DBViewBuilder().query("{agg}({data_subtype})").replace("agg", ["min", "max", "avg"]).replace("data_subtype").build() -class DBMapping(object): +class DBMapping: """ simple mapping based on a query of the form `select from_id as f, to_id as t from mapping_table where f in :ids` """ @@ -596,40 +597,36 @@ def __init__(self, from_idtype, to_idtype, query, integer_ids=False): self.integer_ids = integer_ids -class DBConnector(object): +class DBConnector: """ basic connector object """ - def __init__(self, views, agg_score=None, mappings=None): + def __init__(self, views=None, agg_score=None, mappings=None): """ :param views: the dict of query views :param agg_score: optional specify how aggregation should be handled :param mappings: optional database mappings """ self.agg_score = agg_score or default_agg_score - self.views = views - self.dburl = None + self.views = views or {} + self.dburl: str = None # type: ignore self.mappings = mappings self.statement_timeout = None - self.statement_timeout_query = None + self.statement_timeout_query: str | None = None self.description = "" def dump(self, name): return OrderedDict(name=name, description=self.description) def create_engine(self, config) -> Engine: - engine_options = config.get("engine", {}) - engine = sqlalchemy.create_engine(self.dburl, **engine_options) - # Assuming that gevent monkey patched the builtin - # threading library, we're likely good to use - # SQLAlchemy's QueuePool, which is the default - # pool class. However, we need to make it use - # threadlocal connections - # https://github.com/kljensen/async-flask-sqlalchemy-example/blob/master/server.py - engine.pool._use_threadlocal = True - - return engine + engine_options = { + # Increase the pool size to 30 to avoid "too many clients" errors + "pool_size": 30, + "pool_pre_ping": True, + } + engine_options.update(config.get("engine", {})) + return sqlalchemy.create_engine(self.dburl, **engine_options) def create_sessionmaker(self, engine) -> sessionmaker: return sessionmaker(bind=engine) diff --git a/tdp_core/encoder/bytes_to_string_encoder.py b/tdp_core/encoder/bytes_to_string_encoder.py index 5d54b8b1b..b9f95a90f 100644 --- a/tdp_core/encoder/bytes_to_string_encoder.py +++ b/tdp_core/encoder/bytes_to_string_encoder.py @@ -4,7 +4,7 @@ """ -class BytesToStringEncoder(object): +class BytesToStringEncoder: def __contains__(self, obj): if isinstance(obj, bytes): return True diff --git a/tdp_core/encoder/json_encoder.py b/tdp_core/encoder/json_encoder.py index 7f5862dc5..77d895daa 100644 --- a/tdp_core/encoder/json_encoder.py +++ b/tdp_core/encoder/json_encoder.py @@ -1,18 +1,17 @@ import datetime as dt import decimal -from builtins import object, range -import numpy as np -import numpy.ma as ma +import numpy as np # type: ignore +import numpy.ma as ma # type: ignore -class NumpyTablesEncoder(object): +class NumpyTablesEncoder: def __contains__(self, obj): - if isinstance(obj, np.ndarray): + if isinstance(obj, np.ndarray): # type: ignore return True if isinstance(obj, bytes): return True - if isinstance(obj, np.generic): + if isinstance(obj, np.generic): # type: ignore return True if isinstance(obj, dt.datetime): return True @@ -21,14 +20,14 @@ def __contains__(self, obj): return False def __call__(self, obj, base_encoder): - if isinstance(obj, np.ndarray): + if isinstance(obj, np.ndarray): # type: ignore if obj.ndim == 1: return [base_encoder.default(x) for x in obj] else: return [base_encoder.default(obj[i]) for i in range(obj.shape[0])] - if isinstance(obj, np.generic): - a = np.asscalar(obj) - if (isinstance(a, float) and np.isnan(a)) or ma.is_masked(a): + if isinstance(obj, np.generic): # type: ignore + a = np.asscalar(obj) # type: ignore + if (isinstance(a, float) and np.isnan(a)) or ma.is_masked(a): # type: ignore return None return a if isinstance(obj, dt.datetime): diff --git a/tdp_core/encoder/set_encoder.py b/tdp_core/encoder/set_encoder.py index 2f4072283..16c65aadf 100644 --- a/tdp_core/encoder/set_encoder.py +++ b/tdp_core/encoder/set_encoder.py @@ -3,7 +3,7 @@ """ -class SetEncoder(object): +class SetEncoder: def __contains__(self, obj): return isinstance(obj, set) diff --git a/tdp_core/formatter.py b/tdp_core/formatter.py index a53f884d3..49bb3c569 100644 --- a/tdp_core/formatter.py +++ b/tdp_core/formatter.py @@ -1,10 +1,14 @@ -from flask import Response, jsonify, request +from flask import jsonify, request +from flask.wrappers import Response def _format_csv(array_of_dicts): import io - import pandas as pd + try: + import pandas as pd # type: ignore + except ImportError as e: + raise ImportError("pandas is required to format as csv") from e if not array_of_dicts: return Response("", mimetype="text/csv") diff --git a/tdp_core/graph.py b/tdp_core/graph.py index 31b303f2a..96cebe143 100644 --- a/tdp_core/graph.py +++ b/tdp_core/graph.py @@ -6,13 +6,13 @@ class MongoGraph(graph.AGraph): def __init__(self, entry, db): - super(MongoGraph, self).__init__(entry["name"], "mongodb", entry.get("id", None), entry.get("attrs", None)) + super().__init__(entry["name"], "mongodb", entry.get("id", None), entry.get("attrs", None)) self._entry = entry self._db = db from bson.objectid import ObjectId - self._find_me = dict(_id=self._entry["_id"]) - self._find_data = dict(_id=ObjectId(self._entry["refid"])) + self._find_me = {"_id": self._entry["_id"]} + self._find_data = {"_id": ObjectId(self._entry["refid"])} self._nodes = None self._edges = None @@ -34,15 +34,15 @@ def create(data, user, id, db): import datetime - entry = dict( - name=data["name"], - description=data.get("description", ""), - creator=user.name, - nnodes=len(data["nodes"]), - nedges=len(data["edges"]), - attrs=data.get("attrs", {}), - ts=datetime.datetime.utcnow(), - ) + entry: dict[str, int | datetime.datetime | str] = { + "name": data["name"], + "description": data.get("description", ""), + "creator": user.name, + "nnodes": len(data["nodes"]), + "nedges": len(data["edges"]), + "attrs": data.get("attrs", {}), + "ts": datetime.datetime.utcnow(), + } if "group" in data: entry["group"] = data["group"] @@ -53,7 +53,7 @@ def create(data, user, id, db): if id is not None: entry["id"] = id - data_entry = dict(nodes=data["nodes"], edges=data["edges"]) + data_entry = {"nodes": data["nodes"], "edges": data["edges"]} data_id = db.graph_data.insert_one(data_entry).inserted_id entry["refid"] = str(data_id) @@ -84,7 +84,7 @@ def nedges(self): return self._entry["nedges"] def to_description(self): - r = super(MongoGraph, self).to_description() + r = super().to_description() if self._entry is not None: r["description"] = self._entry["description"] @@ -102,8 +102,8 @@ def to_description(self): def add_node(self, data): if not self.can_write(): return False - self._db.graph.update(self._find_me, {"$inc": dict(nnodes=1)}) - self._db.graph_data.update(self._find_data, {"$push": dict(nodes=data)}) + self._db.graph.update(self._find_me, {"$inc": {"nnodes": 1}}) + self._db.graph_data.update(self._find_data, {"$push": {"nodes": data}}) self._entry["nnodes"] += 1 if self._nodes: self._nodes.append(graph.GraphNode(data["type"], data["id"], data.get("attrs", None))) @@ -130,14 +130,15 @@ def remove_node(self, id): return False if self._nodes: n = self.get_node(id) - self._nodes.remove(n) + if n: + self._nodes.remove(n) self._entry["nnodes"] -= 1 # remove node and all associated edges - self._db.graph_data.update(self._find_data, {"$pull": dict(nodes=dict(id=id))}, multi=False) + self._db.graph_data.update(self._find_data, {"$pull": {"nodes": {"id": id}}}, multi=False) self._db.graph_data.update( self._find_data, - {"$pull": dict(edges={"$or": [dict(source=id), dict(target=id)]})}, + {"$pull": {"edges": {"$or": [{"source": id}, {"target": id}]}}}, multi=True, ) @@ -149,7 +150,7 @@ def remove_node(self, id): self._entry["nedges"] = len(self._db.graph_data.find_one(self._find_data, {"edges": 1})["edges"]) self._db.graph.update( self._find_me, - {"$inc": dict(nnodes=-1), "$set": dict(nedges=self._entry["nedges"])}, + {"$inc": {"nnodes": -1}, "$set": {"nedges": self._entry["nedges"]}}, ) return True @@ -169,8 +170,8 @@ def get_edge(self, id): def clear(self): if not self.can_write(): return False - self._db.graph.update(self._find_me, {"$set": dict(nnodes=0, nedges=0)}) - self._db.graph_data.update(self._find_data, {"$set": dict(nodes=[], edges=[])}) + self._db.graph.update(self._find_me, {"$set": {"nnodes": 0, "nedges": 0}}) + self._db.graph_data.update(self._find_data, {"$set": {"nodes": [], "edges": []}}) self._nodes = None self._edges = None self._entry["nnodes"] = 0 @@ -180,8 +181,8 @@ def clear(self): def add_edge(self, data): if not self.can_write(): return False - self._db.graph.update(self._find_me, {"$inc": dict(nedges=1)}) - self._db.graph_data.update(self._find_data, {"$push": dict(edges=data)}) + self._db.graph.update(self._find_me, {"$inc": {"nedges": 1}}) + self._db.graph_data.update(self._find_data, {"$push": {"edges": data}}) self._entry["nedges"] += 1 if self._edges: self._edges.append( @@ -216,10 +217,11 @@ def remove_edge(self, id): return False if self._edges: n = self.get_edge(id) - self._edges.remove(n) + if n: + self._edges.remove(n) self._entry["nedges"] -= 1 - self._db.graph.update(self._find_me, {"$inc": dict(nedges=-1)}) - self._db.graph_data.update(self._find_data, {"$pull": dict(edges=dict(id=id))}) + self._db.graph.update(self._find_me, {"$inc": {"nedges": -1}}) + self._db.graph_data.update(self._find_data, {"$pull": {"edges": {"id": id}}}) return True def remove(self): @@ -291,7 +293,7 @@ def remove(self, entry): return False def upload(self, data, files, id=None): - if not data.get("type", "unknown") == "graph": + if data.get("type", "unknown") != "graph": return None # can't handle from tdp_core.security import current_user diff --git a/tdp_core/id_mapping/idtype_api.py b/tdp_core/id_mapping/idtype_api.py index 73d042528..d9ab8c711 100644 --- a/tdp_core/id_mapping/idtype_api.py +++ b/tdp_core/id_mapping/idtype_api.py @@ -4,7 +4,6 @@ from .. import manager from ..dataset.dataset_def import to_idtype_description -from ..utils import etag app_idtype = Flask(__name__) @@ -12,9 +11,8 @@ @app_idtype.route("/") -@etag def _list_idtypes(): - tmp = dict() + tmp = {} # TODO: We probably don't want to have these idtypes as "all" idtypes # for d in list_datasets(): # for idtype in d.to_idtype_descriptions(): @@ -27,7 +25,6 @@ def _list_idtypes(): @app_idtype.route("//") -@etag def _maps_to(idtype): target_id_types = manager.id_mapping.maps_to(idtype) return jsonify(target_id_types) diff --git a/tdp_core/id_mapping/manager.py b/tdp_core/id_mapping/manager.py index 765529df4..e1ab96c1a 100644 --- a/tdp_core/id_mapping/manager.py +++ b/tdp_core/id_mapping/manager.py @@ -1,14 +1,13 @@ import logging -from builtins import object, set +from builtins import set from itertools import chain -from typing import List from .. import manager _log = logging.getLogger(__name__) -class MappingManager(object): +class MappingManager: """ Mapping manager creating a graph of all available id-2-id mappings, allowing for transitive id-mappings. This graph is traversed via shortest path when mapping from one id-(type) to another. @@ -52,11 +51,13 @@ def known_idtypes(self): s.add(to_) return s - def __find_all_paths(self, graph, start, end, path=[]): + def __find_all_paths(self, graph, start, end, path=None): """ Returns all possible paths in the graph from start to end :return: Array of all possible paths (string arrays) sorted by shortest path first """ + if path is None: + path = [] path = path + [start] if start == end: return [path] @@ -70,14 +71,14 @@ def __find_all_paths(self, graph, start, end, path=[]): paths.append(newpath) return sorted(paths, key=len) - def __resolve_single(self, from_idtype, to_idtype, ids): + def __resolve_single(self, from_idtype, to_idtype, ids) -> list: from_mappings = self.mappers.get(from_idtype, {}) to_mappings = from_mappings.get(to_idtype, []) if not to_mappings: _log.warn("cannot find mapping from %s to %s", from_idtype, to_idtype) return [None for _ in ids] - def apply_mapping(mapper, ids: List[str]): + def apply_mapping(mapper, ids: list[str]): # Each mapper can define if it preserves the order of the incoming ids. if hasattr(mapper, "preserves_order") and mapper.preserves_order: return mapper(ids) @@ -94,7 +95,7 @@ def apply_mapping(mapper, ids: List[str]): rset = [set() for _ in ids] for mapper in to_mappings: mapped_ids = apply_mapping(mapper, ids) - for mapped_id, rlist, rhash in zip(mapped_ids, r, rset): + for mapped_id, rlist, rhash in zip(mapped_ids, r, rset, strict=False): for id in mapped_id: if id not in rhash: rlist.append(id) @@ -109,7 +110,8 @@ def merge_2d_arrays(self, source, lengths): """ if len(lengths) == 0 and len(source) == 0: return [] - assert len(lengths) > 0 and min(lengths) >= 1 + assert len(lengths) > 0 + assert min(lengths) >= 1 assert sum(lengths) == len(source) result = [] i = 0 @@ -125,7 +127,7 @@ def can_map(self, from_idtype, to_idtype): def maps_to(self, from_idtype): return list(self.paths.get(from_idtype, {}).keys()) - def __call__(self, from_idtype, to_idtype, ids): + def __call__(self, from_idtype, to_idtype, ids) -> list: # If both id types are the same, simply return if from_idtype == to_idtype: return ids @@ -162,12 +164,12 @@ def __call__(self, from_idtype, to_idtype, ids): return result # Otherwise, check if every mapping was 1 to 1 - lengths = [len(x) for x in result] + lengths = [len(x) for x in result] # type: ignore # If any result array is longer than 1, we need to flatten and later merge it needs_merging = max(lengths, default=0) > 1 # Flatten result and assign to values values = list(chain.from_iterable(result)) - return result + return result # type: ignore def search(self, from_idtype, to_idtype, query, max_results=None): """ @@ -198,9 +200,9 @@ def search(self, from_idtype, to_idtype, query, max_results=None): def create_id_mapping_manager() -> MappingManager: - _log.info("Creating mapping_manager") # Load mapping providers providers = [] for plugin in manager.registry.list("mapping_provider"): providers = providers + list(plugin.load().factory()) + _log.info(f"Initializing MappingManager with {len(providers)} provider(s)") return MappingManager(providers) diff --git a/tdp_core/manager.py b/tdp_core/manager.py index 20e2bd61b..926d733e4 100644 --- a/tdp_core/manager.py +++ b/tdp_core/manager.py @@ -13,9 +13,9 @@ from .settings.model import GlobalSettings -db: "DBManager" = None -db_migration: "DBMigrationManager" = None -id_mapping: "MappingManager" = None -security: "SecurityManager" = None -registry: "Registry" = None -settings: "GlobalSettings" = None +db: "DBManager" = None # type: ignore +db_migration: "DBMigrationManager" = None # type: ignore +id_mapping: "MappingManager" = None # type: ignore +security: "SecurityManager" = None # type: ignore +registry: "Registry" = None # type: ignore +settings: "GlobalSettings" = None # type: ignore diff --git a/tdp_core/mapping_table.py b/tdp_core/mapping_table.py index d7ef847d3..8aa98e52d 100644 --- a/tdp_core/mapping_table.py +++ b/tdp_core/mapping_table.py @@ -7,7 +7,7 @@ _log = logging.getLogger(__name__) -class SQLMappingTable(object): +class SQLMappingTable: def __init__(self, mapping: DBMapping, engine): self.from_idtype = mapping.from_idtype self.to_idtype = mapping.to_idtype @@ -43,7 +43,7 @@ def _discover_mappings(): yield SQLMappingTable(mapping, engine) -class SQLMappingProvider(object): +class SQLMappingProvider: def __init__(self): self._mappings = list(_discover_mappings()) diff --git a/tdp_core/middleware/close_web_sessions_middleware.py b/tdp_core/middleware/close_web_sessions_middleware.py index 068fb5e9d..3998ba552 100644 --- a/tdp_core/middleware/close_web_sessions_middleware.py +++ b/tdp_core/middleware/close_web_sessions_middleware.py @@ -1,18 +1,26 @@ -from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint -from starlette.requests import Request +import contextlib +from fastapi import FastAPI -class CloseWebSessionsMiddleware(BaseHTTPMiddleware): - async def dispatch(self, request: Request, call_next: RequestResponseEndpoint): - response = await call_next(request) +from .request_context_plugin import get_request - try: - for db_session in request.state.db_sessions: - try: - db_session.close() - except Exception: - pass - except (KeyError, AttributeError): - pass - return response +# Use basic ASGI middleware instead of BaseHTTPMiddleware as it is significantly faster: https://github.com/tiangolo/fastapi/issues/2696#issuecomment-768224643 +# Raw middlewares are actually quite complex: https://github.com/encode/starlette/blob/048643adc21e75b668567fc6bcdd3650b89044ea/starlette/middleware/errors.py#L147 +class CloseWebSessionsMiddleware: + def __init__(self, app: FastAPI): + self.app: FastAPI = app + + async def __call__(self, scope, receive, send): + if scope["type"] != "http": + await self.app(scope, receive, send) + return + + await self.app(scope, receive, send) + + r = get_request() + if r: + with contextlib.suppress(KeyError, AttributeError): + for db_session in r.state.db_sessions: + with contextlib.suppress(Exception): + db_session.close() diff --git a/tdp_core/middleware/exception_handler_middleware.py b/tdp_core/middleware/exception_handler_middleware.py index 31a24848e..aa1aff7ec 100644 --- a/tdp_core/middleware/exception_handler_middleware.py +++ b/tdp_core/middleware/exception_handler_middleware.py @@ -1,20 +1,41 @@ import logging -from fastapi import HTTPException +from fastapi import FastAPI, HTTPException from fastapi.exception_handlers import http_exception_handler -from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint -from starlette.requests import Request +from starlette.types import Message from ..server.utils import detail_from_exception -class ExceptionHandlerMiddleware(BaseHTTPMiddleware): - async def dispatch(self, request: Request, call_next: RequestResponseEndpoint): +# Use basic ASGI middleware instead of BaseHTTPMiddleware as it is significantly faster: https://github.com/tiangolo/fastapi/issues/2696#issuecomment-768224643 +# Raw middlewares are actually quite complex: https://github.com/encode/starlette/blob/048643adc21e75b668567fc6bcdd3650b89044ea/starlette/middleware/errors.py#L147 +class ExceptionHandlerMiddleware: + def __init__(self, app: FastAPI): + self.app: FastAPI = app + + async def __call__(self, scope, receive, send): + if scope["type"] != "http": + await self.app(scope, receive, send) + return + + response_started = False + + async def _send(message: Message) -> None: + nonlocal response_started, send + + if message["type"] == "http.response.start": + response_started = True + await send(message) + try: - return await call_next(request) + await self.app(scope, receive, _send) except Exception as e: - logging.exception("An error occurred in FastAPI") - return await http_exception_handler( - request, + logging.exception(repr(e)) + response = await http_exception_handler( + None, # type: ignore e if isinstance(e, HTTPException) else HTTPException(status_code=500, detail=detail_from_exception(e)), ) + if not response_started: + await response(scope, receive, send) + + raise e diff --git a/tdp_core/middleware/request_context_middleware.py b/tdp_core/middleware/request_context_middleware.py deleted file mode 100644 index 2ea5d3557..000000000 --- a/tdp_core/middleware/request_context_middleware.py +++ /dev/null @@ -1,20 +0,0 @@ -from contextvars import ContextVar - -from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint -from starlette.requests import Request - -REQUEST_CTX_KEY = "fastapi_request" - -_request_ctx_var: ContextVar[str] = ContextVar(REQUEST_CTX_KEY, default=None) - - -def get_request() -> Request: - return _request_ctx_var.get() - - -class RequestContextMiddleware(BaseHTTPMiddleware): - async def dispatch(self, request: Request, call_next: RequestResponseEndpoint): - request_ctx_key = _request_ctx_var.set(request) - response = await call_next(request) - _request_ctx_var.reset(request_ctx_key) - return response diff --git a/tdp_core/middleware/request_context_plugin.py b/tdp_core/middleware/request_context_plugin.py new file mode 100644 index 000000000..e24d308fa --- /dev/null +++ b/tdp_core/middleware/request_context_plugin.py @@ -0,0 +1,15 @@ +from starlette.requests import HTTPConnection, Request +from starlette_context import context +from starlette_context.plugins.base import Plugin + + +def get_request() -> Request | None: + return context.get("request") + + +class RequestContextPlugin(Plugin): + # The returned value will be inserted in the context with this key + key = "request" + + async def process_request(self, request: Request | HTTPConnection) -> Request | HTTPConnection | None: + return request diff --git a/tdp_core/mol_img/img_api.py b/tdp_core/mol_img/img_api.py index b7e0999d0..803438667 100644 --- a/tdp_core/mol_img/img_api.py +++ b/tdp_core/mol_img/img_api.py @@ -1,12 +1,15 @@ -from typing import List, Optional, Set - from fastapi import APIRouter -from rdkit.Chem import Mol +from rdkit.Chem import Mol # type: ignore from rdkit.Chem.Scaffolds import MurckoScaffold from starlette.responses import Response from starlette.status import HTTP_204_NO_CONTENT -from .models import SmilesMolecule, SmilesSmartsMolecule, SubstructuresResponse, SvgResponse +from .models import ( + SmilesMolecule, + SmilesSmartsMolecule, + SubstructuresResponse, + SvgResponse, +) from .util.draw import draw, draw_similarity from .util.molecule import aligned, maximum_common_substructure_query_mol @@ -14,14 +17,12 @@ @app.get("/", response_class=SvgResponse) -def draw_smiles( - structure: SmilesMolecule, substructure: Optional[SmilesMolecule] = None, align: Optional[SmilesMolecule] = None -): # noqa: E1127 +def draw_smiles(structure: SmilesMolecule, substructure: SmilesMolecule | None = None, align: SmilesMolecule | None = None): return draw(structure.mol, aligned(structure.mol, align and align.mol) or substructure and substructure.mol) @app.post("/") -def multiple_images(structures: Set[SmilesMolecule]): +def multiple_images(structures: set[SmilesMolecule]): return {m: draw(m.mol) for m in structures} @@ -43,7 +44,7 @@ def draw_molecule_similarity(structure: SmilesMolecule, reference: SmilesMolecul @app.post("/mcs/", response_class=SvgResponse) -def draw_maximum_common_substructure_molecule(structures: List[SmilesMolecule]): +def draw_maximum_common_substructure_molecule(structures: list[SmilesMolecule]): unique = [m.mol for m in set(structures)] mcs = maximum_common_substructure_query_mol(unique) if not mcs or not isinstance(mcs, Mol): @@ -52,7 +53,7 @@ def draw_maximum_common_substructure_molecule(structures: List[SmilesMolecule]): @app.post("/substructures/") -def substructures_count(structures: Set[SmilesMolecule], substructure: SmilesSmartsMolecule) -> SubstructuresResponse: +def substructures_count(structures: set[SmilesMolecule], substructure: SmilesSmartsMolecule) -> SubstructuresResponse: """Check and return number of possible substructures in a set of structures""" ssr = SubstructuresResponse() for smiles in set(structures): diff --git a/tdp_core/mol_img/models.py b/tdp_core/mol_img/models.py index f4aa04065..770cc6db9 100644 --- a/tdp_core/mol_img/models.py +++ b/tdp_core/mol_img/models.py @@ -1,7 +1,5 @@ -from typing import Dict, Optional - from pydantic import BaseModel -from rdkit.Chem import Mol, MolFromSmarts, MolFromSmiles +from rdkit.Chem import Mol, MolFromSmarts, MolFromSmiles # type: ignore from starlette.responses import Response @@ -20,7 +18,7 @@ def __get_validators__(cls): yield cls.validate @classmethod - def validate(cls, value: Optional[str]) -> "SmilesMolecule": + def validate(cls, value: str | None) -> "SmilesMolecule": for parser in cls.parsers: mol = parser(value) if mol: @@ -42,5 +40,5 @@ class SvgResponse(Response): class SubstructuresResponse(BaseModel): - count: Dict[str, int] = dict() - valid: Dict[str, bool] = dict() + count: dict[str, int] = {} + valid: dict[str, bool] = {} diff --git a/tdp_core/mol_img/util/draw.py b/tdp_core/mol_img/util/draw.py index 2d72fabb0..2dcf28fc8 100644 --- a/tdp_core/mol_img/util/draw.py +++ b/tdp_core/mol_img/util/draw.py @@ -1,12 +1,12 @@ from typing import Callable -from rdkit.Chem import Mol +from rdkit.Chem import Mol # type: ignore from rdkit.Chem.Draw import SimilarityMaps, rdMolDraw2D from rdkit.Chem.Draw.rdMolDraw2D import MolDraw2DSVG from rdkit.Chem.Draw.SimilarityMaps import GetSimilarityMapForFingerprint -def _draw_wrapper(draw_inner: Callable[[MolDraw2DSVG, ...], None]) -> Callable[..., str]: +def _draw_wrapper(draw_inner: Callable[[MolDraw2DSVG, ...], None]) -> Callable[..., str]: # type: ignore """Function wrapper for drawing Can annotate any function that takes a drawer as first arg, ignores its return type diff --git a/tdp_core/mol_img/util/molecule.py b/tdp_core/mol_img/util/molecule.py index d1781016d..7d45d90bd 100644 --- a/tdp_core/mol_img/util/molecule.py +++ b/tdp_core/mol_img/util/molecule.py @@ -1,9 +1,7 @@ -from typing import List, Optional +from rdkit.Chem import Mol, TemplateAlign, rdFMCS # type: ignore -from rdkit.Chem import Mol, TemplateAlign, rdFMCS - -def maximum_common_substructure_query_mol(mols: List[Mol]) -> Optional[Mol]: +def maximum_common_substructure_query_mol(mols: list[Mol]) -> Mol | None: """https://www.rdkit.org/docs/GettingStartedInPython.html#maximum-common-substructure""" return rdFMCS.FindMCS(mols, matchValences=True, ringMatchesRingOnly=True, completeRingsOnly=True).queryMol diff --git a/tdp_core/plugin/model.py b/tdp_core/plugin/model.py index a9ed32e77..952f4c525 100644 --- a/tdp_core/plugin/model.py +++ b/tdp_core/plugin/model.py @@ -1,11 +1,11 @@ from abc import ABC, abstractmethod -from typing import Any, Dict, Type +from typing import Any from fastapi import FastAPI from pydantic import BaseModel -class RegHelper(object): +class RegHelper: def __init__(self, plugin): self._items = [] self._plugin = plugin @@ -13,15 +13,15 @@ def __init__(self, plugin): def __iter__(self): return iter(self._items) - def append(self, type_: str, id_: str, module_: Any, desc: Dict[str, Any] = None): - desc = {} if desc is None else desc + def append(self, type_: str, id_: str, module_: Any, desc: dict[str, Any] | None = None): + desc = desc if desc else {} desc["type"] = type_ desc["id"] = id_ desc["module"] = module_ desc["plugin"] = self._plugin self._items.append(desc) - def append_router(self, id_: str, module_: Any, desc: Dict[str, Any]): + def append_router(self, id_: str, module_: Any, desc: dict[str, Any]): # TODO: Validate desc return self.append("fastapi_router", id_, module_, desc) @@ -31,9 +31,9 @@ class AVisynPlugin(ABC): def register(self, registry: RegHelper): pass - def init_app(self, app: FastAPI): + def init_app(self, app: FastAPI): # noqa: B027 pass @property - def setting_class(self) -> Type[BaseModel]: + def setting_class(self) -> type[BaseModel] | None: return None diff --git a/tdp_core/plugin/parser.py b/tdp_core/plugin/parser.py index cb2d869df..18d15fdf2 100644 --- a/tdp_core/plugin/parser.py +++ b/tdp_core/plugin/parser.py @@ -2,7 +2,6 @@ import logging from functools import cached_property, lru_cache from importlib.metadata import EntryPoint, entry_points -from typing import Dict, List, Tuple, Type from pydantic import BaseModel @@ -43,14 +42,14 @@ def check(disable): return any(map(check, manager.settings.tdp_core.disable.extensions)) -class EntryPointPlugin(object): +class EntryPointPlugin: def __init__(self, entry_point: EntryPoint): self.entry_point = entry_point self.id = entry_point.name self.name = self.id self.title = self.name self.description = "" - self.version = entry_point.dist.version + self.version = entry_point.dist.version if entry_point.dist else "0.0.0" self.extensions = [] @staticmethod @@ -59,14 +58,14 @@ def is_app(): @cached_property def plugin(self) -> AVisynPlugin: - visyn_plugin_clazz: Type[AVisynPlugin] = self.entry_point.load() + visyn_plugin_clazz: type[AVisynPlugin] = self.entry_point.load() if not issubclass(visyn_plugin_clazz, AVisynPlugin): raise Exception("Entrypoint plugin {self.id} does not load a proper class extending AVisynPlugin") return visyn_plugin_clazz() - @lru_cache + @lru_cache # noqa: B019 def get_module(self): return importlib.import_module(self.id) @@ -79,43 +78,43 @@ def _find_entry_point_plugins(): return [EntryPointPlugin(entry_point) for entry_point in entry_points(group="visyn.plugin")] -def load_all_plugins() -> List[EntryPointPlugin]: +def load_all_plugins() -> list[EntryPointPlugin]: # Load all plugins found via entry points - plugins: List[EntryPointPlugin] = [p for p in _find_entry_point_plugins() if not is_disabled_plugin(p)] + plugins: list[EntryPointPlugin] = [p for p in _find_entry_point_plugins() if not is_disabled_plugin(p)] plugins.sort(key=lambda p: p.id) - _log.info(f"Discovered {len(plugins)} plugins: {', '.join([d.id for d in plugins])}") + _log.info(f"Discovered {len(plugins)} plugin(s): {', '.join([d.id for d in plugins])}") return plugins -def get_extensions_from_plugins(plugins: List[EntryPointPlugin]) -> List: +def get_extensions_from_plugins(plugins: list[EntryPointPlugin]) -> list: server_extensions = [] for plugin in plugins: reg = RegHelper(plugin) plugin.plugin.register(reg) ext = [r for r in reg if not is_disabled_extension(r, "python", plugin)] - logging.info(f"plugin {plugin.id} registered {len(ext)} extension(s)") + _log.info(f"Plugin {plugin.id} registered {len(ext)} extension(s)") plugin.extensions = ext server_extensions.extend(ext) return server_extensions -def get_config_from_plugins(plugins: List[EntryPointPlugin]) -> Tuple[List[Dict[str, Dict]], Dict[str, Type[BaseModel]]]: +def get_config_from_plugins(plugins: list[EntryPointPlugin]) -> tuple[list[dict[str, dict]], dict[str, type[BaseModel]]]: # from ..settings.utils import load_config_file # With all the plugins, load the corresponding configuration files and add them to the global config - files: List[Dict[str, Dict]] = [] - models: Dict[str, Type[BaseModel]] = {} + files: list[dict[str, dict]] = [] + models: dict[str, type[BaseModel]] = {} for plugin in plugins: plugin_settings_model = plugin.plugin.setting_class if plugin_settings_model: - logging.info(f"Plugin {plugin.id} has a settings model") + _log.info(f"Plugin {plugin.id} has a settings model") # Load the class of the config and wrap it in a tuple like (, ...), # such that pydantic can use it as type-hint in the create_model class. # Otherwise, it would except to be the default value... - models[plugin.id] = (plugin_settings_model, ...) + models[plugin.id] = (plugin_settings_model, ...) # type: ignore # TODO: Currently we append an empty object as "default", but we should actually pass an instance of the settings model instead. files.append({f"{plugin.id}": {}}) diff --git a/tdp_core/plugin/registry.py b/tdp_core/plugin/registry.py index 2d52df6aa..edb64da91 100644 --- a/tdp_core/plugin/registry.py +++ b/tdp_core/plugin/registry.py @@ -1,6 +1,4 @@ import logging -from builtins import object -from typing import List from fastapi import FastAPI @@ -9,7 +7,7 @@ _log = logging.getLogger(__name__) -class Extension(object): +class Extension: """ the loaded plugin instance """ @@ -28,10 +26,7 @@ def __call__(self, *args, **kwargs): m = getattr(self.impl, self.desc.factory) - if hasattr(m, "__call__"): - v = m(*args, **kwargs) - else: - v = m + v = m(*args, **kwargs) if callable(m) else m self._cache = v return v @@ -39,7 +34,7 @@ def factory(self, *args, **kwargs): return self(*args, **kwargs) -class AExtensionDesc(object): +class AExtensionDesc: def __init__(self, desc): self.type = desc.get("type", "unknown") self.id = desc["id"] @@ -59,7 +54,7 @@ class ExtensionDesc(AExtensionDesc): """ def __init__(self, desc): - super(ExtensionDesc, self).__init__(desc) + super().__init__(desc) self._impl = None # from js notation to python notation @@ -74,12 +69,12 @@ def load(self): return self._impl -class Registry(object): +class Registry: def __init__(self): - self.plugins: List[EntryPointPlugin] = [] - self._extensions: List[ExtensionDesc] = [] + self.plugins: list[EntryPointPlugin] = [] + self._extensions: list[ExtensionDesc] = [] - def init_app(self, app: FastAPI, plugins: List[EntryPointPlugin]): + def init_app(self, app: FastAPI, plugins: list[EntryPointPlugin]): self.plugins = plugins self._extensions = [ExtensionDesc(p) for p in get_extensions_from_plugins(plugins)] @@ -92,9 +87,7 @@ def __getitem__(self, item): def __iter__(self): return iter(self._extensions) - def list(self, plugin_type=None): - if plugin_type is None: - return self - if not hasattr(plugin_type, "__call__"): # not a callable + def list(self, plugin_type) -> list[ExtensionDesc]: + if not callable(plugin_type): return [x for x in self if x.type == plugin_type] return [x for x in self if plugin_type(x)] diff --git a/tdp_core/plugin/router.py b/tdp_core/plugin/router.py index e2a93cc60..cd6cf1427 100644 --- a/tdp_core/plugin/router.py +++ b/tdp_core/plugin/router.py @@ -28,7 +28,7 @@ def get_plugins(): "description": e.description, "version": e.version, } - for e in manager.registry.list() + for e in manager.registry ], } diff --git a/tdp_core/proxy.py b/tdp_core/proxy.py index 7ca99c72a..e6501321d 100644 --- a/tdp_core/proxy.py +++ b/tdp_core/proxy.py @@ -1,7 +1,8 @@ import logging import requests -from flask import Flask, Response, abort, request +from flask import Flask, abort, request +from flask.wrappers import Response from . import manager @@ -14,8 +15,8 @@ def _to_site_url(site): proxy_defs = manager.registry.list("tdp_proxy") for p in proxy_defs: if p.id == site: - headers = getattr(p, "headers") if hasattr(p, "headers") else dict() - return p.url.format(**request.args.to_dict()), headers + headers = p.headers if hasattr(p, "headers") else {} # type: ignore + return p.url.format(**request.args.to_dict()), headers # type: ignore # none matching found return None, None diff --git a/tdp_core/security/__init__.py b/tdp_core/security/__init__.py index e0c590c78..84b475cec 100644 --- a/tdp_core/security/__init__.py +++ b/tdp_core/security/__init__.py @@ -2,9 +2,21 @@ from functools import wraps from ..formatter import formatter -from .manager import current_user, current_username, is_logged_in, login_required # NOQA +from .manager import ( # NOQA + current_user, + current_username, + is_logged_in, + login_required, +) from .model import User # NOQA -from .permissions import DEFAULT_PERMISSION, _includes, can, can_execute, can_read, can_write # NOQA +from .permissions import ( # NOQA + DEFAULT_PERMISSION, + _includes, + can, + can_execute, + can_read, + can_write, +) # custom login_required decorator to be able to disable the login for DBViews, i.e. to make them public diff --git a/tdp_core/security/jwt_router.py b/tdp_core/security/jwt_router.py index 9c4c456e0..e379b2a56 100644 --- a/tdp_core/security/jwt_router.py +++ b/tdp_core/security/jwt_router.py @@ -33,8 +33,8 @@ def get_login(): """ -@jwt_router.post("/login", response_model=Token) -def post_login(form_data: OAuth2PasswordRequestForm = Depends()): +@jwt_router.post("/login") +def post_login(form_data: OAuth2PasswordRequestForm = Depends()) -> Token: user = manager.security.login(form_data.username, {"password": form_data.password}) if not user: raise HTTPException( @@ -51,7 +51,7 @@ def post_login(form_data: OAuth2PasswordRequestForm = Depends()): # And as cookie (for easier frontend communication) add_access_token_to_response(response, access_token) - return response + return response # type: ignore @jwt_router.post("/logout") diff --git a/tdp_core/security/manager.py b/tdp_core/security/manager.py index 8e7406a03..f38629144 100644 --- a/tdp_core/security/manager.py +++ b/tdp_core/security/manager.py @@ -1,22 +1,23 @@ +import contextlib import logging from base64 import b64decode from datetime import datetime, timedelta, timezone from functools import wraps -from typing import Callable, Dict, List, Optional, Tuple +from typing import Callable import jwt from fastapi import FastAPI, HTTPException, Request, Response, status from fastapi.security.utils import get_authorization_scheme_param from .. import manager -from ..middleware.request_context_middleware import get_request +from ..middleware.request_context_plugin import get_request from .model import ANONYMOUS_USER, LogoutReturnValue, User from .store.base_store import BaseStore _log = logging.getLogger(__name__) -def user_to_access_token(user: User) -> Tuple[str, Dict]: +def user_to_access_token(user: User) -> tuple[str, dict]: # Define access token data payload = {} @@ -40,19 +41,19 @@ def user_to_access_token(user: User) -> Tuple[str, Dict]: return jwt.encode(payload, manager.settings.secret_key, algorithm=manager.settings.jwt_algorithm), payload -def access_token_to_payload(token: str) -> Dict: +def access_token_to_payload(token: str) -> dict: return jwt.decode(token, manager.settings.secret_key, algorithms=[manager.settings.jwt_algorithm]) -def access_token_to_user(token: str) -> User: +def access_token_to_user(token: str) -> User | None: payload = access_token_to_payload(token) - username: str = payload.get("sub") - if username is None: + username: str | None = payload.get("sub") + if not username: return None return User(id=username, access_token=token, roles=payload.get("roles", [])) -def user_to_dict(user: User, access_token: Optional[str] = None, payload: Optional[Dict] = None) -> Dict: +def user_to_dict(user: User, access_token: str | None = None, payload: dict | None = None) -> dict: if not payload and access_token: payload = access_token_to_payload(access_token) @@ -80,23 +81,27 @@ def add_access_token_to_response(response: Response, access_token: str) -> Respo class SecurityManager: - def __init__(self, user_stores: List[BaseStore]): - self.user_stores: List[BaseStore] = user_stores - self._additional_jwt_claims_loader: List[Callable[[User], Dict]] = [] + def __init__(self, user_stores: list[BaseStore]): + self.user_stores: list[BaseStore] = user_stores + self._additional_jwt_claims_loader: list[Callable[[User], dict]] = [] - def login(self, username, extra_fields=None) -> Optional[User]: + def login(self, username, extra_fields=None) -> User | None: return self._delegate_stores_until_not_none("login", username, extra_fields or {}) def logout(self): u = self.current_user response_payload = {} response_cookies = [] + + if not u: + return response_payload, response_cookies + for store in self.user_stores: customizations = store.logout(u) or LogoutReturnValue() # data is an arbitrary Dict which is added to the response payload. - response_payload.update(customizations.data) + response_payload.update(customizations.data or {}) # cookies is a list of Dicts which are passed 1:1 to response.set_cookie. - response_cookies.extend(customizations.cookies) + response_cookies.extend(customizations.cookies or []) return response_payload, response_cookies def _delegate_stores_until_not_none(self, store_method_name: str, *args): @@ -113,19 +118,18 @@ def _delegate_stores_until_not_none(self, store_method_name: str, *args): return value @property - def current_user(self) -> Optional[User]: + def current_user(self) -> User | None: try: - req = get_request() - # Fetch the existing user from the request if there is any - try: - user = req.state.user - if user: - return user - except (KeyError, AttributeError): - pass - # If there is no user, try to load it from the request and store it in the request - user = req.state.user = self.load_from_request(get_request()) - return user + r = get_request() + if r: + # Fetch the existing user from the request if there is any + with contextlib.suppress(KeyError, AttributeError): + user = r.state.user + if user: + return user + # If there is no user, try to load it from the request and store it in the request + user = r.state.user = self.load_from_request(r) + return user except HTTPException: return None except Exception: @@ -161,17 +165,15 @@ def load_from_request(self, request: Request): headers={"WWW-Authenticate": "Bearer"}, ) - def _load_from_key(self, request: Request) -> Optional[User]: + def _load_from_key(self, request: Request) -> User | None: # try to login using the api_key url arg api_key = request.headers.get("apiKey") if not api_key: # then, try to login using Basic Auth api_key = request.headers.get("Authorization") if api_key: - try: + with contextlib.suppress(Exception): api_key = b64decode(api_key.replace("Basic ", "", 1)).decode("utf-8") - except Exception: - pass if api_key: return self._delegate_stores_until_not_none("load_from_key", api_key) @@ -191,7 +193,8 @@ def init_app(self, app: FastAPI): @app.middleware("http") async def refresh_token_middleware(request: Request, call_next): response = await call_next(request) - try: + # Case where there is not a valid JWT. Just return the original respone + with contextlib.suppress(RuntimeError, KeyError, AttributeError): # Use the cached user from the request, to only refresh a token if the user was actually requested. This avoids calling load_from_request for every request. user = request.state.user if user and user.access_token: @@ -202,13 +205,9 @@ async def refresh_token_middleware(request: Request, call_next): if target_timestamp > exp_timestamp: access_token, payload = user_to_access_token(user) add_access_token_to_response(response, access_token) - except (RuntimeError, KeyError, AttributeError): - # Case where there is not a valid JWT. Just return the original respone - pass - finally: - return response + return response - def jwt_claims_loader(self, callback: Callable[[User], Dict]): + def jwt_claims_loader(self, callback: Callable[[User], dict]): """ Register additional jwt claims loaders. These will be called with the current user when a new token is issued. @@ -227,13 +226,13 @@ def create_security_manager(): """ :return: the security manager """ - _log.info("Creating security_manager") - user_stores = list(filter(None, [p.load().factory() for p in manager.registry.list("user_stores")])) if len(user_stores) == 0 or manager.settings.tdp_core.alwaysAppendDummyStore: - from .store import dummy_store + from .store.dummy_store import DummyStore + + user_stores.append(DummyStore()) - user_stores.append(dummy_store.create()) + _log.info(f"Initializing SecurityManager with {', '.join([s.__class__.__name__ for s in user_stores]) or 'no user stores'}") return SecurityManager(user_stores=user_stores) @@ -244,7 +243,7 @@ def is_logged_in(): def current_username(): u = manager.security.current_user - return u.name if hasattr(u, "name") else ANONYMOUS_USER.name + return u.name if u and hasattr(u, "name") else ANONYMOUS_USER.name def current_user(): @@ -258,7 +257,7 @@ def login_required(f=None, *, users=(), roles=()): """Usage: @login_required or @login_required(users=("admin") or @login_required(roles=("admin"))""" def login_required_inner(fn=None): - @wraps(fn) + @wraps(fn) # type: ignore def decorator(*args, **kwargs): u = manager.security.current_user # Allow access only if a user is available @@ -270,7 +269,7 @@ def decorator(*args, **kwargs): raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="User role not in allowed_roles in login_required request" ) - return fn(*args, **kwargs) + return fn(*args, **kwargs) # type: ignore return decorator diff --git a/tdp_core/security/model.py b/tdp_core/security/model.py index 79349dd62..f093ab8b6 100644 --- a/tdp_core/security/model.py +++ b/tdp_core/security/model.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, List, Optional +from typing import Any from pydantic import BaseModel @@ -11,14 +11,14 @@ class Token(BaseModel): class LogoutReturnValue(BaseModel): - data: Optional[Dict[Any, Any]] = {} - cookies: Optional[List[Dict[Any, Any]]] = [] + data: dict[Any, Any] | None = {} + cookies: list[dict[Any, Any]] | None = [] class User(BaseModel): id: str - roles: List[str] = [] - access_token: Optional[str] = None + roles: list[str] = [] + access_token: str | None = None @property def name(self): diff --git a/tdp_core/security/permissions.py b/tdp_core/security/permissions.py index cfec33264..114ac5a33 100644 --- a/tdp_core/security/permissions.py +++ b/tdp_core/security/permissions.py @@ -60,13 +60,10 @@ def _is_equal(a, b): def _includes(items, item): if not item: return False - for check in items: - if _is_equal(check, item): - return True - return False + return any(_is_equal(check, item) for check in items) -def can(item, permission: int, user: User = None): +def can(item, permission: int, user: User | None = None): if user is None: user = current_user() @@ -96,13 +93,13 @@ def can(item, permission: int, user: User = None): return permission in others -def can_read(data_description, user=None): +def can_read(data_description, user: User | None = None): return can(data_description, PERMISSION_READ, user) -def can_write(data_description, user=None): +def can_write(data_description, user: User | None = None): return can(data_description, PERMISSION_WRITE, user) -def can_execute(data_description, user=None): +def can_execute(data_description, user: User | None = None): return can(data_description, PERMISSION_EXECUTE, user) diff --git a/tdp_core/security/store/alb_security_store.py b/tdp_core/security/store/alb_security_store.py index 449ee0718..c58e4ae8a 100644 --- a/tdp_core/security/store/alb_security_store.py +++ b/tdp_core/security/store/alb_security_store.py @@ -1,5 +1,4 @@ import logging -from typing import Optional import jwt @@ -11,9 +10,9 @@ class ALBSecurityStore(BaseStore): - def __init__(self, cookie_name: Optional[str], signout_url: Optional[str]): + def __init__(self, cookie_name: str | None, signout_url: str | None): self.cookie_name = cookie_name - self.signout_url: Optional[str] = signout_url + self.signout_url: str | None = signout_url def load_from_request(self, req): if "X-Amzn-Oidc-Identity" in req.headers and "X-Amzn-Oidc-Accesstoken" in req.headers and "X-Amzn-Oidc-Data" in req.headers: diff --git a/tdp_core/security/store/base_store.py b/tdp_core/security/store/base_store.py index 8aad5e4f9..98599494c 100644 --- a/tdp_core/security/store/base_store.py +++ b/tdp_core/security/store/base_store.py @@ -1,26 +1,25 @@ -from abc import ABC -from typing import Optional - from fastapi import FastAPI, Request from ..model import LogoutReturnValue, User -class BaseStore(ABC): +class BaseStore: def __init__(self): - pass + return None def init_app(self, app: FastAPI): - pass + return None - def load_from_request(self, request: Request) -> Optional[User]: + def load_from_request(self, request: Request) -> User | None: return None - def load_from_key(self, key: str) -> Optional[User]: + def load_from_key(self, key: str) -> User | None: return None - def login(self, username: str, extra_fields={}) -> Optional[User]: + def login(self, username: str, extra_fields=None) -> User | None: + if extra_fields is None: + extra_fields = {} return None - def logout(self, user: User) -> Optional[LogoutReturnValue]: - pass + def logout(self, user: User) -> LogoutReturnValue | None: + return None diff --git a/tdp_core/security/store/dummy_store.py b/tdp_core/security/store/dummy_store.py index f95497fb5..dda08b79a 100644 --- a/tdp_core/security/store/dummy_store.py +++ b/tdp_core/security/store/dummy_store.py @@ -26,7 +26,6 @@ def __init__(self): self._users = [ DummyUser( id=v["name"], - name=v["name"], roles=v["roles"], password=v["password"], salt=v["salt"], @@ -43,7 +42,9 @@ def load_from_key(self, api_key: str): None, ) - def login(self, username, extra_fields={}): + def login(self, username, extra_fields=None): + if extra_fields is None: + extra_fields = {} return next( (u for u in self._users if u.id == username and u.is_password(extra_fields["password"])), None, @@ -51,8 +52,3 @@ def login(self, username, extra_fields={}): def logout(self, user): pass - - -def create(): - _log.info("Creating dummy store") - return DummyStore() diff --git a/tdp_core/security/store/no_security_store.py b/tdp_core/security/store/no_security_store.py index 612342e8f..cfa905b92 100644 --- a/tdp_core/security/store/no_security_store.py +++ b/tdp_core/security/store/no_security_store.py @@ -1,5 +1,4 @@ import logging -from typing import List from ... import manager from ..model import User @@ -9,7 +8,7 @@ class NoSecurityStore(BaseStore): - def __init__(self, user: str, roles: List[str]): + def __init__(self, user: str, roles: list[str]): self.user = user self.roles = roles diff --git a/tdp_core/server/cmd.py b/tdp_core/server/cmd.py index 749c5419e..635bc8a36 100644 --- a/tdp_core/server/cmd.py +++ b/tdp_core/server/cmd.py @@ -1,13 +1,13 @@ import logging import shlex -from typing import Callable, Optional, Union +from typing import Callable from .. import manager _log = logging.getLogger(__name__) -def parse_command_string(cmd: Optional[str]) -> Union[Callable, None]: +def parse_command_string(cmd: str | None) -> Callable | None: """ Parses an application command. Example using cmd entrypoint: diff --git a/tdp_core/server/mainapp.py b/tdp_core/server/mainapp.py index b25eabc54..6f62ee7e1 100644 --- a/tdp_core/server/mainapp.py +++ b/tdp_core/server/mainapp.py @@ -1,9 +1,9 @@ import logging import os import re -from builtins import next -from flask import Flask, safe_join, send_from_directory +from flask import Flask, send_from_directory +from werkzeug.security import safe_join from .. import manager @@ -37,7 +37,7 @@ def _deliver(path): return "This page does not exist", 404 # serve public - if os.path.exists(safe_join(public_dir, path)): + if os.path.exists(safe_join(public_dir, path)): # type: ignore return send_from_directory(public_dir, path) # check all plugins @@ -49,11 +49,11 @@ def _deliver(path): plugin = next((p for p in manager.registry.plugins if p.id == plugin_id), None) if plugin: - dpath = safe_join(plugin.folder, "/".join(elems)) - if os.path.exists(dpath): + dpath = safe_join(plugin.folder, "/".join(elems)) # type: ignore + if os.path.exists(dpath): # type: ignore # send_static_file will guess the correct MIME type # print 'sending',dpath - return send_from_directory(plugin.folder, "/".join(elems)) + return send_from_directory(plugin.folder, "/".join(elems)) # type: ignore return "This page does not exist", 404 @@ -92,11 +92,11 @@ def _generate_index(): + "
" ) text.append('") text.append("") @@ -119,7 +119,7 @@ def build_info(): dependencies = [] all_plugins = [] - build_info = dict(plugins=all_plugins, dependencies=dependencies) + build_info = {"plugins": all_plugins, "dependencies": dependencies} requirements = "requirements.txt" if os.path.exists(requirements): @@ -128,18 +128,18 @@ def build_info(): for p in manager.registry.plugins: if p.id == "tdp_core": - build_info["name"] = p.name - build_info["version"] = p.version - build_info["resolved"] = p.resolved + build_info["name"] = p.name # type: ignore + build_info["version"] = p.version # type: ignore + build_info["resolved"] = p.resolved # type: ignore else: - desc = dict(name=p.name, version=p.version, resolved=p.resolved) + desc = {"name": p.name, "version": p.version, "resolved": p.resolved} all_plugins.append(desc) return build_info # health check for docker-compose, kubernetes -def health(): +async def health(): return "ok" diff --git a/tdp_core/server/utils.py b/tdp_core/server/utils.py index 9450fc302..4b40a34e5 100644 --- a/tdp_core/server/utils.py +++ b/tdp_core/server/utils.py @@ -3,8 +3,8 @@ import time import traceback -import werkzeug from flask import Flask, jsonify +from werkzeug.exceptions import HTTPException from .. import manager @@ -28,13 +28,13 @@ def init_legacy_app(app: Flask): if manager.settings.tdp_core: app.config["SECRET_KEY"] = manager.settings.secret_key - @app.errorhandler(werkzeug.exceptions.HTTPException) - @app.errorhandler(Exception) + @app.errorhandler(HTTPException) + @app.errorhandler(Exception) # type: ignore async def handle_exception(e): """Handles Flask exceptions by returning the same JSON response as FastAPI#HTTPException would.""" - _log.exception("An error occurred in Flask") + _log.exception(repr(e)) # Extract status information if a Flask#HTTPException is given, otherwise return 500 with exception information - status_code = e.code if isinstance(e, werkzeug.exceptions.HTTPException) else 500 + status_code = e.code if isinstance(e, HTTPException) else 500 detail = detail_from_exception(e) # Exact same response as the one from FastAPI#HTTPException. return jsonify({"detail": detail or http.HTTPStatus(status_code).phrase}), status_code @@ -55,15 +55,16 @@ def load_after_server_started_hooks(): after_server_started_hooks = [p.load().factory() for p in manager.registry.list("after_server_started")] - _log.info(f"Found {len(after_server_started_hooks)} `after_server_started` extension points to run") + if after_server_started_hooks: + _log.info(f"Found {len(after_server_started_hooks)} after_server_started extension(s) to run") - for hook in after_server_started_hooks: - hook() + for hook in after_server_started_hooks: + hook() - _log.info("Elapsed time for server startup hooks: %d seconds", time.time() - start) + _log.info("Elapsed time for server startup hooks: %d seconds", time.time() - start) -def detail_from_exception(e: Exception) -> str: +def detail_from_exception(e: Exception) -> str | None: """Returns the full stacktrace in development mode and just the error message in production mode.""" # Always return full stacktrace in development mode if manager.settings.is_development_mode: @@ -71,7 +72,7 @@ def detail_from_exception(e: Exception) -> str: traceback.format_exception(None, e, e.__traceback__) ) # Exception specific returns - if isinstance(e, werkzeug.exceptions.HTTPException): + if isinstance(e, HTTPException): return e.description # Fallback to the string representation of the exception - return str(e) + return repr(e) diff --git a/tdp_core/server/visyn_server.py b/tdp_core/server/visyn_server.py index 281adfb5e..7e32a8be4 100644 --- a/tdp_core/server/visyn_server.py +++ b/tdp_core/server/visyn_server.py @@ -2,12 +2,14 @@ import logging.config import sys import threading -from typing import Dict, Optional +from typing import Any +import anyio from fastapi import FastAPI from fastapi.middleware.wsgi import WSGIMiddleware from pydantic import create_model from pydantic.utils import deep_update +from starlette_context.middleware import RawContextMiddleware from ..settings.constants import default_logging_dict @@ -16,7 +18,7 @@ def create_visyn_server( - *, fast_api_args: Optional[Dict] = {}, start_cmd: Optional[str] = None, workspace_config: Optional[Dict] = None + *, fast_api_args: dict[str, Any] | None = None, start_cmd: str | None = None, workspace_config: dict | None = None ) -> FastAPI: """ Create a new FastAPI instance while ensuring that the configuration and plugins are loaded, extension points are registered, database migrations are executed, ... @@ -26,6 +28,8 @@ def create_visyn_server( start_cmd: Optional start command for the server, i.e. db-migration exposes commands like `db-migration exec <..> upgrade head`. workspace_config: Optional override for the workspace configuration. If nothing is provided `load_workspace_config()` is used instead. """ + if fast_api_args is None: + fast_api_args = {} from .. import manager from ..settings.model import GlobalSettings from ..settings.utils import load_workspace_config @@ -34,8 +38,15 @@ def create_visyn_server( workspace_config = workspace_config if isinstance(workspace_config, dict) else load_workspace_config() manager.settings = GlobalSettings(**workspace_config) logging.config.dictConfig(manager.settings.tdp_core.logging) + + # Filter out the metrics endpoint from the access log + class EndpointFilter(logging.Filter): + def filter(self, record: logging.LogRecord) -> bool: + return "GET /metrics" not in record.getMessage() + + logging.getLogger("uvicorn.access").addFilter(EndpointFilter()) + _log = logging.getLogger(__name__) - _log.info("Workspace settings successfully loaded") # Load the initial plugins from ..plugin.parser import get_config_from_plugins, load_all_plugins @@ -46,7 +57,6 @@ def create_visyn_server( visyn_server_settings = create_model("VisynServerSettings", __base__=GlobalSettings, **plugin_settings_models) # Patch the global settings by instantiating the new settings model with the global config, all config.json(s), and pydantic models manager.settings = visyn_server_settings(**deep_update(*plugin_config_files, workspace_config)) - _log.info("All settings successfully loaded") app = FastAPI( debug=manager.settings.is_development_mode, @@ -60,7 +70,6 @@ def create_visyn_server( ) from ..middleware.exception_handler_middleware import ExceptionHandlerMiddleware - from ..middleware.request_context_middleware import RequestContextMiddleware # TODO: For some reason, a @app.exception_handler(Exception) is not called here. We use a middleware instead. app.add_middleware(ExceptionHandlerMiddleware) @@ -74,8 +83,6 @@ def create_visyn_server( app.state.registry = manager.registry = Registry() manager.registry.init_app(app, plugins) - _log.info("Plugin registry successfully initialized") - from ..dbmanager import DBManager app.state.db = manager.db = DBManager() @@ -84,7 +91,7 @@ def create_visyn_server( from ..dbmigration.manager import DBMigrationManager app.state.db_migration = manager.db_migration = DBMigrationManager() - manager.db_migration.init_app(app, manager.registry.list("tdp-sql-database-migration")) + manager.db_migration.init_app(app, manager.registry.list("tdp-sql-database-migration")) # type: ignore from ..security.manager import create_security_manager @@ -110,17 +117,20 @@ def create_visyn_server( from .utils import init_legacy_app, load_after_server_started_hooks namespace_plugins = manager.registry.list("namespace") - _log.info(f"Registering {len(namespace_plugins)} legacy namespaces via WSGIMiddleware") + _log.info(f"Registering {len(namespace_plugins)} legacy namespace(s) via WSGIMiddleware") for p in namespace_plugins: - _log.info(f"Registering legacy namespace: {p.namespace}") - app.mount(p.namespace, WSGIMiddleware(init_legacy_app(p.load().factory()))) + namespace = p.namespace # type: ignore + + sub_app = p.load().factory() + init_legacy_app(sub_app) + + app.mount(namespace, WSGIMiddleware(sub_app)) # Load all FastAPI apis router_plugins = manager.registry.list("fastapi_router") - _log.info(f"Registering {len(router_plugins)} API-routers") + _log.info(f"Registering {len(router_plugins)} FastAPI router(s)") # Load all namespace plugins as WSGIMiddleware plugins for p in router_plugins: - _log.info(f"Registering router: {p.id}") app.include_router(p.load().factory()) # load `after_server_started` extension points which are run immediately after server started, @@ -138,11 +148,25 @@ def create_visyn_server( for p in plugins: p.plugin.init_app(app) - # Add middleware to access Request "outside" - app.add_middleware(RequestContextMiddleware) + from ..middleware.request_context_plugin import RequestContextPlugin + + # Use starlette-context to store the current request globally, i.e. accessible via context['request'] + app.add_middleware(RawContextMiddleware, plugins=(RequestContextPlugin(),)) + + class UvicornAccessLogFilter(logging.Filter): + def filter(self, record: logging.LogRecord) -> bool: + return 'GET /health HTTP/1.1" 200' not in record.getMessage() + + logging.getLogger("uvicorn.access").addFilter(UvicornAccessLogFilter()) + + app.add_api_route("/health", health) # type: ignore + app.add_api_route("/api/buildInfo.json", build_info) # type: ignore - # TODO: Move up? - app.add_api_route("/health", health) - app.add_api_route("/api/buildInfo.json", build_info) + @app.on_event("startup") + async def change_anyio_total_tokens(): + # FastAPI uses anyio threads to handle sync endpoint concurrently. + # This is a workaround to increase the number of threads to 100, as the default is only 40. + limiter = anyio.to_thread.current_default_thread_limiter() + limiter.total_tokens = manager.settings.tdp_core.total_anyio_tokens return app diff --git a/tdp_core/settings/constants.py b/tdp_core/settings/constants.py index 0edff91a4..c364fcb54 100644 --- a/tdp_core/settings/constants.py +++ b/tdp_core/settings/constants.py @@ -1,18 +1,22 @@ default_logging_dict = { "version": 1, + "disable_existing_loggers": False, "formatters": { - "simple": { - "format": "%(asctime)s %(levelname)s %(name)s: %(message)s", - "datefmt": "%H:%M:%S", + "default": { + "()": "uvicorn.logging.DefaultFormatter", + "format": "%(levelprefix)s %(asctime)s | %(name)30s | %(message)s", + "datefmt": "%Y-%m-%d %H:%M:%S", }, - "line": {"format": "%(asctime)s %(levelname)s %(name)s(%(pathname)s:%(lineno)s): %(message)s"}, + }, + "loggers": { + "uvicorn": {"handlers": ["default"]}, }, "handlers": { - "console": { + "default": { "class": "logging.StreamHandler", - "formatter": "simple", - "stream": "ext://sys.stdout", + "formatter": "default", + "stream": "ext://sys.stderr", } }, - "root": {"level": "INFO", "handlers": ["console"]}, + "root": {"level": "INFO", "handlers": ["default"]}, } diff --git a/tdp_core/settings/model.py b/tdp_core/settings/model.py index 18bfbaf21..0c6f725da 100644 --- a/tdp_core/settings/model.py +++ b/tdp_core/settings/model.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, List, Literal, Optional +from typing import Any, Literal from pydantic import BaseModel, BaseSettings, Extra, Field @@ -23,20 +23,20 @@ class MongoSettings(BaseModel): class DisableSettings(BaseModel): - plugins: List[str] = [] - extensions: List[str] = [] + plugins: list[str] = [] + extensions: list[str] = [] class AlbSecurityStoreSettings(BaseModel): enable: bool = False - cookie_name: Optional[str] = None - signout_url: Optional[str] = None + cookie_name: str | None = None + signout_url: str | None = None class NoSecurityStoreSettings(BaseModel): enable: bool = False user: str = "admin" - roles: List[str] = [] + roles: list[str] = [] class SecurityStoreSettings(BaseModel): @@ -51,17 +51,22 @@ class SecuritySettings(BaseModel): class TDPCoreSettings(BaseModel): + total_anyio_tokens: int = 100 + """ + The total number of threads to use for anyio. FastAPI uses these threads to run sync routes concurrently. + """ + disable: DisableSettings = DisableSettings() - enabled_plugins: List[str] = [] + enabled_plugins: list[str] = [] # TODO: Proper typing. This is 1:1 passed to the logging.config.dictConfig(...). - logging: Dict = Field(default_logging_dict) + logging: dict = Field(default_logging_dict) # tdp_core migrations: DBMigrationSettings = DBMigrationSettings() # phovea_security_flask - users: List[Dict[str, Any]] = Field( + users: list[dict[str, Any]] = Field( [ { "name": "admin", @@ -73,7 +78,7 @@ class TDPCoreSettings(BaseModel): "name": "sam", "salt": "2338b858597b4937ad1c5db4b524f56d", "password": "814cbf874d3da7c01327b50c96bedf7db26357e0b4be25623242a33b33861651c3efd90d5c1a6410a646f356c73adf2de473611dee158672e8ee073767dc88f2", - "roles": ["sam", "admin"], + "roles": ["sam"], }, ] ) @@ -92,7 +97,7 @@ class GlobalSettings(BaseSettings): secret_key: str = "VERY_SECRET_STUFF_T0IB84wlQrdMH8RVT28w" # JWT options mostly inspired by flask-jwt-extended: https://flask-jwt-extended.readthedocs.io/en/stable/options/#general-options - jwt_token_location: List[str] = ["headers", "cookies"] + jwt_token_location: list[str] = ["headers", "cookies"] jwt_expire_in_seconds: int = 24 * 60 * 60 jwt_refresh_if_expiring_in_seconds: int = 30 * 60 jwt_algorithm: str = "HS256" @@ -100,17 +105,17 @@ class GlobalSettings(BaseSettings): jwt_header_name: str = "Authorization" jwt_header_type: str = "Bearer" jwt_cookie_secure: bool = False - jwt_cookie_samesite: str = "Strict" + jwt_cookie_samesite: Literal["lax", "strict", "none"] | None = "strict" jwt_access_cookie_path: str = "/" # General settings for tdp_core - tdp_core: TDPCoreSettings = TDPCoreSettings() + tdp_core: TDPCoreSettings = TDPCoreSettings() # type: ignore @property def is_development_mode(self) -> bool: return self.env.startswith("dev") - def get_nested(self, key: str, default: Any = None) -> Optional[Any]: + def get_nested(self, key: str, default: Any = None) -> Any | None: """ Retrieves the value at the position of the key from the dict-ified settings, or `default` if `None` is found. This method is for legacy purposes only, you should in most cases just use the settings directly. diff --git a/tdp_core/settings/router.py b/tdp_core/settings/router.py index a65b0e0a9..93c4fd11f 100644 --- a/tdp_core/settings/router.py +++ b/tdp_core/settings/router.py @@ -8,17 +8,17 @@ @router.get("/{path:path}") def get_config_path(path: str): - path = path.split("/") - key = path[0] + split_path = path.split("/") + key = split_path[0] plugin = next((p for p in manager.registry.list("tdp-config-safe-keys") if p.id == key), None) if plugin is None: raise HTTPException(status_code=404, detail=f'config key "{key}" not found') - path[0] = plugin.configKey + split_path[0] = plugin.configKey # type: ignore - return manager.settings.get_nested(".".join(path)) + return manager.settings.get_nested(".".join(split_path)) def create(): diff --git a/tdp_core/settings/utils.py b/tdp_core/settings/utils.py index 7cfc07e62..786bee19d 100644 --- a/tdp_core/settings/utils.py +++ b/tdp_core/settings/utils.py @@ -1,14 +1,14 @@ import codecs import logging import os -from typing import Any, Dict +from typing import Any import jsoncfg _log = logging.getLogger(__name__) -def load_workspace_config() -> Dict[str, Any]: +def load_workspace_config() -> dict[str, Any]: """ Loads the global config.json placed at `PHOVEA_CONFIG_PATH` (defaults to `config.json`). """ @@ -18,13 +18,13 @@ def load_workspace_config() -> Dict[str, Any]: _log.info(f"Loading workspace config.json from {global_}") return load_config_file(global_) else: - _log.info(f"No workspace config.json found at {global_}, using empty dict as default") + _log.info(f"No {global_} found, using empty dict") return {} -def load_config_file(path: str) -> Dict[str, Any]: +def load_config_file(path: str) -> dict[str, Any]: """ Opens any `*.json` file and loads it via `jsoncfg.loads`. """ with codecs.open(path, "r", "utf-8") as fi: - return jsoncfg.loads(fi.read()) + return jsoncfg.loads(fi.read()) or {} diff --git a/tdp_core/sql.py b/tdp_core/sql.py index 04d68462a..7b86f4d14 100644 --- a/tdp_core/sql.py +++ b/tdp_core/sql.py @@ -94,10 +94,7 @@ def get_score_data(database, view_name): data_idtype = view.idtype target_idtype = request.values.get("target", data_idtype) - if data_idtype != target_idtype: - mapped_scores = map_scores(r, data_idtype, target_idtype) - else: - mapped_scores = r + mapped_scores = map_scores(r, data_idtype, target_idtype) if data_idtype != target_idtype else r return format(mapped_scores) @@ -148,7 +145,7 @@ def lookup(database, view_name): r_items, more, view = db.lookup(database, view_name, query, page, limit, request.values) - return jsonify(dict(items=r_items, more=more)) + return jsonify({"items": r_items, "more": more}) def create(): diff --git a/tdp_core/sql_filter.py b/tdp_core/sql_filter.py index 244b7c8c4..dd67453fb 100644 --- a/tdp_core/sql_filter.py +++ b/tdp_core/sql_filter.py @@ -38,7 +38,7 @@ def filter_logic(view, args): :return: """ processed_args = MultiDict() - extra_args = dict() + extra_args = {} where_clause = {} for k, v in list(args.lists()): if k.endswith("[]"): @@ -174,14 +174,14 @@ def to_clause(k, v): else: where_group_clauses[group].append((clause, join)) - replacements = dict() + replacements = {} replacements["and_where"] = (" AND " + " AND ".join(c for c, _ in where_default_clause)) if where_default_clause else "" replacements["where"] = (" WHERE " + " AND ".join(c for c, _ in where_default_clause)) if where_default_clause else "" # unique joins - replacements["joins"] = " ".join(set(j for _, j in where_default_clause if j is not None)) + replacements["joins"] = " ".join({j for _, j in where_default_clause if j is not None}) for group, v in list(where_group_clauses.items()): replacements["and_" + group + "_where"] = (" AND " + " AND ".join(c for c, _ in v)) if v else "" replacements[group + "_where"] = (" WHERE " + " AND ".join(c for c, _ in v)) if v else "" - replacements[group + "_joins"] = " ".join(set(j for _, j in v if j is not None)) + replacements[group + "_joins"] = " ".join({j for _, j in v if j is not None}) return replacements, processed_args, extra_args, where_clause diff --git a/tdp_core/sql_use_gevent.py b/tdp_core/sql_use_gevent.py deleted file mode 100644 index b1834822a..000000000 --- a/tdp_core/sql_use_gevent.py +++ /dev/null @@ -1,44 +0,0 @@ -""" -based on http://www.jasonamyers.com/gevent-postgres-sqlalchemy -try to parallelize psycopg2 for gevent -""" -import logging - -_log = logging.getLogger(__name__) - - -def make_psycopg_green(): - """Configure Psycopg to be used with gevent in non-blocking way.""" - if not hasattr(extensions, "set_wait_callback"): - raise ImportError("support for coroutines not available in this Psycopg version (%s)" % psycopg2.__version__) - - extensions.set_wait_callback(gevent_wait_callback) - - -def gevent_wait_callback(conn, timeout=None): - """A wait callback useful to allow gevent to work with Psycopg.""" - while True: - state = conn.poll() - if state == extensions.POLL_OK: - break - elif state == extensions.POLL_READ: - wait_read(conn.fileno(), timeout=timeout) - elif state == extensions.POLL_WRITE: - wait_write(conn.fileno(), timeout=timeout) - else: - raise psycopg2.OperationalError("Bad result from poll: %r" % state) - - -try: - import psycopg2 - from gevent.socket import wait_read, wait_write - from psycopg2 import extensions - - _log.info("patching psycopg2 to be green") - make_psycopg_green() -except ImportError: - pass # nothing to do - - -def create(): - pass diff --git a/tdp_core/storage.py b/tdp_core/storage.py index 85798b0c3..e7f00f0f8 100644 --- a/tdp_core/storage.py +++ b/tdp_core/storage.py @@ -7,7 +7,7 @@ import tdp_core.security as security from . import manager -from .utils import etag, fix_id, random_id +from .utils import fix_id, random_id c = manager.settings.tdp_core.mongo _log = logging.getLogger(__name__) @@ -15,14 +15,13 @@ app = Flask(__name__) -@app.route("/namedsets/", methods=["GET", "POST"]) -@etag +@app.route("/namedsets/", methods=["GET", "POST"]) # type: ignore def list_namedset(): db = MongoClient(c.host, c.port)[c.db_namedsets] if request.method == "GET": - q = dict(idType=request.args["idType"]) if "idType" in request.args else {} - return jsonify(list((d for d in db.namedsets.find(q, {"_id": 0}) if security.can_read(d)))) + q = {"idType": request.args["idType"]} if "idType" in request.args else {} + return jsonify(([d for d in db.namedsets.find(q, {"_id": 0}) if security.can_read(d)])) if request.method == "POST": id = _generate_id() @@ -35,28 +34,27 @@ def list_namedset(): sub_type_key = request.values.get("subTypeKey", "") sub_type_value = request.values.get("subTypeValue", "") type = int(request.values.get("type", "0")) - entry = dict( - id=id, - name=name, - creator=creator, - permissions=permissions, - ids=ids, - idType=id_type, - description=description, - subTypeKey=sub_type_key, - subTypeValue=sub_type_value, - type=type, - ) + entry = { + "id": id, + "name": name, + "creator": creator, + "permissions": permissions, + "ids": ids, + "idType": id_type, + "description": description, + "subTypeKey": sub_type_key, + "subTypeValue": sub_type_value, + "type": type, + } db.namedsets.insert_one(entry) del entry["_id"] return jsonify(entry) -@app.route("/namedset/", methods=["GET", "DELETE", "PUT"]) -@etag +@app.route("/namedset/", methods=["GET", "DELETE", "PUT"]) # type: ignore def get_namedset(namedset_id): db = MongoClient(c.host, c.port)[c.db_namedsets] - result = list(db.namedsets.find(dict(id=namedset_id), {"_id": 0})) + result = list(db.namedsets.find({"id": namedset_id}, {"_id": 0})) entry = result[0] if len(result) > 0 else None if not entry: @@ -70,15 +68,15 @@ def get_namedset(namedset_id): if request.method == "DELETE": if not security.can_write(entry): abort(403, 'Namedset with id "{}" is write protected'.format(namedset_id)) - q = dict(id=namedset_id) + q = {"id": namedset_id} result = db.namedsets.remove(q) return jsonify(result["n"]) # number of deleted documents if request.method == "PUT": if not security.can_write(entry): abort(403, 'Namedset with id "{}" is write protected'.format(namedset_id)) - filter = dict(id=namedset_id) - values = dict() + filter = {"id": namedset_id} + values = {} for key in ["name", "idType", "description", "subTypeKey", "subTypeValue"]: if key in request.form: values[key] = request.form[key] @@ -95,7 +93,7 @@ def get_namedset(namedset_id): def get_namedset_by_id(namedset_id): db = MongoClient(c.host, c.port)[c.db_namedsets] - q = dict(id=namedset_id) + q = {"id": namedset_id} result = list(db.namedsets.find(q, {"_id": 0})) if not result: abort(404, 'Namedset with id "{}" cannot be found'.format(namedset_id)) @@ -110,7 +108,6 @@ def _generate_id(): @app.route("/attachment/", methods=["POST"]) -@etag def post_attachment(): """ simple attachment management @@ -123,16 +120,15 @@ def post_attachment(): creator = security.current_username() permissions = security.DEFAULT_PERMISSION - entry = dict(id=id, creator=creator, permissions=permissions, data=request.data) + entry = {"id": id, "creator": creator, "permissions": permissions, "data": request.data} db.attachments.insert_one(entry) return id -@app.route("/attachment/", methods=["GET", "DELETE", "PUT"]) -@etag +@app.route("/attachment/", methods=["GET", "DELETE", "PUT"]) # type: ignore def get_attachment(attachment_id): db = MongoClient(c.host, c.port)[c.db_namedsets] - result = list(db.attachments.find(dict(id=attachment_id), {"_id": 0})) + result = list(db.attachments.find({"id": attachment_id}, {"_id": 0})) entry = result[0] if len(result) > 0 else None if not entry: @@ -146,16 +142,16 @@ def get_attachment(attachment_id): if request.method == "DELETE": if not security.can_write(entry): abort(403, 'Attachment with id "{}" is write protected'.format(attachment_id)) - q = dict(id=attachment_id) + q = {"id": attachment_id} result = db.attachments.remove(q) return jsonify(result["n"]) # number of deleted documents if request.method == "PUT": if not security.can_write(entry): abort(403, 'Attachment with id "{}" is write protected'.format(attachment_id)) - filter = dict(id=attachment_id) + filter = {"id": attachment_id} # keep the encoded string - query = {"$set": dict(data=request.data)} + query = {"$set": {"data": request.data}} db.attachments.find_one_and_update(filter, query) return attachment_id diff --git a/tdp_core/swagger.py b/tdp_core/swagger.py index dd46a6c60..a077298a2 100644 --- a/tdp_core/swagger.py +++ b/tdp_core/swagger.py @@ -1,8 +1,10 @@ import json import logging from collections import OrderedDict +from typing import Any -from flask import Flask, Response, render_template +from flask import Flask, render_template +from flask.wrappers import Response from jinja2 import Template from . import db, manager @@ -13,7 +15,6 @@ def _gen(): - import io from os import path from yaml import safe_load @@ -22,10 +23,10 @@ def _gen(): here = path.abspath(path.dirname(__file__)) files = [path.join(here, "swagger", p) for p in ["swagger.yml", "db.yml"]] # , 'proxy.yml', 'storage.yml']] - base = yaml_load(files) + base: dict[str, Any] = yaml_load(files) # type: ignore base["paths"] = OrderedDict(sorted(base["paths"].items(), key=lambda t: t[0])) - with io.open(path.join(here, "swagger", "view.tmpl.yml"), "r", encoding="utf-8") as f: + with open(path.join(here, "swagger", "view.tmpl.yml"), encoding="utf-8") as f: template = Template(str(f.read())) tags = base["tags"] @@ -44,7 +45,7 @@ def to_type(t): db.resolve(database) # trigger filling up columns # add database tag - tags.append(dict(name="db_" + database, description=connector.description or "")) + tags.append({"name": "db_" + database, "description": connector.description or ""}) for view, dbview in connector.views.items(): if not dbview.can_access() or dbview.query_type == "private": @@ -60,14 +61,14 @@ def to_type(t): for arg in dbview.arguments: info = dbview.get_argument_info(arg) args.append( - dict( - name=arg, - type=to_type(info.type), - as_list=info.as_list, - enum_values=None, - description=info.description, - example=info.example, - ) + { + "name": arg, + "type": to_type(info.type), + "as_list": info.as_list, + "enum_values": None, + "description": info.description, + "example": info.example, + } ) for arg in (a for a in dbview.replacements if a not in secure_replacements): @@ -76,23 +77,23 @@ def to_type(t): enum_values = None if isinstance(extra, list): enum_values = extra - if extra == int or extra == float: + if extra in (int, float): arg_type = to_type(extra) args.append( - dict( - name=arg, - type=arg_type, - as_list=False, - enum=enum_values, - description="", - ) + { + "name": arg, + "type": arg_type, + "as_list": False, + "enum": enum_values, + "description": "", + } ) filters = set() if "where" in dbview.replacements or "and_where" in dbview.replacements: # filter possible - for k in dbview.filters.keys(): + for k in dbview.filters: filters.add(k) if not filters: for k in list(dbview.columns.keys()): @@ -102,12 +103,12 @@ def to_type(t): # score query magic handling agg_score = connector.agg_score args.append( - dict( - name="agg", - type="string", - as_list=False, - enum=agg_score.valid_replacements.get("agg"), - ) + { + "name": "agg", + "type": "string", + "as_list": False, + "enum": agg_score.valid_replacements.get("agg"), + } ) props = [] @@ -120,9 +121,9 @@ def to_type(t): if dbview.idtype: # assume when id type given then we have ids - props.append(dict(name="_id", type="integer")) + props.append({"name": "_id", "type": "integer"}) if not any((p["name"] == "id" for p in props)): - props.append(dict(name="id", type="string")) + props.append({"name": "id", "type": "string"}) features = { "generic": dbview.query_type in ["generic", "helper", "table"], @@ -149,7 +150,7 @@ def to_type(t): view_yaml = template.render(**keys) # _log.info(view_yaml) part = safe_load(view_yaml) - base = data_merge(base, part) + base = data_merge(base, part) # type: ignore # post process using extensions for p in manager.registry.list("tdp-swagger-postprocessor"): diff --git a/tdp_core/tests/fixtures/app.py b/tdp_core/tests/fixtures/app.py index a69b1ed77..500f8cbcf 100644 --- a/tdp_core/tests/fixtures/app.py +++ b/tdp_core/tests/fixtures/app.py @@ -9,24 +9,24 @@ from ...server.visyn_server import create_visyn_server -@pytest.fixture -def mock_plugins(monkeypatch): +@pytest.fixture() +def _mock_plugins(monkeypatch): def mock_current_user_in_manager(self): return permissions.User(id="admin") monkeypatch.setattr(SecurityManager, "current_user", property(mock_current_user_in_manager)) -@pytest.fixture -def app() -> Generator[FastAPI, Any, None]: - yield create_visyn_server( +@pytest.fixture() +def app() -> FastAPI: + return create_visyn_server( workspace_config={ "tdp_core": {"enabled_plugins": ["tdp_core"]}, } ) -@pytest.fixture +@pytest.fixture() def client(app: FastAPI) -> Generator[TestClient, Any, None]: with TestClient(app) as client: yield client diff --git a/tdp_core/tests/fixtures/postgres_db.py b/tdp_core/tests/fixtures/postgres_db.py index eb4e1bac0..4cb40a934 100644 --- a/tdp_core/tests/fixtures/postgres_db.py +++ b/tdp_core/tests/fixtures/postgres_db.py @@ -1,3 +1,5 @@ +from typing import Generator + import pytest from pytest_postgresql.executor import PostgreSQLExecutor from pytest_postgresql.factories import postgresql_proc @@ -11,7 +13,7 @@ class PostgreSQLExecutorWithUrl(PostgreSQLExecutor): @pytest.fixture(scope="session") -def postgres_db(postgresql_proc) -> PostgreSQLExecutorWithUrl: +def postgres_db(postgresql_proc) -> Generator[PostgreSQLExecutorWithUrl, None, None]: d = postgresql_proc d.url = f"postgresql://{d.user}:{d.password}@{d.host}:{d.port}/{d.dbname}" janitor = DatabaseJanitor(d.user, d.host, d.port, d.dbname, d.version, d.password) diff --git a/tdp_core/tests/test_custom_encoders.py b/tdp_core/tests/test_custom_encoders.py index 2c983fb95..cf8bd32a7 100644 --- a/tdp_core/tests/test_custom_encoders.py +++ b/tdp_core/tests/test_custom_encoders.py @@ -11,9 +11,9 @@ def test_nan_values(app): # list that contains dictionary test_list_nested = [13, 5, 7, 12, test_dict, 22] # convert with to_json - test_result_simple = to_json(dict(myNum=test_var)) - test_result_list_simple = to_json(dict(myNum=test_list_simple)) - test_result_list_nested = to_json(dict(myNum=test_list_nested)) + test_result_simple = to_json({"myNum": test_var}) + test_result_list_simple = to_json({"myNum": test_list_simple}) + test_result_list_nested = to_json({"myNum": test_list_nested}) # make assertions assert test_result_simple == '{"myNum": null}' diff --git a/tdp_core/tests/test_mapper.py b/tdp_core/tests/test_mapper.py index 69003b239..f2b0dea52 100644 --- a/tdp_core/tests/test_mapper.py +++ b/tdp_core/tests/test_mapper.py @@ -19,7 +19,7 @@ def mapper(): ("ID6", "ID7", OneToMoreMappingTable("ID6", "ID7")), ] ) - yield mapper + return mapper def test_merge_2d_arrays(mapper): @@ -65,16 +65,16 @@ def test_merge_2d_arrays_invalid_length(mapper): def test_known_idtypes(mapper): - assert mapper.known_idtypes() == set(["ID1", "ID2", "ID3", "ID4", "ID5", "ID6", "ID7"]) + assert mapper.known_idtypes() == {"ID1", "ID2", "ID3", "ID4", "ID5", "ID6", "ID7"} def test_maps_to(mapper): - assert set(mapper.maps_to("ID1")) == set(["ID2", "ID3", "ID4"]) - assert set(mapper.maps_to("ID2")) == set(["ID1", "ID3", "ID4"]) - assert set(mapper.maps_to("ID3")) == set(["ID1", "ID2", "ID4"]) - assert set(mapper.maps_to("ID4")) == set(["ID1", "ID2", "ID3"]) - assert set(mapper.maps_to("ID5")) == set(["ID6", "ID7"]) - assert set(mapper.maps_to("ID6")) == set(["ID7"]) + assert set(mapper.maps_to("ID1")) == {"ID2", "ID3", "ID4"} + assert set(mapper.maps_to("ID2")) == {"ID1", "ID3", "ID4"} + assert set(mapper.maps_to("ID3")) == {"ID1", "ID2", "ID4"} + assert set(mapper.maps_to("ID4")) == {"ID1", "ID2", "ID3"} + assert set(mapper.maps_to("ID5")) == {"ID6", "ID7"} + assert set(mapper.maps_to("ID6")) == {"ID7"} def test_single_mapping(mapper): @@ -102,7 +102,7 @@ def test_transitive_merge_mapping(mapper): assert mapper("ID5", "ID7", [2, 4]) == [[2, 4, 6, 4, 8, 12, 6, 12, 18], [4, 8, 12, 8, 16, 24, 12, 24, 36]] -class OneToOneMappingTable(object): +class OneToOneMappingTable: def __init__(self, from_idtype, to_idtype): self.from_idtype = from_idtype self.to_idtype = to_idtype @@ -111,7 +111,7 @@ def __call__(self, ids): return [[id] for id in ids] -class OneToTwoMappingTable(object): +class OneToTwoMappingTable: def __init__(self, from_idtype, to_idtype): self.from_idtype = from_idtype self.to_idtype = to_idtype @@ -120,7 +120,7 @@ def __call__(self, ids): return [[id * 2] for id in ids] -class TwoToOneMappingTable(object): +class TwoToOneMappingTable: def __init__(self, from_idtype, to_idtype): self.from_idtype = from_idtype self.to_idtype = to_idtype @@ -129,7 +129,7 @@ def __call__(self, ids): return [[id / 2] for id in ids] -class OneToMoreMappingTable(object): +class OneToMoreMappingTable: def __init__(self, from_idtype, to_idtype): self.from_idtype = from_idtype self.to_idtype = to_idtype diff --git a/tdp_core/tests/test_rdkit_img.py b/tdp_core/tests/test_rdkit_img.py index dee080027..13150f585 100644 --- a/tdp_core/tests/test_rdkit_img.py +++ b/tdp_core/tests/test_rdkit_img.py @@ -32,11 +32,11 @@ def test_invalid(client: TestClient, structure): assert res.status_code == 422 -@pytest.mark.parametrize("structure, expected", mol_expected.items()) +@pytest.mark.parametrize(("structure", "expected"), mol_expected.items()) def test_valid(client: TestClient, structure, expected): res = client.get("/api/rdkit/", params={"structure": structure}) assert res.status_code == 200 - assert res.headers.get("content-type").startswith("image/svg") + assert res.headers["content-type"].startswith("image/svg") hash_compare(res.content, expected) @@ -57,7 +57,7 @@ def test_murcko(client: TestClient): hash_compare(res.content, "5ef9373dd8bcf049a3632968774345527bab7ba757da1eaab943bccfe2ce7e32") -@pytest.mark.parametrize("mol, ref, expected", similarity_data) +@pytest.mark.parametrize(("mol", "ref", "expected"), similarity_data) def test_similarity(client: TestClient, mol, ref, expected): res = client.get("/api/rdkit/similarity/", params={"structure": mol, "reference": ref}) assert res.status_code == 200 @@ -76,11 +76,11 @@ def test_maximum_common_substructure(client: TestClient): def test_maximum_common_substructure_inconsistent(client: TestClient): """This method sometimes returns None -> 500 and sometimes a questionmark""" res = client.post("/api/rdkit/mcs/", json=["C1COCCO1", "CC(COC)OC", "CC1(OCCO1)C", "CCCCCCCO", "CCCCCCO"]) - print(res.content) if res.status_code == 200: hash_compare(res.content, "73e4c61270b280938b647dbad15552167f8cef259f5fc0c6f30a291c787d3b31") else: - assert res.status_code == 204 and res.content == b"null" + assert res.status_code == 204 + assert res.content == b"null" def test_substructures(client: TestClient): diff --git a/tdp_core/tests/test_security_login.py b/tdp_core/tests/test_security_login.py index bcebd4618..509ea1e38 100644 --- a/tdp_core/tests/test_security_login.py +++ b/tdp_core/tests/test_security_login.py @@ -1,5 +1,3 @@ -from typing import Dict - from fastapi.testclient import TestClient from tdp_core import manager @@ -36,7 +34,7 @@ def claims_loader_2(user: User): # Login with the dummy user response = client.post("/login", data={"username": "admin", "password": "admin"}) assert response.status_code == 200 - user: Dict = response.json() + user: dict = response.json() assert user["name"] == "admin" assert user["roles"] == ["admin"] assert user["payload"]["hello"] == "world" diff --git a/tdp_core/utils.py b/tdp_core/utils.py index a90d4d603..dab28d271 100644 --- a/tdp_core/utils.py +++ b/tdp_core/utils.py @@ -1,9 +1,8 @@ import json import logging -from builtins import range -from typing import Union -from flask import Response, abort, make_response, request +from flask import abort, make_response +from flask.wrappers import Response from . import manager @@ -34,7 +33,7 @@ def map_scores(scores, from_idtype, to_idtype): mapped_ids = manager.id_mapping(from_idtype, to_idtype, [r["id"] for r in scores]) mapped_scores = [] - for score, mapped in zip(scores, mapped_ids): + for score, mapped in zip(scores, mapped_ids, strict=False): if not mapped: continue for target_id in mapped: @@ -83,33 +82,6 @@ def no_cache(f): return cache_control("private", "no-cache", "no-store", "max-age=0")(f) -def etag(f): - """Add entity tag (etag) handling to the decorated route.""" - import functools - - @functools.wraps(f) - def wrapped(*args, **kwargs): - if request.method not in ["GET", "HEAD"]: - # etags only make sense for request that are cacheable, so only - # GET and HEAD requests are allowed - return f(*args, **kwargs) - - # invoke the wrapped function and generate a response object from - # its result - rv = f(*args, **kwargs) - rv = make_response(rv) - - # if the response is not a code 200 OK then we let it through - # unchanged - if rv.status_code != 200 or rv.direct_passthrough or not rv.implicit_sequence_conversion: - return rv - - rv.add_etag() - return rv.make_conditional(request) - - return wrapped - - def fix_id(id): """ fixes the id such that is it a resource identifier @@ -134,7 +106,7 @@ def random_id(length): s = string.ascii_lowercase + string.digits id = "" - for i in range(0, length): + for _i in range(0, length): id += random.choice(s) return id @@ -145,7 +117,7 @@ class JSONExtensibleEncoder(json.JSONEncoder): """ def __init__(self, *args, **kwargs): - super(JSONExtensibleEncoder, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) self.encoders = [p.load().factory() for p in manager.registry.list("json-encoder")] @@ -153,7 +125,7 @@ def default(self, o): for encoder in self.encoders: if o in encoder: return encoder(o, self) - return super(JSONExtensibleEncoder, self).default(o) + return super().default(o) def to_json(obj, *args, **kwargs): @@ -171,12 +143,12 @@ def to_json(obj, *args, **kwargs): kwargs["ensure_ascii"] = False # Pandas JSON module has been deprecated and removed. UJson cannot convert numpy arrays, so it cannot be used here. The JSON used here does not support the `double_precision` keyword. - if isinstance(obj, float) or isinstance(obj, dict) or isinstance(obj, list): + if isinstance(obj, (float, dict, list)): obj = _handle_nan_values(obj) - return json.dumps(obj, cls=JSONExtensibleEncoder, *args, **kwargs) + return json.dumps(obj, *args, **kwargs, cls=JSONExtensibleEncoder) -def _handle_nan_values(obj_to_convert: Union[dict, list, float]) -> Union[dict, list, None]: +def _handle_nan_values(obj_to_convert: dict | list | float) -> dict | list | None: """ Convert any NaN values in the given object to None. Previously, Pandas was used to encode NaN to null. This feature has been deprecated and removed, therefore the standard JSON encoder is used which parses NaN instead of null. A custom JSON encoder does not work for converting these values to None because python's @@ -195,7 +167,7 @@ def _handle_nan_values(obj_to_convert: Union[dict, list, float]) -> Union[dict, if isinstance(obj_to_convert, dict): for k, v in obj_to_convert.items(): # value is dictionary or list - if isinstance(v, dict) or isinstance(v, list): + if isinstance(v, (dict, list)): converted_dict[k] = _handle_nan_values(v) else: # value is NaN @@ -227,14 +199,3 @@ def jsonify(obj, *args, **kwargs): :return: """ return Response(to_json(obj, *args, **kwargs), mimetype="application/json; charset=utf-8") - - -def glob_recursivly(path, match): - import fnmatch - import os - - for dirpath, dirnames, files in os.walk(path): - if match is None: - return None - for f in fnmatch.filter(files, match): - yield os.path.join(dirpath, f) diff --git a/tdp_core/xlsx.py b/tdp_core/xlsx.py index ad097ce40..b7a63bb63 100644 --- a/tdp_core/xlsx.py +++ b/tdp_core/xlsx.py @@ -3,7 +3,8 @@ from tempfile import NamedTemporaryFile import dateutil.parser -from flask import Flask, Response, abort, jsonify, request +from flask import Flask, abort, jsonify, request +from flask.wrappers import Response from openpyxl import Workbook, load_workbook from openpyxl.cell import WriteOnlyCell from openpyxl.styles import Font @@ -12,7 +13,7 @@ app = Flask(__name__) -_types = dict(b="boolean", s="string") +_types = {"b": "boolean", "s": "string"} def to_type(cell): @@ -23,7 +24,7 @@ def to_type(cell): if cell.data_type in _types: return _types[cell.data_type] v = cell.value - if isinstance(v, int) or isinstance(v, int): + if isinstance(v, (int, int)): return "int" if isinstance(v, float): return "float" @@ -42,12 +43,12 @@ def _xlsx2json(): if not file: abort(403, "missing file") - wb = load_workbook(file, read_only=True, data_only=True) + wb = load_workbook(file, read_only=True, data_only=True) # type: ignore def convert_row(row, cols): result = {} - for r, c in zip(cols, row): + for r, c in zip(cols, row, strict=False): result[c["name"]] = _convert_value(r.value) return result @@ -58,16 +59,16 @@ def convert_sheet(ws): ws_cols = next(ws_rows, []) ws_first_row = next(ws_rows, []) - cols = [dict(name=h.value, type=to_type(r)) for h, r in zip(ws_cols, ws_first_row)] + cols = [{"name": h.value, "type": to_type(r)} for h, r in zip(ws_cols, ws_first_row, strict=False)] rows = [] rows.append(convert_row(cols, ws_first_row)) for row in ws_rows: rows.append(str(convert_row(cols, row))) - return dict(title=ws.title, columns=cols, rows=rows) + return {"title": ws.title, "columns": cols, "rows": rows} - data = dict(sheets=[convert_sheet(ws) for ws in wb.worksheets]) + data = {"sheets": [convert_sheet(ws) for ws in wb.worksheets]} return jsonify(data) @@ -78,7 +79,7 @@ def _xlsx2json_array(): if not file: abort(403, "missing file") - wb = load_workbook(file, read_only=True, data_only=True) + wb = load_workbook(file, read_only=True, data_only=True) # type: ignore def convert_row(row): return [_convert_value(cell.value) for cell in row] @@ -94,7 +95,7 @@ def convert_row(row): @app.route("/from_json", methods=["POST"]) def _json2xlsx(): - data = request.json + data: dict = request.json # type: ignore wb = Workbook(write_only=True) bold = Font(bold=True) @@ -102,9 +103,9 @@ def _json2xlsx(): def to_cell(v): # If the native value cannot be used as Excel value, used the stringified version instead. try: - return WriteOnlyCell(ws, value=v) + return WriteOnlyCell(ws, value=v) # type: ignore except ValueError: - return WriteOnlyCell(ws, value=str(v)) + return WriteOnlyCell(ws, value=str(v)) # type: ignore def to_header(v): c = to_cell(v) @@ -139,7 +140,7 @@ def to_value(v, coltype): @app.route("/from_json_array", methods=["POST"]) def _json_array2xlsx(): - data = request.json + data: list = request.json # type: ignore wb = Workbook(write_only=True) ws = wb.create_sheet() diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index d7d6dd4a6..866dfd91d 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -1,10 +1,13 @@ { "extends": "visyn_scripts/config/tsconfig.eslint.template.json", "include": [ + "cypress.config.ts", + "cypress/**/*.ts", + "cypress/**/*.tsx", "src/**/*.ts", "src/**/*.tsx", - "tsd.d.ts", "tests/**/*.ts", "tests/**/*.tsx", + "tsd.d.ts" ] }