@massimo-cassandro/minimo 1.19.0 → 1.19.1

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 (165) hide show
  1. package/design-tokens/README.md +195 -0
  2. package/design-tokens/tokens/src/components/unsplash-page/unsplash-page.minimo.tokens.jsonc +69 -31
  3. package/design-tokens/{utilities/tokens-config-sample.mjs → tokens-config-sample.mjs} +10 -10
  4. package/dev-tools/starter-kit/starter-install.sh +1 -1
  5. package/package.json +6 -2
  6. package/snippets/error-pages/error-pages.js +3 -2
  7. package/src/components/unsplash-page/unsplash-page.minimo.tokens.mjs +78 -39
  8. package/src/components/unsplash-page/unsplash-page.module.css +25 -6
  9. package/src/custom-properties.css +8 -1
  10. package/src/minimo.css +1 -1
  11. package/src/web-components/s-datatable-component/s-datatable-component.js +4 -1
  12. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/index.js +0 -92
  13. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/hbars.js +0 -356
  14. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/pie.js +0 -245
  15. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/radial-bars.js +0 -177
  16. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/rating-display.js +0 -835
  17. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/costruzione-assi.js +0 -212
  18. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/costruzione-linee.js +0 -101
  19. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/defaults.js +0 -185
  20. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/display-current.js +0 -27
  21. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/grid-areas.js +0 -129
  22. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/parse-opts.js +0 -64
  23. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/paths-setup.js +0 -73
  24. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile.js +0 -126
  25. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/signal-bars.js +0 -290
  26. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/week-utils.js +0 -122
  27. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/hbars-test.js +0 -52
  28. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/mcn-test.js +0 -74
  29. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/pie-test.js +0 -16
  30. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/radial-bars-test.js +0 -48
  31. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/settimanale-mensile-dati-settimanale.js +0 -426
  32. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/settimanale-mensile-test.js +0 -260
  33. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/signal-bars-test.js +0 -64
  34. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/node-test.mjs +0 -86
  35. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/hBars-node-test.mjs +0 -40
  36. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/lines-node-test.mjs +0 -73
  37. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/mcn-node-test.mjs +0 -64
  38. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/pie-node-test.mjs +0 -12
  39. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/radialsBar-node-test.mjs +0 -44
  40. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/settimanale-mensile-node-test.mjs +0 -258
  41. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/signalBars-node-test.mjs +0 -36
  42. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/test-readme.md +0 -24
  43. package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/textToPath-test.mjs +0 -14
  44. package/charts/TODO charts/???/InfoBox.js +0 -456
  45. package/charts/TODO charts/???/README-upg OLD/342/206/222NEW.md" +0 -53
  46. package/charts/TODO charts/???/README.md +0 -1
  47. package/charts/TODO charts/???/TODO.md +0 -39
  48. package/charts/TODO charts/???/base-cfg.js +0 -66
  49. package/charts/TODO charts/???/rating-displayOLD.js +0 -837
  50. package/charts/TODO charts/docs/TODO.md +0 -1
  51. package/charts/TODO charts/docs/costruzione display rating.md +0 -145
  52. package/charts/TODO charts/test/node-test.mjs +0 -92
  53. package/charts/TODO charts/test/test-readme.md +0 -23
  54. package/charts/TODO charts/test/test-src/rating-display-extra-test.js +0 -132
  55. package/charts/TODO charts/test/test-src/rating-display-test.js +0 -155
  56. package/charts/TODO charts/test/textToPath-test.mjs +0 -14
  57. package/charts/TODO.md +0 -7
  58. package/charts/src/node-helpers/TODO.md +0 -2
  59. package/dev-tools/starter-kit/TODO.md +0 -135
  60. package/src/components/TODO form-multiselect/form-multiselect.css +0 -40
  61. package/src/components/TODO form-multiselect/form-multiselect.js +0 -83
  62. package/src/components/TODO vanilla-cookie-consent/cookie-consent.css +0 -20
  63. package/src/components/TODO vanilla-cookie-consent/cookie-consent.js +0 -76
  64. package/src/components/TODO vanilla-cookie-consent/render-cookie-list.js +0 -32
  65. package/src/components/TODO vanilla-cookie-consent/src/cookie-list.js +0 -85
  66. package/src/components/TODO vanilla-cookie-consent/src/it-translation.js +0 -38
  67. package/src/components/TODO vanilla-cookie-consent/src/run-analytics.js +0 -54
  68. package/src/components/TODO vanilla-cookie-consent/src/run-recaptcha.js +0 -71
  69. package/src/components/autocomplete/TODO.md +0 -4
  70. package/src/web-components/TODO json-table/README.md +0 -67
  71. package/src/web-components/TODO json-table/TODO.md +0 -12
  72. package/src/web-components/TODO json-table/_work/OLD/docs/custom-props-list.md +0 -69
  73. package/src/web-components/TODO json-table/_work/OLD/script/create-css-custom-props-doc.mjs +0 -113
  74. package/src/web-components/TODO json-table/_work/OLD/script/src/custom-props-end.md +0 -4
  75. package/src/web-components/TODO json-table/_work/OLD/script/src/custom-props-start.md +0 -30
  76. package/src/web-components/TODO json-table/_work/OLD/src/css/icons.module.css +0 -22
  77. package/src/web-components/TODO json-table/_work/OLD/src/css/info.module.css +0 -42
  78. package/src/web-components/TODO json-table/_work/OLD/src/css/main-wrapper.module.css +0 -4
  79. package/src/web-components/TODO json-table/_work/OLD/src/css/table.module.css +0 -154
  80. package/src/web-components/TODO json-table/_work/OLD/src/css/utility.module.css +0 -9
  81. package/src/web-components/TODO json-table/_work/OLD/src/icons/false.svg +0 -1
  82. package/src/web-components/TODO json-table/_work/OLD/src/icons/search-arrows.svg +0 -1
  83. package/src/web-components/TODO json-table/_work/OLD/src/icons/true.svg +0 -1
  84. package/src/web-components/TODO json-table/_work/OLD/src/index.js +0 -56
  85. package/src/web-components/TODO json-table/_work/OLD/src/js/default-columns-data-types.js +0 -172
  86. package/src/web-components/TODO json-table/_work/OLD/src/js/defaults.js +0 -156
  87. package/src/web-components/TODO json-table/_work/OLD/src/js/info-section.js +0 -31
  88. package/src/web-components/TODO json-table/_work/OLD/src/js/listeners.js +0 -17
  89. package/src/web-components/TODO json-table/_work/OLD/src/js/main-builder.js +0 -26
  90. package/src/web-components/TODO json-table/_work/OLD/src/js/parse-params.js +0 -121
  91. package/src/web-components/TODO json-table/_work/OLD/src/js/set-column-classname.js +0 -22
  92. package/src/web-components/TODO json-table/_work/OLD/src/js/table-builder.js +0 -64
  93. package/src/web-components/TODO json-table/_work/OLD/src/js/table-foot.js +0 -8
  94. package/src/web-components/TODO json-table/_work/OLD/src/js/table-head.js +0 -47
  95. package/src/web-components/TODO json-table/_work/OLD/src/js/table-row.js +0 -83
  96. package/src/web-components/TODO json-table/_work/OLD/src/js/utilities.js +0 -5
  97. package/src/web-components/TODO json-table/_work/__json-table-react/index.js +0 -4
  98. package/src/web-components/TODO json-table/_work/__json-table-react/src/build-page-array.js +0 -73
  99. package/src/web-components/TODO json-table/_work/__json-table-react/src/columns-data-types.js +0 -73
  100. package/src/web-components/TODO json-table/_work/__json-table-react/src/defaults.js +0 -50
  101. package/src/web-components/TODO json-table/_work/__json-table-react/src/download-excel.js +0 -156
  102. package/src/web-components/TODO json-table/_work/__json-table-react/src/set-className.js +0 -19
  103. package/src/web-components/TODO json-table/_work/__json-table-react/src/set-download-filename.js +0 -17
  104. package/src/web-components/TODO json-table/_work/__json-table-react/src/table-to-csv.js +0 -48
  105. package/src/web-components/TODO json-table/_work/archived/table-to-csv.js +0 -48
  106. package/src/web-components/TODO json-table/_work/arrow.svg +0 -3
  107. package/src/web-components/TODO json-table/_work/da decidere/get-cell-data.js +0 -18
  108. package/src/web-components/TODO json-table/_work/download-button.js +0 -29
  109. package/src/web-components/TODO json-table/_work/download-excel.js +0 -155
  110. package/src/web-components/TODO json-table/_work/pagination-array-builder.js +0 -73
  111. package/src/web-components/TODO json-table/_work/pagination.js +0 -37
  112. package/src/web-components/TODO json-table/_work/set-download-filename.js +0 -19
  113. package/src/web-components/TODO json-table/_work/table-info.js +0 -24
  114. package/src/web-components/TODO json-table/demo/README.md +0 -66
  115. package/src/web-components/TODO json-table/demo/assets/link-simple.svg +0 -1
  116. package/src/web-components/TODO json-table/demo/demo-data/json-static-table-demo-data.js +0 -512
  117. package/src/web-components/TODO json-table/demo/demo.css +0 -32
  118. package/src/web-components/TODO json-table/demo/demo.js +0 -24
  119. package/src/web-components/TODO json-table/demo/js/demo-ajax-table.js +0 -165
  120. package/src/web-components/TODO json-table/demo/js/demo-static-table.js +0 -180
  121. package/src/web-components/TODO json-table/demo/webpack-modules/css-rules.mjs +0 -122
  122. package/src/web-components/TODO json-table/demo/webpack-modules/get-jsConfig-aliases.mjs +0 -33
  123. package/src/web-components/TODO json-table/demo/webpack-modules/svg-rules.mjs +0 -108
  124. package/src/web-components/TODO json-table/demo/webpack-modules/svgo.config.mjs +0 -26
  125. package/src/web-components/TODO json-table/demo/webpack.config.mjs +0 -333
  126. package/src/web-components/TODO json-table/docs/custom-props-list.md +0 -74
  127. package/src/web-components/TODO json-table/docs-builder/create-css-custom-props-doc.mjs +0 -157
  128. package/src/web-components/TODO json-table/docs-builder/src/custom-props-end.md +0 -6
  129. package/src/web-components/TODO json-table/docs-builder/src/custom-props-start.md +0 -29
  130. package/src/web-components/TODO json-table/src/TODO.md +0 -1
  131. package/src/web-components/TODO json-table/src/__json-table-react/build-page-array.js +0 -73
  132. package/src/web-components/TODO json-table/src/__json-table-react/columns-data-types.js +0 -73
  133. package/src/web-components/TODO json-table/src/__json-table-react/defaults.js +0 -50
  134. package/src/web-components/TODO json-table/src/__json-table-react/download-excel.js +0 -156
  135. package/src/web-components/TODO json-table/src/__json-table-react/set-className.js +0 -19
  136. package/src/web-components/TODO json-table/src/__json-table-react/set-download-filename.js +0 -17
  137. package/src/web-components/TODO json-table/src/__json-table-react/table-to-csv.js +0 -48
  138. package/src/web-components/TODO json-table/src/css/custom-media.css +0 -16
  139. package/src/web-components/TODO json-table/src/css/icons.module.css +0 -22
  140. package/src/web-components/TODO json-table/src/css/info-section.module.css +0 -78
  141. package/src/web-components/TODO json-table/src/css/main-builder.module.css +0 -6
  142. package/src/web-components/TODO json-table/src/css/table.module.css +0 -172
  143. package/src/web-components/TODO json-table/src/css/utility.module.css +0 -9
  144. package/src/web-components/TODO json-table/src/icons/arrow-down-bold.svg +0 -1
  145. package/src/web-components/TODO json-table/src/icons/false.svg +0 -1
  146. package/src/web-components/TODO json-table/src/icons/true.svg +0 -1
  147. package/src/web-components/TODO json-table/src/index.js +0 -125
  148. package/src/web-components/TODO json-table/src/js/default-columns-data-types.js +0 -172
  149. package/src/web-components/TODO json-table/src/js/defaults.js +0 -510
  150. package/src/web-components/TODO json-table/src/js/get-ajax-data.js +0 -72
  151. package/src/web-components/TODO json-table/src/js/info-section.js +0 -39
  152. package/src/web-components/TODO json-table/src/js/init-ajax-table.js +0 -30
  153. package/src/web-components/TODO json-table/src/js/init-static-table.js +0 -18
  154. package/src/web-components/TODO json-table/src/js/main-builder.js +0 -87
  155. package/src/web-components/TODO json-table/src/js/parse-data-row.js +0 -123
  156. package/src/web-components/TODO json-table/src/js/parse-params.js +0 -118
  157. package/src/web-components/TODO json-table/src/js/set-search-listener.js +0 -62
  158. package/src/web-components/TODO json-table/src/js/set-sort-listeners.js +0 -115
  159. package/src/web-components/TODO json-table/src/js/static-data-sorting.js +0 -23
  160. package/src/web-components/TODO json-table/src/js/table-builder.js +0 -45
  161. package/src/web-components/TODO json-table/src/js/table-row.js +0 -43
  162. package/src/web-components/TODO json-table/src/js/table-tfoot.js +0 -9
  163. package/src/web-components/TODO json-table/src/js/table-thead.js +0 -91
  164. package/src/web-components/TODO json-table/src/js/update-info.js +0 -42
  165. package/src/web-components/TODO json-table/src/js/utilities.js +0 -5
@@ -1,92 +0,0 @@
1
- // NB: i grafici non utilizzati in questa verione della brochure sono disabilitati
2
-
3
- import { pie } from './src/charts/pie.js';
4
- // import { hbars } from './src/charts/hbars.js';
5
- import { signalBars } from './src/charts/signal-bars.js';
6
- import { ratingDisplay } from './src/charts/rating-display.js';
7
- // import { radialBars } from './src/charts/radial-bars.js';
8
- import { settimanaleMensile } from './src/charts/settimanale-mensile.js';
9
- import { mcn } from './src/charts/mcn.js';
10
- import { lines } from './src/charts/lines.js';
11
- import { bars } from './src/charts/bars.js';
12
-
13
- import { utils } from './src/chart-utils.js';
14
- import { default_colors } from './src/default-chart-colors.js';
15
- import { createSvgCanvas } from './src/create-svg-canvas.js';
16
- import { createTextEl } from './src/create-text-element.js';
17
-
18
- import { legenda } from './src/components/legenda.js';
19
- import { cartesianAxis } from './src/components/cartesian-axis.js';
20
-
21
- class AdaCharts {
22
-
23
- constructor(customParams = {}) {
24
-
25
- this.defaults??= {};
26
-
27
- this.defaults.colors = customParams.defaults?.colors?? Object.values(default_colors);
28
-
29
- this.defaults.font = {
30
-
31
- // pattern per defaults.font
32
- // i valori commentati sono quelli di default
33
- // se non vanno modificati, non serve impostarli
34
- ...{
35
- // family: 'sans-serif',
36
- // size: 14,
37
- // stretch: 'normal',
38
- // style: 'normal',
39
- // variant: 'normal',
40
- // weight: 400
41
- },
42
- ...(customParams.defaults?.font?? {})
43
- };
44
-
45
-
46
- /** se true converte i font in tracciati */
47
- // NB: non usare per versioni browser (usa node)
48
- this.textToPath = customParams.textToPath?? false;
49
-
50
- this.debug = customParams.debug?? false;
51
-
52
- // istanza svgjs per web
53
- this.createSvgCanvas = customParams.createSvgCanvas?? createSvgCanvas;
54
-
55
- // parametri generati condivisi
56
- this.sharedParams = {};
57
- }
58
-
59
- setSharedParams(key, value = null) {
60
- this.sharedParams[key] = value;
61
- }
62
-
63
- getSharedParams(key) {
64
- return this.sharedParams[key];
65
- }
66
-
67
- }
68
-
69
- AdaCharts.prototype.utils = utils;
70
- AdaCharts.prototype.createTextEl = createTextEl;
71
- AdaCharts.prototype.legenda = legenda;
72
- AdaCharts.prototype.cartesianAxis = cartesianAxis;
73
-
74
-
75
- AdaCharts.prototype.pie = pie;
76
- // AdaCharts.prototype.hbars = hbars;
77
- AdaCharts.prototype.signalBars = signalBars;
78
- AdaCharts.prototype.ratingDisplay = ratingDisplay;
79
- // AdaCharts.prototype.radialBars = radialBars;
80
- AdaCharts.prototype.settimanaleMensile = settimanaleMensile;
81
- AdaCharts.prototype.mcn = mcn;
82
- AdaCharts.prototype.lines = lines;
83
- AdaCharts.prototype.bars = bars;
84
-
85
-
86
- export { AdaCharts };
87
-
88
-
89
- // esportazione singoli metodi
90
- // https://cube.dev/blog/how-to-build-tree-shakeable-javascript-libraries
91
- // https://www.freecodecamp.org/news/what-is-a-pure-function-in-javascript-acb887375dfe/
92
- // export const barsChart = /* #__PURE__ */ AdaCharts.bars;
@@ -1,356 +0,0 @@
1
- // horizontal bars
2
-
3
- export async function hbars({
4
-
5
- /** colori specifici */
6
- colors = null,
7
-
8
- /** container (selettore o elemento DOM), se null viene restituito il codice SVG */
9
- container = null,
10
-
11
- /**
12
- larghezza e altezza del grafico (px),
13
- Se il container è presente e i parametro `width` e `height` sono `null`,
14
- vengono utilizzate le dimensioni del container.
15
- Se uno dei due valori non è impostato o ricavabile, viene generato un errore.
16
- NB: il padding del container viene considerato nelle dimensioni del grafico,
17
- è preferibile non impostarlo.
18
- Il valore 'auto' di height fa sì che l'altezza dell'svg sia calcolata sulla base
19
- del numero di barre e dei valori `barsGap` e `barsHeight`
20
- */
21
- width = null, // null || <value>
22
- height = 300, // <value> || null || 'auto'
23
-
24
- /** valori numerici da associare alle barre del grafico */
25
- values = [],
26
-
27
- /** etichette delle varie barre, l'indice di ogni elemento corrisponde a quello di `values` a cui si riferisce */
28
- labels = [],
29
-
30
-
31
- /** Indica se mostrare o no i valori delle barre (mostrati dopo la barra) */
32
- showValues = true,
33
-
34
- /**
35
- Modalità di rappresentazione del valore mostrato.
36
- Se 'percent', il valore mostrato è la percentuale rispetto al totale dei valori
37
- */
38
- showValuesAs = 'number', // number, numbers, percent, euro
39
-
40
- /** In caso di visualizzazione dei valori (showValues === true), numero di decimali da mostrare */
41
- showValuesFractionDigits = 2,
42
-
43
- /** In caso di visualizzazione dei valori (showValues === true), formattazione locale da utilizzare */
44
- showValuesLocale = 'it-IT',
45
-
46
- /**
47
- Impostazioni font per le etichette e i valori
48
- Impostare solo se non si vogliono usare i colori di default
49
- se impostato è un oggetto analogo a quello definito in index.js
50
- Possono essere impostati solo i valori che si vogliono modificare
51
- */
52
- labelsFont = null,
53
- valuesFont = null,
54
-
55
- /** path del file font per la conversione in tracciati */
56
- labelsFontFilePath = null,
57
- valuesFontFilePath = null,
58
-
59
- /** text fill color */
60
- labelsFill = '#000',
61
- valuesFill = '#000',
62
-
63
- /** direzione della barra */
64
- barsDirection = 'right', // right || left
65
-
66
- /** larghezza minima labels */
67
- minLabelslWidth = 0,
68
-
69
- /** spazio tra un'etichetta di testo e il grafico */
70
- textBarsGap = 8,
71
-
72
- /** spazio tra una barra e la successiva */
73
- barsGap = 10,
74
-
75
- /** altezza barre */
76
- barsHeight = 40,
77
-
78
- /** corner radius */
79
- barsCornerRadius = 5,
80
-
81
- /** spessore e colore traccia (0 per non visualizzare) */
82
- barsStrokeWidth = 0,
83
- barsStrokeColor = '#000',
84
-
85
- /** se false le classi vengono ignorate */
86
- useClasses = false,
87
-
88
- /** array di eventuali classi da associare ai corrispondenti valori in base al loro indice */
89
- valClasses = null,
90
-
91
- // TODO animazione
92
- /** se true, attiva l'animazione */ // NB non attivo
93
- // animazione = false, // non implementato
94
-
95
- /** frame per secondo dell'animazione */ // NB non attivo
96
- // fps = 60
97
- }) {
98
-
99
- try {
100
-
101
- if(values.filter(v => isNaN(v)).length) {
102
- throw 'There are non-numeric values';
103
- }
104
-
105
- if(!values.length) {
106
- throw 'At least one value is needed';
107
- }
108
-
109
- if(isNaN(barsStrokeWidth)) {
110
- throw '`barsStrokeWidth` must be a number';
111
- } else {
112
- barsStrokeWidth = +barsStrokeWidth;
113
- }
114
-
115
- const toRight = barsDirection === 'right';
116
-
117
- [, width, height] = this.utils.parseContainer(container, width, height);
118
-
119
-
120
- if(barsGap == null) {
121
- throw '`barsGap` must be set';
122
- }
123
-
124
- if(height === 'auto') {
125
- height = (values.length * barsHeight) +
126
- ((values.length - 1) * barsGap) +
127
- // la traccia insiste per metà sulla parte interna della barra, quindi va calcolata una sola volta
128
- (values.length * barsStrokeWidth);
129
-
130
- if(!barsHeight) {
131
- throw 'With `height = \'auto\'`, `barsHeight` must be set';
132
- }
133
-
134
- } else { // determinazione altezza barre
135
- barsHeight = (
136
- height -
137
- ((values.length - 1) * barsGap)
138
- ) / values.length - barsStrokeWidth;
139
- }
140
-
141
-
142
- if(!width || !height) {
143
- throw `Missing width and/or height: width: ${width}, height: ${height}`;
144
- }
145
-
146
- // colori forniti o di default
147
- colors??= this.defaults.colors;
148
-
149
- // fonts
150
- labelsFont = {...this.defaults.font, ...(labelsFont??{}) };
151
- valuesFont = {...this.defaults.font, ...(valuesFont??{}) };
152
-
153
- // somma di tutti i valori per calcolo persentuale
154
- const totValues = values.reduce((tot, current) => tot + current, 0);
155
-
156
- // definizione etichette valori
157
- let valueLabels = [];
158
- if(showValues) {
159
- valueLabels = values.map(v => {
160
-
161
- if(showValuesAs === 'percent') {
162
- v = v / totValues;
163
- }
164
-
165
- let labelStyle;
166
- switch (showValuesAs) {
167
- case 'number':
168
- case 'numbers':
169
- labelStyle = {
170
- style: 'decimal'
171
- };
172
- break;
173
-
174
- case 'percent':
175
- labelStyle = {
176
- style: 'percent'
177
- };
178
- break;
179
-
180
- case 'euro':
181
- labelStyle = {
182
- currency: 'EUR',
183
- style: 'currency'
184
- };
185
- break;
186
-
187
- // no default
188
- }
189
-
190
- return v.toLocaleString(showValuesLocale, {
191
- minimumFractionDigits: showValuesFractionDigits,
192
- maximumFractionDigits: showValuesFractionDigits,
193
- ...labelStyle
194
- });
195
- });
196
- }
197
-
198
- const svgCanvas = this.createSvgCanvas(container); //.size(width, height);
199
- svgCanvas.viewbox(0, 0, width, height);
200
-
201
- // =>> etichette (labels) & etichette valori (valueLabels)
202
- // calcolo dimensioni del testo per ricavare lo spazio utile per le barre
203
- // e posizionamento delle etichette
204
-
205
- // valori per il calcolo dellìingombro massimo
206
- let max_labels_width = 0, max_value_labels_width = 0;
207
-
208
- // posizionamento iniziale, dopo il rendering verrà ridefinito in base all'altezza del testo
209
- let labelY = (barsHeight + barsStrokeWidth) / 2;
210
- // valore provvisorio, verrà reimpostato a fine ciclo (deve tenere conto di tutte le etichette)
211
- const labelX = toRight? 0 : width;
212
-
213
- const labels_elements = [], value_labels_elements = []; // per allineamenti successivi
214
-
215
-
216
-
217
- for await (const [idx,] of values.entries()) {
218
-
219
- // svgCanvas.line(0, labelY, width, labelY).stroke({ width: 1, color: '#f06'}); // linea di riferimento per allineamento
220
-
221
- const thisLabel = labels[idx],
222
- thisValueLabel = valueLabels[idx];
223
-
224
- if(thisLabel) {
225
-
226
-
227
- let [bbox, labelEl] = await this.createTextEl({
228
- text: thisLabel,
229
- textFill: labelsFill,
230
- fontAttr: {
231
- ...labelsFont,
232
- // 'text-anchor': toRight? 'end' : null
233
- },
234
- fontFilePath: labelsFontFilePath,
235
- parentElement: svgCanvas
236
- });
237
-
238
- labelEl.move(labelX, labelY - (bbox.height/2));
239
-
240
- max_labels_width = Math.max(max_labels_width, bbox.width, minLabelslWidth);
241
-
242
- labels_elements.push({label: labelEl, w: bbox.width}); // per il riposizionamento X successivo
243
- }
244
-
245
- // etichette valori
246
- if(thisValueLabel && showValues) {
247
-
248
- let [bbox, labelEl] = await this.createTextEl({
249
- text: thisValueLabel,
250
- textFill: valuesFill,
251
- fontAttr: {
252
- ...valuesFont,
253
- // 'text-anchor': toRight? null : 'end'
254
- },
255
- fontFilePath: valuesFontFilePath,
256
- parentElement: svgCanvas
257
- });
258
-
259
- labelEl.move(labelX, labelY - (bbox.height/2));
260
-
261
- max_value_labels_width = Math.max(max_value_labels_width, bbox.width);
262
- value_labels_elements.push({label: labelEl, w: bbox.width});
263
- }
264
-
265
-
266
- labelY += barsHeight + barsStrokeWidth + barsGap;
267
- } // end for values
268
-
269
- // linea di riferimento per allineamento:
270
- // svgCanvas.line(max_labels_width, 0, max_labels_width, height).stroke({ width: 2, color: '#4faa0d'});
271
-
272
- // =>> riposizionamento `labels_elements`
273
- // da sx a dx: allineate a destra sull'asse Y dell'etichetta più lunga
274
- // da dx a sx: allineate a sinistra sull'asse Y della larghezza dell'svg - lunghezza etichetta più lunga
275
- // NB da effettuare prima dell'aggiunta di `textBarsGap`
276
- // if(this.textToPath) {
277
-
278
- // NB VERSIONE che in modalità testo usa il metodo ax, non applicabile con i tracciati
279
- // eliminato per avere un'unica versione
280
- // labels_elements.forEach(l => {
281
- // l.label.x(toRight? max_labels_width - l.w : width - max_labels_width);
282
- // });
283
-
284
- // } else {
285
- // labels_elements.forEach(l => {
286
- // l.ax(toRight? max_labels_width : width - max_labels_width);
287
- // });
288
- // }
289
- labels_elements.forEach(l => {
290
- l.label.x(toRight? max_labels_width - l.w : width - max_labels_width);
291
- });
292
-
293
-
294
-
295
- // =>> aggiunta `textBarsGap` a `max_labels_width` e `max_value_labels_width`
296
- if(max_labels_width) {
297
- max_labels_width += textBarsGap;
298
- }
299
- if(max_value_labels_width) {
300
- max_value_labels_width += textBarsGap;
301
- }
302
-
303
- // =>> costruzione barre e posizionamento etichette valori
304
-
305
- // dimensioni barre
306
- const maxBarsWidth = width - max_labels_width - max_value_labels_width,
307
- maxBarsValue = values.reduce((max, current) => max > current? max : current, 0);
308
-
309
- let barY = barsStrokeWidth / 2;
310
- values.forEach((v, idx) => {
311
-
312
- const barWidth = (v / maxBarsValue * maxBarsWidth) - barsStrokeWidth,
313
-
314
- barX = toRight? max_labels_width : width - barWidth - max_labels_width,
315
- bar = svgCanvas.rect({
316
- x: barX,
317
- y: barY,
318
- width: barWidth,
319
- height: barsHeight,
320
- fill: colors[idx]?? '#ccc',
321
- })
322
- .radius(barsCornerRadius);
323
-
324
- if( barsStrokeWidth > 0 && barsStrokeColor) {
325
- bar.stroke({ color: barsStrokeColor, width: barsStrokeWidth });
326
- }
327
-
328
- if(useClasses && valClasses[idx]) {
329
- bar.addClass(valClasses[idx]);
330
- }
331
-
332
- // =>> riposizionamento value_labels_elements (vedi precedente =>> riposizionamento `labels_elements`)
333
- const thisValueLabel = value_labels_elements[idx];
334
- if(thisValueLabel != null && showValues) {
335
- thisValueLabel.label.x(
336
- toRight
337
- ? max_labels_width + barWidth + textBarsGap
338
- : barX - textBarsGap - thisValueLabel.w
339
- )
340
- .front();
341
- }
342
-
343
-
344
- barY += barsHeight + barsGap + barsStrokeWidth;
345
- });
346
-
347
- if(!container) {
348
- return svgCanvas.svg();
349
- }
350
-
351
-
352
- } catch(e) {
353
- console.error( 'AdaCharts → hbars', e ); // eslint-disable-line
354
- }
355
-
356
- }
@@ -1,245 +0,0 @@
1
-
2
- export function pie({
3
-
4
- /** container (selettore o elementio DOM), se null viene restituito il codice SVG */
5
- container = null,
6
-
7
- /** raggio del cerchio */
8
- radius = 60,
9
-
10
- /** raggio cerchio interno, da impostare nel caso si voglia creare un grafico a ciambella */
11
- innerRadius = null,
12
-
13
- /** valori da associare alle "fette" del grafico */
14
- values = [],
15
-
16
- /**
17
- array dei colori delle fette da associare ai corrispondenti valori in base al loro indice.
18
- Impostare solo se non si vogliono usare i colori di default
19
- */
20
- colors = null,
21
-
22
- /** se false le classi vengono ignorate */
23
- useClasses = false,
24
-
25
- /** array di eventuali classi da associare ai corrispondenti valori in base al loro indice */
26
- valClasses = null,
27
-
28
- /** valore angolo (in gradi) da cui avviare il disegno */
29
- startAt = 90,
30
-
31
- /** verso del grafico */
32
- clockwise = true,
33
-
34
- /** se true, attiva l'animazione */ // NB non attivo
35
- // animazione = false, // non implementato
36
-
37
- /** frame per secondo dell'animazione */ // NB non attivo
38
- // fps = 60
39
- } = {}) {
40
-
41
- // TODO animazione
42
- const animazione = false;
43
-
44
- try {
45
-
46
- // colori forniti o di default
47
- colors??= this.defaults.colors;
48
-
49
- this.utils.parseContainer(container);
50
-
51
- const svgCanvas = this.createSvgCanvas(container);
52
-
53
-
54
- const isDonut = innerRadius != null
55
- ,donutWidth = radius - innerRadius
56
- ,baseColor = '#ccc' // colore neutro per gli elementi di sfondo
57
- ,circleCenter = { x: radius, y: radius }
58
-
59
- // restituisce l'attributo `d` dell'arco di cerchio descritto dall'angolo
60
- // corrispondente alla percentuale data e alle percentuali del punto finale
61
- ,generateAttrD = (params) => {
62
-
63
- let d = [
64
- `M${params.start.x},${params.start.y}`,
65
- `A${radius},${radius}`,
66
- 0, //xAxisRotation,
67
- (params.arcAngle <= 180 ? 0 : 1), // largeArcFlag
68
- clockwise && params.arcAngle < 360? 1 : 0, // sweepFlag
69
- `${params.end.x},${params.end.y}`,
70
- ...(isDonut? [] : [
71
- `L${circleCenter.x},${circleCenter.y}`,
72
- 'Z'
73
- ])
74
- ].join(' ');
75
-
76
- return d;
77
- }
78
-
79
- // CALCOLO PARAMETRI
80
- ,calcolaParametri = (perc, angolo_inizio) => {
81
-
82
- let parametri = {};
83
-
84
- // angolo corrispondente alla percentuale indicata
85
- parametri.arcAngle = 360/100 * perc;
86
-
87
- parametri.angolo_fine = clockwise? angolo_inizio - parametri.arcAngle :
88
- angolo_inizio + parametri.arcAngle;
89
-
90
- // questo non dovrebbe servire mai,
91
- // ma potrebbe verificarsi per somma di arrotondamenti
92
- angolo_inizio = angolo_inizio >= 360? Math.abs(360 - angolo_inizio) : angolo_inizio;
93
- parametri.angolo_fine = parametri.angolo_fine >= 360? Math.abs(360 - parametri.angolo_fine) : parametri.angolo_fine;
94
-
95
- if(perc === 100) {
96
- angolo_inizio = 0;
97
- parametri.angolo_fine = 359.9999;
98
-
99
- } else if(perc === 0) {
100
- parametri.angolo_fine = angolo_inizio;
101
- }
102
-
103
- // coordinate inizio e fine
104
- parametri.start = this.utils.polarToCartesian(angolo_inizio, circleCenter, radius);
105
- parametri.end = this.utils.polarToCartesian(parametri.angolo_fine, circleCenter, radius);
106
-
107
- parametri.perc = perc; // serve per eliminare eventuali valori nulli
108
- parametri.angolo_inizio = angolo_inizio; // per debug
109
-
110
- // console.log(parametri);
111
-
112
- return parametri;
113
- }
114
- ;
115
-
116
-
117
-
118
- // determinazione sezioni della torta
119
- let angolo_inizio = startAt; // angolo di partenza del grafico (viene aggiornato per ogni arco)
120
- const totale = values.reduce((a,b) => a + b, 0),
121
- pieSlices = values.map( (val, idx) => {
122
- let params= calcolaParametri(val / totale * 100, angolo_inizio);
123
- angolo_inizio = params.angolo_fine;
124
-
125
-
126
- // associazione colore e classe
127
- params.color = colors? colors[idx] : null;
128
- params.className = (valClasses != null && useClasses)? valClasses[idx]?? null : null;
129
-
130
- return params;
131
- }).filter(item => item.perc > 0);
132
-
133
-
134
- if(isDonut) {
135
- svgCanvas.viewbox(-donutWidth/2, -donutWidth/2, radius * 2 + donutWidth, radius * 2 + donutWidth);
136
- } else {
137
- svgCanvas.viewbox(0, 0, radius * 2, radius * 2);
138
- }
139
-
140
- svgCanvas.circle({
141
- ...(isDonut
142
- ? {'stroke-width': donutWidth, stroke: baseColor, fill: 'none'}
143
- : {fill: baseColor}
144
- ),
145
- cx: radius,
146
- cy: radius,
147
- r: radius
148
- });
149
-
150
- const sectionsGroup = svgCanvas.group(useClasses? {class: 'mChart-pie-sections-wrapper'}: {});
151
-
152
- if(!animazione) {
153
-
154
- pieSlices.forEach(params => {
155
- sectionsGroup.path(generateAttrD(params))
156
- .attr({
157
- ...(useClasses? {class: this.utils.classnames('mChart-pie-section', params.className)} : {}),
158
- ...(isDonut
159
- ? {'stroke-width': donutWidth, stroke: params.color, fill: 'none'}
160
- : {fill: params.color}
161
- )
162
- });
163
- });
164
- }
165
-
166
- if(!container) {
167
- return svgCanvas.svg();
168
- }
169
- } catch(e) {
170
- console.error( 'AdaCharts → pie', e ); // eslint-disable-line
171
- }
172
- }
173
-
174
-
175
-
176
- // TODO animazione
177
- // if(animazione) {
178
-
179
- // let idx = 0;
180
-
181
- // const animazione_arco = () => {
182
-
183
- // let animationRequest,
184
- // parametri_arco=pieSlices[idx],
185
- // arco, d, arco_path,
186
- // this_perc = 0,
187
- // start_timestamp = Date.now(),
188
- // fine_animazione = false,
189
- // elapsed, now,
190
- // fps = fps,
191
- // fpsInterval = 1000/fps;
192
-
193
-
194
- // const step = () => {
195
- // now = Date.now();
196
- // elapsed = now - start_timestamp;
197
-
198
- // if((this_perc >= parametri_arco.perc) ) {
199
- // this_perc = parametri_arco.perc;
200
- // fine_animazione = true;
201
- // }
202
-
203
- // // request another frame
204
- // animationRequest = window.requestAnimationFrame(step);
205
-
206
- // // if enough time has elapsed, draw the next frame
207
- // if (elapsed > fpsInterval) {
208
-
209
- // // Get ready for next frame by setting start_timestamp=now, but...
210
- // // Also, adjust for fpsInterval not being multiple of 16.67
211
- // start_timestamp = now - (elapsed % fpsInterval);
212
-
213
- // if( this_perc === 0 ) {
214
- // arco = generateArcPathTag(
215
- // calcolaParametri(0, parametri_arco.angolo_inizio),
216
- // colors[idx]
217
- // );
218
- // chart_container.insertAdjacentHTML('afterbegin', arco.chart_segment );
219
- // arco_path = chart_container.querySelector(`.chart-arc.item-${idx}`);
220
-
221
- // } else {
222
- // arco = calcolaParametri(this_perc, parametri_arco.angolo_inizio);
223
- // d = generateAttrD(arco);
224
- // arco_path.setAttribute('d', d);
225
- // }
226
-
227
- // if(fine_animazione) {
228
- // window.cancelAnimationFrame(animationRequest);
229
- // idx++;
230
- // if(idx < pieSlices.length) {
231
- // animazione_arco();
232
- // }
233
- // } else {
234
- // this_perc++;
235
- // }
236
- // }
237
-
238
- // };// end step
239
-
240
- // step();
241
- // }; // end animazione_arco
242
-
243
- // animazione_arco();
244
-
245
- // } // end if animazione