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
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
<!-- Load 3D visualization examples from external script to avoid docsify parsing issues -->
|
|
2
|
+
<script src="./static/js/3d-viz-examples.js"></script>
|
|
3
|
+
|
|
4
|
+
# 3D Visualization
|
|
5
|
+
|
|
6
|
+
Visualify.js supports 3D visualization through ECharts GL and Three.js integration.
|
|
7
|
+
|
|
8
|
+
## Table of Contents
|
|
9
|
+
|
|
10
|
+
- [Overview](#overview)
|
|
11
|
+
- [ECharts GL 3D Charts](#echarts-gl-3d-charts)
|
|
12
|
+
- [Scatter3D](#scatter3d)
|
|
13
|
+
- [Bar3D](#bar3d)
|
|
14
|
+
- [Surface3D](#surface3d)
|
|
15
|
+
- [Line3D](#line3d)
|
|
16
|
+
- [Three.js Integration](#threejs-integration)
|
|
17
|
+
- [WebGL Support](#webgl-support)
|
|
18
|
+
- [Performance Considerations](#performance-considerations)
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Overview
|
|
23
|
+
|
|
24
|
+
Visualify.js provides two approaches to 3D visualization:
|
|
25
|
+
|
|
26
|
+
1. **ECharts GL** - For standard 3D charts (scatter, bar, surface, line)
|
|
27
|
+
2. **Three.js** - For custom 3D scenes and advanced visualizations
|
|
28
|
+
|
|
29
|
+
Both libraries are loaded on-demand to minimize initial bundle size.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## ECharts GL 3D Charts
|
|
34
|
+
|
|
35
|
+
### Scatter3D
|
|
36
|
+
|
|
37
|
+
Create interactive 3D scatter plots with x, y, z dimensions.
|
|
38
|
+
|
|
39
|
+
<!-- tabs:start -->
|
|
40
|
+
|
|
41
|
+
#### **Output**
|
|
42
|
+
|
|
43
|
+
<div id="scatter3d-example" style="height: 400px;">
|
|
44
|
+
<p>Loading 3D Scatter Plot... (requires WebGL support)</p>
|
|
45
|
+
</div>
|
|
46
|
+
|
|
47
|
+
#### **Configuration**
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"type": "scatter3d",
|
|
52
|
+
"title": "3D Scatter Plot Example",
|
|
53
|
+
"data": {
|
|
54
|
+
"x": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
|
|
55
|
+
"y": [10, 15, 8, 20, 12, 18, 22, 16, 14, 25],
|
|
56
|
+
"z": [5, 8, 12, 7, 9, 11, 6, 13, 10, 15]
|
|
57
|
+
},
|
|
58
|
+
"xAxis3D": { "name": "X Dimension", "type": "value" },
|
|
59
|
+
"yAxis3D": { "name": "Y Dimension", "type": "value" },
|
|
60
|
+
"zAxis3D": { "name": "Z Dimension", "type": "value" },
|
|
61
|
+
"grid3D": {
|
|
62
|
+
"boxWidth": 100,
|
|
63
|
+
"boxDepth": 80,
|
|
64
|
+
"viewControl": {
|
|
65
|
+
"autoRotate": true,
|
|
66
|
+
"autoRotateSpeed": 10
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"visualMap": {
|
|
70
|
+
"dimension": 2,
|
|
71
|
+
"max": 25,
|
|
72
|
+
"inRange": {
|
|
73
|
+
"color": ["#313695", "#4575b4", "#74add1", "#abd9e9", "#e0f3f8"]
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
<!-- tabs:end -->
|
|
80
|
+
|
|
81
|
+
#### Configuration Options
|
|
82
|
+
|
|
83
|
+
| Property | Type | Description |
|
|
84
|
+
|----------|------|-------------|
|
|
85
|
+
| `data.x` | Array | X-axis data values |
|
|
86
|
+
| `data.y` | Array | Y-axis data values |
|
|
87
|
+
| `data.z` | Array | Z-axis data values |
|
|
88
|
+
| `xAxis3D` | Object | X-axis configuration (name, type, min, max) |
|
|
89
|
+
| `yAxis3D` | Object | Y-axis configuration |
|
|
90
|
+
| `zAxis3D` | Object | Z-axis configuration |
|
|
91
|
+
| `grid3D.viewControl.autoRotate` | Boolean | Enable auto-rotation |
|
|
92
|
+
| `visualMap` | Object | Color mapping based on dimension |
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### Bar3D
|
|
97
|
+
|
|
98
|
+
Create 3D bar charts for volumetric data visualization.
|
|
99
|
+
|
|
100
|
+
<!-- tabs:start -->
|
|
101
|
+
|
|
102
|
+
#### **Output**
|
|
103
|
+
|
|
104
|
+
<div id="bar3d-example" style="height: 400px;">
|
|
105
|
+
<p>Loading 3D Bar Chart... (requires WebGL support)</p>
|
|
106
|
+
</div>
|
|
107
|
+
|
|
108
|
+
#### **Configuration**
|
|
109
|
+
|
|
110
|
+
```json
|
|
111
|
+
{
|
|
112
|
+
"type": "bar3d",
|
|
113
|
+
"title": "3D Bar Chart Example",
|
|
114
|
+
"data": [
|
|
115
|
+
[0, 0, 10], [0, 1, 20], [0, 2, 15],
|
|
116
|
+
[1, 0, 25], [1, 1, 30], [1, 2, 20],
|
|
117
|
+
[2, 0, 15], [2, 1, 25], [2, 2, 35]
|
|
118
|
+
],
|
|
119
|
+
"xAxis3D": {
|
|
120
|
+
"type": "category",
|
|
121
|
+
"data": ["A", "B", "C"]
|
|
122
|
+
},
|
|
123
|
+
"yAxis3D": {
|
|
124
|
+
"type": "category",
|
|
125
|
+
"data": ["X", "Y", "Z"]
|
|
126
|
+
},
|
|
127
|
+
"zAxis3D": { "type": "value" },
|
|
128
|
+
"grid3D": {
|
|
129
|
+
"boxWidth": 200,
|
|
130
|
+
"boxDepth": 80,
|
|
131
|
+
"light": {
|
|
132
|
+
"main": { "intensity": 1.2, "shadow": true }
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
"shading": "lambert"
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
<!-- tabs:end -->
|
|
140
|
+
|
|
141
|
+
#### Configuration Options
|
|
142
|
+
|
|
143
|
+
| Property | Type | Description |
|
|
144
|
+
|----------|------|-------------|
|
|
145
|
+
| `data` | Array | Array of [x, y, z] values |
|
|
146
|
+
| `xAxis3D.type` | String | `"category"` for discrete values |
|
|
147
|
+
| `yAxis3D.type` | String | `"category"` for discrete values |
|
|
148
|
+
| `shading` | String | `"lambert"` for realistic lighting |
|
|
149
|
+
| `grid3D.light` | Object | Lighting configuration |
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
### Surface3D
|
|
154
|
+
|
|
155
|
+
Create 3D surface plots for continuous data visualization.
|
|
156
|
+
|
|
157
|
+
<!-- tabs:start -->
|
|
158
|
+
|
|
159
|
+
#### **Output**
|
|
160
|
+
|
|
161
|
+
<div id="surface3d-example" style="height: 400px;">
|
|
162
|
+
<p>Loading 3D Surface Plot... (requires WebGL support)</p>
|
|
163
|
+
</div>
|
|
164
|
+
|
|
165
|
+
#### **Configuration**
|
|
166
|
+
|
|
167
|
+
```json
|
|
168
|
+
{
|
|
169
|
+
"type": "surface3d",
|
|
170
|
+
"title": "3D Surface Plot Example",
|
|
171
|
+
"data": {
|
|
172
|
+
"x": [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5],
|
|
173
|
+
"y": [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5],
|
|
174
|
+
"z": [
|
|
175
|
+
[0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.4, 0.3, 0.2, 0.1, 0],
|
|
176
|
+
[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1],
|
|
177
|
+
[0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2],
|
|
178
|
+
[0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3],
|
|
179
|
+
[0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4],
|
|
180
|
+
[0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 0.9, 0.8, 0.7, 0.6, 0.5],
|
|
181
|
+
[0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4],
|
|
182
|
+
[0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3],
|
|
183
|
+
[0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2],
|
|
184
|
+
[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1],
|
|
185
|
+
[0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.4, 0.3, 0.2, 0.1, 0]
|
|
186
|
+
]
|
|
187
|
+
},
|
|
188
|
+
"xAxis3D": { "type": "value" },
|
|
189
|
+
"yAxis3D": { "type": "value" },
|
|
190
|
+
"zAxis3D": { "type": "value" },
|
|
191
|
+
"grid3D": {
|
|
192
|
+
"viewControl": { "autoRotate": true }
|
|
193
|
+
},
|
|
194
|
+
"visualMap": {
|
|
195
|
+
"show": true,
|
|
196
|
+
"dimension": 2,
|
|
197
|
+
"min": 0,
|
|
198
|
+
"max": 1.0,
|
|
199
|
+
"inRange": {
|
|
200
|
+
"color": ["#313695", "#4575b4", "#74add1", "#abd9e9", "#e0f3f8", "#ffffbf", "#fee090", "#fdae61", "#f46d43", "#d73027", "#a50026"]
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
<!-- tabs:end -->
|
|
207
|
+
|
|
208
|
+
#### Configuration Options
|
|
209
|
+
|
|
210
|
+
| Property | Type | Description |
|
|
211
|
+
|----------|------|-------------|
|
|
212
|
+
| `data.x` | Array | X-axis grid values |
|
|
213
|
+
| `data.y` | Array | Y-axis grid values |
|
|
214
|
+
| `data.z` | 2D Array | Height values (z[x][y]) |
|
|
215
|
+
| `visualMap` | Object | Color gradient for height values |
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
### Line3D
|
|
220
|
+
|
|
221
|
+
Create 3D line charts for trajectory visualization.
|
|
222
|
+
|
|
223
|
+
```json
|
|
224
|
+
{
|
|
225
|
+
"type": "line3d",
|
|
226
|
+
"title": "3D Line Chart",
|
|
227
|
+
"data": [
|
|
228
|
+
[0, 0, 0],
|
|
229
|
+
[1, 2, 3],
|
|
230
|
+
[2, 4, 2],
|
|
231
|
+
[3, 6, 5],
|
|
232
|
+
[4, 8, 4],
|
|
233
|
+
[5, 10, 7]
|
|
234
|
+
],
|
|
235
|
+
"xAxis3D": { "type": "value" },
|
|
236
|
+
"yAxis3D": { "type": "value" },
|
|
237
|
+
"zAxis3D": { "type": "value" },
|
|
238
|
+
"grid3D": {
|
|
239
|
+
"viewControl": {
|
|
240
|
+
"projection": "perspective",
|
|
241
|
+
"autoRotate": false
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
"lineStyle": {
|
|
245
|
+
"width": 4,
|
|
246
|
+
"color": "#5470c6"
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
## Three.js Integration
|
|
254
|
+
|
|
255
|
+
For custom 3D scenes beyond standard charts, Visualify.js provides Three.js integration through `@react-three/fiber`.
|
|
256
|
+
|
|
257
|
+
### Basic Three.js Scene
|
|
258
|
+
|
|
259
|
+
```json
|
|
260
|
+
{
|
|
261
|
+
"type": "threejs",
|
|
262
|
+
"scene": {
|
|
263
|
+
"camera": {
|
|
264
|
+
"position": [0, 0, 100],
|
|
265
|
+
"fov": 75,
|
|
266
|
+
"near": 0.1,
|
|
267
|
+
"far": 1000
|
|
268
|
+
},
|
|
269
|
+
"lights": [
|
|
270
|
+
{
|
|
271
|
+
"type": "ambient",
|
|
272
|
+
"color": "#ffffff",
|
|
273
|
+
"intensity": 0.5
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
"type": "directional",
|
|
277
|
+
"position": [10, 10, 10],
|
|
278
|
+
"castShadow": true
|
|
279
|
+
}
|
|
280
|
+
],
|
|
281
|
+
"objects": [
|
|
282
|
+
{
|
|
283
|
+
"type": "mesh",
|
|
284
|
+
"geometry": {
|
|
285
|
+
"type": "box",
|
|
286
|
+
"width": 10,
|
|
287
|
+
"height": 10,
|
|
288
|
+
"depth": 10
|
|
289
|
+
},
|
|
290
|
+
"material": {
|
|
291
|
+
"type": "standard",
|
|
292
|
+
"color": "#ff0000"
|
|
293
|
+
},
|
|
294
|
+
"position": [0, 0, 0],
|
|
295
|
+
"rotation": [0, 0.5, 0]
|
|
296
|
+
}
|
|
297
|
+
]
|
|
298
|
+
},
|
|
299
|
+
"controls": "orbit",
|
|
300
|
+
"animation": {
|
|
301
|
+
"autoRotate": true,
|
|
302
|
+
"speed": 0.01
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## WebGL Support
|
|
310
|
+
|
|
311
|
+
3D charts require WebGL support. Visualify.js automatically detects WebGL availability and shows a fallback message if not supported.
|
|
312
|
+
|
|
313
|
+
### Browser Compatibility
|
|
314
|
+
|
|
315
|
+
| Browser | Version | WebGL Support |
|
|
316
|
+
|---------|---------|---------------|
|
|
317
|
+
| Chrome | 9+ | ✓ Full |
|
|
318
|
+
| Firefox | 4+ | ✓ Full |
|
|
319
|
+
| Safari | 5.1+ | ✓ Full |
|
|
320
|
+
| Edge | 12+ | ✓ Full |
|
|
321
|
+
| IE | 11 | ⚠ Limited |
|
|
322
|
+
|
|
323
|
+
### Fallback Behavior
|
|
324
|
+
|
|
325
|
+
If WebGL is not supported:
|
|
326
|
+
1. A user-friendly error message is displayed
|
|
327
|
+
2. The chart container shows fallback content
|
|
328
|
+
3. Console warnings provide debugging information
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## Performance Considerations
|
|
333
|
+
|
|
334
|
+
### Large Datasets
|
|
335
|
+
|
|
336
|
+
For datasets with 10,000+ points:
|
|
337
|
+
- Use `sampling` or `progressive` rendering
|
|
338
|
+
- Consider level-of-detail (LOD) techniques
|
|
339
|
+
- Enable `large` mode in ECharts GL
|
|
340
|
+
|
|
341
|
+
```json
|
|
342
|
+
{
|
|
343
|
+
"type": "scatter3d",
|
|
344
|
+
"data": { ... },
|
|
345
|
+
"series": [{
|
|
346
|
+
"type": "scatter3D",
|
|
347
|
+
"large": true,
|
|
348
|
+
"largeThreshold": 2000,
|
|
349
|
+
"progressive": 400,
|
|
350
|
+
"progressiveThreshold": 3000
|
|
351
|
+
}]
|
|
352
|
+
}
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
### Lazy Loading
|
|
356
|
+
|
|
357
|
+
3D libraries are loaded on-demand:
|
|
358
|
+
- ECharts GL loads when first 3D chart is rendered
|
|
359
|
+
- Three.js loads when ThreeScene component is used
|
|
360
|
+
- No impact on initial page load if no 3D charts are present
|
|
361
|
+
|
|
362
|
+
### Memory Management
|
|
363
|
+
|
|
364
|
+
- WebGL contexts are automatically cleaned up when charts unmount
|
|
365
|
+
- Dispose geometries, materials, and textures properly
|
|
366
|
+
- Use `cleanupWebGL()` utility for manual cleanup if needed
|
|
367
|
+
|
|
368
|
+
---
|
|
369
|
+
|
|
370
|
+
## See Also
|
|
371
|
+
|
|
372
|
+
- [Configuration Reference](./configuration/visualify-json.md)
|
|
373
|
+
- [CLI Commands](./cli/commands.md)
|
|
374
|
+
- [Migration Guide](./migration/v3-migration.md)
|
package/docs/docs/CLI.md
CHANGED
|
@@ -1,34 +1,303 @@
|
|
|
1
|
-
# CLI
|
|
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
|
-
|
|
1
|
+
# CLI Reference
|
|
2
|
+
|
|
3
|
+
Visualify.js provides a unified command-line interface for documentation, data visualization, and development workflows.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
### Global Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install -g visualify
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### Local Installation
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install --save-dev visualify
|
|
17
|
+
npx visualify --help
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Commands Overview
|
|
21
|
+
|
|
22
|
+
| Command | Description |
|
|
23
|
+
|---------|-------------|
|
|
24
|
+
| `dev` | Start development server with HMR |
|
|
25
|
+
| `docs` | Build and serve documentation |
|
|
26
|
+
| `portal` | Start data portal server |
|
|
27
|
+
| `init` | Initialize a new Visualify project |
|
|
28
|
+
| `edit` / `editor` | Launch visual configuration editor |
|
|
29
|
+
|
|
30
|
+
## Global Options
|
|
31
|
+
|
|
32
|
+
| Option | Description |
|
|
33
|
+
|--------|-------------|
|
|
34
|
+
| `-v, --version` | Display version number |
|
|
35
|
+
| `-h, --help` | Display help information |
|
|
36
|
+
| `--verbose` | Enable verbose logging |
|
|
37
|
+
|
|
38
|
+
## Command Details
|
|
39
|
+
|
|
40
|
+
### `dev` - Development Server
|
|
41
|
+
|
|
42
|
+
Start a development server with Hot Module Replacement (HMR).
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
visualify dev [mode]
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Arguments:**
|
|
49
|
+
- `mode` - Development mode: `auto`, `docs`, or `portal` (default: `auto`)
|
|
50
|
+
|
|
51
|
+
**Options:**
|
|
52
|
+
- `-p, --port <number>` - Port number (default: 3000)
|
|
53
|
+
- `-h, --host <host>` - Host to bind to (default: `localhost`)
|
|
54
|
+
|
|
55
|
+
**Examples:**
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# Auto-detect mode based on project structure
|
|
59
|
+
visualify dev
|
|
60
|
+
|
|
61
|
+
# Start docs dev server
|
|
62
|
+
visualify dev docs
|
|
63
|
+
|
|
64
|
+
# Start portal dev server on custom port
|
|
65
|
+
visualify dev portal --port 8080
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### `docs` - Documentation
|
|
69
|
+
|
|
70
|
+
Build and serve static documentation.
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
visualify docs [action]
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Arguments:**
|
|
77
|
+
- `action` - Action to perform: `build`, `serve`, or `deploy` (default: `serve`)
|
|
78
|
+
|
|
79
|
+
**Options:**
|
|
80
|
+
- `-p, --port <number>` - Port for serve mode (default: 3000)
|
|
81
|
+
- `-o, --output <dir>` - Output directory for build (default: `dist/docs`)
|
|
82
|
+
|
|
83
|
+
**Examples:**
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Serve docs with live reload
|
|
87
|
+
visualify docs serve
|
|
88
|
+
|
|
89
|
+
# Build static documentation
|
|
90
|
+
visualify docs build
|
|
91
|
+
|
|
92
|
+
# Build to custom directory
|
|
93
|
+
visualify docs build --output ./site
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### `portal` - Data Portal
|
|
97
|
+
|
|
98
|
+
Start the data portal server for spatial data visualization.
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
visualify portal [action]
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**Arguments:**
|
|
105
|
+
- `action` - Action to perform: `dev`, `build`, or `start` (default: `dev`)
|
|
106
|
+
|
|
107
|
+
**Options:**
|
|
108
|
+
- `-p, --port <number>` - Port number (default: 3000)
|
|
109
|
+
- `-d, --data <path>` - Path to data directory
|
|
110
|
+
|
|
111
|
+
**Examples:**
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# Start portal dev server
|
|
115
|
+
visualify portal dev
|
|
116
|
+
|
|
117
|
+
# Build portal for production
|
|
118
|
+
visualify portal build
|
|
119
|
+
|
|
120
|
+
# Start production server
|
|
121
|
+
visualify portal start --port 8080
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### `init` - Initialize Project
|
|
125
|
+
|
|
126
|
+
Create a new Visualify project with boilerplate files.
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
visualify init [path]
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Arguments:**
|
|
133
|
+
- `path` - Project directory path (default: current directory)
|
|
134
|
+
|
|
135
|
+
**Options:**
|
|
136
|
+
- `-t, --template <name>` - Project template: `docs`, `portal`, or `full` (default: `docs`)
|
|
137
|
+
- `-f, --force` - Overwrite existing files
|
|
138
|
+
|
|
139
|
+
**Examples:**
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# Initialize docs project in current directory
|
|
143
|
+
visualify init
|
|
144
|
+
|
|
145
|
+
# Create new portal project
|
|
146
|
+
visualify init my-portal --template portal
|
|
147
|
+
|
|
148
|
+
# Force overwrite existing project
|
|
149
|
+
visualify init ./project --force
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**Templates:**
|
|
153
|
+
|
|
154
|
+
- `docs` - Documentation site with Docsify
|
|
155
|
+
- `portal` - Data portal with spatial visualization
|
|
156
|
+
- `full` - Full-featured project with both docs and portal
|
|
157
|
+
|
|
158
|
+
### `edit` / `editor` - Visual Editor
|
|
159
|
+
|
|
160
|
+
Launch the visual configuration editor for creating and editing charts.
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
visualify edit [file]
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**Aliases:** `editor`
|
|
167
|
+
|
|
168
|
+
**Arguments:**
|
|
169
|
+
- `file` - Configuration file to edit (optional)
|
|
170
|
+
|
|
171
|
+
**Options:**
|
|
172
|
+
- `-p, --port <number>` - Editor server port (default: 3456)
|
|
173
|
+
- `-h, --host <host>` - Host to bind to (default: `localhost`)
|
|
174
|
+
- `--no-open` - Do not open browser automatically
|
|
175
|
+
|
|
176
|
+
**Examples:**
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
# Start editor with new configuration
|
|
180
|
+
visualify edit
|
|
181
|
+
|
|
182
|
+
# Edit existing configuration file
|
|
183
|
+
visualify edit ./my-chart.json
|
|
184
|
+
|
|
185
|
+
# Start on custom port without opening browser
|
|
186
|
+
visualify edit --port 8080 --no-open
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## Configuration File
|
|
190
|
+
|
|
191
|
+
Create a `visualify.json` or `.visualify.json` file to configure default options:
|
|
192
|
+
|
|
193
|
+
```json
|
|
194
|
+
{
|
|
195
|
+
"mode": "auto",
|
|
196
|
+
"port": 3000,
|
|
197
|
+
"host": "localhost",
|
|
198
|
+
"docs": {
|
|
199
|
+
"title": "My Documentation",
|
|
200
|
+
"theme": "vue"
|
|
201
|
+
},
|
|
202
|
+
"portal": {
|
|
203
|
+
"dataPath": "./data",
|
|
204
|
+
"rtreeEnabled": true
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Configuration Options
|
|
210
|
+
|
|
211
|
+
| Option | Type | Default | Description |
|
|
212
|
+
|--------|------|---------|-------------|
|
|
213
|
+
| `mode` | string | `"auto"` | Default mode: `auto`, `docs`, `portal` |
|
|
214
|
+
| `port` | number | `3000` | Default server port |
|
|
215
|
+
| `host` | string | `"localhost"` | Default host |
|
|
216
|
+
| `docs.title` | string | `"Documentation"` | Documentation site title |
|
|
217
|
+
| `docs.theme` | string | `"vue"` | Docsify theme name |
|
|
218
|
+
| `portal.dataPath` | string | `"./data"` | Path to data files |
|
|
219
|
+
| `portal.rtreeEnabled` | boolean | `true` | Enable spatial indexing |
|
|
220
|
+
|
|
221
|
+
## Environment Variables
|
|
222
|
+
|
|
223
|
+
| Variable | Description |
|
|
224
|
+
|----------|-------------|
|
|
225
|
+
| `VISUALIFY_PORT` | Default port override |
|
|
226
|
+
| `VISUALIFY_HOST` | Default host override |
|
|
227
|
+
| `VISUALIFY_VERBOSE` | Enable verbose logging (set to `1` or `true`) |
|
|
228
|
+
| `VISUALIFY_HMR` | Enable HMR (set to `1` or `true`) |
|
|
229
|
+
|
|
230
|
+
## Examples
|
|
231
|
+
|
|
232
|
+
### Complete Workflow
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
# 1. Initialize new project
|
|
236
|
+
visualify init my-project --template full
|
|
237
|
+
cd my-project
|
|
238
|
+
|
|
239
|
+
# 2. Start development server
|
|
240
|
+
visualify dev
|
|
241
|
+
|
|
242
|
+
# 3. Edit configuration visually
|
|
243
|
+
visualify edit
|
|
244
|
+
|
|
245
|
+
# 4. Build for production
|
|
246
|
+
visualify docs build
|
|
247
|
+
visualify portal build
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### Legacy Commands
|
|
251
|
+
|
|
252
|
+
The following legacy commands from `@visualify/cli` have been integrated into the unified CLI:
|
|
253
|
+
|
|
254
|
+
| Legacy | New Equivalent | Notes |
|
|
255
|
+
|--------|----------------|-------|
|
|
256
|
+
| `serve` | `dev` or `docs serve` | Use `dev` for development |
|
|
257
|
+
| `start` | `portal start` | Start production portal |
|
|
258
|
+
| `load-json` | Portal data import | Use portal UI or API |
|
|
259
|
+
| `mapping` | Portal configuration | Configure in `visualify.json` |
|
|
260
|
+
| `rtree2d` | Automatic | Enabled by default in portal |
|
|
261
|
+
|
|
262
|
+
## Troubleshooting
|
|
263
|
+
|
|
264
|
+
### Port Already in Use
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
# Try a different port
|
|
268
|
+
visualify dev --port 8080
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Permission Denied
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
# Fix npm permissions
|
|
275
|
+
sudo chown -R $(whoami) ~/.npm
|
|
276
|
+
|
|
277
|
+
# Or use npx without global install
|
|
278
|
+
npx visualify dev
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### Command Not Found
|
|
282
|
+
|
|
283
|
+
```bash
|
|
284
|
+
# Verify installation
|
|
285
|
+
npm list -g visualify
|
|
286
|
+
|
|
287
|
+
# Reinstall if needed
|
|
288
|
+
npm install -g visualify
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
## Getting Help
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
# General help
|
|
295
|
+
visualify --help
|
|
296
|
+
|
|
297
|
+
# Command-specific help
|
|
298
|
+
visualify dev --help
|
|
299
|
+
visualify docs --help
|
|
300
|
+
visualify portal --help
|
|
301
|
+
visualify init --help
|
|
302
|
+
visualify edit --help
|
|
303
|
+
```
|