@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.
- package/design-tokens/README.md +195 -0
- package/design-tokens/tokens/src/components/unsplash-page/unsplash-page.minimo.tokens.jsonc +69 -31
- package/design-tokens/{utilities/tokens-config-sample.mjs → tokens-config-sample.mjs} +10 -10
- package/dev-tools/starter-kit/starter-install.sh +1 -1
- package/package.json +6 -2
- package/snippets/error-pages/error-pages.js +3 -2
- package/src/components/unsplash-page/unsplash-page.minimo.tokens.mjs +78 -39
- package/src/components/unsplash-page/unsplash-page.module.css +25 -6
- package/src/custom-properties.css +8 -1
- package/src/minimo.css +1 -1
- package/src/web-components/s-datatable-component/s-datatable-component.js +4 -1
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/index.js +0 -92
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/hbars.js +0 -356
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/pie.js +0 -245
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/radial-bars.js +0 -177
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/rating-display.js +0 -835
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/costruzione-assi.js +0 -212
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/costruzione-linee.js +0 -101
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/defaults.js +0 -185
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/display-current.js +0 -27
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/grid-areas.js +0 -129
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/parse-opts.js +0 -64
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile-src/paths-setup.js +0 -73
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/settimanale-mensile.js +0 -126
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/charts/signal-bars.js +0 -290
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/src/week-utils.js +0 -122
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/hbars-test.js +0 -52
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/mcn-test.js +0 -74
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/pie-test.js +0 -16
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/radial-bars-test.js +0 -48
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/settimanale-mensile-dati-settimanale.js +0 -426
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/settimanale-mensile-test.js +0 -260
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/browser-test/src/signal-bars-test.js +0 -64
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/node-test.mjs +0 -86
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/hBars-node-test.mjs +0 -40
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/lines-node-test.mjs +0 -73
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/mcn-node-test.mjs +0 -64
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/pie-node-test.mjs +0 -12
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/radialsBar-node-test.mjs +0 -44
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/settimanale-mensile-node-test.mjs +0 -258
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/node-test/src/signalBars-node-test.mjs +0 -36
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/test-readme.md +0 -24
- package/charts/TODO charts/1a-vers DA RIFATTORIZZARE/test/textToPath-test.mjs +0 -14
- package/charts/TODO charts/???/InfoBox.js +0 -456
- package/charts/TODO charts/???/README-upg OLD/342/206/222NEW.md" +0 -53
- package/charts/TODO charts/???/README.md +0 -1
- package/charts/TODO charts/???/TODO.md +0 -39
- package/charts/TODO charts/???/base-cfg.js +0 -66
- package/charts/TODO charts/???/rating-displayOLD.js +0 -837
- package/charts/TODO charts/docs/TODO.md +0 -1
- package/charts/TODO charts/docs/costruzione display rating.md +0 -145
- package/charts/TODO charts/test/node-test.mjs +0 -92
- package/charts/TODO charts/test/test-readme.md +0 -23
- package/charts/TODO charts/test/test-src/rating-display-extra-test.js +0 -132
- package/charts/TODO charts/test/test-src/rating-display-test.js +0 -155
- package/charts/TODO charts/test/textToPath-test.mjs +0 -14
- package/charts/TODO.md +0 -7
- package/charts/src/node-helpers/TODO.md +0 -2
- package/dev-tools/starter-kit/TODO.md +0 -135
- package/src/components/TODO form-multiselect/form-multiselect.css +0 -40
- package/src/components/TODO form-multiselect/form-multiselect.js +0 -83
- package/src/components/TODO vanilla-cookie-consent/cookie-consent.css +0 -20
- package/src/components/TODO vanilla-cookie-consent/cookie-consent.js +0 -76
- package/src/components/TODO vanilla-cookie-consent/render-cookie-list.js +0 -32
- package/src/components/TODO vanilla-cookie-consent/src/cookie-list.js +0 -85
- package/src/components/TODO vanilla-cookie-consent/src/it-translation.js +0 -38
- package/src/components/TODO vanilla-cookie-consent/src/run-analytics.js +0 -54
- package/src/components/TODO vanilla-cookie-consent/src/run-recaptcha.js +0 -71
- package/src/components/autocomplete/TODO.md +0 -4
- package/src/web-components/TODO json-table/README.md +0 -67
- package/src/web-components/TODO json-table/TODO.md +0 -12
- package/src/web-components/TODO json-table/_work/OLD/docs/custom-props-list.md +0 -69
- package/src/web-components/TODO json-table/_work/OLD/script/create-css-custom-props-doc.mjs +0 -113
- package/src/web-components/TODO json-table/_work/OLD/script/src/custom-props-end.md +0 -4
- package/src/web-components/TODO json-table/_work/OLD/script/src/custom-props-start.md +0 -30
- package/src/web-components/TODO json-table/_work/OLD/src/css/icons.module.css +0 -22
- package/src/web-components/TODO json-table/_work/OLD/src/css/info.module.css +0 -42
- package/src/web-components/TODO json-table/_work/OLD/src/css/main-wrapper.module.css +0 -4
- package/src/web-components/TODO json-table/_work/OLD/src/css/table.module.css +0 -154
- package/src/web-components/TODO json-table/_work/OLD/src/css/utility.module.css +0 -9
- package/src/web-components/TODO json-table/_work/OLD/src/icons/false.svg +0 -1
- package/src/web-components/TODO json-table/_work/OLD/src/icons/search-arrows.svg +0 -1
- package/src/web-components/TODO json-table/_work/OLD/src/icons/true.svg +0 -1
- package/src/web-components/TODO json-table/_work/OLD/src/index.js +0 -56
- package/src/web-components/TODO json-table/_work/OLD/src/js/default-columns-data-types.js +0 -172
- package/src/web-components/TODO json-table/_work/OLD/src/js/defaults.js +0 -156
- package/src/web-components/TODO json-table/_work/OLD/src/js/info-section.js +0 -31
- package/src/web-components/TODO json-table/_work/OLD/src/js/listeners.js +0 -17
- package/src/web-components/TODO json-table/_work/OLD/src/js/main-builder.js +0 -26
- package/src/web-components/TODO json-table/_work/OLD/src/js/parse-params.js +0 -121
- package/src/web-components/TODO json-table/_work/OLD/src/js/set-column-classname.js +0 -22
- package/src/web-components/TODO json-table/_work/OLD/src/js/table-builder.js +0 -64
- package/src/web-components/TODO json-table/_work/OLD/src/js/table-foot.js +0 -8
- package/src/web-components/TODO json-table/_work/OLD/src/js/table-head.js +0 -47
- package/src/web-components/TODO json-table/_work/OLD/src/js/table-row.js +0 -83
- package/src/web-components/TODO json-table/_work/OLD/src/js/utilities.js +0 -5
- package/src/web-components/TODO json-table/_work/__json-table-react/index.js +0 -4
- package/src/web-components/TODO json-table/_work/__json-table-react/src/build-page-array.js +0 -73
- package/src/web-components/TODO json-table/_work/__json-table-react/src/columns-data-types.js +0 -73
- package/src/web-components/TODO json-table/_work/__json-table-react/src/defaults.js +0 -50
- package/src/web-components/TODO json-table/_work/__json-table-react/src/download-excel.js +0 -156
- package/src/web-components/TODO json-table/_work/__json-table-react/src/set-className.js +0 -19
- package/src/web-components/TODO json-table/_work/__json-table-react/src/set-download-filename.js +0 -17
- package/src/web-components/TODO json-table/_work/__json-table-react/src/table-to-csv.js +0 -48
- package/src/web-components/TODO json-table/_work/archived/table-to-csv.js +0 -48
- package/src/web-components/TODO json-table/_work/arrow.svg +0 -3
- package/src/web-components/TODO json-table/_work/da decidere/get-cell-data.js +0 -18
- package/src/web-components/TODO json-table/_work/download-button.js +0 -29
- package/src/web-components/TODO json-table/_work/download-excel.js +0 -155
- package/src/web-components/TODO json-table/_work/pagination-array-builder.js +0 -73
- package/src/web-components/TODO json-table/_work/pagination.js +0 -37
- package/src/web-components/TODO json-table/_work/set-download-filename.js +0 -19
- package/src/web-components/TODO json-table/_work/table-info.js +0 -24
- package/src/web-components/TODO json-table/demo/README.md +0 -66
- package/src/web-components/TODO json-table/demo/assets/link-simple.svg +0 -1
- package/src/web-components/TODO json-table/demo/demo-data/json-static-table-demo-data.js +0 -512
- package/src/web-components/TODO json-table/demo/demo.css +0 -32
- package/src/web-components/TODO json-table/demo/demo.js +0 -24
- package/src/web-components/TODO json-table/demo/js/demo-ajax-table.js +0 -165
- package/src/web-components/TODO json-table/demo/js/demo-static-table.js +0 -180
- package/src/web-components/TODO json-table/demo/webpack-modules/css-rules.mjs +0 -122
- package/src/web-components/TODO json-table/demo/webpack-modules/get-jsConfig-aliases.mjs +0 -33
- package/src/web-components/TODO json-table/demo/webpack-modules/svg-rules.mjs +0 -108
- package/src/web-components/TODO json-table/demo/webpack-modules/svgo.config.mjs +0 -26
- package/src/web-components/TODO json-table/demo/webpack.config.mjs +0 -333
- package/src/web-components/TODO json-table/docs/custom-props-list.md +0 -74
- package/src/web-components/TODO json-table/docs-builder/create-css-custom-props-doc.mjs +0 -157
- package/src/web-components/TODO json-table/docs-builder/src/custom-props-end.md +0 -6
- package/src/web-components/TODO json-table/docs-builder/src/custom-props-start.md +0 -29
- package/src/web-components/TODO json-table/src/TODO.md +0 -1
- package/src/web-components/TODO json-table/src/__json-table-react/build-page-array.js +0 -73
- package/src/web-components/TODO json-table/src/__json-table-react/columns-data-types.js +0 -73
- package/src/web-components/TODO json-table/src/__json-table-react/defaults.js +0 -50
- package/src/web-components/TODO json-table/src/__json-table-react/download-excel.js +0 -156
- package/src/web-components/TODO json-table/src/__json-table-react/set-className.js +0 -19
- package/src/web-components/TODO json-table/src/__json-table-react/set-download-filename.js +0 -17
- package/src/web-components/TODO json-table/src/__json-table-react/table-to-csv.js +0 -48
- package/src/web-components/TODO json-table/src/css/custom-media.css +0 -16
- package/src/web-components/TODO json-table/src/css/icons.module.css +0 -22
- package/src/web-components/TODO json-table/src/css/info-section.module.css +0 -78
- package/src/web-components/TODO json-table/src/css/main-builder.module.css +0 -6
- package/src/web-components/TODO json-table/src/css/table.module.css +0 -172
- package/src/web-components/TODO json-table/src/css/utility.module.css +0 -9
- package/src/web-components/TODO json-table/src/icons/arrow-down-bold.svg +0 -1
- package/src/web-components/TODO json-table/src/icons/false.svg +0 -1
- package/src/web-components/TODO json-table/src/icons/true.svg +0 -1
- package/src/web-components/TODO json-table/src/index.js +0 -125
- package/src/web-components/TODO json-table/src/js/default-columns-data-types.js +0 -172
- package/src/web-components/TODO json-table/src/js/defaults.js +0 -510
- package/src/web-components/TODO json-table/src/js/get-ajax-data.js +0 -72
- package/src/web-components/TODO json-table/src/js/info-section.js +0 -39
- package/src/web-components/TODO json-table/src/js/init-ajax-table.js +0 -30
- package/src/web-components/TODO json-table/src/js/init-static-table.js +0 -18
- package/src/web-components/TODO json-table/src/js/main-builder.js +0 -87
- package/src/web-components/TODO json-table/src/js/parse-data-row.js +0 -123
- package/src/web-components/TODO json-table/src/js/parse-params.js +0 -118
- package/src/web-components/TODO json-table/src/js/set-search-listener.js +0 -62
- package/src/web-components/TODO json-table/src/js/set-sort-listeners.js +0 -115
- package/src/web-components/TODO json-table/src/js/static-data-sorting.js +0 -23
- package/src/web-components/TODO json-table/src/js/table-builder.js +0 -45
- package/src/web-components/TODO json-table/src/js/table-row.js +0 -43
- package/src/web-components/TODO json-table/src/js/table-tfoot.js +0 -9
- package/src/web-components/TODO json-table/src/js/table-thead.js +0 -91
- package/src/web-components/TODO json-table/src/js/update-info.js +0 -42
- 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
|