visualifyjs 2.5.3-2.dev

Sign up to get free protection for your applications and to get access to all the features.
Files changed (147) hide show
  1. package/.github/workflows/static.yml.bak +51 -0
  2. package/LICENSE +674 -0
  3. package/README.md +59 -0
  4. package/config-overrides.js +31 -0
  5. package/dist/visualify.js +188 -0
  6. package/docs/.nojekyll +0 -0
  7. package/docs/docs/CLI.md +34 -0
  8. package/docs/docs/README.md +65 -0
  9. package/docs/docs/Rechart/bar.md +190 -0
  10. package/docs/docs/Rechart/funnel.md +241 -0
  11. package/docs/docs/Rechart/geo.md +0 -0
  12. package/docs/docs/Rechart/line.md +355 -0
  13. package/docs/docs/Rechart/liquidfill.md +0 -0
  14. package/docs/docs/Rechart/pie.md +225 -0
  15. package/docs/docs/Rechart/polar.md +0 -0
  16. package/docs/docs/Rechart/radar.md +253 -0
  17. package/docs/docs/Rechart/sankey.md +0 -0
  18. package/docs/docs/Rechart/scatter.md +298 -0
  19. package/docs/docs/Rechart/sunburst.md +0 -0
  20. package/docs/docs/Rechart/tree.md +0 -0
  21. package/docs/docs/Rechart/wordcloud.md +0 -0
  22. package/docs/docs/_404.md +52 -0
  23. package/docs/docs/_coverpage.md +11 -0
  24. package/docs/docs/_sidebar.md +44 -0
  25. package/docs/docs/components/dotBio.md +34 -0
  26. package/docs/docs/components/echart.md +82 -0
  27. package/docs/docs/components/html.md +34 -0
  28. package/docs/docs/components/macaron.md +145 -0
  29. package/docs/docs/components/markdown.md +0 -0
  30. package/docs/docs/components/more.md +142 -0
  31. package/docs/docs/components/plotly.md +62 -0
  32. package/docs/docs/components/scatterL.md +70 -0
  33. package/docs/docs/components/visium.md +57 -0
  34. package/docs/docs/configuration.md +121 -0
  35. package/docs/docs/deploy.md +31 -0
  36. package/docs/docs/log.md +9 -0
  37. package/docs/docs/more-pages.md +23 -0
  38. package/docs/docs/quickstart.md +124 -0
  39. package/docs/docs/rechart-attributes.md +74 -0
  40. package/docs/docs/rechart-basic-usage.md +162 -0
  41. package/docs/docs/static/_images/deploy-github-pages.png +0 -0
  42. package/docs/docs/static/logo/favicon.ico +0 -0
  43. package/docs/docs/static/logo/logo_128x128.png +0 -0
  44. package/docs/docs/static/logo/logo_192x192.png +0 -0
  45. package/docs/docs/static/logo/logo_256x256.png +0 -0
  46. package/docs/docs/static/logo/logo_512x512.png +0 -0
  47. package/docs/docs/static/logo/logo_64x64.png +0 -0
  48. package/docs/docs/theme.md +5 -0
  49. package/docs/index.html +71 -0
  50. package/docs/manifest.json +24 -0
  51. package/docs/static/css/fluff-stuff.css +170 -0
  52. package/docs/static/css/font-awesome.min.css +4 -0
  53. package/docs/static/css/visualify.css +25 -0
  54. package/docs/static/fonts/fontawesome-webfont.woff2 +0 -0
  55. package/docs/static/images/star.png +0 -0
  56. package/docs/static/js/configuration.js +448 -0
  57. package/docs/static/js/fluff.js +1 -0
  58. package/docs/static/js/visualify.js +188 -0
  59. package/docs/static/logo/favicon.ico +0 -0
  60. package/docs/static/logo/logo_128x128.png +0 -0
  61. package/docs/static/logo/logo_192x192.png +0 -0
  62. package/docs/static/logo/logo_256x256.png +0 -0
  63. package/docs/static/logo/logo_512x512.png +0 -0
  64. package/docs/static/logo/logo_64x64.png +0 -0
  65. package/package.json +84 -0
  66. package/rollup.config.mjs +76 -0
  67. package/src/_css/404.css +116 -0
  68. package/src/_css/App.css +38 -0
  69. package/src/_css/autoSuggestion.css +27 -0
  70. package/src/_css/circular-progress.css +33 -0
  71. package/src/_css/index.css +37 -0
  72. package/src/_css/modern.css +25 -0
  73. package/src/_media/404.png +0 -0
  74. package/src/_media/corner.svg +8 -0
  75. package/src/_media/download.svg +3 -0
  76. package/src/_media/icon.svg +1 -0
  77. package/src/_media/logo.svg +14 -0
  78. package/src/_test/App.test.js +15 -0
  79. package/src/_utils/reportWebVitals.js +13 -0
  80. package/src/core/appContext.js +27 -0
  81. package/src/core/components/Scatter.js +188 -0
  82. package/src/core/components/ScatterBio.js +572 -0
  83. package/src/core/components/VisiumPlot.js +165 -0
  84. package/src/core/components/browser.js +42 -0
  85. package/src/core/components/dotplot.js +413 -0
  86. package/src/core/components/html.js +29 -0
  87. package/src/core/components/list.js +178 -0
  88. package/src/core/components/macaron.js +201 -0
  89. package/src/core/components/markdown.js +56 -0
  90. package/src/core/components/parser.scatterBio.js +587 -0
  91. package/src/core/components/ratio.js +80 -0
  92. package/src/core/components/scatterL.js +173 -0
  93. package/src/core/components/searchbar.js +131 -0
  94. package/src/core/components/selection.js +193 -0
  95. package/src/core/components/timeline.js +281 -0
  96. package/src/core/components/visium.js +97 -0
  97. package/src/core/fetch/condfetch.js +82 -0
  98. package/src/core/fetch/fetch.js +92 -0
  99. package/src/core/fetch/json.js +29 -0
  100. package/src/core/fetch/vfetch.js +42 -0
  101. package/src/core/liveEditor.js +44 -0
  102. package/src/core/modules/codeEditorWithPreview.js +104 -0
  103. package/src/core/modules/echarts/common.js +20 -0
  104. package/src/core/modules/echarts/presetHandler.js +41 -0
  105. package/src/core/modules/echarts/presets/esodev.chromium.js +172 -0
  106. package/src/core/modules/echarts/presets/esodev.codex.js +130 -0
  107. package/src/core/modules/echarts/presets/esodev.visium.js +123 -0
  108. package/src/core/modules/echarts/presets/mmtrbc.js +186 -0
  109. package/src/core/modules/echarts.js +71 -0
  110. package/src/core/modules/echartsUtils.js +43 -0
  111. package/src/core/modules/echartswitcher.js +152 -0
  112. package/src/core/modules/replotly/presetHandler.js +24 -0
  113. package/src/core/modules/replotly/presets/minimum.js +18 -0
  114. package/src/core/modules/replotly/presets/mmtrbc.dot.js +114 -0
  115. package/src/core/modules/replotly/presets/mmtrbc.violin.js +100 -0
  116. package/src/core/modules/replotly.js +71 -0
  117. package/src/core/pages/404.js +50 -0
  118. package/src/core/pages/error.js +27 -0
  119. package/src/core/pages/jsonPage.js +62 -0
  120. package/src/core/pages/loading.js +44 -0
  121. package/src/core/parser/echart.data.js +183 -0
  122. package/src/core/parser/echart.features.js +125 -0
  123. package/src/core/parser/echart.general.js +147 -0
  124. package/src/core/parser/echart.hilbert.js +57 -0
  125. package/src/core/parser/echart.parser.js +210 -0
  126. package/src/core/parser/echart.series.js +67 -0
  127. package/src/core/parser/echart.types.js +76 -0
  128. package/src/core/parser/plotly.config.js +10 -0
  129. package/src/core/parser/plotly.data.js +132 -0
  130. package/src/core/parser/plotly.layout.js +10 -0
  131. package/src/core/parser/plotly.violin.js +18 -0
  132. package/src/core/recharts.js +62 -0
  133. package/src/core/router/alias.js +49 -0
  134. package/src/core/router/jsonRouter.js +31 -0
  135. package/src/core/themes/modern.js +32 -0
  136. package/src/core/themes/themeSelector.js +33 -0
  137. package/src/core/visualify.js +47 -0
  138. package/src/core/widgets/circularProgress.js +24 -0
  139. package/src/core/widgets/controller.js +83 -0
  140. package/src/core/widgets/errorBoundary.js +36 -0
  141. package/src/core/widgets/footer.js +177 -0
  142. package/src/core/widgets/header.js +234 -0
  143. package/src/core/widgets/layout/Grid.js +31 -0
  144. package/src/core/widgets/layout.js +36 -0
  145. package/src/core/widgets/mapping.js +42 -0
  146. package/src/index.js +62 -0
  147. package/src/setupTests.js +5 -0
package/docs/.nojekyll ADDED
File without changes
@@ -0,0 +1,34 @@
1
+ # CLI tools for Visualify
2
+
3
+ ## Description
4
+
5
+ The Visualify.CLI command line interface organizes spatial data using R-tree,
6
+ for efficient data searching and loading.
7
+ By this means, data portals created by Visualifyjs are able to handle large-scale databases.
8
+
9
+ ## Installation
10
+
11
+ ```bash
12
+ npm install -g @visualify/cli
13
+ ```
14
+
15
+ ## Usage
16
+
17
+ To use Visualify.CLI, you can run the following command:
18
+
19
+ - init [path] - Create new documentation
20
+ - serve [path] - Run local server to preview site
21
+ - start [path] - Start a web server to serve the specified path
22
+ - load-json <path> - Load points from JSON file
23
+ - mapping [options] <path> - Create a mapping with optional keys
24
+ - rtree2d [options] <path> - Create a 2D R-tree
25
+ - help [command] - display help for command
26
+
27
+ ```bash
28
+ visualify --help
29
+
30
+ visualify init --help
31
+ visualify serve --help
32
+ visualify start --help
33
+ visualify load-json --help
34
+ ```
@@ -0,0 +1,65 @@
1
+ ## Visualify
2
+
3
+ > The magical data portal generator
4
+ >
5
+ > Best mate for [Docsify](https://docsify.js.org/) to be deployed on GitHub
6
+ > Pages
7
+
8
+ ## What it is
9
+
10
+ Visualify takes the complexity out of generating data portal websites, which is
11
+ inspired by [docsify](https://docsify.js.org/). Forget about manually writing
12
+ React components or generating static HTML files. Visualify smartly loads and
13
+ parses your configuration and data API, allowing you to provide the information
14
+ directly in a JavaScript file. The result? Your data is beautifully displayed
15
+ and visualized as a website, all with minimal effort on your part.
16
+
17
+ To get started, simply create an `index.html` file and deploy it on GitHub Pages
18
+ or your personal server.
19
+
20
+ Here is the [Quick Start](quickstart.md) guide, which providing detailed
21
+ instructions to help you begin.
22
+
23
+ ## Pages Mode Vs. Reacharts Mode
24
+
25
+ Visualify supports two modes: `pages` and `reacharts`. The `pages` mode is
26
+ designed for creating a data portal website as the front router, while the
27
+ `reacharts` mode is designed for creating a single page with multiple plots. The
28
+ `reacharts` mode is the best mate for [Docsify](https://docsify.js.org/) to show
29
+ the plots of your data.
30
+
31
+ Pages mode will be the default mode if you don't specify the mode in the
32
+ configuration. You can specify the mode in the configuration file by setting the
33
+ `mode` field to `pages` or `reacharts`.
34
+
35
+ ```json
36
+ {
37
+ "mode": "pages"
38
+ }
39
+ ```
40
+
41
+ ## Features
42
+
43
+ - **No Manual React Components**: Automatically handles the creation of React
44
+ components without the need for manual coding.
45
+ - **Smart Configuration and Data Parsing**: Loads and parses your
46
+ configuration and data API, even if provided directly in a JavaScript file.
47
+ - **Dynamic Website Visualization**: Transforms your data into a visually
48
+ appealing website on the fly.
49
+ - **Easy Deployment**: Just create an `index.html` file with `*.json`
50
+ configuration and deploy it on GitHub Pages or your personal server.
51
+ - **Best Mate for Docsify**: Visualify is the best mate for
52
+ [Docsify](https://docsify.js.org/) to show the plots of your data.
53
+
54
+ ## Showcases
55
+
56
+ - [MmTrBC](https://visualify.pharmacy.arizona.edu/MmTrBC/): Zhou, Yizhuo, Ying
57
+ Yang, Lihao Guo, Jun Qian, Jian Ge, Debora Sinner, Hongxu Ding, Andrea
58
+ Califano, and Wellington V. Cardoso. "Airway basal cells show regionally
59
+ distinct potential to undergo metaplastic differentiation." Elife 11 (2022):
60
+ e80083.
61
+ - [EsoDev](https://visualify.pharmacy.arizona.edu/EsoDev/): Yang, Ying, Carmel
62
+ Grace McCullough, Lucas Seninge, Lihao Guo, Woo-Joo Kwon, Yongchun Z. Zhang,
63
+ Nancy Yanzhe Li et al. "A Spatiotemporal and Machine-Learning Platform
64
+ Accelerates the Manufacturing of hPSC-derived Esophageal Mucosa." bioRxiv
65
+ (2023): 2023-10.
@@ -0,0 +1,190 @@
1
+ <script defers>
2
+
3
+ const Basic_Bar = {
4
+ code: `const getOption = () => {
5
+ return {
6
+ type: 'bar',
7
+ data: {
8
+ 'PV': [256, 767, 1356, 2087, 803, 582, 432],
9
+ },
10
+ xAxis: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
11
+ }
12
+ };
13
+ return getOption;`
14
+ };
15
+
16
+ const Group_Bar = {
17
+ code: `const getOption = () => {
18
+ return {
19
+ type: 'bar',
20
+ data: {
21
+ 'PV': [256, 767, 1356, 2087, 803, 582, 432],
22
+ 'UV': [287, 707, 1756, 1822, 987, 432, 322],
23
+ },
24
+ xAxis: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
25
+ }
26
+ };
27
+ return getOption;`
28
+ };
29
+
30
+ const Stacked_Bar = {
31
+ code: `const getOption = () => {
32
+ return {
33
+ type: 'bar',
34
+ data: {
35
+ 'PV': [256, 767, 1356, 2087, 803, 582, 432],
36
+ 'UV': [287, 707, 1756, 1822, 987, 432, 322],
37
+ },
38
+ xAxis: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
39
+ areaStyle: [{color: 'red'}, {color: 'blue'}],
40
+ stack: [ 'PV', 'UV' ],
41
+ }
42
+ };
43
+ return getOption;`
44
+ };
45
+
46
+
47
+ const Percentage_Stacked_Bar = {
48
+ code: `const getOption = () => {
49
+ return {
50
+ type: 'bar',
51
+ data: {
52
+ 'PV': [256, 767, 1356, 2087, 803, 582, 432],
53
+ 'UV': [287, 707, 1756, 1822, 987, 432, 322],
54
+ },
55
+ xAxis: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
56
+ percentage: true,
57
+ }
58
+ };
59
+ return getOption;`
60
+ };
61
+
62
+ const Stacked_Horizontal_Bar = {
63
+ code: `const getOption = () => {
64
+ return {
65
+ type: 'bar',
66
+ data: {
67
+ 'PV': [256, 767, 1356, 2087, 803, 582, 432],
68
+ 'UV': [287, 707, 1756, 1822, 987, 432, 322].reverse(),
69
+ },
70
+ yAxis: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
71
+ stack: [ 'PV', 'UV' ],
72
+ }
73
+ };
74
+ return getOption;`
75
+ };
76
+
77
+ const waterfall = {
78
+ code: `const getOption = () => {
79
+ return {
80
+ type: 'bar',
81
+ data: {
82
+ 'Placeholder': [0, 1700, 1400, 1200, 300, 0],
83
+ 'Life Cost': [2900, 1200, 300, 200, 900, 300],
84
+ },
85
+ xAxis: ['Total', 'Rent', 'Utility', 'Transport', 'Meals', 'Other'],
86
+ stack: 'total',
87
+ waterfall: true,
88
+ }
89
+ };
90
+ return getOption;`
91
+ };
92
+
93
+ const Basic_Area_bar = {
94
+ code: `const getOption = () => {
95
+ return {
96
+ title: 'Daily Electricity Usage',
97
+ type: 'bar',
98
+ data: {
99
+ 'usage': [300, 280, 250, 260, 270, 300, 550, 500, 400, 390, 380, 390, 400, 500, 600, 750, 800, 700, 600, 400],
100
+ 'usage2': [125, 280, 223, 260, 270, 300, 550, 343, 400, 390, 553, 213, 400, 223, 123, 750, 321, 123, 542, 135],
101
+ },
102
+ xAxis: ['00:00', '01:15', '02:30', '03:45', '05:00', '06:15', '07:30', '08:45', '10:00', '11:15', '12:30', '13:45', '15:00', '16:15', '17:30', '18:45', '20:00', '21:15', '22:30', '23:45'],
103
+ markArea: [
104
+ {
105
+ 'xAxis': [{start:'06:15', end:'08:45', name: "High Demanding Period"}],
106
+ 'yAxis': {start: 400, end: 600},
107
+ },
108
+ {
109
+ 'xAxis': [{start:'00:00', end:'02:30', name: "Low Demanding Period"}, {start:'05:00',end:'06:15'}],
110
+ 'data': [[{ name: 'avg to max', type: 'average'},{ type: 'max' }]],
111
+ }
112
+ ],
113
+ }
114
+ };
115
+ return getOption;`};
116
+
117
+ const ex1 = new $visualify.LiveEditor(Basic_Bar).mount('#ex1');
118
+ const ex2 = new $visualify.LiveEditor(Group_Bar).mount('#ex2');
119
+ const ex3 = new $visualify.LiveEditor(Stacked_Bar).mount('#ex3');
120
+ const ex4 = new $visualify.LiveEditor(Percentage_Stacked_Bar).mount('#ex4');
121
+ const ex5 = new $visualify.LiveEditor(Stacked_Horizontal_Bar).mount('#ex5');
122
+ const ex6 = new $visualify.LiveEditor(waterfall).mount('#ex6');
123
+ const ex7 = new $visualify.LiveEditor(Basic_Area_bar).mount('#ex7');
124
+ </script>
125
+
126
+ # Line Chart
127
+
128
+ ## Basic Bar Chart
129
+
130
+ <div id="ex1"></div>
131
+
132
+ ## Group Bar Chart
133
+
134
+ <div id="ex2"></div>
135
+
136
+ ## Stacked Bar Chart
137
+
138
+ <div id="ex3"></div>
139
+
140
+ ## Percentage Stacked Bar Chart
141
+
142
+ <div id="ex4"></div>
143
+
144
+ ## Stacked Horizontal Bar Chart
145
+
146
+ <div id="ex5"></div>
147
+
148
+ ## Waterfall Chart
149
+
150
+ <div id="ex6"></div>
151
+
152
+ ## Basic Area Bar Chart
153
+
154
+ <div id="ex7"></div>
155
+
156
+ ## Overall Configuration
157
+
158
+ ### Basic Configuration
159
+
160
+ The basic configuration includes:
161
+
162
+ | Attribute | Type | Description | Choice | Default |
163
+ | --------------- | ----------- | ----------------------- | -------------------------- | ------- |
164
+ | title | string | The main title | User-defined title | - |
165
+ | subtitle | string | A secondary title | User-defined subtitle | - |
166
+ | width | string | The width dimension | Any valid CSS width value | - |
167
+ | height | string | The height dimension | Any valid CSS height value | 400px |
168
+ | legend | bool/object | show or hide legend | False, User-defined legend | {} |
169
+ | xAxis | array/false | The xAxis | User-defined xAxis Data | [] |
170
+ | yAxis | array/false | The yAxis | User-defined yAxis Data | [] |
171
+ | label | object | The label | User-defined label | {} |
172
+ | labelLine | object | The labelLine | User-defined labelLine | {} |
173
+ | tooltip | object | The tooltip | User-defined tooltip | {} |
174
+ | xAxisLineshow | bool | show or hide xAxisLines | True, False | true |
175
+ | yAxisLineshow | bool | show or hide yAxisLines | True, False | true |
176
+ | xAxisLabelShow | bool | show or hide xAxisLabel | True, False | true |
177
+ | yAxisLabelShow | bool | show or hide yAxisLabel | True, False | true |
178
+ | xAxisLabelColor | string | The xAxisLabelColor | Any valid CSS color value | - |
179
+ | yAxisLabelColor | string | The yAxisLabelColor | Any valid CSS color value | - |
180
+
181
+ ### Data Configuration
182
+
183
+ | Attribute | Type | Description | Choice | Default |
184
+ | ---------- | ------------ | --------------------------- | ----------------------------------- | --------- |
185
+ | data | string | The data | User-defined data | {} |
186
+ | type | string/array | The type | 'line', 'bar' | undefined |
187
+ | areaStyle | object | The area style | {},[{color: 'red'},{color: 'blue'}] | {} |
188
+ | stack | string/array | The stack | 'total',['x','y'] | - |
189
+ | percentage | bool | The percentage stacked mode | True, False | false |
190
+ | areaStyle | object | The area style | {},[{color: 'red'},{color: 'blue'}] | {} |
@@ -0,0 +1,241 @@
1
+ <script defers>
2
+
3
+ const Basic_Funnel = {
4
+ code: `const getOption = () => {
5
+ return {
6
+ type: 'funnel',
7
+ data: {
8
+ 'Funnel': [
9
+ { value: 60, name: 'APP' },
10
+ { value: 40, name: 'PC' },
11
+ { value: 20, name: 'Mobile' },
12
+ { value: 80, name: 'Wechat' },
13
+ { value: 100, name: 'Mini App' }
14
+ ],
15
+ },
16
+ }
17
+ };
18
+ return getOption;`
19
+ };
20
+
21
+ const Pyramid_Funnel = {
22
+ code: `const getOption = () => {
23
+ return {
24
+ type: 'funnel',
25
+ data: {
26
+ 'Funnel': [
27
+ { value: 60, name: 'APP' },
28
+ { value: 40, name: 'PC' },
29
+ { value: 20, name: 'Mobile' },
30
+ { value: 80, name: 'Wechat' },
31
+ { value: 100, name: 'Mini App' }
32
+ ],
33
+ },
34
+ sort: 'ascending',
35
+ gap: 5,
36
+ }
37
+ };
38
+ return getOption;`
39
+ };
40
+
41
+ const More_Funnel = {
42
+ code: `const getOption = () => {
43
+ return {
44
+ type: 'funnel',
45
+ data: {
46
+ 'Funnel': [
47
+ { value: 60, name: 'APP' },
48
+ { value: 40, name: 'PC' },
49
+ { value: 20, name: 'Mobile' },
50
+ { value: 80, name: 'Wechat' },
51
+ { value: 100, name: 'Mini App' }
52
+ ],
53
+ },
54
+ funnelAlign: 'left',
55
+ max: 99,
56
+ min: 5,
57
+ label: {
58
+ show: true,
59
+ position: 'outside',
60
+ fontSize: 12,
61
+ },
62
+ width: '70%',
63
+ }
64
+ };
65
+ return getOption;`
66
+ };
67
+
68
+ const Contrast_funnel = {
69
+ code: `const getOption = () => {
70
+ return {
71
+ type: 'funnel',
72
+ data: {
73
+ 'Funnel 1': [
74
+ { value: 60, name: 'APP' },
75
+ { value: 40, name: 'PC' },
76
+ { value: 20, name: 'Mobile' },
77
+ { value: 80, name: 'Wechat' },
78
+ { value: 100, name: 'Mini App' }
79
+ ],
80
+ 'Funnel 2': [
81
+ { value: 30, name: 'APP' },
82
+ { value: 10, name: 'PC' },
83
+ { value: 5, name: 'Mobile' },
84
+ { value: 50, name: 'Wechat' },
85
+ { value: 80, name: 'Mini App' }
86
+ ],
87
+ },
88
+ width: '80%',
89
+ z: [undefined, 100],
90
+ emphasis: [
91
+ {
92
+ label: {
93
+ position: 'inside',
94
+ formatter: '{b}Expected: {c}%'
95
+ }
96
+ },
97
+ {
98
+ label: {
99
+ position: 'inside',
100
+ formatter: '{b}Actual: {c}%'
101
+ }
102
+ }
103
+ ],
104
+ tooltip: {
105
+ trigger: 'item',
106
+ formatter: '{a} <br/>{b} : {c}%'
107
+ },
108
+ toolbox: {
109
+ feature: {
110
+ dataView: { readOnly: false },
111
+ restore: {},
112
+ saveAsImage: {}
113
+ }
114
+ }
115
+ }
116
+ };
117
+ return getOption;`
118
+ };
119
+
120
+ const Multiple_funnel = {
121
+ code: `const getOption = () => {
122
+ return {
123
+ type: 'funnel',
124
+ data: {
125
+ 'Funnel 1': [
126
+ { value: 60, name: 'APP' },
127
+ { value: 40, name: 'PC' },
128
+ { value: 20, name: 'Mobile' },
129
+ { value: 80, name: 'Wechat' },
130
+ { value: 100, name: 'Mini App' }
131
+ ],
132
+ 'Funnel 2': [
133
+ { value: 60, name: 'APP' },
134
+ { value: 40, name: 'PC' },
135
+ { value: 20, name: 'Mobile' },
136
+ { value: 80, name: 'Wechat' },
137
+ { value: 100, name: 'Mini App' }
138
+ ],
139
+ },
140
+ width: ['35%','35%'],
141
+ left: ['10%','55%'],
142
+ sort: [ 'descending', 'ascending'],
143
+ label: [
144
+ {
145
+ position: 'left',
146
+ },
147
+ {
148
+ position: 'right',
149
+ }
150
+ ],
151
+ tooltip: {
152
+ trigger: 'item',
153
+ formatter: '{a} <br/>{b} : {c}%'
154
+ },
155
+ toolbox: {
156
+ feature: {
157
+ dataView: { readOnly: false },
158
+ restore: {},
159
+ saveAsImage: {}
160
+ }
161
+ }
162
+ }
163
+ };
164
+ return getOption;`
165
+ };
166
+
167
+ const ex1 = new $visualify.LiveEditor(Basic_Funnel).mount('#ex1');
168
+ const ex2 = new $visualify.LiveEditor(Pyramid_Funnel).mount('#ex2');
169
+ const ex3 = new $visualify.LiveEditor(More_Funnel).mount('#ex3');
170
+ const ex4 = new $visualify.LiveEditor(Contrast_funnel).mount('#ex4');
171
+ const ex5 = new $visualify.LiveEditor(Multiple_funnel).mount('#ex5');
172
+ </script>
173
+
174
+ # Radar Chart
175
+
176
+ ## Basic Radar Chart
177
+
178
+ <div id="ex1"></div>
179
+
180
+ ## Pyramid Funnel Chart
181
+
182
+ <div id="ex2"></div>
183
+
184
+ ## More Attribute for Funnel Chart
185
+
186
+ <div id="ex3"></div>
187
+
188
+ ## Contrast Funnel Chart
189
+
190
+ <div id="ex4"></div>
191
+
192
+ ## Multiple Funnel Chart
193
+
194
+ <div id="ex5"></div>
195
+
196
+ ## Overall Configuration
197
+
198
+ ### Basic Configuration
199
+
200
+ The basic configuration includes:
201
+
202
+ | Attribute | Type | Description | Choice | Default |
203
+ | --------------- | ----------- | ----------------------- | -------------------------- | ------- |
204
+ | title | string | The main title | User-defined title | - |
205
+ | subtitle | string | A secondary title | User-defined subtitle | - |
206
+ | width | string | The width dimension | Any valid CSS width value | - |
207
+ | height | string | The height dimension | Any valid CSS height value | 400px |
208
+ | legend | bool/object | show or hide legend | False, User-defined legend | {} |
209
+ | xAxis | array/false | The xAxis | User-defined xAxis Data | [] |
210
+ | yAxis | array/false | The yAxis | User-defined yAxis Data | [] |
211
+ | label | object | The label | User-defined label | {} |
212
+ | labelLine | object | The labelLine | User-defined labelLine | {} |
213
+ | tooltip | object | The tooltip | User-defined tooltip | {} |
214
+ | xAxisLineshow | bool | show or hide xAxisLines | True, False | true |
215
+ | yAxisLineshow | bool | show or hide yAxisLines | True, False | true |
216
+ | xAxisLabelShow | bool | show or hide xAxisLabel | True, False | true |
217
+ | yAxisLabelShow | bool | show or hide yAxisLabel | True, False | true |
218
+ | xAxisLabelColor | string | The xAxisLabelColor | Any valid CSS color value | - |
219
+ | yAxisLabelColor | string | The yAxisLabelColor | Any valid CSS color value | - |
220
+
221
+ ### Data Configuration
222
+
223
+ | Attribute | Type | Description | Choice | Default |
224
+ | ----------- | ------------ | --------------- | -------------------------- | ------------ |
225
+ | data | string | The data | User-defined data | {} |
226
+ | type | string/array | The type | 'line', 'bar' | undefined |
227
+ | sort | string | The sort | 'ascending','descending' | 'descending' |
228
+ | gap | number | The gap | Any valid number | 0 |
229
+ | funnelAlign | string | The funnelAlign | 'left', 'right', 'center' | 'center' |
230
+ | max | number | The max | Any valid number | 0 |
231
+ | min | number | The min | Any valid number | 100 |
232
+ | width | string | The width | Any valid CSS width value | '80%' |
233
+ | height | string | The height | Any valid CSS height value | - |
234
+ | top | string | The top | Any valid CSS height value | 60 |
235
+ | bottom | string | The bottom | Any valid CSS height value | 60 |
236
+ | left | string | The left | Any valid CSS height value | 10% |
237
+ | right | string | The right | Any valid CSS height value | - |
238
+ | label | object | The label | User-defined label | {} |
239
+ | labelLine | object | The labelLine | User-defined labelLine | {} |
240
+ | itemStyle | object | The itemStyle | User-defined itemStyle | {} |
241
+ | emphasis | object | The emphasis | User-defined emphasis | {} |
File without changes