visualifyjs 2.5.3-2.dev → 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 -241
- 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 -298
- package/docs/docs/_404.md +51 -51
- package/docs/docs/_coverpage.md +11 -11
- package/docs/docs/_sidebar.md +54 -44
- 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 -121
- 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 -9
- package/docs/docs/more-pages.md +23 -23
- package/docs/docs/quickstart.md +148 -124
- 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 -587
- 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 -147
- 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
package/docs/docs/_404.md
CHANGED
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
<style>
|
|
2
|
-
body {
|
|
3
|
-
font-family: Arial, sans-serif;
|
|
4
|
-
display: flex;
|
|
5
|
-
justify-content: center;
|
|
6
|
-
align-items: center;
|
|
7
|
-
height: 100vh;
|
|
8
|
-
margin: 0;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
.container {
|
|
12
|
-
text-align: center;
|
|
13
|
-
background-color: #ffffff;
|
|
14
|
-
padding: 50px;
|
|
15
|
-
margin-top: 5vh;
|
|
16
|
-
border-radius: 10px;
|
|
17
|
-
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
.container h1 {
|
|
21
|
-
font-size: 72px;
|
|
22
|
-
margin-bottom: 20px;
|
|
23
|
-
color: #ff5252;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
.container p {
|
|
27
|
-
font-size: 24px;
|
|
28
|
-
margin-bottom: 30px;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
.container a {
|
|
32
|
-
font-size: 18px;
|
|
33
|
-
text-decoration: none;
|
|
34
|
-
color: #2196f3;
|
|
35
|
-
border: 1px solid #2196f3;
|
|
36
|
-
padding: 10px 15px;
|
|
37
|
-
border-radius: 5px;
|
|
38
|
-
transition: background-color 0.3s, color 0.3s;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
.container a:hover {
|
|
42
|
-
background-color: #2196f3;
|
|
43
|
-
color: #ffffff;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
</style>
|
|
47
|
-
|
|
48
|
-
<div class="container">
|
|
49
|
-
<h1>404</h1>
|
|
50
|
-
<p>Oops! The page you're looking for doesn't exist.</p>
|
|
51
|
-
<a href="/">Go Home</a>
|
|
1
|
+
<style>
|
|
2
|
+
body {
|
|
3
|
+
font-family: Arial, sans-serif;
|
|
4
|
+
display: flex;
|
|
5
|
+
justify-content: center;
|
|
6
|
+
align-items: center;
|
|
7
|
+
height: 100vh;
|
|
8
|
+
margin: 0;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.container {
|
|
12
|
+
text-align: center;
|
|
13
|
+
background-color: #ffffff;
|
|
14
|
+
padding: 50px;
|
|
15
|
+
margin-top: 5vh;
|
|
16
|
+
border-radius: 10px;
|
|
17
|
+
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.container h1 {
|
|
21
|
+
font-size: 72px;
|
|
22
|
+
margin-bottom: 20px;
|
|
23
|
+
color: #ff5252;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.container p {
|
|
27
|
+
font-size: 24px;
|
|
28
|
+
margin-bottom: 30px;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.container a {
|
|
32
|
+
font-size: 18px;
|
|
33
|
+
text-decoration: none;
|
|
34
|
+
color: #2196f3;
|
|
35
|
+
border: 1px solid #2196f3;
|
|
36
|
+
padding: 10px 15px;
|
|
37
|
+
border-radius: 5px;
|
|
38
|
+
transition: background-color 0.3s, color 0.3s;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.container a:hover {
|
|
42
|
+
background-color: #2196f3;
|
|
43
|
+
color: #ffffff;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
</style>
|
|
47
|
+
|
|
48
|
+
<div class="container">
|
|
49
|
+
<h1>404</h1>
|
|
50
|
+
<p>Oops! The page you're looking for doesn't exist.</p>
|
|
51
|
+
<a href="/">Go Home</a>
|
|
52
52
|
</div>
|
package/docs/docs/_coverpage.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
<!-- _coverpage.md -->
|
|
2
|
-
|
|
3
|
-

|
|
4
|
-
|
|
5
|
-
# visualify.js <small>
|
|
6
|
-
|
|
7
|
-
> A magical data portal generator
|
|
8
|
-
|
|
9
|
-
[GitHub](https://github.com/visualify)
|
|
10
|
-
[Getting Started](#visualify)
|
|
11
|
-
|
|
1
|
+
<!-- _coverpage.md -->
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
# visualify.js <small>3.0.0</small>
|
|
6
|
+
|
|
7
|
+
> A magical data portal generator
|
|
8
|
+
|
|
9
|
+
[GitHub](https://github.com/visualify)
|
|
10
|
+
[Getting Started](#visualify)
|
|
11
|
+
|
package/docs/docs/_sidebar.md
CHANGED
|
@@ -1,44 +1,54 @@
|
|
|
1
|
-
- Getting
|
|
2
|
-
|
|
3
|
-
- [Introduction](/README.md)
|
|
4
|
-
- [Quick
|
|
5
|
-
- [
|
|
6
|
-
|
|
7
|
-
-
|
|
8
|
-
|
|
9
|
-
- [Usage](/rechart-basic-usage.md)
|
|
10
|
-
- [Attributes](/rechart-attributes.md)
|
|
11
|
-
- [Line Chart](/Rechart/line.md)
|
|
12
|
-
- [Bar Chart](/Rechart/bar.md)
|
|
13
|
-
- [Pie Chart](/Rechart/pie.md)
|
|
14
|
-
- [Radar Chart](/Rechart/radar.md)
|
|
15
|
-
- [Funnel Chart](/Rechart/funnel.md)
|
|
16
|
-
- [Scatter Chart](/Rechart/scatter.md)
|
|
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
|
-
-
|
|
1
|
+
- Getting Started
|
|
2
|
+
|
|
3
|
+
- [Introduction](/README.md)
|
|
4
|
+
- [Quick Start](/quickstart.md)
|
|
5
|
+
- [Docsify Plugin](/docsify-plugin.md)
|
|
6
|
+
|
|
7
|
+
- Charts (2D)
|
|
8
|
+
|
|
9
|
+
- [Usage](/rechart-basic-usage.md)
|
|
10
|
+
- [Attributes](/rechart-attributes.md)
|
|
11
|
+
- [Line Chart](/Rechart/line.md)
|
|
12
|
+
- [Bar Chart](/Rechart/bar.md)
|
|
13
|
+
- [Pie Chart](/Rechart/pie.md)
|
|
14
|
+
- [Radar Chart](/Rechart/radar.md)
|
|
15
|
+
- [Funnel Chart](/Rechart/funnel.md)
|
|
16
|
+
- [Scatter Chart](/Rechart/scatter.md)
|
|
17
|
+
|
|
18
|
+
- Charts (3D)
|
|
19
|
+
|
|
20
|
+
- [3D Visualization](/3d-visualization.md)
|
|
21
|
+
|
|
22
|
+
- Page Mode
|
|
23
|
+
|
|
24
|
+
- [ScatterL](/components/scatterL.md)
|
|
25
|
+
- [Visium](/components/visium.md)
|
|
26
|
+
- [DotBio](/components/dotBio.md)
|
|
27
|
+
- [Echart](/components/echart.md)
|
|
28
|
+
- [Plotly](/components/plotly.md)
|
|
29
|
+
- [Macaron](/components/macaron.md)
|
|
30
|
+
- [More...](/components/more.md)
|
|
31
|
+
|
|
32
|
+
- Customization
|
|
33
|
+
|
|
34
|
+
- [Configuration](/configuration.md)
|
|
35
|
+
- [Theme](/theme.md)
|
|
36
|
+
|
|
37
|
+
- Developer Experience
|
|
38
|
+
|
|
39
|
+
- [Hot Module Replacement](/hmr.md)
|
|
40
|
+
- [TypeScript](/typescript.md)
|
|
41
|
+
- [Visual Editor](/visual-editor.md)
|
|
42
|
+
- [Internationalization](/i18n.md)
|
|
43
|
+
|
|
44
|
+
- Guide
|
|
45
|
+
|
|
46
|
+
- [CLI](/CLI.md)
|
|
47
|
+
- [Deploy](/deploy.md)
|
|
48
|
+
|
|
49
|
+
- Showcase
|
|
50
|
+
|
|
51
|
+
- [MmTrBC](https://visualify.pharmacy.arizona.edu/MmTrBC/)
|
|
52
|
+
- [EsoDev](https://visualify.pharmacy.arizona.edu/EsoDev/)
|
|
53
|
+
|
|
54
|
+
- [UpdateLog](/log.md)
|
|
@@ -1,34 +1,87 @@
|
|
|
1
|
-
# DotBio Component
|
|
2
|
-
|
|
3
|
-
The DotBio component
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
##
|
|
8
|
-
|
|
9
|
-
The DotBio component
|
|
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
|
-
|
|
1
|
+
# DotBio Component
|
|
2
|
+
|
|
3
|
+
The DotBio component creates dot plots (also known as bubble plots) commonly used in bioinformatics to display gene expression patterns across cell types. Each dot represents the expression of a gene in a specific cell type, with size indicating the percentage of expressing cells and color indicating expression level.
|
|
4
|
+
|
|
5
|
+
> **Note:** This component requires a backend API to supply gene expression and metadata. A live demo is not available in this documentation.
|
|
6
|
+
|
|
7
|
+
## How It Works
|
|
8
|
+
|
|
9
|
+
The DotBio component fetches cell-type metadata and gene expression data from backend APIs, then renders a matrix of dots where rows are cell types and columns are genes.
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
Gene A Gene B Gene C Gene D
|
|
13
|
+
Cell Type 1 ● ◉ ○ ●
|
|
14
|
+
Cell Type 2 ○ ● ◉ ○
|
|
15
|
+
Cell Type 3 ◉ ○ ● ◉
|
|
16
|
+
Cell Type 4 ● ● ○ ○
|
|
17
|
+
|
|
18
|
+
● = high expression (large, dark)
|
|
19
|
+
◉ = medium expression
|
|
20
|
+
○ = low expression (small, light)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The dot size encodes the percentage of cells expressing the gene, while the dot color encodes the average expression level. This dual encoding lets researchers quickly identify which genes are active in which cell populations.
|
|
24
|
+
|
|
25
|
+
## Properties
|
|
26
|
+
|
|
27
|
+
| Property | Type | Required | Description |
|
|
28
|
+
|---|---|---|---|
|
|
29
|
+
| `type` | string | Yes | Must be set to `"DotBio"`. |
|
|
30
|
+
| `id` | string | Yes | A unique identifier for this component instance. Used for cross-component references and event targeting. |
|
|
31
|
+
| `row` | int | No | The grid row position where the component is placed (1-based). |
|
|
32
|
+
| `col` | int | No | The grid column position where the component is placed (1-based). |
|
|
33
|
+
| `rowspan` | int | No | The number of grid rows this component spans. Defaults to 1. |
|
|
34
|
+
| `colspan` | int | No | The number of grid columns this component spans. Defaults to 1. |
|
|
35
|
+
| `settings` | object | No | Display and behavior settings. See the **Settings** table below. |
|
|
36
|
+
| `meta` | object | Yes | Defines the metadata API endpoint that provides cell-type information. |
|
|
37
|
+
| `meta.name` | string | Yes | A label for the metadata source (e.g., `"metadata"`). |
|
|
38
|
+
| `meta.url` | string | Yes | The backend URL that returns cell-type metadata. |
|
|
39
|
+
| `exclude_celltype` | array | No | An array of cell-type names to exclude from the plot. Useful for filtering out irrelevant or noisy populations. |
|
|
40
|
+
| `gene` | string | Yes | The backend API URL that returns gene expression data for the selected genes. |
|
|
41
|
+
| `genelist` | string | Yes | The name of the gene list variable to use. This should match a gene list defined elsewhere in the page configuration. |
|
|
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
|
+
| `showscale` | boolean | `true` | Whether to display the color scale legend alongside the plot. |
|
|
50
|
+
| `showlegend` | boolean | `true` | Whether to display the size legend indicating percentage of expressing cells. |
|
|
51
|
+
|
|
52
|
+
## Example
|
|
53
|
+
|
|
54
|
+
```json
|
|
55
|
+
{
|
|
56
|
+
"id": "dotbio_expression",
|
|
57
|
+
"type": "DotBio",
|
|
58
|
+
"col": 1,
|
|
59
|
+
"rowspan": 4,
|
|
60
|
+
"colspan": 2,
|
|
61
|
+
"settings": {
|
|
62
|
+
"preset": "mmtrbc",
|
|
63
|
+
"ignoreEmptyData": true,
|
|
64
|
+
"showscale": true,
|
|
65
|
+
"showlegend": true
|
|
66
|
+
},
|
|
67
|
+
"meta": {
|
|
68
|
+
// Label for this metadata source
|
|
69
|
+
"name": "metadata",
|
|
70
|
+
// Backend endpoint returning cell-type information
|
|
71
|
+
"url": "<your-backend-url>/api/metadata"
|
|
72
|
+
},
|
|
73
|
+
// Cell types to exclude from the visualization
|
|
74
|
+
"exclude_celltype": ["BC-Mes", "BC-NE"],
|
|
75
|
+
// Backend endpoint returning gene expression values
|
|
76
|
+
"gene": "<your-backend-url>/api/gene",
|
|
77
|
+
// References a gene list defined in the page configuration
|
|
78
|
+
"genelist": "selected_genes"
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## See Also
|
|
83
|
+
|
|
84
|
+
- [Plotly Component](/components/plotly.md) - For scatter and violin plots of expression data
|
|
85
|
+
- [Echart Component](/components/echart.md) - General-purpose chart component
|
|
86
|
+
- [Configuration](/configuration.md) - How to set up page mode
|
|
87
|
+
- [MmTrBC Showcase](https://visualify.pharmacy.arizona.edu/MmTrBC/) - Live project using DotBio and other components
|
|
@@ -1,82 +1,171 @@
|
|
|
1
|
-
# Echart Component
|
|
2
|
-
|
|
3
|
-
The Echart component is a wrapper around the
|
|
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
|
-
|
|
1
|
+
# Echart Component
|
|
2
|
+
|
|
3
|
+
The Echart component is a wrapper around the [Apache ECharts](https://echarts.apache.org/en/index.html) library. It provides the same charting capabilities as [Charts (2D)](/rechart-basic-usage.md) but is designed for **page mode**, enabling multi-component layouts with API data fetching.
|
|
4
|
+
|
|
5
|
+
## Live Demo
|
|
6
|
+
|
|
7
|
+
The Echart component uses the same rendering engine as the standard charts. Here's a scatter plot example:
|
|
8
|
+
|
|
9
|
+
```visualify
|
|
10
|
+
{
|
|
11
|
+
"type": "scatter",
|
|
12
|
+
"title": "Gene Expression Scatter Plot",
|
|
13
|
+
"data": {
|
|
14
|
+
"categories": [],
|
|
15
|
+
"series": [
|
|
16
|
+
{
|
|
17
|
+
"name": "Cluster A",
|
|
18
|
+
"data": [[10.0, 8.04], [8.0, 6.95], [13.0, 7.58], [9.0, 8.81], [11.0, 8.33], [14.0, 9.96], [6.0, 7.24], [4.0, 4.26], [12.0, 10.84], [7.0, 4.82], [5.0, 5.68]]
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": "Cluster B",
|
|
22
|
+
"data": [[8.0, 3.04], [8.0, 3.95], [8.0, 4.58], [8.0, 3.81], [8.0, 4.33], [8.0, 3.96], [8.0, 4.24], [19.0, 12.5], [8.0, 3.26], [8.0, 3.84], [8.0, 3.68]]
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
And a line chart with multiple series:
|
|
30
|
+
|
|
31
|
+
```visualify
|
|
32
|
+
{
|
|
33
|
+
"type": "line",
|
|
34
|
+
"title": "Time-Series Expression Data",
|
|
35
|
+
"smooth": true,
|
|
36
|
+
"data": {
|
|
37
|
+
"categories": ["0h", "2h", "4h", "8h", "12h", "24h", "48h"],
|
|
38
|
+
"series": [
|
|
39
|
+
{ "name": "Gene A", "data": [2.1, 3.5, 5.2, 8.1, 6.3, 4.2, 3.0] },
|
|
40
|
+
{ "name": "Gene B", "data": [1.0, 1.2, 2.8, 7.5, 12.1, 9.8, 5.4] },
|
|
41
|
+
{ "name": "Gene C", "data": [5.5, 5.0, 4.2, 3.1, 2.5, 2.0, 1.8] }
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
"yAxis": { "name": "Expression Level" }
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## How It Works
|
|
49
|
+
|
|
50
|
+
In page mode, the Echart component connects to **backend APIs** to fetch data dynamically. The data flow is:
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
┌─────────────┐ ┌─────────────┐ ┌──────────────┐
|
|
54
|
+
│ visualify │────>│ Parser │────>│ ECharts │
|
|
55
|
+
│ .json │ │ (fetch + │ │ (render) │
|
|
56
|
+
│ config │ │ transform)│ │ │
|
|
57
|
+
└─────────────┘ └─────────────┘ └──────────────┘
|
|
58
|
+
│ │
|
|
59
|
+
│ parser.sources │ fetched_data
|
|
60
|
+
v v
|
|
61
|
+
┌─────────────┐ ┌─────────────┐
|
|
62
|
+
│ Backend │────>│ Data │
|
|
63
|
+
│ API │ │ Transform │
|
|
64
|
+
└─────────────┘ └─────────────┘
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Properties
|
|
68
|
+
|
|
69
|
+
| Property | Type | Required | Description |
|
|
70
|
+
|----------|------|----------|-------------|
|
|
71
|
+
| `type` | string | Yes | Must be `"Echart"` |
|
|
72
|
+
| `id` | string | Yes | Unique identifier for the component |
|
|
73
|
+
| `row` | int | No | Grid row position |
|
|
74
|
+
| `col` | int | No | Grid column position |
|
|
75
|
+
| `rowspan` | int | No | Number of rows to span |
|
|
76
|
+
| `colspan` | int | No | Number of columns to span |
|
|
77
|
+
| `config` | object | Yes | Chart configuration (see below) |
|
|
78
|
+
| `parser` | object | No | Data fetching configuration |
|
|
79
|
+
| `trigger` | object | No | Event trigger configuration |
|
|
80
|
+
|
|
81
|
+
### config Properties
|
|
82
|
+
|
|
83
|
+
| Property | Type | Description |
|
|
84
|
+
|----------|------|-------------|
|
|
85
|
+
| `width` | int | Chart width in pixels |
|
|
86
|
+
| `height` | int | Chart height in pixels |
|
|
87
|
+
| `preset` | string | Named preset configuration |
|
|
88
|
+
| `title` | string | Chart title |
|
|
89
|
+
| `xAxis` | string/array | X-axis configuration |
|
|
90
|
+
| `yAxis` | string/array | Y-axis configuration |
|
|
91
|
+
| `legend` | object | Legend configuration |
|
|
92
|
+
| `tooltip` | object | Tooltip configuration |
|
|
93
|
+
| `data` | object | Inline data (when not using parser) |
|
|
94
|
+
|
|
95
|
+
### parser Properties
|
|
96
|
+
|
|
97
|
+
The `parser` object configures dynamic data fetching:
|
|
98
|
+
|
|
99
|
+
| Property | Type | Description |
|
|
100
|
+
|----------|------|-------------|
|
|
101
|
+
| `sources` | array | Array of data source configurations |
|
|
102
|
+
| `sources[].name` | string | Source identifier |
|
|
103
|
+
| `sources[].url` | string | Backend API URL |
|
|
104
|
+
| `sources[].type` | string | Chart type (e.g., `"scatter"`) |
|
|
105
|
+
| `sources[].responseKey` | string | Key to extract from API response |
|
|
106
|
+
| `sources[].trigger` | object | Trigger configuration for interactivity |
|
|
107
|
+
| `sources[].trigger.name` | string | Trigger name (links to other components) |
|
|
108
|
+
| `sources[].trigger.title` | boolean | Whether to update the chart title |
|
|
109
|
+
|
|
110
|
+
## Example
|
|
111
|
+
|
|
112
|
+
### Page Mode with API Data
|
|
113
|
+
|
|
114
|
+
```json
|
|
115
|
+
{
|
|
116
|
+
"id": "expression_tsne",
|
|
117
|
+
"type": "Echart",
|
|
118
|
+
"col": 2,
|
|
119
|
+
"rowspan": 3,
|
|
120
|
+
"config": {
|
|
121
|
+
"width": 600,
|
|
122
|
+
"height": 600,
|
|
123
|
+
"preset": "mmtrbc",
|
|
124
|
+
"title": "t-SNE Visualization"
|
|
125
|
+
},
|
|
126
|
+
"parser": {
|
|
127
|
+
"sources": [
|
|
128
|
+
{
|
|
129
|
+
"name": "metadata",
|
|
130
|
+
"url": "https://your-api.com/metadata"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"name": "gene",
|
|
134
|
+
"url": "https://your-api.com/gene",
|
|
135
|
+
"responseKey": "gene",
|
|
136
|
+
"trigger": {
|
|
137
|
+
"name": "gene_search",
|
|
138
|
+
"title": true
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
],
|
|
142
|
+
"type": "scatter"
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Static Data (No API)
|
|
148
|
+
|
|
149
|
+
```json
|
|
150
|
+
{
|
|
151
|
+
"id": "static_chart",
|
|
152
|
+
"type": "Echart",
|
|
153
|
+
"row": 1,
|
|
154
|
+
"col": 1,
|
|
155
|
+
"config": {
|
|
156
|
+
"title": "Static Bar Chart",
|
|
157
|
+
"type": "bar",
|
|
158
|
+
"data": {
|
|
159
|
+
"Series A": [120, 200, 150, 80, 70],
|
|
160
|
+
"Series B": [60, 120, 90, 140, 130]
|
|
161
|
+
},
|
|
162
|
+
"xAxis": ["Mon", "Tue", "Wed", "Thu", "Fri"]
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## See Also
|
|
168
|
+
|
|
169
|
+
- [Charts (2D)](/rechart-basic-usage.md) - Same engine, simpler usage for standalone charts
|
|
170
|
+
- [Configuration](/configuration.md) - How to set up page mode
|
|
171
|
+
- [MmTrBC Showcase](https://visualify.pharmacy.arizona.edu/MmTrBC/) - Live example using Echart components
|