visualifyjs 2.5.3 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/mem/TIMELINE.md +36 -0
- package/.claude/mem/notes/2026-02-11-3d-visualization-docs-fix-external-script-solution.md +24 -0
- package/.claude/mem/notes/2026-02-11-3d-visualization-docs-fix-session-summary.md +43 -0
- package/.claude/mem/notes/2026-02-11-cli-fix-editor-command-alias.md +26 -0
- package/.claude/mem/notes/2026-02-11-phase-3-developer-experience-completed.md +51 -0
- package/.claude/mem/notes/2026-02-11-phase-4-web-workers-implementation-complete.md +59 -0
- package/.claude/mem/notes/2026-02-11-visualify-phase-2-3d-visualization-complete.md +50 -0
- package/.claude/mem/notes/2026-02-11-visualify-phase-2-committed-ready-for-phase-3.md +33 -0
- package/.claude/mem/notes/2026-02-11-visualify-phase-3-complete-developer-experience.md +52 -0
- package/.claude/mem/notes/2026-02-11-visualify-repository-cleanup-complete.md +28 -0
- package/.claude/mem/notes/2026-02-18-codebase-cleanup-docsify-plugin-documentation.md +37 -0
- package/.claude/mem/notes/2026-02-19-css-grid-layout-fix-displaycontents-on-vcontroller.md +18 -0
- package/.claude/mem/notes/2026-02-19-docsify-plugin-fixes-latex-and-visualify-code-bloc.md +26 -0
- package/.claude/mem/notes/2026-02-19-page-mode-docs-update-decisions.md +23 -0
- package/.claude/mem/notes/2026-02-19-react-context-infinite-re-render-loop-fix-pattern.md +31 -0
- package/.claude/mem/notes/2026-02-19-version-300-bump-and-build-fixes.md +32 -0
- package/.claude/mem/notes/2026-02-19-visualify-build-deployment-architecture-bug-fixes.md +25 -0
- package/.claude/mem/notes/2026-02-19-visualify-dist-iife-self-contained-build-config.md +30 -0
- package/.claude/mem/notes/2026-02-19-visualify-infinite-loop-i18n-fixes.md +31 -0
- package/.claude/mem/notes/2026-02-19-visualify-v3-bundle-splitting-docs-restructuring.md +32 -0
- package/.claude/mem/notes/2026-02-20-bundle-externalization-final-architecture.md +29 -0
- package/.claude/mem/notes/2026-02-20-chromium-page-fix-unstable-keys-and-double-event-b.md +27 -0
- package/.claude/mem/notes/2026-02-20-console-cleanup-bundle-optimization-commit.md +20 -0
- package/.claude/mem/notes/2026-02-20-dotbio-dot-plot-fix-useeffect-dependency.md +21 -0
- package/.claude/mem/notes/2026-02-20-public-folder-cleanup-and-readme-rewrite.md +25 -0
- package/.claude/mem/notes/2026-02-20-v300-release-and-beta-channel-strategy.md +29 -0
- package/.claude/mem/notes/2026-02-20-visium-background-image-unknown-legend-fix.md +19 -0
- package/.claude/mem/notes/2026-02-20-visualify-cdn-loader-bundle-externalization.md +34 -0
- package/.claude/mem/sessions/session-2026-02-20-031524.md +54 -0
- package/.claude/settings.local.json +21 -0
- package/.github/workflows/static.yml.bak +51 -51
- package/.sisyphus/boulder.json +65 -0
- package/.sisyphus/plans/phase-4-advanced-optimizations.md +217 -0
- package/LICENSE +674 -674
- package/README.md +94 -59
- package/config-overrides.js +31 -31
- package/dist/stats.html +4949 -0
- package/dist/visualify-3d.esm.js +1 -0
- package/dist/visualify-3d.js +1 -0
- package/dist/visualify-core.esm.js +1 -0
- package/dist/visualify-core.js +1 -0
- package/dist/visualify-docs.esm.js +1 -0
- package/dist/visualify-docs.js +1 -0
- package/dist/visualify-loader.js +1 -0
- package/dist/visualify-pages.esm.js +1 -0
- package/dist/visualify-pages.js +1 -0
- package/dist/visualify-portal.esm.js +1 -0
- package/dist/visualify-portal.js +1 -0
- package/dist/visualify-shared.js +26571 -0
- package/dist/visualify.js +1 -188
- package/docs/CHANGELOG.md +148 -0
- package/docs/cli/commands.md +513 -0
- package/docs/configuration/visualify-json.md +474 -0
- package/docs/docs/3d-visualization.md +374 -0
- package/docs/docs/CLI.md +303 -34
- package/docs/docs/README.md +65 -65
- package/docs/docs/Rechart/bar.md +190 -190
- package/docs/docs/Rechart/funnel.md +241 -193
- package/docs/docs/Rechart/line.md +355 -355
- package/docs/docs/Rechart/pie.md +225 -225
- package/docs/docs/Rechart/radar.md +253 -253
- package/docs/docs/Rechart/scatter.md +298 -0
- package/docs/docs/_404.md +51 -51
- package/docs/docs/_coverpage.md +11 -11
- package/docs/docs/_sidebar.md +54 -43
- package/docs/docs/components/dotBio.md +87 -34
- package/docs/docs/components/echart.md +171 -82
- package/docs/docs/components/html.md +61 -34
- package/docs/docs/components/macaron.md +156 -145
- package/docs/docs/components/markdown.md +42 -0
- package/docs/docs/components/more.md +183 -142
- package/docs/docs/components/plotly.md +132 -62
- package/docs/docs/components/scatterL.md +171 -70
- package/docs/docs/components/visium.md +112 -57
- package/docs/docs/configuration.md +121 -123
- package/docs/docs/deploy.md +31 -31
- package/docs/docs/docsify-plugin.md +655 -0
- package/docs/docs/hmr.md +165 -0
- package/docs/docs/i18n.md +332 -0
- package/docs/docs/log.md +30 -1
- package/docs/docs/more-pages.md +23 -23
- package/docs/docs/quickstart.md +148 -119
- package/docs/docs/rechart-attributes.md +74 -74
- package/docs/docs/rechart-basic-usage.md +160 -162
- package/docs/docs/theme.md +5 -5
- package/docs/docs/typescript.md +306 -0
- package/docs/docs/visual-editor.md +359 -0
- package/docs/index.html +85 -71
- package/docs/manifest.json +23 -23
- package/docs/migration/v3-migration.md +392 -0
- package/docs/static/css/fluff-stuff.css +169 -169
- package/docs/static/css/font-awesome.min.css +4 -4
- package/docs/static/css/visualify.css +6 -25
- package/docs/static/js/3d-viz-examples.js +181 -0
- package/docs/static/js/configuration.js +630 -448
- package/docs/static/js/visualify.js +1 -188
- package/package.json +106 -84
- package/rollup.config.mjs +766 -76
- package/src/_css/404.css +115 -115
- package/src/_css/App.css +37 -37
- package/src/_css/autoSuggestion.css +26 -26
- package/src/_css/circular-progress.css +32 -32
- package/src/_css/index.css +36 -36
- package/src/_css/modern.css +350 -25
- package/src/_media/corner.svg +8 -8
- package/src/_media/download.svg +3 -3
- package/src/_media/logo.svg +14 -14
- package/src/_test/App.test.js +15 -15
- package/src/_utils/reportWebVitals.js +13 -13
- package/src/a11y/README.md +177 -0
- package/src/a11y/aria-labels.js +339 -0
- package/src/a11y/color-contrast.js +535 -0
- package/src/a11y/index.js +197 -0
- package/src/a11y/keyboard-nav.js +523 -0
- package/src/a11y/styles.css +165 -0
- package/src/cli/commands/dev.js +214 -0
- package/src/cli/commands/docs.js +521 -0
- package/src/cli/commands/edit.js +379 -0
- package/src/cli/commands/init.js +213 -0
- package/src/cli/commands/portal.js +236 -0
- package/src/cli/dev-server.js +530 -0
- package/src/cli/hmr.js +456 -0
- package/src/cli/index.js +180 -0
- package/src/cli/utils/config.js +207 -0
- package/src/cli/utils/logger.js +241 -0
- package/src/config/defaults.ts +122 -0
- package/src/config/index.ts +72 -0
- package/src/config/loader.ts +478 -0
- package/src/config/schema.ts +227 -0
- package/src/config/validator.ts +337 -0
- package/src/core/appContext.js +34 -27
- package/src/core/components/Bar.js +383 -0
- package/src/core/components/Bar3D.js +473 -0
- package/src/core/components/LargeDatasetChart.js +296 -0
- package/src/core/components/Line3D.js +310 -0
- package/src/core/components/Scatter.js +392 -188
- package/src/core/components/Scatter3D.js +455 -0
- package/src/core/components/ScatterBio.js +601 -572
- package/src/core/components/Surface3D.js +326 -0
- package/src/core/components/ThreeCustom.js +648 -0
- package/src/core/components/ThreeScene.js +459 -0
- package/src/core/components/VisiumPlot.js +191 -165
- package/src/core/components/browser.js +42 -42
- package/src/core/components/dotplot.js +413 -413
- package/src/core/components/html.js +29 -29
- package/src/core/components/list.js +178 -178
- package/src/core/components/macaron.js +206 -201
- package/src/core/components/markdown.js +56 -56
- package/src/core/components/parser.scatterBio.js +582 -579
- package/src/core/components/ratio.js +82 -80
- package/src/core/components/scatterL.js +206 -173
- package/src/core/components/searchbar.js +156 -131
- package/src/core/components/selection.js +310 -193
- package/src/core/components/timeline.js +236 -281
- package/src/core/components/visium.js +114 -97
- package/src/core/data-processor.js +413 -0
- package/src/core/fetch/condfetch.js +82 -82
- package/src/core/fetch/fetch.js +92 -92
- package/src/core/fetch/json.js +29 -29
- package/src/core/fetch/vfetch.js +42 -42
- package/src/core/hmr-client.js +724 -0
- package/src/core/liveEditor.js +44 -44
- package/src/core/modules/codeEditorWithPreview.js +104 -104
- package/src/core/modules/echarts/common.js +20 -20
- package/src/core/modules/echarts/gl.js +228 -0
- package/src/core/modules/echarts/presetHandler.js +41 -41
- package/src/core/modules/echarts/presets/esodev.chromium.js +172 -172
- package/src/core/modules/echarts/presets/esodev.codex.js +130 -130
- package/src/core/modules/echarts/presets/esodev.visium.js +123 -123
- package/src/core/modules/echarts/presets/mmtrbc.js +186 -186
- package/src/core/modules/echarts.js +70 -71
- package/src/core/modules/echartsUtils.js +43 -43
- package/src/core/modules/echartswitcher.js +227 -152
- package/src/core/modules/replotly/presetHandler.js +24 -24
- package/src/core/modules/replotly/presets/minimum.js +18 -18
- package/src/core/modules/replotly/presets/mmtrbc.dot.js +114 -114
- package/src/core/modules/replotly/presets/mmtrbc.violin.js +100 -100
- package/src/core/modules/replotly.js +74 -71
- package/src/core/modules/threejs/Camera.js +373 -0
- package/src/core/modules/threejs/Lighting.js +459 -0
- package/src/core/modules/threejs/Renderer.js +364 -0
- package/src/core/modules/threejs/Scene.js +266 -0
- package/src/core/modules/threejs/index.js +155 -0
- package/src/core/pages/404.js +50 -50
- package/src/core/pages/error.js +27 -27
- package/src/core/pages/jsonPage.js +62 -62
- package/src/core/pages/loading.js +44 -44
- package/src/core/parser/echart.data.js +204 -183
- package/src/core/parser/echart.features.js +125 -125
- package/src/core/parser/echart.general.js +147 -143
- package/src/core/parser/echart.hilbert.js +57 -57
- package/src/core/parser/echart.parser.js +210 -210
- package/src/core/parser/echart.series.js +67 -67
- package/src/core/parser/echart.types.js +76 -76
- package/src/core/parser/plotly.config.js +10 -10
- package/src/core/parser/plotly.data.js +132 -132
- package/src/core/parser/plotly.layout.js +9 -9
- package/src/core/parser/plotly.violin.js +18 -18
- package/src/core/recharts.js +361 -62
- package/src/core/router/alias.js +49 -49
- package/src/core/router/jsonRouter.js +31 -31
- package/src/core/themes/modern.js +32 -32
- package/src/core/themes/themeSelector.js +33 -33
- package/src/core/visualify.js +213 -47
- package/src/core/widgets/circularProgress.js +23 -23
- package/src/core/widgets/controller.js +116 -83
- package/src/core/widgets/errorBoundary.js +36 -36
- package/src/core/widgets/footer.js +185 -177
- package/src/core/widgets/header.js +238 -234
- package/src/core/widgets/layout/Grid.js +31 -31
- package/src/core/widgets/layout.js +36 -36
- package/src/core/widgets/mapping.js +56 -42
- package/src/core/workers/data-worker.js +349 -0
- package/src/core/workers/worker-pool.js +396 -0
- package/src/docsify/bundle.js +215 -0
- package/src/docsify/markdown.js +271 -0
- package/src/docsify/plugin.js +268 -0
- package/src/editor/README.md +172 -0
- package/src/editor/components/ChartBuilder.jsx +341 -0
- package/src/editor/components/ChartTypeSidebar.jsx +91 -0
- package/src/editor/components/Editor.jsx +367 -0
- package/src/editor/components/Preview.jsx +446 -0
- package/src/editor/components/PropertyPanel.jsx +468 -0
- package/src/editor/components/StatusBar.jsx +85 -0
- package/src/editor/context/EditorContext.js +248 -0
- package/src/editor/hooks/useDebounce.js +32 -0
- package/src/editor/index.js +315 -0
- package/src/editor/styles/editor.css +637 -0
- package/src/editor/utils/chartValidator.js +263 -0
- package/src/entries/charts3d.js +70 -0
- package/src/entries/core.js +78 -0
- package/src/entries/docs.js +154 -0
- package/src/entries/pages.js +93 -0
- package/src/entries/portal.js +204 -0
- package/src/entries/shared.js +50 -0
- package/src/i18n/formatters.js +455 -0
- package/src/i18n/index.js +169 -0
- package/src/i18n/locales/ar.json +137 -0
- package/src/i18n/locales/de.json +137 -0
- package/src/i18n/locales/en.json +137 -0
- package/src/i18n/locales/es.json +137 -0
- package/src/i18n/locales/he.json +137 -0
- package/src/i18n/locales/zh.json +137 -0
- package/src/i18n/rtl.css +183 -0
- package/src/index.js +82 -62
- package/src/loader.js +103 -0
- package/src/setupTests.js +5 -5
- package/tsconfig.json +51 -0
- package/types/charts.d.ts +569 -0
- package/types/components.d.ts +441 -0
- package/types/config.d.ts +199 -0
- package/types/index.d.ts +353 -0
|
@@ -1,142 +1,183 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
1
|
+
# Utility Components
|
|
2
|
+
|
|
3
|
+
These components provide UI controls and interactive elements for page mode layouts. They work alongside visualization components to create complete data exploration interfaces.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
| Component | Purpose | Interactive |
|
|
8
|
+
|-----------|---------|-------------|
|
|
9
|
+
| SearchBar | Gene/item search with autocomplete | Yes - triggers other components |
|
|
10
|
+
| List | Display and manage a list of items | Yes - add/remove/clear |
|
|
11
|
+
| RatioBox | Radio button selector for options | Yes - stores selection globally |
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## SearchBar
|
|
16
|
+
|
|
17
|
+
The SearchBar component provides a search input with autocomplete, powered by an external data source. When a user selects a result, the value can be saved to the global data store for use by other components.
|
|
18
|
+
|
|
19
|
+
### Properties
|
|
20
|
+
|
|
21
|
+
| Property | Type | Required | Description |
|
|
22
|
+
|----------|------|----------|-------------|
|
|
23
|
+
| `type` | string | Yes | Must be `"SearchBar"`. |
|
|
24
|
+
| `id` | string | Yes | Unique identifier for the component. |
|
|
25
|
+
| `row` | int | No | The row in which the component is displayed. |
|
|
26
|
+
| `col` | int | No | The column in which the component is displayed. |
|
|
27
|
+
| `title` | string | No | Label displayed above the search input. |
|
|
28
|
+
| `config` | object | Yes | Configuration for data source and behavior. See below. |
|
|
29
|
+
| `style` | object | No | CSS styles applied to the component container. |
|
|
30
|
+
|
|
31
|
+
#### Config Properties
|
|
32
|
+
|
|
33
|
+
| Property | Type | Description |
|
|
34
|
+
|----------|------|-------------|
|
|
35
|
+
| `save` | boolean / string | If `true`, saves the selected value to global data using the component `id` as the key. If a string, uses that string as the global data key instead. |
|
|
36
|
+
| `source` | object | Defines the autocomplete data source. |
|
|
37
|
+
| `source.name` | string | Name identifier for the data source. |
|
|
38
|
+
| `source.url` | string | API endpoint that returns the list of searchable items. |
|
|
39
|
+
| `source.responseKey` | string | Key in the API response that contains the list of items. |
|
|
40
|
+
|
|
41
|
+
### Example
|
|
42
|
+
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"id": "mmtrbc_gene",
|
|
46
|
+
"type": "SearchBar",
|
|
47
|
+
"title": "Search Gene",
|
|
48
|
+
"config": {
|
|
49
|
+
"save": true,
|
|
50
|
+
"source": {
|
|
51
|
+
"name": "genelist",
|
|
52
|
+
"url": "https://visualify.pharmacy.arizona.edu/api/mmtrbc/genelist",
|
|
53
|
+
"responseKey": "gene"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Interaction with Other Components
|
|
60
|
+
|
|
61
|
+
When `save` is enabled, the selected search result is stored in the global data store. Other components (such as charts or tables) can reference this value to filter or update their displayed data. For example, a SearchBar with `id: "mmtrbc_gene"` makes the selected gene available to any component that reads from the `mmtrbc_gene` global key.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## List
|
|
66
|
+
|
|
67
|
+
The List component displays a managed list of items. Users can add items (typically from a SearchBar), remove individual items, or clear the entire list. It is commonly used to build a working set of genes or other entities for downstream analysis.
|
|
68
|
+
|
|
69
|
+
### Properties
|
|
70
|
+
|
|
71
|
+
| Property | Type | Required | Description |
|
|
72
|
+
|----------|------|----------|-------------|
|
|
73
|
+
| `type` | string | Yes | Must be `"List"`. |
|
|
74
|
+
| `id` | string | Yes | Unique identifier for the component. |
|
|
75
|
+
| `row` | int | No | The row in which the component is displayed. |
|
|
76
|
+
| `col` | int | No | The column in which the component is displayed. |
|
|
77
|
+
| `rowspan` | int | No | The number of rows the component spans. |
|
|
78
|
+
| `title` | string | No | Label displayed above the list. |
|
|
79
|
+
| `btn` | object | No | Configuration for action buttons (add, remove, clear). See below. |
|
|
80
|
+
| `style` | object | No | CSS styles applied to the component container. |
|
|
81
|
+
|
|
82
|
+
#### Button Properties
|
|
83
|
+
|
|
84
|
+
Each button (`add`, `remove`, `clear`) accepts the following:
|
|
85
|
+
|
|
86
|
+
| Property | Type | Description |
|
|
87
|
+
|----------|------|-------------|
|
|
88
|
+
| `text` | string | Label displayed on the button. |
|
|
89
|
+
| `show` | boolean | Whether the button is visible. |
|
|
90
|
+
| `style` | object | CSS styles for the button. |
|
|
91
|
+
| `msg` | string | Confirmation or success message (used by `clear`). |
|
|
92
|
+
| `addfrom` | string | ID of the SearchBar component to pull values from (used by `add`). |
|
|
93
|
+
|
|
94
|
+
### Example
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"id": "genelist",
|
|
99
|
+
"type": "List",
|
|
100
|
+
"row": 2,
|
|
101
|
+
"col": 1,
|
|
102
|
+
"rowspan": 3,
|
|
103
|
+
"btn": {
|
|
104
|
+
"add": {
|
|
105
|
+
"text": "Add",
|
|
106
|
+
"show": true,
|
|
107
|
+
"style": {
|
|
108
|
+
"color": "white",
|
|
109
|
+
"backgroundColor": "#FF8E8E",
|
|
110
|
+
"fontSize": "12px",
|
|
111
|
+
"border": "none",
|
|
112
|
+
"cursor": "pointer"
|
|
113
|
+
},
|
|
114
|
+
"addfrom": "mmtrbc_gene"
|
|
115
|
+
},
|
|
116
|
+
"clear": {
|
|
117
|
+
"text": "Clear",
|
|
118
|
+
"show": true,
|
|
119
|
+
"msg": "Successfully cleared the list",
|
|
120
|
+
"style": {}
|
|
121
|
+
},
|
|
122
|
+
"remove": {
|
|
123
|
+
"show": true,
|
|
124
|
+
"style": {
|
|
125
|
+
"color": "white",
|
|
126
|
+
"backgroundColor": "#f44336"
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Interaction with Other Components
|
|
134
|
+
|
|
135
|
+
The List component connects to a SearchBar through the `addfrom` property on the `add` button. In the example above, `"addfrom": "mmtrbc_gene"` pulls the currently selected value from the SearchBar with `id: "mmtrbc_gene"`. The list contents can then be consumed by visualization components that need a set of items to display.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## RatioBox
|
|
140
|
+
|
|
141
|
+
The RatioBox component renders a group of radio buttons, allowing the user to select one option from a predefined set. The selected value is stored in the global data store so that other components can react to the user's choice.
|
|
142
|
+
|
|
143
|
+
### Properties
|
|
144
|
+
|
|
145
|
+
| Property | Type | Required | Description |
|
|
146
|
+
|----------|------|----------|-------------|
|
|
147
|
+
| `type` | string | Yes | Must be `"RatioBox"`. |
|
|
148
|
+
| `id` | string | Yes | Unique identifier for the component. |
|
|
149
|
+
| `row` | int | No | The row in which the component is displayed. |
|
|
150
|
+
| `col` | int | No | The column in which the component is displayed. |
|
|
151
|
+
| `title` | string | No | Label displayed above the radio buttons. |
|
|
152
|
+
| `choice` | array | Yes | Array of strings representing the available options. |
|
|
153
|
+
| `val` | string | Yes | Name of the global variable where the selected choice is stored. |
|
|
154
|
+
| `style` | object | No | CSS styles applied to the component container. |
|
|
155
|
+
|
|
156
|
+
### Example
|
|
157
|
+
|
|
158
|
+
```json
|
|
159
|
+
{
|
|
160
|
+
"type": "RatioBox",
|
|
161
|
+
"id": "chrom_colour",
|
|
162
|
+
"row": 2,
|
|
163
|
+
"col": 1,
|
|
164
|
+
"choice": ["Cell Type", "Stage"],
|
|
165
|
+
"style": {
|
|
166
|
+
"width": "350px"
|
|
167
|
+
},
|
|
168
|
+
"val": "chrom_colour",
|
|
169
|
+
"title": "Colour by"
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Interaction with Other Components
|
|
174
|
+
|
|
175
|
+
The selected option is saved to the global variable specified by `val`. In the example above, choosing "Cell Type" or "Stage" updates the `chrom_colour` global variable. Visualization components (such as scatter plots or UMAP charts) can reference this variable to change their color mapping dynamically.
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## See Also
|
|
180
|
+
|
|
181
|
+
- [HTML Component](components/html.md) -- Render raw HTML content in page layouts.
|
|
182
|
+
- [Markdown Component](components/markdown.md) -- Render Markdown content in page layouts.
|
|
183
|
+
- [Page Mode Overview](bindData/bindPage.md) -- How components are arranged in page layouts.
|
|
@@ -1,62 +1,132 @@
|
|
|
1
|
-
# Plotly Component
|
|
2
|
-
|
|
3
|
-
The Plotly component
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
1
|
+
# Plotly Component
|
|
2
|
+
|
|
3
|
+
The Plotly component integrates Plotly.js for advanced interactive visualizations. It supports scatter plots, violin plots, and other Plotly chart types with dynamic data fetching from backend APIs. Plotly provides additional interactivity like zoom, pan, hover tooltips, and data selection that complement the ECharts-based visualizations.
|
|
4
|
+
|
|
5
|
+
> **Note:** This component requires a backend API to supply data. A live demo is not available in this documentation.
|
|
6
|
+
|
|
7
|
+
## How It Works
|
|
8
|
+
|
|
9
|
+
The Plotly component uses a parser-based data pipeline. It fetches data from one or more backend sources, transforms the responses based on the configured parser type, and renders the result as an interactive Plotly chart.
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
+-----------+ +------------+ +-----------+ +----------------+
|
|
13
|
+
| Backend | ---> | Parser | ---> | Plotly | ---> | Interactive |
|
|
14
|
+
| API(s) | | (transform)| | Render | | Chart Output |
|
|
15
|
+
+-----------+ +------------+ +-----------+ +----------------+
|
|
16
|
+
| |
|
|
17
|
+
| sources[] | type: "scatter" | "violin" | ...
|
|
18
|
+
| responseKey | exclude: [...]
|
|
19
|
+
+------------------+
|
|
20
|
+
|
|
21
|
+
Trigger (optional)
|
|
22
|
+
+------------+ Listens for events from other components
|
|
23
|
+
| Event | ---> to refresh or filter the chart dynamically
|
|
24
|
+
+------------+
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
When multiple sources are defined, the parser merges them before rendering. For example, a scatter plot may combine cell metadata (coordinates, cell types) with gene expression values (color overlay).
|
|
28
|
+
|
|
29
|
+
## Properties
|
|
30
|
+
|
|
31
|
+
| Property | Type | Required | Description |
|
|
32
|
+
|---|---|---|---|
|
|
33
|
+
| `type` | string | Yes | Must be set to `"Plotly"`. |
|
|
34
|
+
| `id` | string | Yes | A unique identifier for this component instance. Used for cross-component references and event targeting. |
|
|
35
|
+
| `row` | int | No | The grid row position where the component is placed (1-based). |
|
|
36
|
+
| `col` | int | No | The grid column position where the component is placed (1-based). |
|
|
37
|
+
| `rowspan` | int | No | The number of grid rows this component spans. Defaults to 1. |
|
|
38
|
+
| `colspan` | int | No | The number of grid columns this component spans. Defaults to 1. |
|
|
39
|
+
| `settings` | object | No | Display and behavior settings. See the **Settings** table below. |
|
|
40
|
+
| `parser` | object | Yes | Defines data sources, transformations, and chart type. See the **Parser** table below. |
|
|
41
|
+
| `trigger` | object | No | Configures event listeners so this component reacts to changes in other components (e.g., gene selection). |
|
|
42
|
+
|
|
43
|
+
### Settings
|
|
44
|
+
|
|
45
|
+
| Property | Type | Default | Description |
|
|
46
|
+
|---|---|---|---|
|
|
47
|
+
| `preset` | string | - | A named preset that applies predefined styling and layout options (e.g., `"mmtrbc"`). |
|
|
48
|
+
| `ignoreEmptyData` | boolean | `false` | When `true`, the component will not render an error or placeholder if the API returns empty data. |
|
|
49
|
+
|
|
50
|
+
### Parser
|
|
51
|
+
|
|
52
|
+
| Property | Type | Required | Description |
|
|
53
|
+
|---|---|---|---|
|
|
54
|
+
| `sources` | array | Yes | An array of data source objects. Each source defines a backend endpoint to fetch data from. |
|
|
55
|
+
| `sources[].name` | string | Yes | A label identifying this data source (e.g., `"metadata"`, `"gene"`). Used internally for data merging. |
|
|
56
|
+
| `sources[].url` | string | Yes | The backend URL that returns the data for this source. |
|
|
57
|
+
| `sources[].responseKey` | string | No | A dot-path key to extract a specific field from the API response. For example, `"gene"` extracts `response.gene`. |
|
|
58
|
+
| `exclude` | array | No | An array of category names to exclude from the rendered chart. Useful for filtering out unwanted groups. |
|
|
59
|
+
| `type` | string | Yes | The Plotly chart type to render. Supported values include `"scatter"` and `"violin"`. |
|
|
60
|
+
|
|
61
|
+
## Example
|
|
62
|
+
|
|
63
|
+
### Scatter Plot (t-SNE / UMAP)
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"id": "mmtrbc_tsne",
|
|
68
|
+
"type": "Plotly",
|
|
69
|
+
"col": 2,
|
|
70
|
+
"rowspan": 3,
|
|
71
|
+
"settings": {
|
|
72
|
+
"preset": "mmtrbc",
|
|
73
|
+
"ignoreEmptyData": true
|
|
74
|
+
},
|
|
75
|
+
"parser": {
|
|
76
|
+
"sources": [
|
|
77
|
+
{
|
|
78
|
+
// Cell-type metadata with x/y coordinates
|
|
79
|
+
"name": "metadata",
|
|
80
|
+
"url": "<your-backend-url>/api/metadata"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
// Gene expression values overlaid as color
|
|
84
|
+
"name": "gene",
|
|
85
|
+
"url": "<your-backend-url>/api/gene",
|
|
86
|
+
"responseKey": "gene"
|
|
87
|
+
}
|
|
88
|
+
],
|
|
89
|
+
// Exclude specific cell-type categories from the plot
|
|
90
|
+
"exclude": ["BC-Mes", "BC-NE", "BC-Im"],
|
|
91
|
+
"type": "scatter"
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Violin Plot
|
|
97
|
+
|
|
98
|
+
```json
|
|
99
|
+
{
|
|
100
|
+
"id": "mmtrbc_violin",
|
|
101
|
+
"type": "Plotly",
|
|
102
|
+
"col": 1,
|
|
103
|
+
"rowspan": 3,
|
|
104
|
+
"settings": {
|
|
105
|
+
"preset": "mmtrbc",
|
|
106
|
+
"ignoreEmptyData": true
|
|
107
|
+
},
|
|
108
|
+
"parser": {
|
|
109
|
+
"sources": [
|
|
110
|
+
{
|
|
111
|
+
"name": "metadata",
|
|
112
|
+
"url": "<your-backend-url>/api/metadata"
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"name": "gene",
|
|
116
|
+
"url": "<your-backend-url>/api/gene",
|
|
117
|
+
"responseKey": "gene"
|
|
118
|
+
}
|
|
119
|
+
],
|
|
120
|
+
"exclude": ["BC-Mes", "BC-NE"],
|
|
121
|
+
// Renders a violin plot showing expression distribution per cell type
|
|
122
|
+
"type": "violin"
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## See Also
|
|
128
|
+
|
|
129
|
+
- [DotBio Component](/components/dotBio.md) - Dot plot for gene expression across cell types
|
|
130
|
+
- [Echart Component](/components/echart.md) - General-purpose chart component using ECharts
|
|
131
|
+
- [Configuration](/configuration.md) - How to set up page mode
|
|
132
|
+
- [MmTrBC Showcase](https://visualify.pharmacy.arizona.edu/MmTrBC/) - Live project using Plotly scatter and violin plots
|