@massimo-cassandro/minimo 1.18.1 → 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.
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/index.js +92 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/hbars.js +356 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/pie.js +245 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/radial-bars.js +177 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/rating-display.js +835 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/costruzione-assi.js +212 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/costruzione-linee.js +101 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/defaults.js +185 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/display-current.js +27 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/grid-areas.js +129 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/parse-opts.js +64 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/paths-setup.js +73 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile.js +126 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/signal-bars.js +290 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/week-utils.js +122 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/hbars-test.js +52 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/mcn-test.js +74 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/pie-test.js +16 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/radial-bars-test.js +48 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/settimanale-mensile-dati-settimanale.js +426 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/settimanale-mensile-test.js +260 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/signal-bars-test.js +64 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/node-test.mjs +86 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/hBars-node-test.mjs +40 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/lines-node-test.mjs +73 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/mcn-node-test.mjs +64 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/pie-node-test.mjs +12 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/radialsBar-node-test.mjs +44 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/settimanale-mensile-node-test.mjs +258 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/signalBars-node-test.mjs +36 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/test-readme.md +24 -0
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/textToPath-test.mjs +14 -0
- package/charts/TODO charts/???/InfoBox.js +456 -0
- package/charts/TODO charts/???/README-upg OLD/342/206/222NEW.md" +53 -0
- package/charts/TODO charts/???/README.md +1 -0
- package/charts/TODO charts/???/TODO.md +39 -0
- package/charts/TODO charts/???/base-cfg.js +66 -0
- package/charts/TODO charts/???/rating-displayOLD.js +837 -0
- package/charts/TODO charts/docs/TODO.md +1 -0
- package/charts/TODO charts/docs/costruzione display rating.md +145 -0
- package/charts/TODO charts/test/node-test.mjs +92 -0
- package/charts/TODO charts/test/test-readme.md +23 -0
- package/charts/TODO charts/test/test-src/rating-display-extra-test.js +132 -0
- package/charts/TODO charts/test/test-src/rating-display-test.js +155 -0
- package/charts/TODO charts/test/textToPath-test.mjs +14 -0
- package/charts/TODO.md +1 -1
- package/package.json +1 -1
- package/snippets/flash-messages.html.twig +34 -0
- package/src/components/unsplash-page/unsplash-page.js +3 -6
- 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
|
+
|
package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/signal-bars-test.js
ADDED
|
@@ -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
|
+
}
|
package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/radialsBar-node-test.mjs
ADDED
|
@@ -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
|
+
}
|