@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,456 +0,0 @@
1
- import classnames from 'classnames';
2
- import { useState, useEffect, useRef, Fragment } from 'react';
3
- import PropTypes from 'prop-types';
4
- // import styles from '../charts-base.module.scss';
5
- import { nanoid } from 'nanoid';
6
-
7
-
8
- /*
9
- InfoBox versione su grafico linee
10
-
11
-
12
-
13
- function InfoBox({
14
- year = new Date().getFullYear(),
15
- infoBoxItems = [],
16
- infoBoxPositionRefs = [],
17
- cfg = {},
18
- mode = 'week',
19
- data,
20
- week,
21
- month,
22
- dataGroupEl,
23
- skipWeek0
24
- }) {
25
- const [content, setContent] = useState(null),
26
- infoBoxWrapperRef = useRef();
27
-
28
-
29
- const weekMode = useMemo(() => {
30
- return mode === 'week';
31
- }, [mode]),
32
- infoBoxWidth = useMemo(() => {
33
- return weekMode? 300 : 240;
34
- }, [weekMode]);
35
-
36
- useEffect(() => {
37
-
38
- // =>> getDatesOfWeek
39
- const getDatesOfWeek = week => {
40
- if(week) {
41
-
42
- let startDay, endDay;
43
- const daysToFirstMonday = cfg.jan1DayOfTheWeek === 1? 0 : cfg.jan1DayOfTheWeek === 0? 1 : 8 - cfg.jan1DayOfTheWeek;
44
- // primo lunedì dell'anno
45
- const firstMonday = daysToFirstMonday === 0 ? cfg.jan1 : new Date(+cfg.jan1 + daysToFirstMonday * 86400e3);
46
-
47
- const dec31 = new Date(year, 11, 31),
48
- lastDayOfLastWeek = new Date(+firstMonday + ((week - 1) * 7 * 86400e3) + (86400e3 * 6) );
49
-
50
- // forza il primo giorno della prima settimana al 1 gennaio anche se non è lunedì
51
- if(week === 1) {
52
- startDay = cfg.jan1;
53
- } else {
54
- startDay = new Date(firstMonday.valueOf());
55
- startDay = new Date(startDay.setDate(startDay.getDate() + 7 * (week - 2)));
56
- }
57
-
58
- // prima settimana con più di 4 gg, viene considerata a se stante
59
- endDay = new Date(startDay.valueOf());
60
- if(week === 1 && cfg.jan1DayOfTheWeek < 5) {
61
- endDay = new Date(endDay.setDate(endDay.getDate() + 7 - cfg.jan1DayOfTheWeek));
62
- } else {
63
- endDay = new Date(endDay.setDate(endDay.getDate() + 6));
64
- }
65
-
66
- // forza l'ultmo giorno dell'ultima settimana al 31 dic anche se non è domenica
67
- // e si tratta dell'ultima settimana
68
- if(endDay.getFullYear() > year || week === cfg.weeks) {
69
- endDay = dec31;
70
- }
71
-
72
-
73
- // nel caso in cui la settimana sia la prima o l'ultima,viene restituito un terzo elemento
74
- // a indicare, rispettivamente, se 1 gennaio corrisponde all'inizio reale della 1a settimana
75
- // o se 31 dic corrisponde all'ultimo giorno dell'ultima settimana
76
-
77
- if(week === 1) {
78
- return [startDay, endDay, +firstMonday === +cfg.jan1];
79
-
80
- } else if (week === cfg.weeks) {
81
- return [startDay, endDay, +dec31 === +lastDayOfLastWeek];
82
-
83
- } else {
84
- return [startDay, endDay];
85
- }
86
-
87
- } else {
88
- return null;
89
- }
90
-
91
-
92
- };
93
-
94
- if(data) {
95
-
96
- const weekDates = getDatesOfWeek(data.w),
97
- dateToLocalOptions = {
98
- month: 'long',
99
- day: 'numeric'
100
- },
101
- setDateRangeText = () => {
102
- if(data.w === 0) {
103
- return null;
104
-
105
- } else {
106
- return <>
107
- <span className="text-nowrap">
108
- {weekDates[0].toLocaleString('it-IT',
109
- weekDates[0].getMonth() !== weekDates[1].getMonth()? dateToLocalOptions
110
- : {day: 'numeric'}
111
- )}
112
- </span>
113
- {' \u2013 '}
114
- <span className="text-nowrap">{weekDates[1].toLocaleString('it-IT', dateToLocalOptions)}</span>
115
- </>;
116
- }
117
- };
118
-
119
- //weeks:
120
- //props.data : {
121
- // "w": 0, <- settimana, 0 = anno prec.
122
- // "s": 519096, <- budget standard
123
- // "p": 812136, <- budget positivo
124
- // "n": 43242, <- budget negativo
125
- // "c": 674824 <- budget consolidato (null se non presente)
126
- // "cp": 612345 <- budget consolidato anno precedente
127
- // }
128
-
129
-
130
-
131
- setContent(<>
132
-
133
- // {weekMode?
134
- // <>
135
- // <div className={styles.infoBoxTitle}>{props.data.w? <>Settimana {props.data.w}</> : <>Anno precedente</>}</div>
136
- // <div className={styles.infoBoxDescr}>{setDateRangeText()}</div>
137
- // </>
138
- // :
139
- // <>{mesi[props.month]}</>
140
- // }
141
-
142
- <div className={styles.infoBoxTitle}>{data.w? <>Settimana {data.w}</> : <>Anno precedente</>}</div>
143
- <div className={styles.infoBoxDescr}>{setDateRangeText()}</div>
144
-
145
- <table className={styles.infoBoxTable}>
146
- <tbody>
147
- {infoBoxItems.map((item, idx) => {
148
-
149
- return <tr key={nanoid()}>
150
- <th scope="row" className={item.tdClassName}>
151
- {item.flagClassName && <span className={classnames(styles.infoBoxFlag, item.flagClassName)} />}
152
- {item.label}
153
- </th>
154
- <td className={item.tdClassName}>{data[item.key] != null?
155
- <span className="euro">{data[item.key].toLocaleString('it-IT')}</span>
156
- : '\u2014'}
157
- </td>
158
- // =>> infobox: incremento
159
- {(data[item.key] != null && idx === 0)?
160
- <td className='pl-2 align-baseline' rowSpan={Object.keys(infoBoxItems).length}>
161
- {formatDelta(data.c, data.cp)}
162
- </td>
163
- : ''
164
- }
165
- </tr>;
166
- })}
167
- </tbody>
168
- </table>
169
-
170
-
171
- // weekDates[3] (true/false) è presente solo per la prima e l'ultima settimana
172
- {weekMode && <>
173
- {data.w === 1 && !weekDates[3] &&
174
- <div className={styles.infoBoxNote}>
175
- NB: sono inclusi anche i giorni precedenti al primo lunedì dell’anno.
176
- </div>
177
- }
178
- {data.w === cfg.weeks && !weekDates[3] &&
179
- <div className={styles.infoBoxNote}>
180
- NB: sono inclusi anche i giorni successivi alla domenica dell’ultima settimana.
181
- </div>
182
- }
183
- </>}
184
-
185
- </>);
186
- }
187
- }, [cfg.jan1, cfg.jan1DayOfTheWeek, cfg.weeks, data, infoBoxItems, month, year, weekMode]);
188
-
189
- useEffect(() => {
190
- if(dataGroupEl && (week != null || month != null)) {
191
-
192
- const infoBoxMargin = 8; // distanza dalla linea della griglia della settimana in esame
193
-
194
- // lato in cui posizionare InfoBox rispetto all'asse della settimana
195
- let side;
196
- if(weekMode) {
197
- side = week > cfg.weeks/2? 'left' : 'right';
198
- } else {
199
- side = month > 5? 'left' : 'right';
200
- }
201
-
202
- dataGroupEl?.classList.add(styles.dataGroupOn);
203
- dataGroupEl?.closest(`.${styles.chart}`)?.classList.add(styles.infoBoxWrapperOn);
204
-
205
- infoBoxWrapperRef.current.setAttribute('transform-origin',
206
- `${side === 'left'? 'right' : 'left'} top`
207
- );
208
-
209
- infoBoxWrapperRef.current.dataset.side = side;
210
- const infoBoxSize = infoBoxWrapperRef.current.querySelector(':scope > div').getBoundingClientRect();
211
- // infoBoxWrapperRef.current.setAttribute('height', infoBoxSize.height);
212
- // infoBoxWrapperRef.current.setAttribute('width', infoBoxSize.width);
213
-
214
- // let puntoRif;
215
- // for(const ref of infoBoxPositionRefs) {
216
- // puntoRif = dataGroupEl.querySelector(`.${styles[ref]}`);
217
- // if(puntoRif) {
218
- // break;
219
- // }
220
- // }
221
-
222
- // let y = puntoRif? +puntoRif.getAttribute('cy') : Infinity;
223
- // y = Math.min(y, cfg.chart_area.top + cfg.chart_area.height - infoBoxSize.height - 5);
224
-
225
- // posizionamento vicino alle asse X
226
- let y = cfg.chart_area.top + cfg.chart_area.height - infoBoxSize.height - 5;
227
- infoBoxWrapperRef.current.setAttribute('y', y);
228
-
229
- let transformX = weekMode?
230
- cfg.chart_area.left + ((week - (skipWeek0? 1 : 0)) * cfg.xStep) +
231
- (side === 'left'? -infoBoxWidth - infoBoxMargin : infoBoxMargin)
232
- :
233
- cfg.chart_area.left + ((month - 1) * cfg.xStep) +
234
- (side === 'left'? -infoBoxWidth - infoBoxMargin: infoBoxMargin) +
235
- cfg.xStep / 2;
236
-
237
- infoBoxWrapperRef.current.setAttribute('transform', `translate(${transformX} 0)`);
238
-
239
-
240
- }
241
-
242
- }, [infoBoxWidth, cfg, dataGroupEl, infoBoxPositionRefs, month, skipWeek0, week, weekMode]);
243
-
244
-
245
- return (
246
- <foreignObject className={styles.infoBoxWrapper}
247
- x="0" y="-1000"
248
- width={infoBoxWidth}
249
- height={300}
250
- ref={infoBoxWrapperRef}
251
- >
252
- <div xmlns="http://www.w3.org/1999/xhtml">
253
- {content}
254
- </div>
255
- // <div xmlns="http://www.w3.org/1999/xhtml" style={{
256
- // position: 'absolute',
257
- // top: 0, left: 0,
258
- // width: '100%', height: '100%',
259
- // backgroundColor: 'rgba(255,0,0, .2)'
260
- // }}></div>
261
- </foreignObject>
262
- );
263
-
264
- InfoBox.propTypes = {
265
- data : PropTypes.object,
266
- week : PropTypes.number,
267
- month : PropTypes.number,
268
- dataGroupEl : PropTypes.any,
269
- year : PropTypes.number,
270
- cfg : PropTypes.object,
271
- mode : PropTypes.oneOf(['month', 'week']),
272
-
273
- // array di classi di elementi all'interno di dataGroupEl dai quali ricavare
274
- // la coordinata y per il posizionamento di InfoBox
275
- // almeno uno deve essere sicuramente presente
276
- infoBoxPositionRefs : PropTypes.arrayOf(PropTypes.string),
277
-
278
- // elementi, etichette, classe td e classe indicatore colorato per la costruzione dell'infoBox
279
- // nell'ordine in cui verranno mostrate
280
- infoBoxItems : PropTypes.arrayOf(
281
- PropTypes.shape({
282
- key : PropTypes.string,
283
- label : PropTypes.string,
284
- tdClassName : PropTypes.string,
285
- flagClassName : PropTypes.string,
286
- dataPointClassName : PropTypes.string
287
- })
288
- )
289
-
290
- };
291
-
292
- */
293
-
294
-
295
- function InfoBox({
296
- data,
297
- dataGroupEl,
298
- cfg,
299
- // mode, // da eliminare
300
- infoBoxWidth,
301
- elementsCount,
302
- styles,
303
- title,
304
- year = new Date().getFullYear(),
305
- infoBoxItems = [],
306
- // infoBoxPositionRefs = [],
307
- extraRows = null
308
- }) {
309
- const [content, setContent] = useState(null),
310
- infoBoxWrapperRef = useRef();
311
-
312
- useEffect(() => {
313
-
314
- if(data) {
315
-
316
-
317
- setContent(<>
318
-
319
- <div className={styles.infoBoxTitle}>{title}</div>
320
-
321
- <table className={styles.infoBoxTable}>
322
- <tbody>
323
- {infoBoxItems.map(item => {
324
- return <tr key={nanoid()}>
325
- <th scope="row" className={classnames(item.tdClassName)}>
326
- {item.flagClassName && <span className={classnames(styles.infoBoxFlag, item.flagClassName)} />}
327
- {item.label}
328
- </th>
329
- <td className={classnames(item.tdClassName)}>{data[item.key] != null?
330
- <span className="euro">{data[item.key].toLocaleString('it-IT')}</span>
331
- :
332
- '—'}
333
- </td>
334
- </tr>;
335
- })}
336
- {extraRows.map(row => {
337
- return <tr key={nanoid()}>
338
- <th scope="row">{row.label}</th>
339
- <td>{row.value? row.value : '—'} </td>
340
- </tr>;
341
- })}
342
- </tbody>
343
- </table>
344
-
345
- </>);
346
- }
347
- }, [cfg, data, extraRows, infoBoxItems, styles, title, year]);
348
-
349
- useEffect(() => {
350
- if(dataGroupEl) {
351
-
352
- const infoBoxMargin = 8; // distanza dalla linea della griglia della settimana in esame
353
-
354
- // lato in cui posizionare InfoBox rispetto all'asse della settimana
355
- const xKey = dataGroupEl.dataset.xKey,
356
- side = xKey > Math.floor(elementsCount/2)-1? 'left' : 'right';
357
-
358
-
359
- dataGroupEl.classList.add(styles.dataGroupOn);
360
- dataGroupEl.closest(`.${styles.chart}`).classList.add(styles.infoBoxWrapperOn);
361
-
362
- infoBoxWrapperRef.current.setAttribute('transform-origin',
363
- `${side === 'left'? 'right' : 'left'} top`
364
- );
365
-
366
- infoBoxWrapperRef.current.dataset.side = side;
367
- // const infoBoxSize = infoBoxWrapperRef.current.querySelector(':scope > div').getBoundingClientRect();
368
- // infoBoxWrapperRef.current.setAttribute('height', infoBoxSize.height);
369
- // infoBoxWrapperRef.current.setAttribute('width', infoBoxSize.width);
370
-
371
- // let puntoRif;
372
- // for(const ref of infoBoxPositionRefs) {
373
- // puntoRif = dataGroupEl.querySelector(`.${styles[ref]}`);
374
- // if(puntoRif) {
375
- // break;
376
- // }
377
- // }
378
-
379
- // let y = puntoRif? +puntoRif.getAttribute('cy') : Infinity;
380
- // y = Math.min(y, cfg.chart_area.top + cfg.chart_area.height - infoBoxSize.height - 5);
381
-
382
- // posizionamento vicino alle asse X
383
- // let y = cfg.chart_area.top + cfg.chart_area.height - infoBoxSize.height - 5;
384
- // infoBoxWrapperRef.current.setAttribute('y', y);
385
-
386
- // il metodo precedente provoca all'inizio un posizionamento errato sull'asse y
387
- infoBoxWrapperRef.current.setAttribute('y', cfg.chart_area.top +10);
388
-
389
- let transformX = cfg.chart_area.left + (xKey * cfg.xStep) +
390
- (side === 'left'? -infoBoxWidth - infoBoxMargin - cfg.xStep * .8 : infoBoxMargin);
391
-
392
- infoBoxWrapperRef.current.setAttribute('transform', `translate(${transformX} 0)`);
393
-
394
- }
395
-
396
- }, [infoBoxWidth, cfg, dataGroupEl, styles, elementsCount]);
397
-
398
-
399
- return (
400
- <foreignObject className={styles.infoBoxWrapper}
401
- x="0" y="-1000"
402
- width={infoBoxWidth}
403
- height={300}
404
- ref={infoBoxWrapperRef}
405
- >
406
- <div xmlns="http://www.w3.org/1999/xhtml">
407
- {content}
408
- </div>
409
- {/* <div xmlns="http://www.w3.org/1999/xhtml" style={{
410
- position: 'absolute',
411
- top: 0, left: 0,
412
- width: '100%', height: '100%',
413
- backgroundColor: 'rgba(255,0,0, .2)'
414
- }}></div> */}
415
- </foreignObject>
416
- );
417
- }
418
-
419
- InfoBox.propTypes = {
420
- data : PropTypes.object,
421
- dataGroupEl : PropTypes.any,
422
- year : PropTypes.number,
423
- cfg : PropTypes.object,
424
-
425
- // da eliminare
426
- // mode : PropTypes.string,
427
-
428
- // array di classi di elementi all'interno di dataGroupEl dai quali ricavare
429
- // la coordinata y per il posizionamento di InfoBox
430
- // almeno uno deve essere sicuramente presente
431
- // infoBoxPositionRefs : PropTypes.arrayOf(PropTypes.string),
432
-
433
- // elementi, etichette, classe td e classe indicatore colorato per la costruzione dell'infoBox
434
- // nell'ordine in cui verranno mostrate
435
- infoBoxItems : PropTypes.arrayOf(
436
- PropTypes.shape({
437
- key : PropTypes.string,
438
- label : PropTypes.string,
439
- tdClassName : PropTypes.oneOfType([PropTypes.array, PropTypes.string]),
440
- flagClassName : PropTypes.oneOfType([PropTypes.array, PropTypes.string]),
441
- })
442
- ),
443
-
444
- // larghezza da assegnare all'elemento foreignObject
445
- infoBoxWidth: PropTypes.number,
446
-
447
- // numero di elementi sui quali mostrare infoBox (per la posizione dx o sx)
448
- elementsCount: PropTypes.number,
449
-
450
- /** righe extra da aggiungere alla infobox */
451
- extraRows: PropTypes.array
452
-
453
- };
454
-
455
-
456
- export default InfoBox;
@@ -1,53 +0,0 @@
1
- nelle funzioni dei singoli grafici aggiungere `const chartInstance = this;` e sostituire i `this` riferiti ad `adaChart` con `chartInstance`
2
-
3
-
4
- ****
5
-
6
- Tutte le funzioni condivise, ad eccezione di `createSvgCanvas`, sono ora standalone e vanno importate dove necessario.
7
-
8
- `chartUtils`, `textToSvgPath` e `parseStdAxisOpts` vanno importate e utilizzate direttamente, rimuovendo `this.` o `this.utils.` nel caso di quelle in `chart-utils.js`
9
-
10
- * `import { parseContainer, truncateDecimal, toRadians, polarToCartesian, classnames, classnamesNull, calcArcCoords, calcAttrD, getElementFromContainer } from '../chart-utils.js';`
11
- * `import { textToSvgPath } from '../svg-text-to-path.js'`;
12
- * `import { parseStdAxisOpts } from '../parse-std-axis-opts.js'`;
13
-
14
-
15
- `cartesianAxis`, `createTextEl`, `legenda`, vanno invocate passando come primo parametro l'istanza della classe, esempio:
16
-
17
- * `import { cartesianAxis } from '../cartesian-axis.js';`
18
- * `import { createTextEl } from '../create-text-element.js';`
19
- * `import { legenda } from '../legenda.js';`
20
-
21
- ```javascript
22
- const titleEl = await createTextEl (chartInstance, {
23
- text: yAxisTitle,
24
- textFill: yAxisTitleAttrs.fill?? '#000',
25
- fontAttr: yAxisTitleAttrs,
26
- fontFilePath: yAxisTitleFontFilePath,
27
- parentElement: titleGroup
28
- });
29
- ```
30
-
31
- ****
32
-
33
- `createTextEl` non restituisce più bbox ed elemento ma solo quest'ultimo.
34
-
35
- ```javascript
36
- // Cambiare
37
-
38
- const [labelBbox, labelEl] = await chartInstance.createTextEl({...})
39
-
40
- // in
41
-
42
- const labelEl = await createTextEl(chartInstance, {...}),
43
- labelBbox = labelEl.bbox()
44
- ```
45
-
46
- ****
47
-
48
- L'argomento di parseContainer è ora un oggetto (`function parseContainer({container = null, width = null, height = null, emptyContainer = true}) {...}`), la funzione va quindi invocata specificando i parametri
49
-
50
- parseContainer ora non svuota più l'elemento
51
- ****
52
-
53
- gli argomenti di polarToCartesian non utilizzano più un oggetto per x e y
@@ -1 +0,0 @@
1
- Da fare
@@ -1,39 +0,0 @@
1
- decidere se includere anche il grafico settimanale o no
2
-
3
-
4
- documentare modalità di estensione della classe
5
-
6
- https://claude.ai/share/551e5453-02fd-4a6c-8147-1197d6908a8d
7
-
8
- ```javascript
9
- // my-project/charts/index.js
10
- import { AdaCharts, barsChart, goalChart } from 'ada-charts'; // re-export originali
11
- import { myCustomBar } from './my-custom-bar.js';
12
- import { myTimeline } from './my-timeline.js';
13
-
14
- // wrapper per i grafici del progetto (stesso pattern)
15
- export const myCustomBarChart = (chartInstance, params) =>
16
- myCustomBar.call(chartInstance, params);
17
-
18
- export const myTimelineChart = (chartInstance, params) =>
19
- myTimeline.call(chartInstance, params);
20
-
21
- // re-esporta tutto dalla libreria base
22
- export { AdaCharts, barsChart, goalChart };
23
- ```
24
-
25
- custom chart:
26
-
27
- ```javascript
28
- // my-project/charts/my-custom-bar.js
29
- export function myCustomBar(params) {
30
- // `this` è l'istanza AdaCharts
31
- const { data, color = '#333' } = params;
32
-
33
- // usa i metodi/proprietà di AdaCharts normalmente
34
- const svg = this.createSVG(); // o come AdaCharts espone il canvas
35
-
36
- // logica del grafico...
37
- return svg;
38
- }
39
- ```
@@ -1,66 +0,0 @@
1
- // parametri di configurazione
2
-
3
- export default function () {
4
-
5
- const cfg = {
6
-
7
- asseY_steps : 4, // suddivisioni asse y
8
- legenda : {
9
- h : 25, // altezza spazio legenda
10
- lines_width : 20, // larghezza righe legenda
11
- circles_radius : 8, // raggio legenda aree
12
- text_gap : 4, // spazio tra il simbolo e il testo
13
- text_dy : 4,
14
- elements_gap : 20 // spazio tra gli elementi della legenda
15
- },
16
-
17
- eti_asseY_width : 60, // spazio etichette asse y
18
- eti_asseX_height : 30, // spazio etichette asse x (grafico settimanale)
19
- padding : 10, // spazio extra attorno al bordo
20
-
21
- // altezza o larghezza ticks (secondo l'orientamento)
22
- ticks : 5,
23
-
24
- // spazio tra le barre dello stesso gruppo negli istogrammi
25
- bar_gap : 3,
26
-
27
- // margine dx e sx tra ogni gruppo di barre dalla sezione
28
- bar_margin : 6,
29
-
30
- // altezza aggiuntiva delle aree di evidenziazione dei mesi (solo g. settimanale)
31
- months_bg_extra_height : 30
32
- };
33
-
34
- return cfg;
35
- }
36
-
37
-
38
- // =>> chart area
39
- // coordinate del rettangolo interno all'svg entro cui viene disegnato il grafico
40
- // i lati sx e inferiore corrispondono agli assi
41
- // la variabile cfg.chart_area contiene le distanze dal bordo dei 4 lati del rettangolo
42
- // e le dimensioni dei lati
43
- export function setChartArea(cfg, svgWidth, svgHeight) {
44
- return {
45
- top : cfg.legenda.h + cfg.padding,
46
- right : svgWidth - cfg.padding,
47
- bottom : svgHeight - cfg.eti_asseX_height - cfg.padding,
48
- left : cfg.eti_asseY_width + cfg.padding,
49
- width : svgWidth - (cfg.padding * 2) - cfg.eti_asseY_width,
50
- height : svgHeight - (cfg.padding * 2) - cfg.legenda.h - cfg.eti_asseX_height
51
- };
52
- }
53
-
54
- // console.log(cfg.chart_area);
55
-
56
- // =>> conversione valori in coordinate relative al grafico
57
- export function valueToYCoord(value, cfg) {
58
- // la coordinata y è ricavata dalla proporzione con il valore massimo e altezza del grafico
59
- // => cfg.max_value : cfg.chart_area.height = value : y
60
- // arrotondata a 4 cifre decimali
61
-
62
- if(value == null) {
63
- return 0;
64
- }
65
- return Math.round((cfg.chart_area.top + cfg.chart_area.height - ((value * cfg.chart_area.height) / cfg.max_value)) * 1e4) / 1e4;
66
- }