@massimo-cassandro/minimo 1.18.0 → 1.18.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 (50) hide show
  1. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/index.js +92 -0
  2. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/hbars.js +356 -0
  3. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/pie.js +245 -0
  4. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/radial-bars.js +177 -0
  5. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/rating-display.js +835 -0
  6. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/costruzione-assi.js +212 -0
  7. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/costruzione-linee.js +101 -0
  8. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/defaults.js +185 -0
  9. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/display-current.js +27 -0
  10. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/grid-areas.js +129 -0
  11. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/parse-opts.js +64 -0
  12. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/paths-setup.js +73 -0
  13. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile.js +126 -0
  14. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/signal-bars.js +290 -0
  15. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/week-utils.js +122 -0
  16. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/hbars-test.js +52 -0
  17. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/mcn-test.js +74 -0
  18. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/pie-test.js +16 -0
  19. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/radial-bars-test.js +48 -0
  20. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/settimanale-mensile-dati-settimanale.js +426 -0
  21. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/settimanale-mensile-test.js +260 -0
  22. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/signal-bars-test.js +64 -0
  23. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/node-test.mjs +86 -0
  24. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/hBars-node-test.mjs +40 -0
  25. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/lines-node-test.mjs +73 -0
  26. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/mcn-node-test.mjs +64 -0
  27. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/pie-node-test.mjs +12 -0
  28. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/radialsBar-node-test.mjs +44 -0
  29. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/settimanale-mensile-node-test.mjs +258 -0
  30. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/signalBars-node-test.mjs +36 -0
  31. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/test-readme.md +24 -0
  32. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/textToPath-test.mjs +14 -0
  33. package/charts/TODO charts/???/InfoBox.js +456 -0
  34. package/charts/TODO charts/???/README-upg OLD/342/206/222NEW.md" +53 -0
  35. package/charts/TODO charts/???/README.md +1 -0
  36. package/charts/TODO charts/???/TODO.md +39 -0
  37. package/charts/TODO charts/???/base-cfg.js +66 -0
  38. package/charts/TODO charts/???/rating-displayOLD.js +837 -0
  39. package/charts/TODO charts/docs/TODO.md +1 -0
  40. package/charts/TODO charts/docs/costruzione display rating.md +145 -0
  41. package/charts/TODO charts/test/node-test.mjs +92 -0
  42. package/charts/TODO charts/test/test-readme.md +23 -0
  43. package/charts/TODO charts/test/test-src/rating-display-extra-test.js +132 -0
  44. package/charts/TODO charts/test/test-src/rating-display-test.js +155 -0
  45. package/charts/TODO charts/test/textToPath-test.mjs +14 -0
  46. package/charts/TODO.md +1 -1
  47. package/package.json +1 -1
  48. package/snippets/flash-messages.html.twig +34 -0
  49. package/src/components/unsplash-page/unsplash-page.js +6 -8
  50. package/src/components/unsplash-page/unsplash-page.module.css +11 -6
@@ -0,0 +1,260 @@
1
+ import { datiSettimanali } from './settimanale-mensile-dati-settimanale.js';
2
+
3
+ export function settimanaleMensileTest(cfg) {
4
+
5
+ const default_line_attrs = {
6
+ stroke: '#3b3a3a',
7
+ 'stroke-width': 1,
8
+ 'shape-rendering': 'crispEdges',
9
+ 'stroke-linecap': 'round',
10
+ fill: 'none'
11
+ };
12
+
13
+ const opts = {
14
+
15
+ /** mostra info utile per il debug */
16
+ debug: true,
17
+
18
+ /**
19
+ larghezza e altezza del grafico (px),
20
+ Se il container è presente e i parametro `width` o `height` sono `null`,
21
+ quelli mancanti vengono ricavati dallaìe dimensioni del container
22
+ */
23
+ width: null,
24
+ height: null,
25
+
26
+ /** attributi facoltativi per l'svg */
27
+ svgAttrs: {},
28
+
29
+ /** griglia orizzontale e verticale */
30
+ horizGrid: true,
31
+ horizGridAttrs: {...default_line_attrs, stroke: '#b5b3b3'},
32
+
33
+ vertGrid: true,
34
+ vertGridAttrs: {...default_line_attrs, stroke: '#b5b3b3', 'stroke-dasharray': '0 4 0'},
35
+
36
+
37
+
38
+ /** suddivisioni asse Y */
39
+ stepY_count: 4,
40
+
41
+ /** px, altezza o larghezza ticks (secondo l'orientamento) */
42
+ ticksLength: 10,
43
+
44
+
45
+ /** larghezza area etichette asse y */
46
+ eti_asseY_width: 90,
47
+
48
+ /** altezza area etichette asse x */
49
+ eti_asseX_height: 30,
50
+
51
+ /** altezza aggiuntiva area asse x per visualizzazione dei mesi (solo settimanale) */
52
+ eti_asseX_additional_height: 30,
53
+
54
+ /** spazio extra attorno al bordo */
55
+ padding: 10,
56
+
57
+
58
+ /** titoli assi */
59
+ asseYTitle: 'Travel Value',
60
+ asseYTitleAttrs: {
61
+ fill: '#999999',
62
+ 'font-size': 18,
63
+ 'font-weight': 600
64
+ },
65
+ asseYTitleFontFilePath: null,
66
+
67
+ asseXTitle: 'Settimana',
68
+ asseXTitleAttrs: {
69
+ fill: '#999999',
70
+ 'font-size': 18,
71
+ 'font-weight': 600
72
+ },
73
+ asseXTitleFontFilePath: null,
74
+
75
+ /**
76
+ solo settimanale.
77
+ la settimana zero corrisponde ai dati al 31/12 dell'anno precedente a quello in esame
78
+ se true la settimana zero non viene rappresentata nel grafico
79
+ e l'origine x del grafico corrisponde alla settimana 1
80
+ */
81
+ skipWeek0: true,
82
+
83
+ /** evidenzia la griglia verticale corrispondente alla settimana / mese correnti */
84
+ showCurrent: true,
85
+ currentWeekAttrs: {
86
+ ...default_line_attrs,
87
+ stroke: '#06407a',
88
+ 'stroke-width': 2,
89
+ 'stroke-dasharray': '12 4',
90
+ },
91
+ currentMonthAttrs: {},
92
+
93
+ /**
94
+ Aree di evidenziazione dei mesi (settimanale)
95
+ */
96
+ monthsAreasAttrs: {
97
+ fill: '#eaebed'
98
+ },
99
+
100
+ /** se true mostra un area di relativa ai valori min/max degli scenari */
101
+ mostraRangeScenari: true,
102
+ rangeScenariAttrs: {
103
+ fill: '#e1d2e3'
104
+ },
105
+
106
+ /**
107
+ se `lineeRangeScenari` non è un oggetto vuoto, vengono mostrate
108
+ le linee positive/negativo secondo gli attributi svg.js indicati.
109
+ Questa opzione è indipendente da `mostraRangeScenari`
110
+ */
111
+ lineeRangeScenari: {
112
+ ...default_line_attrs,
113
+ stroke: '#7d3c8567'
114
+ },
115
+
116
+ /** anno esaminato */
117
+ anno: new Date().getFullYear(),
118
+
119
+ /** parametri infoBox (vedi componente) */
120
+ // infoBoxItems,
121
+ // infoBoxPositionRefs,
122
+
123
+
124
+ chartData: datiSettimanali,
125
+
126
+ /**
127
+ classi e attributi dei vari elementi.
128
+ Per gli attributi, ogni variabile è un oggetto di attributi svg.js
129
+ {
130
+ stroke: '#414141',
131
+ 'stroke-width': 1,
132
+ 'shape-rendering': 'crispEdges'
133
+ }
134
+ */
135
+ axisAttrs: default_line_attrs,
136
+ ticksAttrs: default_line_attrs,
137
+
138
+ gridLinesAttrs: {},
139
+
140
+ labelXAttrs: {
141
+ size: 14,
142
+ weight: 400,
143
+ fill: '#676565',
144
+ },
145
+ labelXFontFilePath: null, // percorso font per textToPath
146
+
147
+ labelYAttrs: {
148
+ size: 14,
149
+ weight: 400,
150
+ fill: '#4c4949',
151
+ },
152
+ labelYFontFilePath: null, // percorso font per textToPath
153
+
154
+ budget_standard_line_attrs: {
155
+ ...default_line_attrs,
156
+ stroke: '#9a0b9a'
157
+ },
158
+ budget_positivo_line_attrs: {
159
+ ...default_line_attrs,
160
+ 'stroke-width': 1
161
+ },
162
+ budget_negativo_line_attrs: {
163
+ ...default_line_attrs,
164
+ 'stroke-width': 1
165
+ },
166
+ consolidato_line_attrs: {
167
+ ...default_line_attrs,
168
+ 'stroke-width': 3,
169
+ stroke: '#06407a'
170
+ },
171
+ consolidato_points_attrs: {
172
+ r: 3,
173
+ fill: '#06407a'
174
+ },
175
+ consolidato_prec_line_attrs: {
176
+ ...default_line_attrs,
177
+ 'stroke-width': 3,
178
+ stroke: '#6985ac',
179
+ 'stroke-dasharray': '.1 6'
180
+ },
181
+
182
+ showConsolidatoForecast: false,
183
+ consolidato_forecast_line_attrs: {
184
+ ...default_line_attrs,
185
+
186
+ },
187
+
188
+ /**
189
+ Funzione per formattare le etichette dei valori dell'asse Y.
190
+ Null per nessuna eleborazione.
191
+ La funzione di default assume che il valore sia di tipo numerico
192
+ */
193
+ labelYFormatter: labelValue => Math.ceil(labelValue / 1e3)
194
+ .toLocaleString('it-IT', {
195
+ minimumFractionDigits: 0,
196
+ maximumFractionDigits: 0
197
+ }) +
198
+ (labelValue > 0? '\u200AK' : ''), // \u2009 = thin space, \u200A hair space (https://www.compart.com/en/unicode/U+2009)
199
+
200
+ };
201
+
202
+
203
+ // voci legenda
204
+ opts.legenda = {
205
+ /** altezza legenda */
206
+ height: 20,
207
+
208
+ /** spazio tra gli elementi della legenda */
209
+ elements_gap: 25,
210
+
211
+ /** dimensioni delle forme della legenda */
212
+ lines_width: 20,
213
+ circles_radius: 16,
214
+
215
+ /** attributi svg.js dei font del testo della legenda (null utilizza default) */
216
+ fontAttrs: {
217
+ fill: '#000',
218
+ 'font-size': 14,
219
+ 'font-weight': 400
220
+ },
221
+ fontFilePath: null,
222
+
223
+ /** elementi della legenda */
224
+ items: [
225
+ {
226
+ shape: 'line', // line || circle
227
+ attrs: opts.consolidato_line_attrs, // attributi js di shape
228
+ text: `Consolidato ${opts.anno}`, // testo della voce
229
+ },
230
+ {
231
+ shape: 'line',
232
+ attrs: opts.consolidato_prec_line_attrs, //
233
+ text: `Consolidato ${opts.anno - 1}`,
234
+ },
235
+ {
236
+ shape: 'line',
237
+ attrs: opts.budget_standard_line_attrs,
238
+ text: 'Budget',
239
+ },
240
+ {
241
+ shape: 'circle',
242
+ attrs: {...opts.lineeRangeScenari, ...opts.rangeScenariAttrs},
243
+ text: 'Range positivo-negativo',
244
+ },
245
+ ],
246
+
247
+ };
248
+
249
+ cfg.charts.settimanaleMensile({
250
+ ...opts,
251
+ container: '#settimanaleMensile',
252
+ modo: 'settimanale',
253
+
254
+ });
255
+
256
+
257
+ }
258
+
259
+
260
+
@@ -0,0 +1,64 @@
1
+
2
+ export function signalBarsTest(cfg) {
3
+
4
+ const signalBarsOpts = {
5
+ height: 250,
6
+ ranges: [1,2,3,4,5],
7
+ labelFont: {
8
+ // family: 'Roboto Condensed',
9
+ size: 72,
10
+ // stretch: 'normal',
11
+ // style: 'italic',
12
+ // variant: 'normal',
13
+ weight: 700
14
+ },
15
+ labelFill: '#051b52',
16
+ barsStrokeWidth: 4,
17
+ barsOnAttr: {
18
+ fill: '#4664af',
19
+ opacity: 0.5,
20
+ stroke: '#213c7f'
21
+ },
22
+ barsOffAttr: {
23
+ fill: '#fff',
24
+ stroke: '#213c7f'
25
+ }
26
+ };
27
+
28
+ cfg.charts.signalBars({
29
+ ...signalBarsOpts,
30
+ container: '#signalBars1',
31
+ height: 150,
32
+ value: 3.63,
33
+ label: null,
34
+ labelPosition: 'right',
35
+ });
36
+
37
+ cfg.charts.signalBars({
38
+ ...signalBarsOpts,
39
+ // height: 150,
40
+ container: '#signalBars2',
41
+ value: 3.33,
42
+ // maxBarWidth: 40,
43
+ barsRelativeCornerRadius: .5,
44
+ label: '' // fa sì che nessuna etichetta sia mostrata
45
+ });
46
+
47
+ cfg.charts.signalBars({
48
+ ...signalBarsOpts,
49
+ container: '#signalBars3',
50
+ // value: 2.83,
51
+ label: 'Tra 1 e 2',
52
+ labelPosition: 'bottom',
53
+ maxBarWidth: 40,
54
+ barsStrokeWidth: 0,
55
+ barsOnAttr: {
56
+ fill: '#0c811c',
57
+ },
58
+ barsOffAttr: {
59
+ fill: '#c00',
60
+ },
61
+ activeBars: 1,
62
+ svgClassName: 'test-class'
63
+ });
64
+ }
@@ -0,0 +1,86 @@
1
+ /* eslint-disable no-console */
2
+ import { AdaCharts } from '../../index.js';
3
+ import { createSvgCanvasNode } from '../../src/create-svg-canvas-node.mjs';
4
+ import * as fs_promises from 'node:fs/promises';
5
+ import path from 'node:path';
6
+
7
+ import { pieNodeTest } from './src/pie-node-test.mjs';
8
+ // import { hBarsNodeTest } from './src/hBars-node-test.mjs';
9
+ import { signalBarsNodeTest } from './src/signalBars-node-test.mjs';
10
+ import { ratingDisplayNodeTest } from './src/ratingDisplay-node-test.mjs';
11
+ // import { radialsBarNodeTest } from './src/radialsBar-node-test.mjs';
12
+ import { settimanaleMensileNodeTest } from './src/settimanale-mensile-node-test.mjs';
13
+ import { mcnNodeTest } from './src/mcn-node-test.mjs';
14
+ import { linesNodeTest } from './src/lines-node-test.mjs';
15
+ import { barsNodeTest } from './src/bars-node-test.mjs';
16
+
17
+ const output_path = new URL(import.meta.resolve('./_output')).pathname;
18
+
19
+ // const fontFolder = new URL(import.meta.resolve('../../../ada-brochure-business-analysis/2025/assets/fonts/Roboto_Condensed/static')).pathname;
20
+ const fontFolder = new URL(import.meta.resolve('../../../ada-brochure-business-analysis/2025/assets/fonts/nunito-sans_5.2.7_fontsource/ttf')).pathname;
21
+
22
+ const cfg = {
23
+ charts: new AdaCharts({
24
+
25
+ // ridefinizione di createSvgCanvas in modo che sia utilizzata la versione per node
26
+ createSvgCanvas: createSvgCanvasNode,
27
+
28
+ textToPath: true, // converte i font in tracciati
29
+ }),
30
+
31
+ testValues: {
32
+ 'Label 1': 120,
33
+ 'B': 20,
34
+ 'Label 3': 50,
35
+ 'Qualcosa': 95,
36
+ 'E': 144
37
+ },
38
+
39
+ // fontFile: {
40
+ // bold: fontFolder + '/RobotoCondensed-Bold.ttf'
41
+ // medium: fontFolder + '/RobotoCondensed-Medium.ttf',
42
+ // regular: fontFolder + '/RobotoCondensed-Regular.ttf',
43
+ // },
44
+
45
+ fontFile: {
46
+ extrabold: fontFolder + '/nunito-sans-latin-900-normal.ttf',
47
+ bold: fontFolder + '/nunito-sans-latin-700-normal.ttf',
48
+ medium: fontFolder + '/nunito-sans-latin-600-normal.ttf',
49
+ regular: fontFolder + '/nunito-sans-latin-400-normal.ttf',
50
+ italic: fontFolder + '/nunito-sans-latin-400-italic.ttf',
51
+ lightItalic: fontFolder + '/nunito-sans-latin-300-italic.ttf',
52
+ },
53
+
54
+ writeFile: async (svgString, fileName) => {
55
+ try {
56
+ await fs_promises.writeFile(path.join(output_path, fileName), svgString);
57
+ } catch (err) {
58
+ console.error(err);
59
+ }
60
+
61
+ }
62
+ };
63
+
64
+
65
+ // svuota cartella output
66
+ try {
67
+ await fs_promises.rm(output_path, { recursive: true, force: true });
68
+ await fs_promises.mkdir(output_path, { recursive: true });
69
+ } catch (err) {
70
+ console.error('Error clearing output folder:', err);
71
+ }
72
+
73
+
74
+ await pieNodeTest(cfg);
75
+ // await hBarsNodeTest(cfg);
76
+ await signalBarsNodeTest(cfg);
77
+ await ratingDisplayNodeTest(cfg);
78
+ // await radialsBarNodeTest(cfg);
79
+ await settimanaleMensileNodeTest(cfg);
80
+ await mcnNodeTest(cfg);
81
+ await linesNodeTest(cfg);
82
+ await barsNodeTest(cfg);
83
+
84
+
85
+
86
+ console.log(' DONE ');
@@ -0,0 +1,40 @@
1
+
2
+ export async function hBarsNodeTest(cfg) {
3
+ const bars_params = {
4
+ width: 400,
5
+ height: 350,
6
+ values: Object.values(cfg.testValues),
7
+ labels: Object.keys(cfg.testValues),
8
+ showValues: true,
9
+ showValuesAs: 'percent',
10
+ barsStrokeWidth: 4,
11
+ barsStrokeColor: '#333',
12
+ // barsDirection: 'right', // default
13
+ labelsFont: {
14
+ family: 'Roboto Flex',
15
+ size: 16,
16
+ // stretch: 'normal',
17
+ // style: 'normal',
18
+ // variant: 'normal',
19
+ weight: 800
20
+ },
21
+ valuesFont: {
22
+ family: 'Roboto Flex',
23
+ size: 14,
24
+ // stretch: 'normal',
25
+ style: 'italic',
26
+ // variant: 'normal',
27
+ // weight: 400
28
+ },
29
+ labelsFontFilePath: cfg.fontFile.medium,
30
+ valuesFontFilePath: cfg.fontFile.regular,
31
+ };
32
+ let hbars_svg = await cfg.charts.hbars(bars_params);
33
+
34
+ await cfg.writeFile(hbars_svg, 'hbars.svg');
35
+
36
+
37
+ hbars_svg = await cfg.charts.hbars({...bars_params, barsDirection: 'left'});
38
+ await cfg.writeFile(hbars_svg, 'hbars-dx-sx.svg');
39
+
40
+ }
@@ -0,0 +1,73 @@
1
+ export async function linesNodeTest(cfg) {
2
+
3
+
4
+ const svgFile = await cfg.charts.lines({
5
+
6
+ yAxisTitleFontFilePath: cfg.fontFile.medium,
7
+ xAxisTitleFontFilePath: cfg.fontFile.medium,
8
+ labelXFontFilePath: cfg.fontFile.regular,
9
+ labelYFontFilePath: cfg.fontFile.regular,
10
+
11
+
12
+
13
+ /** mostra info utili per il debug */
14
+ debug: true,
15
+
16
+ /**
17
+ larghezza e altezza del grafico (px),
18
+ Se il container è presente e i parametro `width` o `height` sono `null`,
19
+ quelli mancanti vengono ricavati dallaìe dimensioni del container
20
+ */
21
+ width: 800,
22
+ height: 500,
23
+
24
+
25
+ /**
26
+ valori numerici per la definizione delle linee
27
+ è un array di array, in cui ogni subarray contiene i valori di una singola linea
28
+ */
29
+ values: [
30
+ [1000, 1400, 3450, 230, 450, 1203],
31
+ [600, 1404, 3106, 3085, 730, 2405],
32
+ [1765, 3407, 598, 3555, 3416, 1051],
33
+ ],
34
+
35
+ /**
36
+ etichette corrispondenti ai vari valori. Sono posizionate sull'asse X
37
+ */
38
+ xLabels: ['A', 'B', 'C', 'D', 'E', 'F'],
39
+
40
+ /** suddivisioni asse Y */
41
+ stepY_count: 5,
42
+
43
+ /** parametri legenda (vedi componente ada-charts/src/components/legenda.js) */
44
+ legenda: {
45
+ fontFilePath: cfg.fontFile.regular,
46
+ items:[{text:'Serie 1'}, {text: 'Serie 2'}, {text: 'Serie 3'}]
47
+ },
48
+
49
+ yAxisTitle: 'Titolo asse Y',
50
+ xAxisTitle: 'Titolo asse X',
51
+
52
+ // data_lines_attrs: {
53
+ // ...default_grid_lines_attrs,
54
+ // 'stroke-width': 2
55
+ // },
56
+ // data_points_attrs: {
57
+ // radius: 3
58
+ // },
59
+
60
+ // /** colori delle linee */
61
+ // data_colors: null,
62
+
63
+ data_lines_widths: [null, null, 4],
64
+
65
+ labelYFormatter: etiValue => etiValue.toLocaleString('it-IT', {
66
+ minimumFractionDigits: 0,
67
+ maximumFractionDigits: 0
68
+ }),
69
+ });
70
+
71
+ await cfg.writeFile(svgFile, 'lines.svg');
72
+
73
+ }
@@ -0,0 +1,64 @@
1
+
2
+ export async function mcnNodeTest(cfg) {
3
+
4
+
5
+ const opts = {
6
+ debug: true,
7
+ svgBackground: '#fff',
8
+ labelMargin: 8,
9
+ // barsCircleGap
10
+ labelFont: {
11
+ // family: 'sans-serif',
12
+ size: 18,
13
+ // stretch: 'normal',
14
+ // style: 'normal',
15
+ // variant: 'normal',
16
+ weight: 700
17
+ },
18
+ labelFill: '#333',
19
+ labelYearFill: '#035869',
20
+ labelFontFilePath: cfg.fontFile.bold,
21
+ miniLabelFontFilePath: cfg.fontFile.regular,
22
+ valuesFontFilePath: cfg.fontFile.regular,
23
+ mcnFontFilePath: cfg.fontFile.extrabold,
24
+ barsNullFontFilePath: cfg.fontFile.italic,
25
+ mcnNullFontFilePath: cfg.fontFile.lightItalic,
26
+ };
27
+
28
+ let svgFile = await cfg.charts.mcn({
29
+ ...opts,
30
+ direction: 'right',
31
+ mese: 3,
32
+ anno: 2025,
33
+ values: {
34
+ tv: 99458.55,
35
+ tv_budget: null,
36
+ ricavi: 26458.88,
37
+ costi: 9458.4,
38
+ compenso: 35811,
39
+ mcn: null
40
+ },
41
+ // showValues: false
42
+ });
43
+
44
+ await cfg.writeFile(svgFile, 'mcn1.svg');
45
+
46
+ svgFile = await cfg.charts.mcn({
47
+ ...opts,
48
+ direction: 'left',
49
+ label: 'conguaglio',
50
+ isCurrentYear: false,
51
+ values: {
52
+ tv: 99458.55,
53
+ tv_budget: 82797.82,
54
+ ricavi: 26458.88,
55
+ costi: 39458.4,
56
+ compenso: -35811,
57
+ mcn: -0.1842
58
+ },
59
+ // showValues: true,
60
+ });
61
+
62
+ await cfg.writeFile(svgFile, 'mcn2.svg');
63
+
64
+ }
@@ -0,0 +1,12 @@
1
+
2
+
3
+ export async function pieNodeTest(cfg) {
4
+
5
+ const pie_svg = cfg.charts.pie({
6
+ innerRadius: 30,
7
+ radius: 50,
8
+ values: Object.values(cfg.testValues)
9
+ });
10
+
11
+ await cfg.writeFile(pie_svg, 'pie.svg');
12
+ }
@@ -0,0 +1,44 @@
1
+ export async function radialsBarNodeTest(cfg) {
2
+
3
+ const radialBarsCfg = {
4
+
5
+ gap : 5, // px
6
+ strokeWidth : 30, // px
7
+ start : 'bottom', // bottom | top
8
+ circleRadius : 150, // se null è calcolato dalla larghezza del container
9
+
10
+ barStrokeLinecap : 'round', // bars stroke-linecap (round, butt, square)
11
+ barColors : null, // array di colori per le barre, se non presente vengono utilizzati i colori di default
12
+
13
+ labelsFillColor : '#000', // fill per tutte le etichette, se null viene usato il colore impostato in `data`
14
+ labelsFontFilePath : cfg.fontFile.bold, // percorso font per textToPath
15
+ labelsFont : {
16
+ size: 24
17
+ },
18
+
19
+ data: [
20
+
21
+ {
22
+ label: 'Lorem ipsum',
23
+ value: 250,
24
+ },
25
+
26
+ {
27
+ label: 'Dolor sit amet',
28
+ value: 120,
29
+ },
30
+ {
31
+ label: 'Consectuor',
32
+ value: 90,
33
+ }
34
+ ]
35
+ };
36
+
37
+ let radialBarsSvg = await cfg.charts.radialBars({...radialBarsCfg, debug: true, clockwise: true});
38
+
39
+ await cfg.writeFile(radialBarsSvg, 'radial-bars-clockwise-w-debug.svg');
40
+
41
+ radialBarsSvg = await cfg.charts.radialBars({...radialBarsCfg, debug: false, clockwise: false, start: 'top'});
42
+ await cfg.writeFile(radialBarsSvg, 'radial-bars-anticlockwise.svg');
43
+
44
+ }