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,359 @@
|
|
|
1
|
+
# Visual Configuration Editor
|
|
2
|
+
|
|
3
|
+
Visualify.js includes a built-in visual editor for creating and modifying chart configurations through an intuitive graphical interface.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The Visual Editor enables:
|
|
8
|
+
- Point-and-click chart configuration
|
|
9
|
+
- Real-time preview of changes
|
|
10
|
+
- Drag-and-drop data import
|
|
11
|
+
- Theme customization
|
|
12
|
+
- Export to JSON/JavaScript
|
|
13
|
+
|
|
14
|
+
## Launching the Editor
|
|
15
|
+
|
|
16
|
+
### CLI Command
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# Start the visual editor
|
|
20
|
+
visualify edit
|
|
21
|
+
|
|
22
|
+
# With a specific configuration file
|
|
23
|
+
visualify edit ./my-chart.json
|
|
24
|
+
|
|
25
|
+
# With custom port
|
|
26
|
+
visualify edit --port 8080
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Programmatic API
|
|
30
|
+
|
|
31
|
+
```javascript
|
|
32
|
+
import { launchEditor } from 'visualify';
|
|
33
|
+
|
|
34
|
+
// Launch editor
|
|
35
|
+
const editor = await launchEditor({
|
|
36
|
+
port: 3000,
|
|
37
|
+
config: './chart-config.json',
|
|
38
|
+
theme: 'dark'
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
// Close editor
|
|
42
|
+
editor.close();
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### React Component
|
|
46
|
+
|
|
47
|
+
```javascript
|
|
48
|
+
import { VisualEditor } from 'visualify';
|
|
49
|
+
|
|
50
|
+
function App() {
|
|
51
|
+
return (
|
|
52
|
+
<VisualEditor
|
|
53
|
+
initialConfig={chartConfig}
|
|
54
|
+
onChange={(config) => console.log('Updated:', config)}
|
|
55
|
+
onSave={(config) => saveToFile(config)}
|
|
56
|
+
/>
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Editor Interface
|
|
62
|
+
|
|
63
|
+
### Layout
|
|
64
|
+
|
|
65
|
+
The editor consists of four main panels:
|
|
66
|
+
|
|
67
|
+
1. **Toolbar** (Top) - Chart type, save, export, undo/redo
|
|
68
|
+
2. **Canvas** (Center) - Live chart preview
|
|
69
|
+
3. **Properties** (Right) - Configuration options
|
|
70
|
+
4. **Data** (Bottom) - Data table and import
|
|
71
|
+
|
|
72
|
+
### Chart Type Selection
|
|
73
|
+
|
|
74
|
+
```javascript
|
|
75
|
+
// Available chart types in editor
|
|
76
|
+
const chartTypes = [
|
|
77
|
+
'line', // Line charts
|
|
78
|
+
'bar', // Bar/Column charts
|
|
79
|
+
'pie', // Pie/Donut charts
|
|
80
|
+
'scatter', // Scatter plots
|
|
81
|
+
'radar', // Radar/Spider charts
|
|
82
|
+
'funnel', // Funnel charts
|
|
83
|
+
'heatmap', // Heat maps
|
|
84
|
+
'scatter3d', // 3D scatter plots
|
|
85
|
+
'bar3d', // 3D bar charts
|
|
86
|
+
'surface3d' // 3D surface plots
|
|
87
|
+
];
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Data Import
|
|
91
|
+
|
|
92
|
+
### Supported Formats
|
|
93
|
+
|
|
94
|
+
The editor accepts data in multiple formats:
|
|
95
|
+
|
|
96
|
+
| Format | Extension | Description |
|
|
97
|
+
|--------|-----------|-------------|
|
|
98
|
+
| JSON | `.json` | Standard JSON array/object |
|
|
99
|
+
| CSV | `.csv` | Comma-separated values |
|
|
100
|
+
| Excel | `.xlsx`, `.xls` | Microsoft Excel files |
|
|
101
|
+
| Google Sheets | URL | Import from Google Sheets |
|
|
102
|
+
|
|
103
|
+
### Drag and Drop
|
|
104
|
+
|
|
105
|
+
```javascript
|
|
106
|
+
// Enable drag-and-drop in editor
|
|
107
|
+
<VisualEditor
|
|
108
|
+
allowDragDrop={true}
|
|
109
|
+
onDataImport={(data, format) => {
|
|
110
|
+
console.log(`Imported ${data.length} rows from ${format}`);
|
|
111
|
+
}}
|
|
112
|
+
/>
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Data Transformation
|
|
116
|
+
|
|
117
|
+
```javascript
|
|
118
|
+
// Transform imported data
|
|
119
|
+
const transformConfig = {
|
|
120
|
+
// Map columns to chart dimensions
|
|
121
|
+
mapping: {
|
|
122
|
+
x: 'date',
|
|
123
|
+
y: 'revenue',
|
|
124
|
+
category: 'region'
|
|
125
|
+
},
|
|
126
|
+
// Apply aggregations
|
|
127
|
+
aggregation: {
|
|
128
|
+
type: 'sum',
|
|
129
|
+
groupBy: 'region'
|
|
130
|
+
},
|
|
131
|
+
// Filter data
|
|
132
|
+
filter: {
|
|
133
|
+
date: { from: '2024-01-01', to: '2024-12-31' }
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Property Panels
|
|
139
|
+
|
|
140
|
+
### Basic Properties
|
|
141
|
+
|
|
142
|
+
Configure fundamental chart settings:
|
|
143
|
+
|
|
144
|
+
- **Title** - Chart title and subtitle
|
|
145
|
+
- **Legend** - Position, orientation, styling
|
|
146
|
+
- **Tooltip** - Trigger, formatter, position
|
|
147
|
+
- **Toolbox** - Export, data view, magic type
|
|
148
|
+
|
|
149
|
+
### Axis Configuration
|
|
150
|
+
|
|
151
|
+
```javascript
|
|
152
|
+
// X-axis properties
|
|
153
|
+
{
|
|
154
|
+
"xAxis": {
|
|
155
|
+
"type": "category",
|
|
156
|
+
"name": "Month",
|
|
157
|
+
"nameLocation": "middle",
|
|
158
|
+
"nameGap": 30,
|
|
159
|
+
"axisLine": { "show": true },
|
|
160
|
+
"axisLabel": { "rotate": 45 }
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Series Styling
|
|
166
|
+
|
|
167
|
+
Visual styling options:
|
|
168
|
+
|
|
169
|
+
- **Colors** - Single color, gradient, or palette
|
|
170
|
+
- **Line Style** - Width, type (solid/dashed/dotted)
|
|
171
|
+
- **Area Fill** - Opacity, gradient
|
|
172
|
+
- **Symbol** - Shape, size, rotation
|
|
173
|
+
- **Label** - Position, formatter, font
|
|
174
|
+
|
|
175
|
+
### Theme Customization
|
|
176
|
+
|
|
177
|
+
```javascript
|
|
178
|
+
// Custom theme in editor
|
|
179
|
+
const customTheme = {
|
|
180
|
+
color: ['#5470c6', '#91cc75', '#fac858'],
|
|
181
|
+
backgroundColor: '#f5f5f5',
|
|
182
|
+
textStyle: {
|
|
183
|
+
fontFamily: 'Arial, sans-serif',
|
|
184
|
+
fontSize: 12
|
|
185
|
+
},
|
|
186
|
+
title: {
|
|
187
|
+
textStyle: { fontSize: 18, fontWeight: 'bold' }
|
|
188
|
+
},
|
|
189
|
+
legend: {
|
|
190
|
+
textStyle: { fontSize: 12 }
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Real-Time Preview
|
|
196
|
+
|
|
197
|
+
### Auto-Update
|
|
198
|
+
|
|
199
|
+
Changes are reflected immediately in the preview panel:
|
|
200
|
+
|
|
201
|
+
```javascript
|
|
202
|
+
<VisualEditor
|
|
203
|
+
autoUpdate={true}
|
|
204
|
+
updateDelay={300} // Debounce delay in ms
|
|
205
|
+
/>
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Preview Modes
|
|
209
|
+
|
|
210
|
+
- **Desktop** (1200px) - Full width preview
|
|
211
|
+
- **Tablet** (768px) - Medium width preview
|
|
212
|
+
- **Mobile** (375px) - Narrow width preview
|
|
213
|
+
|
|
214
|
+
## Export Options
|
|
215
|
+
|
|
216
|
+
### Configuration Export
|
|
217
|
+
|
|
218
|
+
```javascript
|
|
219
|
+
// Export formats
|
|
220
|
+
const exports = {
|
|
221
|
+
json: () => editor.toJSON(),
|
|
222
|
+
javascript: () => editor.toJavaScript(),
|
|
223
|
+
react: () => editor.toReactComponent(),
|
|
224
|
+
vue: () => editor.toVueComponent(),
|
|
225
|
+
image: () => editor.toImage({ format: 'png', quality: 1 })
|
|
226
|
+
};
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### Embedding
|
|
230
|
+
|
|
231
|
+
```javascript
|
|
232
|
+
// Generate embed code
|
|
233
|
+
const embedCode = editor.generateEmbed({
|
|
234
|
+
type: 'iframe',
|
|
235
|
+
width: 800,
|
|
236
|
+
height: 600,
|
|
237
|
+
responsive: true
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
// Result: <iframe src="..." width="100%" height="600"></iframe>
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
## Keyboard Shortcuts
|
|
244
|
+
|
|
245
|
+
| Shortcut | Action |
|
|
246
|
+
|----------|--------|
|
|
247
|
+
| `Ctrl/Cmd + S` | Save configuration |
|
|
248
|
+
| `Ctrl/Cmd + Z` | Undo |
|
|
249
|
+
| `Ctrl/Cmd + Shift + Z` | Redo |
|
|
250
|
+
| `Ctrl/Cmd + E` | Export |
|
|
251
|
+
| `Ctrl/Cmd + P` | Preview toggle |
|
|
252
|
+
| `Delete` | Remove selected element |
|
|
253
|
+
| `Escape` | Deselect / Close panel |
|
|
254
|
+
|
|
255
|
+
## Collaboration Features
|
|
256
|
+
|
|
257
|
+
### Real-Time Collaboration
|
|
258
|
+
|
|
259
|
+
```javascript
|
|
260
|
+
// Enable collaborative editing
|
|
261
|
+
<VisualEditor
|
|
262
|
+
collaboration={{
|
|
263
|
+
enabled: true,
|
|
264
|
+
roomId: 'project-123',
|
|
265
|
+
userName: 'John Doe',
|
|
266
|
+
userColor: '#5470c6'
|
|
267
|
+
}}
|
|
268
|
+
/>
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Version History
|
|
272
|
+
|
|
273
|
+
```javascript
|
|
274
|
+
// Access version history
|
|
275
|
+
const history = editor.getHistory();
|
|
276
|
+
|
|
277
|
+
// Revert to previous version
|
|
278
|
+
editor.revertTo(history[2].timestamp);
|
|
279
|
+
|
|
280
|
+
// Create named snapshot
|
|
281
|
+
editor.createSnapshot('Before color changes');
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
## Custom Extensions
|
|
285
|
+
|
|
286
|
+
### Adding Custom Widgets
|
|
287
|
+
|
|
288
|
+
```javascript
|
|
289
|
+
import { registerWidget } from 'visualify';
|
|
290
|
+
|
|
291
|
+
// Register custom property widget
|
|
292
|
+
registerWidget('custom-color-picker', {
|
|
293
|
+
component: MyColorPicker,
|
|
294
|
+
props: {
|
|
295
|
+
allowGradient: true,
|
|
296
|
+
presetColors: ['#f00', '#0f0', '#00f']
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
|
|
300
|
+
// Use in configuration
|
|
301
|
+
{
|
|
302
|
+
"properties": [{
|
|
303
|
+
"key": "series.color",
|
|
304
|
+
"widget": "custom-color-picker"
|
|
305
|
+
}]
|
|
306
|
+
}
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### Custom Chart Types
|
|
310
|
+
|
|
311
|
+
```javascript
|
|
312
|
+
// Register custom chart for editor
|
|
313
|
+
import { registerChartType } from 'visualify';
|
|
314
|
+
|
|
315
|
+
registerChartType('custom-gauge', {
|
|
316
|
+
name: 'Gauge Chart',
|
|
317
|
+
icon: 'gauge-icon.svg',
|
|
318
|
+
component: GaugeChart,
|
|
319
|
+
defaultConfig: {
|
|
320
|
+
type: 'custom-gauge',
|
|
321
|
+
min: 0,
|
|
322
|
+
max: 100,
|
|
323
|
+
value: 50
|
|
324
|
+
},
|
|
325
|
+
properties: [
|
|
326
|
+
{ key: 'min', type: 'number', label: 'Minimum' },
|
|
327
|
+
{ key: 'max', type: 'number', label: 'Maximum' },
|
|
328
|
+
{ key: 'value', type: 'number', label: 'Current Value' }
|
|
329
|
+
]
|
|
330
|
+
});
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
## Best Practices
|
|
334
|
+
|
|
335
|
+
1. **Save frequently** - Use auto-save or manual saves
|
|
336
|
+
2. **Use snapshots** - Create named versions before major changes
|
|
337
|
+
3. **Test responsive** - Check all preview modes
|
|
338
|
+
4. **Validate data** - Ensure imported data is clean
|
|
339
|
+
5. **Export backups** - Keep JSON exports as backups
|
|
340
|
+
|
|
341
|
+
## Troubleshooting
|
|
342
|
+
|
|
343
|
+
### Editor Not Loading
|
|
344
|
+
|
|
345
|
+
- Check port availability
|
|
346
|
+
- Verify configuration file is valid JSON
|
|
347
|
+
- Clear browser cache
|
|
348
|
+
|
|
349
|
+
### Preview Not Updating
|
|
350
|
+
|
|
351
|
+
- Disable browser extensions
|
|
352
|
+
- Check for JavaScript errors in console
|
|
353
|
+
- Reduce update delay if performance is slow
|
|
354
|
+
|
|
355
|
+
### Data Import Fails
|
|
356
|
+
|
|
357
|
+
- Verify file format is supported
|
|
358
|
+
- Check for encoding issues (use UTF-8)
|
|
359
|
+
- Ensure data is not too large (>10MB)
|
package/docs/index.html
CHANGED
|
@@ -1,71 +1,85 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
|
|
4
|
-
<head>
|
|
5
|
-
<meta charset="UTF-8" />
|
|
6
|
-
<title>visualify.js official site</title>
|
|
7
|
-
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
|
8
|
-
<meta name="description" content="Description" />
|
|
9
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="static/logo/favicon.ico" />
|
|
11
|
-
<script src="https://code.jquery.com/jquery-3.6.4.min.js" integrity="sha256-oP6HI9z1XaZNBrJURtCoUT5SUnxFr8s3BzRl+cbzUq8=" crossorigin="anonymous"></script>
|
|
12
|
-
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.css" />
|
|
13
|
-
<link rel="stylesheet" href="./static/css/font-awesome.min.css" />
|
|
14
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsify/lib/themes/vue.css" />
|
|
15
|
-
<link rel="stylesheet" href="./static/css/fluff-stuff.css" />
|
|
16
|
-
<script src="./static/js/configuration.js"></script>
|
|
17
|
-
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>
|
|
18
|
-
<!-- Docsify siderbarbar -->
|
|
19
|
-
<script src="https://cdn.jsdelivr.net/npm/marked@latest/marked.min.js"></script>
|
|
20
|
-
</head>
|
|
21
|
-
|
|
22
|
-
<body>
|
|
23
|
-
<div id="docsify"></div>
|
|
24
|
-
<script>
|
|
25
|
-
// Set html "lang" attribute based on URL
|
|
26
|
-
var lang = location.hash.match(/#\/(zh-cn)\//);
|
|
27
|
-
if (lang) {
|
|
28
|
-
document.documentElement.setAttribute("lang", lang[1]);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
window.$docsify = config;
|
|
32
|
-
$visualify = {
|
|
33
|
-
mode: 'charts',
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/*
|
|
37
|
-
const custom_buttons = [
|
|
38
|
-
["MmTrBC", "./MmTrBC/", 1],
|
|
39
|
-
["Esodev", "./EsoDev/", 3],
|
|
40
|
-
];
|
|
41
|
-
*/
|
|
42
|
-
</script>
|
|
43
|
-
<!-- Docsify v4 -->
|
|
44
|
-
<script src="https://cdn.jsdelivr.net/npm/docsify@4"></script>
|
|
45
|
-
<script src="https://cdn.jsdelivr.net/npm/vue@3/dist/vue.global.prod.js"></script>
|
|
46
|
-
<script src="./static/js/fluff.js" defer></script>
|
|
47
|
-
<!-- Plugins -->
|
|
48
|
-
<script src="https://
|
|
49
|
-
<script src="https://cdn.jsdelivr.net/npm/docsify/lib/plugins/external-script.js"></script>
|
|
50
|
-
<!-- Copy to Clipboard -->
|
|
51
|
-
<script src="https://unpkg.com/docsify-copy-code@2/dist/docsify-copy-code.min.js"></script>
|
|
52
|
-
<!-- docsify-tabs (latest v1.x.x) -->
|
|
53
|
-
<script src="https://cdn.jsdelivr.net/npm/docsify-tabs@1/dist/docsify-tabs.min.js"></script>
|
|
54
|
-
<!-- LaTeX display engine script Here -->
|
|
55
|
-
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
|
56
|
-
<script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
|
|
57
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css" />
|
|
58
|
-
<script src="https://unpkg.com/docsify-latex@0.5.2/dist/docsify-latex.min.js"></script>
|
|
59
|
-
<!-- flexible-alerts -->
|
|
60
|
-
<script src="https://unpkg.com/docsify-plugin-flexible-alerts@1.1.1/dist/docsify-plugin-flexible-alerts.min.js"></script>
|
|
61
|
-
<!-- Mermaid -->
|
|
62
|
-
<script type="module">
|
|
63
|
-
import mermaid from "https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs"; mermaid.initialize({ startOnLoad: true }); window.mermaid = mermaid;
|
|
64
|
-
</script>
|
|
65
|
-
<!-- Prism -->
|
|
66
|
-
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-python.min.js"></script>
|
|
67
|
-
<!--
|
|
68
|
-
<script src="
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8" />
|
|
6
|
+
<title>visualify.js official site</title>
|
|
7
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
|
8
|
+
<meta name="description" content="Description" />
|
|
9
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="static/logo/favicon.ico" />
|
|
11
|
+
<script src="https://code.jquery.com/jquery-3.6.4.min.js" integrity="sha256-oP6HI9z1XaZNBrJURtCoUT5SUnxFr8s3BzRl+cbzUq8=" crossorigin="anonymous"></script>
|
|
12
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.css" />
|
|
13
|
+
<link rel="stylesheet" href="./static/css/font-awesome.min.css" />
|
|
14
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsify/lib/themes/vue.css" />
|
|
15
|
+
<link rel="stylesheet" href="./static/css/fluff-stuff.css" />
|
|
16
|
+
<script src="./static/js/configuration.js?v=20260211-3dmount1"></script>
|
|
17
|
+
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>
|
|
18
|
+
<!-- Docsify siderbarbar -->
|
|
19
|
+
<script src="https://cdn.jsdelivr.net/npm/marked@latest/marked.min.js"></script>
|
|
20
|
+
</head>
|
|
21
|
+
|
|
22
|
+
<body>
|
|
23
|
+
<div id="docsify"></div>
|
|
24
|
+
<script>
|
|
25
|
+
// Set html "lang" attribute based on URL
|
|
26
|
+
var lang = location.hash.match(/#\/(zh-cn)\//);
|
|
27
|
+
if (lang) {
|
|
28
|
+
document.documentElement.setAttribute("lang", lang[1]);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
window.$docsify = config;
|
|
32
|
+
$visualify = {
|
|
33
|
+
mode: 'charts',
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/*
|
|
37
|
+
const custom_buttons = [
|
|
38
|
+
["MmTrBC", "./MmTrBC/", 1],
|
|
39
|
+
["Esodev", "./EsoDev/", 3],
|
|
40
|
+
];
|
|
41
|
+
*/
|
|
42
|
+
</script>
|
|
43
|
+
<!-- Docsify v4 -->
|
|
44
|
+
<script src="https://cdn.jsdelivr.net/npm/docsify@4"></script>
|
|
45
|
+
<script src="https://cdn.jsdelivr.net/npm/vue@3/dist/vue.global.prod.js"></script>
|
|
46
|
+
<script src="./static/js/fluff.js" defer></script>
|
|
47
|
+
<!-- Plugins -->
|
|
48
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-polyfills/0.1.43/polyfill.min.js"></script>
|
|
49
|
+
<script src="https://cdn.jsdelivr.net/npm/docsify/lib/plugins/external-script.js"></script>
|
|
50
|
+
<!-- Copy to Clipboard -->
|
|
51
|
+
<script src="https://unpkg.com/docsify-copy-code@2/dist/docsify-copy-code.min.js"></script>
|
|
52
|
+
<!-- docsify-tabs (latest v1.x.x) -->
|
|
53
|
+
<script src="https://cdn.jsdelivr.net/npm/docsify-tabs@1/dist/docsify-tabs.min.js"></script>
|
|
54
|
+
<!-- LaTeX display engine script Here -->
|
|
55
|
+
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
|
56
|
+
<script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
|
|
57
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css" />
|
|
58
|
+
<script src="https://unpkg.com/docsify-latex@0.5.2/dist/docsify-latex.min.js"></script>
|
|
59
|
+
<!-- flexible-alerts -->
|
|
60
|
+
<script src="https://unpkg.com/docsify-plugin-flexible-alerts@1.1.1/dist/docsify-plugin-flexible-alerts.min.js"></script>
|
|
61
|
+
<!-- Mermaid -->
|
|
62
|
+
<script type="module">
|
|
63
|
+
import mermaid from "https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs"; mermaid.initialize({ startOnLoad: true }); window.mermaid = mermaid;
|
|
64
|
+
</script>
|
|
65
|
+
<!-- Prism -->
|
|
66
|
+
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-python.min.js"></script>
|
|
67
|
+
<!-- ECharts and ECharts GL for 3D visualizations -->
|
|
68
|
+
<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js"></script>
|
|
69
|
+
<script src="https://cdn.jsdelivr.net/npm/echarts-gl@2.0.9/dist/echarts-gl.min.js"></script>
|
|
70
|
+
<!-- Plotly.js -->
|
|
71
|
+
<script src="https://cdn.plot.ly/plotly-2.27.0.min.js"></script>
|
|
72
|
+
<!-- Debug globals used by some modules -->
|
|
73
|
+
<script>
|
|
74
|
+
window.debug = false;
|
|
75
|
+
window.log = function() {};
|
|
76
|
+
// Disable HMR in static docs mode to prevent localhost WebSocket noise.
|
|
77
|
+
window.__VISUALIFY_HMR__ = { enabled: false };
|
|
78
|
+
</script>
|
|
79
|
+
<!-- Visualify -->
|
|
80
|
+
<script src="./static/js/visualify.js?v=20260211-hmrfix2"></script>
|
|
81
|
+
<!-- 3D Visualization Examples (loaded after visualify) -->
|
|
82
|
+
<script src="./static/js/3d-viz-examples.js?v=20260211-ext1"></script>
|
|
83
|
+
</body>
|
|
84
|
+
|
|
85
|
+
</html>
|
package/docs/manifest.json
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
{
|
|
2
|
-
"short_name": "visualifyjs",
|
|
3
|
-
"name": "Create Your Data Portal Simple",
|
|
4
|
-
"icons": [{
|
|
5
|
-
"src": "https://lgcyaxi.net/visualify/static/logo/favicon.ico",
|
|
6
|
-
"sizes": "64x64 32x32 24x24 16x16",
|
|
7
|
-
"type": "image/x-icon"
|
|
8
|
-
},
|
|
9
|
-
{
|
|
10
|
-
"src": "https://lgcyaxi.net/visualify/static/logo/logo192.png",
|
|
11
|
-
"type": "image/png",
|
|
12
|
-
"sizes": "192x192"
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
"src": "https://lgcyaxi.net/visualify/static/logo/logo512.png",
|
|
16
|
-
"type": "image/png",
|
|
17
|
-
"sizes": "512x512"
|
|
18
|
-
}
|
|
19
|
-
],
|
|
20
|
-
"start_url": ".",
|
|
21
|
-
"display": "standalone",
|
|
22
|
-
"theme_color": "#000000",
|
|
23
|
-
"background_color": "#ffffff"
|
|
1
|
+
{
|
|
2
|
+
"short_name": "visualifyjs",
|
|
3
|
+
"name": "Create Your Data Portal Simple",
|
|
4
|
+
"icons": [{
|
|
5
|
+
"src": "https://lgcyaxi.net/visualify/static/logo/favicon.ico",
|
|
6
|
+
"sizes": "64x64 32x32 24x24 16x16",
|
|
7
|
+
"type": "image/x-icon"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"src": "https://lgcyaxi.net/visualify/static/logo/logo192.png",
|
|
11
|
+
"type": "image/png",
|
|
12
|
+
"sizes": "192x192"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"src": "https://lgcyaxi.net/visualify/static/logo/logo512.png",
|
|
16
|
+
"type": "image/png",
|
|
17
|
+
"sizes": "512x512"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"start_url": ".",
|
|
21
|
+
"display": "standalone",
|
|
22
|
+
"theme_color": "#000000",
|
|
23
|
+
"background_color": "#ffffff"
|
|
24
24
|
}
|