@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,83 +0,0 @@
1
- import { isFunction } from './utilities';
2
- import * as iconStyles from '../css/icons.module.css';
3
-
4
- export function tableRow(row, idx, target = 'null') {
5
-
6
- const tr = document.createElement('tr');
7
- if (this.params.addRowIndex && idx) {
8
- tr.dataset.id = idx;
9
- }
10
-
11
- this.params.columns.forEach((col, i) => {
12
- let raw_content, content;
13
-
14
- const datatypeObj = this.params.dataTypes[col.dataType]?? {};
15
-
16
- if(col.parse && isFunction(col.parse)) {
17
- raw_content = col.parse(row);
18
- } else {
19
- raw_content = row[col.key];
20
- }
21
-
22
- // if target is 'tfoot', columns with `tfoot: false` in their column definitions are not rendered
23
- if(target === 'tfoot' && !col.tfoot) {
24
- content = '';
25
-
26
- } else if(raw_content === 0 && this.params.useZeroAltChar) {
27
- content = this.params.zeroAltChar;
28
-
29
- // All `render` functions are invoked with the `raw_content` value and the global params object as arguments
30
- } else if(col.render && isFunction(col.render)) {
31
- content = col.render(raw_content, this.params);
32
-
33
- } else if(col.dataType && isFunction(datatypeObj?.render)) {
34
- content = datatypeObj.render(raw_content, this.params);
35
-
36
- } else if(raw_content == null) {
37
- content = '';
38
-
39
- } else {
40
- content = raw_content;
41
- }
42
-
43
- const isTh = col.rowHeading && i === 0,
44
- CellTag = isTh? 'th' : 'td'
45
- ;
46
- let classnames = this.setColumClassname(col, false);
47
- classnames = classnames? [classnames] : [];
48
-
49
-
50
- // adding different classes for true and false boolean icons
51
- // NB: main icon class is added in setColumClassname() and is defined in the `default-columns-data-types.js` script
52
- if(col.dataType === 'bool') {
53
-
54
- if(this.params.boolValuesClassName !== null) { // custom class for icons
55
- classnames = [
56
- ...classnames,
57
- ...(this.params.boolTrueClassName && raw_content === true? [this.params.boolTrueClassName] : []),
58
- ...(this.params.boolFalseClassName && raw_content === false? [this.params.boolFalseClassName] : []),
59
- ];
60
- } else {
61
- classnames.push(raw_content === true? iconStyles.true : (raw_content === false? iconStyles.false : ''));
62
- }
63
- }
64
-
65
- tr.insertAdjacentHTML('beforeend',
66
- `<${CellTag}` +
67
- (isTh? ' scope="row"' : '') +
68
- (classnames.length? ` class="${classnames.join(' ')}"` : '') +
69
-
70
- // dataset values: // TODO necessari? possibile accedere ai dati in altro modo?
71
- // TODO sort e search solo se abilitati
72
- // TODO custom sort e search data su col, deve prevalere sulle funzioni di default
73
- ` data-key="${col.key}"` +
74
- ` data-search="${datatypeObj.searchValue? datatypeObj.searchValue(raw_content, this.params) : raw_content}"` +
75
- ` data-sort="${datatypeObj.sortValue? datatypeObj.sortValue(raw_content, this.params) : raw_content}"` +
76
- ` data-type="${col.dataType}"` +
77
- `>${content}</${CellTag}>`
78
- );
79
- });
80
-
81
- return tr;
82
-
83
- }
@@ -1,5 +0,0 @@
1
- export function isFunction (item) { return item && typeof item === 'function';}
2
-
3
- export function titleCase(str) {
4
- return str.at(0).toUpperCase() + str.substring(1);
5
- }
@@ -1,4 +0,0 @@
1
- import StaticTable from './components/StaticTable';
2
- import JsonTable from './components/JsonTable';
3
-
4
- export {StaticTable, JsonTable};
@@ -1,73 +0,0 @@
1
- export function calcTotPages(records, pageRows) {
2
- return Math.ceil(records / pageRows);
3
- }
4
-
5
- export default function (currentPage, pageRows, records, showed_pages = 11) {
6
-
7
-
8
- const pages = calcTotPages(records, pageRows);
9
-
10
- let pages_array = [];
11
-
12
- if (pages <= showed_pages) {
13
- pages_array = [...Array(pages).fill().map((_, idx) => idx + 1)];
14
-
15
- } else {
16
-
17
-
18
- let side_pages = 2, // pagine a dx/sx della pagina corrente
19
-
20
- step_min = Math.max(1, currentPage - side_pages),
21
- step_max = Math.min(pages, currentPage + side_pages),
22
-
23
- // spazi aggiuntibi a dx/sx da lasciare liberi per '1', '...', <pages>
24
- slots_left = step_min > 2? 2 : step_min - 1,
25
- slots_right = step_max < pages - 1? 2 : pages - step_max;
26
-
27
- // console.log(step_min, step_max, slots_left, slots_right);
28
- // console.log(step_max - step_min + 1 + slots_left + slots_right);
29
-
30
- // fix per avere sempre il numero prefissato di pagine
31
- while (step_max - step_min + 1 + slots_left + slots_right < showed_pages) {
32
- step_min = Math.max(1, step_min - 1);
33
- step_max = Math.min(pages, step_max + 1);
34
-
35
- }
36
-
37
- // console.log(step_max - step_min + 1 + slots_left + slots_right);
38
-
39
- // if(step_max - step_min + 1 + slots_left + slots_right > showed_pages) {
40
- // step_min++;
41
- // }
42
-
43
- pages_array = [
44
- ...Array(step_max - step_min + 1)
45
- .fill()
46
- .map((_, idx) => step_min + idx)
47
- ];
48
-
49
- // console.log(pages_array.slice(0));
50
-
51
- if(pages_array[0] === 2) {
52
- pages_array.unshift(1);
53
-
54
- } else if (pages_array[0] === 3) {
55
- pages_array.unshift(1, 2);
56
-
57
- } else if (pages_array[0] > 3) {
58
- pages_array.unshift(1, null);
59
- }
60
-
61
- if(pages_array.at(-1) === pages - 1) {
62
- pages_array.push(pages);
63
-
64
- } else if(pages_array.at(-1) === pages - 2) {
65
- pages_array.push(pages -1, pages);
66
-
67
- } else if(pages_array.at(-1) < pages - 2) {
68
- pages_array.push(null, pages);
69
- }
70
- }
71
-
72
- return pages_array;
73
- }
@@ -1,73 +0,0 @@
1
- // formattazioni std per i vari tipi di dati
2
- // la classe std viene sovrascritta se presente come parametro nella colonna
3
- import {defaults} from './defaults';
4
-
5
- export const data_types = {
6
- // string: {} // default type
7
- date: {
8
- className: defaults.rightAlignClassName,
9
- render: d => (new Date(d)).toLocaleString('it-IT', {
10
- year : 'numeric', // '2-digit'
11
- month : '2-digit', // 'short'
12
- day : '2-digit' // 'numeric
13
- })
14
- },
15
- // symfony date field
16
- sfDate: {
17
- className: defaults.rightAlignClassName,
18
- render: d => (new Date(d.date)).toLocaleString('it-IT', {
19
- year : 'numeric', // '2-digit'
20
- month : '2-digit', // 'short'
21
- day : '2-digit' // 'numeric
22
- })
23
- },
24
- datetime: {
25
- className: defaults.rightAlignClassName,
26
- render: d => {
27
- const date = new Date(d);
28
- return date.toLocaleString('it-IT', {
29
- year : 'numeric', // '2-digit'
30
- month : '2-digit', // 'short'
31
- day : '2-digit', // 'numeric
32
- }) +
33
- '\u00A0' +
34
- '<small>' +
35
- date.toLocaleString('it-IT', {
36
- hour12: false,
37
- hour:'2-digit',
38
- minute:'2-digit'
39
- }) +
40
- '</small>';
41
- }
42
- },
43
- num: {
44
- className: defaults.rightAlignClassName,
45
- render: d => (d? +d : 0).toLocaleString('it-IT', {
46
- maximumFractionDigits : 2
47
- })
48
- },
49
- perc: {
50
- className: defaults.rightAlignClassName,
51
- formatClassName : defaults.percClassName,
52
- render: d => (d? +d : 0).toLocaleString('it-IT', {
53
- maximumFractionDigits : 2,
54
- minimumFractionDigits : 2,
55
- })
56
- },
57
- percDecimal: {
58
- className: defaults.rightAlignClassName,
59
- formatClassName : defaults.percClassName,
60
- render: d => ((d? +d : 0) * 100).toLocaleString('it-IT', {
61
- maximumFractionDigits : 2,
62
- minimumFractionDigits : 2,
63
- })
64
- },
65
- euro: {
66
- className: defaults.rightAlignClassName,
67
- formatClassName : defaults.euroClassName,
68
- render: d => (d? +d : 0).toLocaleString('it-IT', {
69
- minimumFractionDigits : 2,
70
- maximumFractionDigits : 2
71
- })
72
- }
73
- };
@@ -1,50 +0,0 @@
1
- /**
2
- * Parametri di configurazione
3
- * @property {array} columns - colonne della tabella
4
- * @property {array} data - array dei dati
5
- * @property {array} footerData - array dei dati da renderizzare nell'elemento <tfoot>
6
- * @author Massimo Cassandro
7
- */
8
-
9
-
10
- export const defaults = {
11
- columns : [], // definizione delle colonne
12
- ajax : true, // se true usa `ajaxUrl` e ignora `data`
13
- ajaxUrl : null, // url ajax
14
- data : [], // dati (per versione statica)
15
- footerData : [],
16
- caption : null,
17
- addRowIndex : false, // se true aggiunge un attributo data al tr con l'indice del record json
18
-
19
- tableClassName : 'table',
20
- wrapperClassName : 'table-responsive',
21
- centerAlignClassName : 'text-center',
22
- rightAlignClassName : 'text-right',
23
- percClassName : 'perc',
24
- euroClassName : 'euro',
25
- showZero : false,
26
- zeroValuesChar : '\u2014',
27
- showDownloadBtn : false,
28
- downloadBtnLabel : 'Download',
29
- downloadBtnClassName : 'btn btn-outline-secondary btn-sm',
30
- separateDownloadBtn : false, // se true viene restituito un array con tabella e pulsante download separati
31
- downloadFilename : 'download',
32
- downloadFormat : 'excel', // 'excel' o 'csv'
33
- trCallback : null,
34
-
35
- // array di eventuali fogli da aggiungere all'excel nel download
36
- // ogni elemento dell'array è un oggetto con
37
- // name - nome dela foglio
38
- // data - array già formattato da trasformare in excel
39
- extraDownloadSheets : null
40
- };
41
-
42
- export const columns_default = {
43
- title : null, // titolo colonna (testo th)
44
- key : null, // chiave oggetto del json
45
- dataType : null, // tipo dati
46
- className : null, // classe
47
- render : null, // funzione ad hoc per il rendering
48
- parse : null, // funzione ad hoc per elaborare il valore
49
- rowHeading : false // se true, viene creato un elemento th[scope=row] invece di un td
50
- };
@@ -1,156 +0,0 @@
1
- // genera un json ottimizzato per l'esportazione in xslx partendo
2
- // dai dati assegnati alla tabella
3
-
4
- // import {data_types} from './columns-data-types';
5
- import setDownloadFilename from './set-download-filename';
6
- import { utils as utilsXSLX, writeFileXLSX } from 'xlsx/xlsx.mjs';
7
-
8
-
9
- export default function (params) {
10
-
11
-
12
- function excel_sheet(columns, data) {
13
-
14
- let excel_data = [];
15
-
16
- const parser = new DOMParser();
17
- excel_data.push(columns.map(item => {
18
-
19
- const tit = parser.parseFromString(item.title, 'text/html');
20
- return tit.documentElement.textContent;
21
- }));
22
-
23
- // https://www.codegrepper.com/code-examples/javascript/javascript+convert+number+to+letter+of+alphabet
24
- // https://docs.sheetjs.com/docs/csf/features/formulae
25
- // function numToSSColumnLetter(num) {
26
- // let columnLetter = "",
27
- // t;
28
-
29
- // while (num > 0) {
30
- // t = (num - 1) % 26;
31
- // columnLetter = String.fromCharCode(65 + t) + columnLetter;
32
- // num = (num - t) / 26 | 0;
33
- // }
34
- // return columnLetter || undefined;
35
- // }
36
-
37
- let values_lengths = {};
38
-
39
- data.forEach(row => {
40
- let excel_row = [];
41
-
42
- columns.forEach(col => {
43
- let cell_value;
44
- if(col.parse && typeof col.parse === 'function') {
45
- cell_value = col.parse(row);
46
- } else {
47
- cell_value = row[col.key];
48
- }
49
- values_lengths[col.key] = Math.max(values_lengths[col.key]?? 0, String(cell_value).length);
50
-
51
-
52
- // https://docs.sheetjs.com/docs/csf/cell
53
- // https://docs.sheetjs.com/docs/csf/features/#number-formats
54
- // https://support.microsoft.com/it-it/office/codici-del-formato-numerico-5026bbd6-04bc-48cd-bf33-80f18b4eae68
55
- let cell_obj;
56
- switch (col.dataType) {
57
- case 'date':
58
- cell_obj = {
59
- v: cell_value? new Date(cell_value).toISOString() : undefined,
60
- t: 'd',
61
- z: 'd-mmm-yyyy'
62
- };
63
- break;
64
- case 'datetime':
65
- cell_obj = {
66
- v: cell_value? new Date(cell_value).toISOString() : undefined,
67
- t: 'd',
68
- z: 'd-mmm-yyyy hh:mm'
69
- };
70
- break;
71
- case 'num':
72
- cell_obj = {
73
- v: cell_value? +cell_value : 0,
74
- t: 'n',
75
- z: '#,##0.00'
76
- };
77
- break;
78
- case 'perc':
79
- cell_obj = {
80
- v: (cell_value? +cell_value : 0)/100,
81
- t: 'n',
82
- z: '#,##0.00%'
83
- };
84
- break;
85
- case 'percDecimal':
86
- cell_obj = {
87
- v: cell_value? +cell_value : 0,
88
- t: 'n',
89
- z: '#,##0.00%'
90
- };
91
- break;
92
- case 'euro':
93
- cell_obj = {
94
- v: cell_value? +cell_value : 0,
95
- t: 'n',
96
- z: '"€"\ #,##0.00' // eslint-disable-line no-useless-escape
97
- };
98
- break;
99
-
100
- default:
101
- cell_obj = {
102
- v: cell_value,
103
- t: 's'
104
- };
105
- break;
106
- }
107
-
108
- excel_row.push(cell_obj);
109
- });
110
- excel_data.push(excel_row);
111
- });
112
-
113
- let ws = utilsXSLX.aoa_to_sheet(excel_data); // worksheet
114
- // larghezza colonne
115
- ws['!cols'] = [];
116
- columns.forEach(col => {
117
- ws['!cols'].push({ wch: values_lengths[col.key] + 4 });
118
- });
119
-
120
- return ws;
121
-
122
- }
123
-
124
- function setSheetName(str) {
125
- if(str.length > 31) {
126
- return str.substring(0, 27) + '...';
127
- }
128
-
129
- return str;
130
- }
131
-
132
- let wb = utilsXSLX.book_new(); // workbook
133
-
134
- utilsXSLX.book_append_sheet(
135
- wb,
136
- excel_sheet(params.columns, params.data),
137
- setSheetName(params.downloadFilename)
138
- );
139
-
140
- if(params.extraDownloadSheets) {
141
- params.extraDownloadSheets.forEach(item => {
142
-
143
- utilsXSLX.book_append_sheet(
144
- wb,
145
- utilsXSLX.aoa_to_sheet(item.data),
146
- setSheetName(item.name)
147
- );
148
- });
149
- }
150
-
151
- const filename = setDownloadFilename(params.downloadFilename, params.downloadFormat);
152
- writeFileXLSX(wb, filename, {
153
- bookType: 'xlsx',
154
- cellDates: true
155
- });
156
- }
@@ -1,19 +0,0 @@
1
- // Restituisce la stringa delle classi per la colonna data
2
- import {data_types} from './columns-data-types';
3
-
4
- export default function setClassName(col, addFormatClass = true) {
5
- if(col.className) {
6
- return col.className;
7
- }
8
-
9
- if(col.dataType) {
10
-
11
- return [
12
- ...(data_types[col.dataType]?.className? [data_types[col.dataType]?.className] : []),
13
- ...(addFormatClass? [data_types[col.dataType]?.formatClassName] : [])
14
- ].join(' ');
15
-
16
- } else {
17
- return null;
18
- }
19
- }
@@ -1,17 +0,0 @@
1
- import {defaults} from './defaults';
2
- export default function setDownloadFilename(str, format = 'excel') {
3
- const ext = format.toLowerCase() === 'excel'? 'xlsx' : 'csv';
4
- if(str) {
5
- str = str
6
- .replace(/(\.csv)$/, '')
7
- .replace(/(\.xslx?)$/, '')
8
- .replace(/[/:]/g, '-')
9
- .replace(/-+/g, '-')
10
- .replace(/^-/, '')
11
- .replace(/-$/, '');
12
-
13
- return str + ' [' + new Date().toISOString().split('T')[0] + `].${ext}`;
14
- }
15
-
16
- return defaults.downloadFilename;
17
- }
@@ -1,48 +0,0 @@
1
- export default function (tableEl, zeroValuesChar = null) {
2
-
3
- const normalize = str => {
4
- let is_number = !isNaN(parseFloat(str));
5
-
6
- str = str.replace(/;/g, '').replace(/"/g, '""');
7
- if(is_number) {
8
- str = str.replace(/\./g, ''); // sep migliaia
9
- }
10
- return str;
11
- };
12
-
13
- try {
14
- if(!tableEl) {
15
- throw new Error( 'table element not present' );
16
- }
17
-
18
- // table to array
19
- let download_array = [];
20
- tableEl.querySelectorAll('tr').forEach(row => {
21
- let rowArray = [];
22
-
23
- row.querySelectorAll('th, td').forEach(item => {
24
- rowArray.push(normalize(item.innerText));
25
- });
26
-
27
- download_array.push(rowArray.join(';'));
28
- });
29
-
30
- let csv = download_array.join('\n');
31
-
32
- if(zeroValuesChar) {
33
- csv = csv.replaceAll(zeroValuesChar, 0);
34
- }
35
-
36
- return csv;
37
-
38
- // const url = new Blob([download_array.join('\n')], { type: 'text/csv;charset=utf-8;' });
39
-
40
- // return URL.createObjectURL(url);
41
-
42
- } catch(e) {
43
- console.error( e ); // eslint-disable-line
44
- }
45
-
46
- }
47
-
48
-
@@ -1,48 +0,0 @@
1
- export default function (tableEl, zeroAltChar = null) {
2
-
3
- const normalize = str => {
4
- let is_number = !isNaN(parseFloat(str));
5
-
6
- str = str.replace(/;/g, '').replace(/"/g, '""');
7
- if(is_number) {
8
- str = str.replace(/\./g, ''); // sep migliaia
9
- }
10
- return str;
11
- };
12
-
13
- try {
14
- if(!tableEl) {
15
- throw new Error( 'table element not present' );
16
- }
17
-
18
- // table to array
19
- let download_array = [];
20
- tableEl.querySelectorAll('tr').forEach(row => {
21
- let rowArray = [];
22
-
23
- row.querySelectorAll('th, td').forEach(item => {
24
- rowArray.push(normalize(item.innerText));
25
- });
26
-
27
- download_array.push(rowArray.join(';'));
28
- });
29
-
30
- let csv = download_array.join('\n');
31
-
32
- if(zeroAltChar) {
33
- csv = csv.replaceAll(zeroAltChar, 0);
34
- }
35
-
36
- return csv;
37
-
38
- // const url = new Blob([download_array.join('\n')], { type: 'text/csv;charset=utf-8;' });
39
-
40
- // return URL.createObjectURL(url);
41
-
42
- } catch(e) {
43
- console.error( e ); // eslint-disable-line
44
- }
45
-
46
- }
47
-
48
-
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="8">
2
- <path fill="#D8D8D8" fill-rule="evenodd" d="M0 0L16 0 7.959 8z" />
3
- </svg>
@@ -1,18 +0,0 @@
1
- // conviene questa strada o è più efficiente continuare a usare gli attributi data-*?
2
-
3
-
4
- /**
5
- * Gets the original value and parameters of a static (non-ajax) table cell.
6
- */
7
-
8
- export function getCellData(jtId, cell_key){
9
- const rowData = this.params.data.filter(row => row.jtId === +jtId)?.[0]?? null,
10
- colParams = this.params.columns.filter(col => col.key === cell_key)?.[0]?? null,
11
- dataType = this.params.dataTypes[colParams?.dataType]?? null;
12
-
13
- return {
14
- data: rowData,
15
- colParams: colParams,
16
- dataType: dataType
17
- };
18
- }
@@ -1,29 +0,0 @@
1
- const setDownloadFilename = str => {
2
- str = str
3
- .replace(/(\.csv)$/, '')
4
- .replace(/[/:]/g, '-')
5
- .replace(/-+/g, '-')
6
- .replace(/^-/, '')
7
- .replace(/-$/, '');
8
-
9
- return str + ' [' + new Date().toISOString().split('T')[0] + '].csv';
10
- };
11
- let downloadBtn = '';
12
- if(params.showDownloadBtn) {
13
- const btn_id = table_id + '-dwnld-btn';
14
- downloadBtn =
15
- `<div class="${params.rightAlignClassName}">
16
- <button type="button"
17
- id="${btn_id}"
18
- class="${params.downloadBtnClassName}"
19
- >${params.downloadBtnLabel}</button>
20
- </div>`;
21
-
22
- document.body.addEventListener('click', e => {
23
- if(e.target.id === btn_id) {
24
-
25
- downloadExcel(params);
26
-
27
- }
28
- }, false);
29
- }