mviz 1.4.2

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.
Files changed (194) hide show
  1. package/README.md +174 -0
  2. package/dist/charts/area.d.ts +14 -0
  3. package/dist/charts/area.d.ts.map +1 -0
  4. package/dist/charts/area.js +137 -0
  5. package/dist/charts/area.js.map +1 -0
  6. package/dist/charts/bar.d.ts +14 -0
  7. package/dist/charts/bar.d.ts.map +1 -0
  8. package/dist/charts/bar.js +191 -0
  9. package/dist/charts/bar.js.map +1 -0
  10. package/dist/charts/boxplot.d.ts +14 -0
  11. package/dist/charts/boxplot.d.ts.map +1 -0
  12. package/dist/charts/boxplot.js +79 -0
  13. package/dist/charts/boxplot.js.map +1 -0
  14. package/dist/charts/bubble.d.ts +14 -0
  15. package/dist/charts/bubble.d.ts.map +1 -0
  16. package/dist/charts/bubble.js +127 -0
  17. package/dist/charts/bubble.js.map +1 -0
  18. package/dist/charts/calendar.d.ts +14 -0
  19. package/dist/charts/calendar.d.ts.map +1 -0
  20. package/dist/charts/calendar.js +94 -0
  21. package/dist/charts/calendar.js.map +1 -0
  22. package/dist/charts/combo.d.ts +14 -0
  23. package/dist/charts/combo.d.ts.map +1 -0
  24. package/dist/charts/combo.js +163 -0
  25. package/dist/charts/combo.js.map +1 -0
  26. package/dist/charts/dumbbell.d.ts +17 -0
  27. package/dist/charts/dumbbell.d.ts.map +1 -0
  28. package/dist/charts/dumbbell.js +368 -0
  29. package/dist/charts/dumbbell.js.map +1 -0
  30. package/dist/charts/funnel.d.ts +14 -0
  31. package/dist/charts/funnel.d.ts.map +1 -0
  32. package/dist/charts/funnel.js +145 -0
  33. package/dist/charts/funnel.js.map +1 -0
  34. package/dist/charts/heatmap.d.ts +14 -0
  35. package/dist/charts/heatmap.d.ts.map +1 -0
  36. package/dist/charts/heatmap.js +202 -0
  37. package/dist/charts/heatmap.js.map +1 -0
  38. package/dist/charts/histogram.d.ts +14 -0
  39. package/dist/charts/histogram.d.ts.map +1 -0
  40. package/dist/charts/histogram.js +103 -0
  41. package/dist/charts/histogram.js.map +1 -0
  42. package/dist/charts/index.d.ts +40 -0
  43. package/dist/charts/index.d.ts.map +1 -0
  44. package/dist/charts/index.js +42 -0
  45. package/dist/charts/index.js.map +1 -0
  46. package/dist/charts/line.d.ts +14 -0
  47. package/dist/charts/line.d.ts.map +1 -0
  48. package/dist/charts/line.js +134 -0
  49. package/dist/charts/line.js.map +1 -0
  50. package/dist/charts/pie.d.ts +14 -0
  51. package/dist/charts/pie.d.ts.map +1 -0
  52. package/dist/charts/pie.js +75 -0
  53. package/dist/charts/pie.js.map +1 -0
  54. package/dist/charts/registry.d.ts +36 -0
  55. package/dist/charts/registry.d.ts.map +1 -0
  56. package/dist/charts/registry.js +55 -0
  57. package/dist/charts/registry.js.map +1 -0
  58. package/dist/charts/sankey.d.ts +14 -0
  59. package/dist/charts/sankey.d.ts.map +1 -0
  60. package/dist/charts/sankey.js +74 -0
  61. package/dist/charts/sankey.js.map +1 -0
  62. package/dist/charts/scatter.d.ts +14 -0
  63. package/dist/charts/scatter.d.ts.map +1 -0
  64. package/dist/charts/scatter.js +130 -0
  65. package/dist/charts/scatter.js.map +1 -0
  66. package/dist/charts/sparkline.d.ts +19 -0
  67. package/dist/charts/sparkline.d.ts.map +1 -0
  68. package/dist/charts/sparkline.js +154 -0
  69. package/dist/charts/sparkline.js.map +1 -0
  70. package/dist/charts/waterfall.d.ts +14 -0
  71. package/dist/charts/waterfall.d.ts.map +1 -0
  72. package/dist/charts/waterfall.js +232 -0
  73. package/dist/charts/waterfall.js.map +1 -0
  74. package/dist/charts/xmr.d.ts +14 -0
  75. package/dist/charts/xmr.d.ts.map +1 -0
  76. package/dist/charts/xmr.js +456 -0
  77. package/dist/charts/xmr.js.map +1 -0
  78. package/dist/cli.d.ts +12 -0
  79. package/dist/cli.d.ts.map +1 -0
  80. package/dist/cli.js +120 -0
  81. package/dist/cli.js.map +1 -0
  82. package/dist/components/alert.d.ts +10 -0
  83. package/dist/components/alert.d.ts.map +1 -0
  84. package/dist/components/alert.js +65 -0
  85. package/dist/components/alert.js.map +1 -0
  86. package/dist/components/big_value.d.ts +10 -0
  87. package/dist/components/big_value.d.ts.map +1 -0
  88. package/dist/components/big_value.js +78 -0
  89. package/dist/components/big_value.js.map +1 -0
  90. package/dist/components/delta.d.ts +10 -0
  91. package/dist/components/delta.d.ts.map +1 -0
  92. package/dist/components/delta.js +83 -0
  93. package/dist/components/delta.js.map +1 -0
  94. package/dist/components/empty_space.d.ts +10 -0
  95. package/dist/components/empty_space.d.ts.map +1 -0
  96. package/dist/components/empty_space.js +29 -0
  97. package/dist/components/empty_space.js.map +1 -0
  98. package/dist/components/index.d.ts +21 -0
  99. package/dist/components/index.d.ts.map +1 -0
  100. package/dist/components/index.js +23 -0
  101. package/dist/components/index.js.map +1 -0
  102. package/dist/components/note.d.ts +10 -0
  103. package/dist/components/note.d.ts.map +1 -0
  104. package/dist/components/note.js +66 -0
  105. package/dist/components/note.js.map +1 -0
  106. package/dist/components/registry.d.ts +24 -0
  107. package/dist/components/registry.d.ts.map +1 -0
  108. package/dist/components/registry.js +36 -0
  109. package/dist/components/registry.js.map +1 -0
  110. package/dist/components/table.d.ts +90 -0
  111. package/dist/components/table.d.ts.map +1 -0
  112. package/dist/components/table.js +610 -0
  113. package/dist/components/table.js.map +1 -0
  114. package/dist/components/text.d.ts +10 -0
  115. package/dist/components/text.d.ts.map +1 -0
  116. package/dist/components/text.js +46 -0
  117. package/dist/components/text.js.map +1 -0
  118. package/dist/components/textarea.d.ts +10 -0
  119. package/dist/components/textarea.d.ts.map +1 -0
  120. package/dist/components/textarea.js +79 -0
  121. package/dist/components/textarea.js.map +1 -0
  122. package/dist/core/colors.d.ts +45 -0
  123. package/dist/core/colors.d.ts.map +1 -0
  124. package/dist/core/colors.js +93 -0
  125. package/dist/core/colors.js.map +1 -0
  126. package/dist/core/css.d.ts +20 -0
  127. package/dist/core/css.d.ts.map +1 -0
  128. package/dist/core/css.js +97 -0
  129. package/dist/core/css.js.map +1 -0
  130. package/dist/core/exceptions.d.ts +59 -0
  131. package/dist/core/exceptions.d.ts.map +1 -0
  132. package/dist/core/exceptions.js +100 -0
  133. package/dist/core/exceptions.js.map +1 -0
  134. package/dist/core/formatting.d.ts +53 -0
  135. package/dist/core/formatting.d.ts.map +1 -0
  136. package/dist/core/formatting.js +491 -0
  137. package/dist/core/formatting.js.map +1 -0
  138. package/dist/core/index.d.ts +10 -0
  139. package/dist/core/index.d.ts.map +1 -0
  140. package/dist/core/index.js +10 -0
  141. package/dist/core/index.js.map +1 -0
  142. package/dist/core/serializer.d.ts +29 -0
  143. package/dist/core/serializer.d.ts.map +1 -0
  144. package/dist/core/serializer.js +84 -0
  145. package/dist/core/serializer.js.map +1 -0
  146. package/dist/core/themes.d.ts +138 -0
  147. package/dist/core/themes.d.ts.map +1 -0
  148. package/dist/core/themes.js +484 -0
  149. package/dist/core/themes.js.map +1 -0
  150. package/dist/core/version-check.d.ts +23 -0
  151. package/dist/core/version-check.d.ts.map +1 -0
  152. package/dist/core/version-check.js +163 -0
  153. package/dist/core/version-check.js.map +1 -0
  154. package/dist/generate_test_harness.d.ts +13 -0
  155. package/dist/generate_test_harness.d.ts.map +1 -0
  156. package/dist/generate_test_harness.js +35 -0
  157. package/dist/generate_test_harness.js.map +1 -0
  158. package/dist/index.d.ts +17 -0
  159. package/dist/index.d.ts.map +1 -0
  160. package/dist/index.js +19 -0
  161. package/dist/index.js.map +1 -0
  162. package/dist/layout/converter.d.ts +22 -0
  163. package/dist/layout/converter.d.ts.map +1 -0
  164. package/dist/layout/converter.js +46 -0
  165. package/dist/layout/converter.js.map +1 -0
  166. package/dist/layout/csv.d.ts +15 -0
  167. package/dist/layout/csv.d.ts.map +1 -0
  168. package/dist/layout/csv.js +88 -0
  169. package/dist/layout/csv.js.map +1 -0
  170. package/dist/layout/dispatcher.d.ts +13 -0
  171. package/dist/layout/dispatcher.d.ts.map +1 -0
  172. package/dist/layout/dispatcher.js +47 -0
  173. package/dist/layout/dispatcher.js.map +1 -0
  174. package/dist/layout/index.d.ts +8 -0
  175. package/dist/layout/index.d.ts.map +1 -0
  176. package/dist/layout/index.js +8 -0
  177. package/dist/layout/index.js.map +1 -0
  178. package/dist/layout/parser.d.ts +19 -0
  179. package/dist/layout/parser.d.ts.map +1 -0
  180. package/dist/layout/parser.js +888 -0
  181. package/dist/layout/parser.js.map +1 -0
  182. package/dist/layout/templates.d.ts +32 -0
  183. package/dist/layout/templates.d.ts.map +1 -0
  184. package/dist/layout/templates.js +1016 -0
  185. package/dist/layout/templates.js.map +1 -0
  186. package/dist/types.d.ts +144 -0
  187. package/dist/types.d.ts.map +1 -0
  188. package/dist/types.js +5 -0
  189. package/dist/types.js.map +1 -0
  190. package/dist/vitest.config.d.ts +3 -0
  191. package/dist/vitest.config.d.ts.map +1 -0
  192. package/dist/vitest.config.js +14 -0
  193. package/dist/vitest.config.js.map +1 -0
  194. package/package.json +79 -0
@@ -0,0 +1,456 @@
1
+ /**
2
+ * XmR (Individual-Moving Range) control chart generator
3
+ */
4
+ import { COLORS, FONT_SIZE_TINY, FONT_SIZE_XXS, FONT_SIZE_MICRO, XMR_SYMBOL_SIZE, XMR_VIOLATION_SYMBOL_SIZE, DEFAULT_XMR_HEIGHT, getThemeColors, getPalette, } from '../core/themes.js';
5
+ import { wrapHtml } from '../core/serializer.js';
6
+ import { registerChart, registerOptions } from './registry.js';
7
+ /**
8
+ * Detect Nelson rule violations in a series of values
9
+ */
10
+ function detectNelsonRules(values, mean, sigma) {
11
+ const n = values.length;
12
+ const violations = new Map();
13
+ for (let i = 1; i <= 8; i++) {
14
+ violations.set(i, new Set());
15
+ }
16
+ const sigma1Upper = mean + sigma;
17
+ const sigma1Lower = mean - sigma;
18
+ const sigma2Upper = mean + 2 * sigma;
19
+ const sigma2Lower = mean - 2 * sigma;
20
+ const sigma3Upper = mean + 3 * sigma;
21
+ const sigma3Lower = mean - 3 * sigma;
22
+ // Rule 1: One point beyond 3 sigma
23
+ for (let i = 0; i < n; i++) {
24
+ if (values[i] > sigma3Upper || values[i] < sigma3Lower) {
25
+ violations.get(1).add(i);
26
+ }
27
+ }
28
+ // Rule 2: Nine consecutive points on same side of center line
29
+ if (n >= 9) {
30
+ for (let i = 0; i <= n - 9; i++) {
31
+ const window = values.slice(i, i + 9);
32
+ if (window.every((v) => v > mean) || window.every((v) => v < mean)) {
33
+ for (let j = i; j < i + 9; j++) {
34
+ violations.get(2).add(j);
35
+ }
36
+ }
37
+ }
38
+ }
39
+ // Rule 3: Six consecutive points steadily increasing or decreasing
40
+ if (n >= 6) {
41
+ for (let i = 0; i <= n - 6; i++) {
42
+ const window = values.slice(i, i + 6);
43
+ let increasing = true;
44
+ let decreasing = true;
45
+ for (let j = 0; j < 5; j++) {
46
+ if (window[j] >= window[j + 1])
47
+ increasing = false;
48
+ if (window[j] <= window[j + 1])
49
+ decreasing = false;
50
+ }
51
+ if (increasing || decreasing) {
52
+ for (let j = i; j < i + 6; j++) {
53
+ violations.get(3).add(j);
54
+ }
55
+ }
56
+ }
57
+ }
58
+ // Rule 4: Fourteen consecutive points alternating up and down
59
+ if (n >= 14) {
60
+ for (let i = 0; i <= n - 14; i++) {
61
+ const window = values.slice(i, i + 14);
62
+ let alternating = true;
63
+ for (let j = 0; j < 12; j++) {
64
+ if ((window[j + 1] - window[j]) * (window[j + 2] - window[j + 1]) >= 0) {
65
+ alternating = false;
66
+ break;
67
+ }
68
+ }
69
+ if (alternating) {
70
+ for (let j = i; j < i + 14; j++) {
71
+ violations.get(4).add(j);
72
+ }
73
+ }
74
+ }
75
+ }
76
+ // Rule 5: Two out of three consecutive points beyond 2 sigma on same side
77
+ if (n >= 3) {
78
+ for (let i = 0; i <= n - 3; i++) {
79
+ const window = values.slice(i, i + 3);
80
+ const above = window.filter((v) => v > sigma2Upper).length;
81
+ const below = window.filter((v) => v < sigma2Lower).length;
82
+ if (above >= 2) {
83
+ for (let j = i; j < i + 3; j++) {
84
+ if (values[j] > sigma2Upper)
85
+ violations.get(5).add(j);
86
+ }
87
+ }
88
+ if (below >= 2) {
89
+ for (let j = i; j < i + 3; j++) {
90
+ if (values[j] < sigma2Lower)
91
+ violations.get(5).add(j);
92
+ }
93
+ }
94
+ }
95
+ }
96
+ // Rule 6: Four out of five consecutive points beyond 1 sigma on same side
97
+ if (n >= 5) {
98
+ for (let i = 0; i <= n - 5; i++) {
99
+ const window = values.slice(i, i + 5);
100
+ const above = window.filter((v) => v > sigma1Upper).length;
101
+ const below = window.filter((v) => v < sigma1Lower).length;
102
+ if (above >= 4) {
103
+ for (let j = i; j < i + 5; j++) {
104
+ if (values[j] > sigma1Upper)
105
+ violations.get(6).add(j);
106
+ }
107
+ }
108
+ if (below >= 4) {
109
+ for (let j = i; j < i + 5; j++) {
110
+ if (values[j] < sigma1Lower)
111
+ violations.get(6).add(j);
112
+ }
113
+ }
114
+ }
115
+ }
116
+ // Rule 7: Fifteen consecutive points within 1 sigma of center line
117
+ if (n >= 15) {
118
+ for (let i = 0; i <= n - 15; i++) {
119
+ const window = values.slice(i, i + 15);
120
+ if (window.every((v) => v >= sigma1Lower && v <= sigma1Upper)) {
121
+ for (let j = i; j < i + 15; j++) {
122
+ violations.get(7).add(j);
123
+ }
124
+ }
125
+ }
126
+ }
127
+ // Rule 8: Eight consecutive points beyond 1 sigma on either side
128
+ if (n >= 8) {
129
+ for (let i = 0; i <= n - 8; i++) {
130
+ const window = values.slice(i, i + 8);
131
+ if (window.every((v) => v > sigma1Upper || v < sigma1Lower)) {
132
+ for (let j = i; j < i + 8; j++) {
133
+ violations.get(8).add(j);
134
+ }
135
+ }
136
+ }
137
+ }
138
+ return violations;
139
+ }
140
+ /**
141
+ * Build ECharts options for an XmR control chart
142
+ */
143
+ export function buildXmrOptions(spec) {
144
+ const data = (spec.data ?? []);
145
+ const theme = (spec.theme ?? 'light');
146
+ const valueField = spec.value ?? 'value';
147
+ const labelField = spec.label ?? 'label';
148
+ const nelsonRulesEnabled = spec.nelson_rules ?? true;
149
+ const colors = getThemeColors(theme);
150
+ const palette = getPalette(theme);
151
+ // Extract values and labels
152
+ let values;
153
+ let labels;
154
+ if (data.length > 0 && typeof data[0] === 'object') {
155
+ values = data.map((d) => (d[valueField] ?? 0));
156
+ labels = data.map((d, i) => String(d[labelField] ?? i + 1));
157
+ }
158
+ else {
159
+ values = data;
160
+ labels = values.map((_, i) => String(i + 1));
161
+ }
162
+ if (values.length < 2) {
163
+ return {
164
+ backgroundColor: 'transparent',
165
+ series: [],
166
+ };
167
+ }
168
+ // Calculate moving ranges
169
+ const movingRanges = [];
170
+ for (let i = 1; i < values.length; i++) {
171
+ movingRanges.push(Math.abs(values[i] - values[i - 1]));
172
+ }
173
+ // Calculate statistics
174
+ const xMean = values.reduce((a, b) => a + b, 0) / values.length;
175
+ const mrMean = movingRanges.reduce((a, b) => a + b, 0) / movingRanges.length;
176
+ // Control limits
177
+ const xUcl = xMean + 2.66 * mrMean;
178
+ const xLcl = xMean - 2.66 * mrMean;
179
+ const mrUcl = 3.267 * mrMean;
180
+ // Sigma for Nelson rules
181
+ const xSigma = mrMean > 0 ? mrMean / 1.128 : 1;
182
+ // Detect violations
183
+ let xViolations = new Map();
184
+ const mrRule1Violations = new Set();
185
+ if (nelsonRulesEnabled) {
186
+ xViolations = detectNelsonRules(values, xMean, xSigma);
187
+ for (let i = 0; i < movingRanges.length; i++) {
188
+ if (movingRanges[i] > mrUcl) {
189
+ mrRule1Violations.add(i);
190
+ }
191
+ }
192
+ }
193
+ // Build violation overlay data for X chart
194
+ const xViolationPoints = [];
195
+ const xFlagged = new Set();
196
+ const violationColors = {
197
+ 1: COLORS.ERROR_RED,
198
+ 2: '#FF8C00',
199
+ 3: '#FF8C00',
200
+ 4: '#FF8C00',
201
+ 5: '#FF8C00',
202
+ 6: '#FF8C00',
203
+ 7: '#FFA500',
204
+ 8: '#FF8C00',
205
+ };
206
+ for (const rule of [1, 2, 3, 4, 5, 6, 8, 7]) {
207
+ for (const idx of xViolations.get(rule) ?? []) {
208
+ if (!xFlagged.has(idx)) {
209
+ xFlagged.add(idx);
210
+ xViolationPoints.push({
211
+ value: [idx, values[idx]],
212
+ itemStyle: { color: violationColors[rule] },
213
+ });
214
+ }
215
+ }
216
+ }
217
+ // MR chart violations
218
+ const mrViolationPoints = Array.from(mrRule1Violations).map((i) => ({
219
+ value: [i, movingRanges[i]],
220
+ itemStyle: { color: COLORS.ERROR_RED },
221
+ }));
222
+ const limitLine = { type: 'dashed', width: 1, color: colors.textSecondary };
223
+ const centerLine = { type: 'solid', width: 1.5, color: palette[0] };
224
+ return {
225
+ backgroundColor: 'transparent',
226
+ animation: false,
227
+ tooltip: {
228
+ trigger: 'axis',
229
+ backgroundColor: colors.paper,
230
+ borderColor: colors.border,
231
+ textStyle: { color: colors.text },
232
+ axisPointer: { type: 'line' },
233
+ formatter: '__XMR_TOOLTIP_FORMATTER__',
234
+ },
235
+ axisPointer: { link: [{ xAxisIndex: 'all' }] },
236
+ grid: [
237
+ { left: '8%', right: '3%', top: '6%', height: '32%' },
238
+ { left: '8%', right: '3%', top: '48%', height: '32%' },
239
+ ],
240
+ xAxis: [
241
+ {
242
+ type: 'category',
243
+ data: labels,
244
+ gridIndex: 0,
245
+ axisLine: { show: false },
246
+ axisTick: { show: false },
247
+ axisLabel: { show: false },
248
+ },
249
+ {
250
+ type: 'category',
251
+ data: labels.slice(1),
252
+ gridIndex: 1,
253
+ axisLine: { show: false },
254
+ axisTick: { show: false },
255
+ axisLabel: {
256
+ color: colors.textSecondary,
257
+ fontSize: FONT_SIZE_TINY,
258
+ hideOverlap: true,
259
+ },
260
+ },
261
+ ],
262
+ yAxis: [
263
+ {
264
+ type: 'value',
265
+ gridIndex: 0,
266
+ axisLine: { show: false },
267
+ axisTick: { show: false },
268
+ splitLine: { show: false },
269
+ axisLabel: { color: colors.textSecondary, fontSize: FONT_SIZE_TINY },
270
+ name: 'X',
271
+ nameLocation: 'middle',
272
+ nameGap: 40,
273
+ nameTextStyle: { color: colors.textSecondary, fontSize: FONT_SIZE_XXS },
274
+ },
275
+ {
276
+ type: 'value',
277
+ gridIndex: 1,
278
+ axisLine: { show: false },
279
+ axisTick: { show: false },
280
+ splitLine: { show: false },
281
+ axisLabel: { color: colors.textSecondary, fontSize: FONT_SIZE_TINY },
282
+ name: 'MR',
283
+ nameLocation: 'middle',
284
+ nameGap: 40,
285
+ nameTextStyle: { color: colors.textSecondary, fontSize: FONT_SIZE_XXS },
286
+ min: 0,
287
+ },
288
+ ],
289
+ series: [
290
+ // X Chart
291
+ {
292
+ name: 'X',
293
+ type: 'line',
294
+ xAxisIndex: 0,
295
+ yAxisIndex: 0,
296
+ data: values,
297
+ symbol: 'circle',
298
+ symbolSize: XMR_SYMBOL_SIZE,
299
+ lineStyle: { color: palette[0], width: 1.5 },
300
+ itemStyle: { color: palette[0] },
301
+ },
302
+ {
303
+ name: 'X Violations',
304
+ type: 'scatter',
305
+ xAxisIndex: 0,
306
+ yAxisIndex: 0,
307
+ data: xViolationPoints,
308
+ symbol: 'circle',
309
+ symbolSize: XMR_VIOLATION_SYMBOL_SIZE,
310
+ z: 10,
311
+ },
312
+ {
313
+ name: 'X UCL',
314
+ type: 'line',
315
+ xAxisIndex: 0,
316
+ yAxisIndex: 0,
317
+ data: Array(values.length).fill(xUcl),
318
+ symbol: 'none',
319
+ lineStyle: limitLine,
320
+ markPoint: {
321
+ data: [{ type: 'max' }],
322
+ symbol: 'none',
323
+ label: {
324
+ formatter: `UCL: ${xUcl.toFixed(1)}`,
325
+ position: 'right',
326
+ color: colors.textSecondary,
327
+ fontSize: FONT_SIZE_MICRO,
328
+ },
329
+ },
330
+ },
331
+ {
332
+ name: 'X CL',
333
+ type: 'line',
334
+ xAxisIndex: 0,
335
+ yAxisIndex: 0,
336
+ data: Array(values.length).fill(xMean),
337
+ symbol: 'none',
338
+ lineStyle: centerLine,
339
+ markPoint: {
340
+ data: [{ type: 'max' }],
341
+ symbol: 'none',
342
+ label: {
343
+ formatter: `CL: ${xMean.toFixed(1)}`,
344
+ position: 'right',
345
+ color: colors.textSecondary,
346
+ fontSize: FONT_SIZE_MICRO,
347
+ },
348
+ },
349
+ },
350
+ {
351
+ name: 'X LCL',
352
+ type: 'line',
353
+ xAxisIndex: 0,
354
+ yAxisIndex: 0,
355
+ data: Array(values.length).fill(xLcl),
356
+ symbol: 'none',
357
+ lineStyle: limitLine,
358
+ markPoint: {
359
+ data: [{ type: 'max' }],
360
+ symbol: 'none',
361
+ label: {
362
+ formatter: `LCL: ${xLcl.toFixed(1)}`,
363
+ position: 'right',
364
+ color: colors.textSecondary,
365
+ fontSize: FONT_SIZE_MICRO,
366
+ },
367
+ },
368
+ },
369
+ // MR Chart
370
+ {
371
+ name: 'MR',
372
+ type: 'line',
373
+ xAxisIndex: 1,
374
+ yAxisIndex: 1,
375
+ data: movingRanges,
376
+ symbol: 'circle',
377
+ symbolSize: XMR_SYMBOL_SIZE,
378
+ lineStyle: { color: palette[1], width: 1.5 },
379
+ itemStyle: { color: palette[1] },
380
+ },
381
+ {
382
+ name: 'MR Violations',
383
+ type: 'scatter',
384
+ xAxisIndex: 1,
385
+ yAxisIndex: 1,
386
+ data: mrViolationPoints,
387
+ symbol: 'circle',
388
+ symbolSize: XMR_VIOLATION_SYMBOL_SIZE,
389
+ z: 10,
390
+ },
391
+ {
392
+ name: 'MR UCL',
393
+ type: 'line',
394
+ xAxisIndex: 1,
395
+ yAxisIndex: 1,
396
+ data: Array(movingRanges.length).fill(mrUcl),
397
+ symbol: 'none',
398
+ lineStyle: limitLine,
399
+ markPoint: {
400
+ data: [{ type: 'max' }],
401
+ symbol: 'none',
402
+ label: {
403
+ formatter: `UCL: ${mrUcl.toFixed(1)}`,
404
+ position: 'right',
405
+ color: colors.textSecondary,
406
+ fontSize: FONT_SIZE_MICRO,
407
+ },
408
+ },
409
+ },
410
+ {
411
+ name: 'MR CL',
412
+ type: 'line',
413
+ xAxisIndex: 1,
414
+ yAxisIndex: 1,
415
+ data: Array(movingRanges.length).fill(mrMean),
416
+ symbol: 'none',
417
+ lineStyle: centerLine,
418
+ markPoint: {
419
+ data: [{ type: 'max' }],
420
+ symbol: 'none',
421
+ label: {
422
+ formatter: `CL: ${mrMean.toFixed(1)}`,
423
+ position: 'right',
424
+ color: colors.textSecondary,
425
+ fontSize: FONT_SIZE_MICRO,
426
+ },
427
+ },
428
+ },
429
+ ],
430
+ };
431
+ }
432
+ /**
433
+ * XMR tooltip formatter function
434
+ */
435
+ const XMR_TOOLTIP_FORMATTER = `function(params) {
436
+ var x = params.find(function(p) { return p.seriesName === 'X'; });
437
+ var mr = params.find(function(p) { return p.seriesName === 'MR'; });
438
+ var result = '<div style="font-weight:bold;margin-bottom:4px">' + params[0].axisValue + '</div>';
439
+ if (x && x.value !== undefined) result += '<div>X: ' + x.value.toFixed(2) + '</div>';
440
+ if (mr && mr.value !== undefined) result += '<div>MR: ' + mr.value.toFixed(2) + '</div>';
441
+ return result;
442
+ }`;
443
+ /**
444
+ * Generate an XmR control chart
445
+ */
446
+ function generateXmr(spec) {
447
+ const height = typeof spec.height === 'number' ? spec.height : DEFAULT_XMR_HEIGHT;
448
+ const html = wrapHtml('chart', buildXmrOptions(spec), '', '100%', height);
449
+ // Replace placeholder with actual JavaScript function
450
+ return html.replace('"__XMR_TOOLTIP_FORMATTER__"', XMR_TOOLTIP_FORMATTER);
451
+ }
452
+ // Register the chart
453
+ registerChart('xmr')(generateXmr);
454
+ registerOptions('xmr')(buildXmrOptions);
455
+ export { generateXmr };
456
+ //# sourceMappingURL=xmr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xmr.js","sourceRoot":"","sources":["../../charts/xmr.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * mviz CLI - Generate charts and dashboards from JSON specs
4
+ *
5
+ * Usage:
6
+ * echo '{"type": "bar", ...}' | mviz > chart.html
7
+ * mviz spec.json > chart.html
8
+ * mviz dashboard.md > dashboard.html
9
+ * mviz ./dashboard-folder/ > dashboard.html
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG"}
package/dist/cli.js ADDED
@@ -0,0 +1,120 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * mviz CLI - Generate charts and dashboards from JSON specs
4
+ *
5
+ * Usage:
6
+ * echo '{"type": "bar", ...}' | mviz > chart.html
7
+ * mviz spec.json > chart.html
8
+ * mviz dashboard.md > dashboard.html
9
+ * mviz ./dashboard-folder/ > dashboard.html
10
+ */
11
+ import { readFileSync, statSync, existsSync } from 'node:fs';
12
+ import { resolve } from 'node:path';
13
+ import { generateChart } from './index.js';
14
+ import { parseMarkdownToDashboard } from './layout/parser.js';
15
+ import { checkForUpdatesBackground } from './core/version-check.js';
16
+ function readStdin() {
17
+ return new Promise((resolve, reject) => {
18
+ let data = '';
19
+ process.stdin.setEncoding('utf8');
20
+ // Check if stdin is a TTY (interactive terminal)
21
+ if (process.stdin.isTTY) {
22
+ resolve('');
23
+ return;
24
+ }
25
+ process.stdin.on('data', (chunk) => {
26
+ data += chunk;
27
+ });
28
+ process.stdin.on('end', () => {
29
+ resolve(data);
30
+ });
31
+ process.stdin.on('error', reject);
32
+ });
33
+ }
34
+ function findDashboardMd(dir) {
35
+ const candidates = ['dashboard.md', 'index.md', 'README.md'];
36
+ for (const candidate of candidates) {
37
+ const path = resolve(dir, candidate);
38
+ if (existsSync(path)) {
39
+ return path;
40
+ }
41
+ }
42
+ return null;
43
+ }
44
+ async function main() {
45
+ // Check for updates in the background (non-blocking)
46
+ checkForUpdatesBackground();
47
+ const args = process.argv.slice(2);
48
+ let input;
49
+ let baseDir;
50
+ if (args.length > 0) {
51
+ const arg = args[0];
52
+ const path = resolve(arg);
53
+ if (!existsSync(path)) {
54
+ console.error(`Error: File or directory not found: ${arg}`);
55
+ process.exit(1);
56
+ }
57
+ const stat = statSync(path);
58
+ if (stat.isDirectory()) {
59
+ // Directory mode: find dashboard.md
60
+ const mdPath = findDashboardMd(path);
61
+ if (!mdPath) {
62
+ console.error(`Error: No dashboard.md found in ${arg}`);
63
+ process.exit(1);
64
+ }
65
+ input = readFileSync(mdPath, 'utf8');
66
+ baseDir = path;
67
+ }
68
+ else {
69
+ // File mode
70
+ input = readFileSync(path, 'utf8');
71
+ baseDir = resolve(path, '..');
72
+ }
73
+ }
74
+ else {
75
+ // Stdin mode
76
+ input = await readStdin();
77
+ if (!input.trim()) {
78
+ console.error('Usage: mviz <file.json|dashboard.md|directory>');
79
+ console.error(' echo \'{"type": "bar", ...}\' | mviz');
80
+ process.exit(1);
81
+ }
82
+ }
83
+ try {
84
+ let html;
85
+ // Detect input type
86
+ const trimmed = input.trim();
87
+ if (trimmed.startsWith('{') || trimmed.startsWith('[')) {
88
+ // JSON input
89
+ const spec = JSON.parse(trimmed);
90
+ html = generateChart(spec);
91
+ }
92
+ else if (trimmed.startsWith('---') || trimmed.includes('```')) {
93
+ // Markdown input - returns HTML directly
94
+ html = parseMarkdownToDashboard(input, 'light', baseDir);
95
+ }
96
+ else {
97
+ // Try JSON anyway
98
+ const spec = JSON.parse(trimmed);
99
+ html = generateChart(spec);
100
+ }
101
+ process.stdout.write(html);
102
+ }
103
+ catch (error) {
104
+ if (error instanceof SyntaxError) {
105
+ console.error('Error: Invalid JSON input');
106
+ }
107
+ else if (error instanceof Error) {
108
+ console.error(`Error: ${error.message}`);
109
+ }
110
+ else {
111
+ console.error('Error: Unknown error occurred');
112
+ }
113
+ process.exit(1);
114
+ }
115
+ }
116
+ main().catch((error) => {
117
+ console.error('Fatal error:', error);
118
+ process.exit(1);
119
+ });
120
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Alert/banner component
3
+ */
4
+ import type { ComponentSpec } from '../types.js';
5
+ /**
6
+ * Generate an alert/banner component
7
+ */
8
+ declare function generateAlert(spec: ComponentSpec): string;
9
+ export { generateAlert };
10
+ //# sourceMappingURL=alert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../components/alert.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAS,MAAM,aAAa,CAAC;AAiBxD;;GAEG;AACH,iBAAS,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAyDlD;AAKD,OAAO,EAAE,aAAa,EAAE,CAAC"}