@sme.up/ketchup 8.0.1 → 8.1.0

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 (558) hide show
  1. package/dist/cjs/{GenericVariables-a9ed17ee.js → GenericVariables-9cd88034.js} +3 -3
  2. package/dist/cjs/{component-85c2bd4d.js → component-2c7ddef7.js} +91 -10
  3. package/dist/cjs/{f-button-c0ede055.js → f-button-a5f661f2.js} +99 -99
  4. package/dist/cjs/{f-button-declarations-b611587f.js → f-button-declarations-76b4fb4c.js} +16 -16
  5. package/dist/cjs/{f-cell-1c17dbac.js → f-cell-ca9e4352.js} +472 -470
  6. package/dist/cjs/{f-checkbox-1148e791.js → f-checkbox-e2c6ecef.js} +23 -23
  7. package/dist/cjs/{f-chip-bace36bb.js → f-chip-e941fa19.js} +125 -125
  8. package/dist/cjs/{f-image-22174590.js → f-image-466b724f.js} +107 -107
  9. package/dist/cjs/{f-paginator-utils-e21e1f06.js → f-paginator-utils-f775ce67.js} +1548 -1547
  10. package/dist/cjs/{f-text-field-503f2bb0.js → f-text-field-ddb47dda.js} +172 -172
  11. package/dist/cjs/{f-text-field-mdc-0e22f3e3.js → f-text-field-mdc-d38d80b5.js} +59 -60
  12. package/dist/cjs/{index-1f177abc.js → index-26fb8571.js} +78 -24
  13. package/dist/cjs/ketchup.cjs.js +3 -3
  14. package/dist/cjs/kup-accordion.cjs.entry.js +199 -200
  15. package/dist/cjs/kup-autocomplete_27.cjs.entry.js +17546 -17563
  16. package/dist/cjs/kup-box.cjs.entry.js +1294 -1232
  17. package/dist/cjs/kup-calendar.cjs.entry.js +9542 -10035
  18. package/dist/cjs/kup-cell.cjs.entry.js +172 -172
  19. package/dist/cjs/kup-dash-list.cjs.entry.js +106 -106
  20. package/dist/cjs/kup-dash_2.cjs.entry.js +162 -162
  21. package/dist/cjs/kup-dashboard.cjs.entry.js +400 -401
  22. package/dist/cjs/kup-drawer.cjs.entry.js +138 -138
  23. package/dist/cjs/kup-echart.cjs.entry.js +7145 -6598
  24. package/dist/cjs/kup-family-tree.cjs.entry.js +439 -439
  25. package/dist/cjs/kup-iframe.cjs.entry.js +94 -94
  26. package/dist/cjs/kup-image-list.cjs.entry.js +255 -256
  27. package/dist/cjs/kup-lazy.cjs.entry.js +186 -186
  28. package/dist/cjs/kup-magic-box.cjs.entry.js +298 -298
  29. package/dist/cjs/{kup-manager-b994cf71.js → kup-manager-16b684bd.js} +7273 -7126
  30. package/dist/cjs/kup-nav-bar.cjs.entry.js +130 -130
  31. package/dist/cjs/kup-numeric-picker.cjs.entry.js +367 -368
  32. package/dist/cjs/kup-photo-frame.cjs.entry.js +144 -144
  33. package/dist/cjs/kup-planner.cjs.entry.js +1151 -1009
  34. package/dist/cjs/kup-probe.cjs.entry.js +246 -246
  35. package/dist/cjs/kup-qlik.cjs.entry.js +138 -138
  36. package/dist/cjs/kup-snackbar.cjs.entry.js +116 -116
  37. package/dist/cjs/loader.cjs.js +3 -3
  38. package/dist/collection/assets/dash-list.js +466 -293
  39. package/dist/collection/assets/data-table.js +0 -44
  40. package/dist/collection/assets/index.js +4 -0
  41. package/dist/collection/assets/planner.js +8189 -0
  42. package/dist/collection/collection-manifest.json +2 -2
  43. package/dist/collection/components/kup-accordion/kup-accordion-declarations.js +10 -10
  44. package/dist/collection/components/kup-accordion/kup-accordion.js +445 -445
  45. package/dist/collection/components/kup-autocomplete/kup-autocomplete-declarations.js +27 -27
  46. package/dist/collection/components/kup-autocomplete/kup-autocomplete.js +908 -908
  47. package/dist/collection/components/kup-badge/kup-badge-declarations.js +10 -10
  48. package/dist/collection/components/kup-badge/kup-badge.js +276 -276
  49. package/dist/collection/components/kup-box/kup-box-declarations.js +34 -33
  50. package/dist/collection/components/kup-box/kup-box-state.js +15 -15
  51. package/dist/collection/components/kup-box/kup-box.js +2159 -2079
  52. package/dist/collection/components/kup-button/kup-button-declarations.js +18 -18
  53. package/dist/collection/components/kup-button/kup-button.js +580 -580
  54. package/dist/collection/components/kup-button-list/kup-button-list-declarations.js +13 -13
  55. package/dist/collection/components/kup-button-list/kup-button-list.e2e.js +144 -0
  56. package/dist/collection/components/kup-button-list/kup-button-list.js +527 -527
  57. package/dist/collection/components/kup-calendar/kup-calendar-declarations.js +35 -35
  58. package/dist/collection/components/kup-calendar/kup-calendar.css +0 -4
  59. package/dist/collection/components/kup-calendar/kup-calendar.js +690 -690
  60. package/dist/collection/components/kup-card/box/kup-card-box.js +227 -227
  61. package/dist/collection/components/kup-card/built-in/kup-card-built-in.js +56 -56
  62. package/dist/collection/components/kup-card/built-in/kup-card-calendar.js +393 -449
  63. package/dist/collection/components/kup-card/built-in/kup-card-clock.js +308 -308
  64. package/dist/collection/components/kup-card/built-in/kup-card-column-drop-menu.js +165 -165
  65. package/dist/collection/components/kup-card/built-in/kup-card-message-box.js +10 -10
  66. package/dist/collection/components/kup-card/built-in/kup-card-numeric.js +118 -118
  67. package/dist/collection/components/kup-card/collapsible/kup-card-collapsible.js +64 -64
  68. package/dist/collection/components/kup-card/dialog/kup-card-dialog.js +217 -217
  69. package/dist/collection/components/kup-card/free/kup-card-free.js +22 -22
  70. package/dist/collection/components/kup-card/kup-card-declarations.js +98 -98
  71. package/dist/collection/components/kup-card/kup-card-helper.js +196 -196
  72. package/dist/collection/components/kup-card/kup-card.js +809 -809
  73. package/dist/collection/components/kup-card/scalable/kup-card-scalable.js +251 -251
  74. package/dist/collection/components/kup-card/standard/kup-card-standard.js +593 -593
  75. package/dist/collection/components/kup-cell/kup-cell-declarations.js +11 -11
  76. package/dist/collection/components/kup-cell/kup-cell.js +401 -401
  77. package/dist/collection/components/kup-chart/kup-chart-builder.js +93 -93
  78. package/dist/collection/components/kup-chart/kup-chart-declarations.js +49 -49
  79. package/dist/collection/components/kup-chart/kup-chart.js +1080 -1080
  80. package/dist/collection/components/kup-checkbox/kup-checkbox-declarations.js +13 -13
  81. package/dist/collection/components/kup-checkbox/kup-checkbox.js +433 -433
  82. package/dist/collection/components/kup-chip/kup-chip-declarations.js +12 -12
  83. package/dist/collection/components/kup-chip/kup-chip.js +558 -558
  84. package/dist/collection/components/kup-color-picker/kup-color-picker-declarations.js +12 -12
  85. package/dist/collection/components/kup-color-picker/kup-color-picker.js +546 -546
  86. package/dist/collection/components/kup-combobox/kup-combobox-declarations.js +15 -15
  87. package/dist/collection/components/kup-combobox/kup-combobox.js +821 -821
  88. package/dist/collection/components/kup-dash/kup-dash.js +171 -171
  89. package/dist/collection/components/kup-dash-list/kup-dash-list.js +327 -327
  90. package/dist/collection/components/kup-dashboard/kup-dashboard-declarations.js +10 -10
  91. package/dist/collection/components/kup-dashboard/kup-dashboard.js +588 -588
  92. package/dist/collection/components/kup-data-table/kup-data-table-declarations.js +156 -156
  93. package/dist/collection/components/kup-data-table/kup-data-table-helper.js +808 -809
  94. package/dist/collection/components/kup-data-table/kup-data-table-state.js +36 -36
  95. package/dist/collection/components/kup-data-table/kup-data-table.js +5527 -5526
  96. package/dist/collection/components/kup-date-picker/kup-date-picker-declarations.js +18 -18
  97. package/dist/collection/components/kup-date-picker/kup-date-picker.js +816 -816
  98. package/dist/collection/components/kup-dialog/kup-dialog-declarations.js +14 -14
  99. package/dist/collection/components/kup-dialog/kup-dialog.js +467 -467
  100. package/dist/collection/components/kup-drawer/kup-drawer-declarations.js +10 -10
  101. package/dist/collection/components/kup-drawer/kup-drawer.e2e.js +9 -0
  102. package/dist/collection/components/kup-drawer/kup-drawer.js +383 -383
  103. package/dist/collection/components/kup-dropdown-button/kup-dropdown-button-declarations.js +18 -18
  104. package/dist/collection/components/kup-dropdown-button/kup-dropdown-button.js +800 -800
  105. package/dist/collection/components/kup-echart/kup-echart-declarations.js +52 -52
  106. package/dist/collection/components/kup-echart/kup-echart.js +1437 -1437
  107. package/dist/collection/components/kup-family-tree/kup-family-tree-declarations.js +15 -15
  108. package/dist/collection/components/kup-family-tree/kup-family-tree.js +829 -829
  109. package/dist/collection/components/kup-form/kup-form-declarations.js +29 -29
  110. package/dist/collection/components/kup-form/kup-form.js +731 -731
  111. package/dist/collection/components/kup-gauge/kup-gauge-declarations.js +26 -26
  112. package/dist/collection/components/kup-gauge/kup-gauge.js +764 -764
  113. package/dist/collection/components/kup-grid/kup-grid-declarations.js +10 -10
  114. package/dist/collection/components/kup-grid/kup-grid.js +253 -253
  115. package/dist/collection/components/kup-iframe/kup-iframe-declarations.js +10 -10
  116. package/dist/collection/components/kup-iframe/kup-iframe.js +281 -281
  117. package/dist/collection/components/kup-image/canvas/kup-image-canvas-declarations.js +184 -184
  118. package/dist/collection/components/kup-image/canvas/kup-image-canvas-helper.js +19 -19
  119. package/dist/collection/components/kup-image/canvas/kup-image-canvas.js +225 -225
  120. package/dist/collection/components/kup-image/kup-image-declarations.js +16 -16
  121. package/dist/collection/components/kup-image/kup-image.js +491 -491
  122. package/dist/collection/components/kup-image-list/kup-image-list-declarations.js +10 -10
  123. package/dist/collection/components/kup-image-list/kup-image-list-state.js +9 -9
  124. package/dist/collection/components/kup-image-list/kup-image-list.js +533 -533
  125. package/dist/collection/components/kup-lazy/kup-lazy-declarations.js +20 -20
  126. package/dist/collection/components/kup-lazy/kup-lazy.js +430 -430
  127. package/dist/collection/components/kup-list/kup-list-declarations.js +34 -34
  128. package/dist/collection/components/kup-list/kup-list-helper.js +121 -121
  129. package/dist/collection/components/kup-list/kup-list.js +949 -949
  130. package/dist/collection/components/kup-magic-box/kup-magic-box-declarations.js +23 -23
  131. package/dist/collection/components/kup-magic-box/kup-magic-box.js +431 -431
  132. package/dist/collection/components/kup-nav-bar/kup-nav-bar-declarations.js +21 -21
  133. package/dist/collection/components/kup-nav-bar/kup-nav-bar.js +315 -315
  134. package/dist/collection/components/kup-numeric-picker/kup-numeric-picker-declarations.js +16 -16
  135. package/dist/collection/components/kup-numeric-picker/kup-numeric-picker.js +864 -864
  136. package/dist/collection/components/kup-photo-frame/kup-photo-frame-declarations.js +10 -10
  137. package/dist/collection/components/kup-photo-frame/kup-photo-frame.js +372 -372
  138. package/dist/collection/components/kup-planner/kup-planner-declarations.js +83 -76
  139. package/dist/collection/components/kup-planner/kup-planner-helper.js +54 -54
  140. package/dist/collection/components/kup-planner/kup-planner-state.js +16 -0
  141. package/dist/collection/components/kup-planner/kup-planner.js +1725 -1352
  142. package/dist/collection/components/kup-probe/kup-probe.js +358 -358
  143. package/dist/collection/components/kup-progress-bar/kup-progress-bar-declarations.js +14 -14
  144. package/dist/collection/components/kup-progress-bar/kup-progress-bar.js +405 -405
  145. package/dist/collection/components/kup-qlik/kup-qlik-declarations.js +1 -1
  146. package/dist/collection/components/kup-qlik/kup-qlik.js +326 -326
  147. package/dist/collection/components/kup-radio/kup-radio-declarations.js +12 -12
  148. package/dist/collection/components/kup-radio/kup-radio.js +398 -398
  149. package/dist/collection/components/kup-rating/kup-rating-declarations.js +11 -11
  150. package/dist/collection/components/kup-rating/kup-rating.js +332 -332
  151. package/dist/collection/components/kup-snackbar/kup-snackbar-declarations.js +13 -13
  152. package/dist/collection/components/kup-snackbar/kup-snackbar.js +389 -389
  153. package/dist/collection/components/kup-spinner/kup-spinner-declarations.js +15 -15
  154. package/dist/collection/components/kup-spinner/kup-spinner.js +468 -468
  155. package/dist/collection/components/kup-state/kup-state.js +1 -1
  156. package/dist/collection/components/kup-state/kup-store.js +1 -1
  157. package/dist/collection/components/kup-state/mock-store.js +13 -13
  158. package/dist/collection/components/kup-switch/kup-switch-declarations.js +12 -12
  159. package/dist/collection/components/kup-switch/kup-switch.js +402 -402
  160. package/dist/collection/components/kup-tab-bar/kup-tab-bar-declarations.js +10 -10
  161. package/dist/collection/components/kup-tab-bar/kup-tab-bar.js +443 -443
  162. package/dist/collection/components/kup-text-field/kup-text-field-declarations.js +35 -35
  163. package/dist/collection/components/kup-text-field/kup-text-field.js +1193 -1190
  164. package/dist/collection/components/kup-time-picker/kup-time-picker-declarations.js +14 -14
  165. package/dist/collection/components/kup-time-picker/kup-time-picker.js +921 -921
  166. package/dist/collection/components/kup-tree/kup-tree-declarations.js +43 -43
  167. package/dist/collection/components/kup-tree/kup-tree-faker.js +305 -305
  168. package/dist/collection/components/kup-tree/kup-tree-state.js +15 -15
  169. package/dist/collection/components/kup-tree/kup-tree.js +2479 -2479
  170. package/dist/collection/f-components/f-button/f-button-declarations.js +17 -17
  171. package/dist/collection/f-components/f-button/f-button.js +91 -91
  172. package/dist/collection/f-components/f-cell/f-cell-declarations.js +158 -158
  173. package/dist/collection/f-components/f-cell/f-cell.js +429 -428
  174. package/dist/collection/f-components/f-checkbox/f-checkbox-declarations.js +1 -1
  175. package/dist/collection/f-components/f-checkbox/f-checkbox.js +16 -16
  176. package/dist/collection/f-components/f-chip/f-chip-declarations.js +15 -15
  177. package/dist/collection/f-components/f-chip/f-chip.js +101 -101
  178. package/dist/collection/f-components/f-image/f-image-declarations.js +8 -8
  179. package/dist/collection/f-components/f-image/f-image.js +100 -100
  180. package/dist/collection/f-components/f-paginator/f-paginator-declarations.js +5 -5
  181. package/dist/collection/f-components/f-paginator/f-paginator-utils.js +28 -28
  182. package/dist/collection/f-components/f-paginator/f-paginator.js +86 -86
  183. package/dist/collection/f-components/f-switch/f-switch-declarations.js +1 -1
  184. package/dist/collection/f-components/f-switch/f-switch.js +12 -12
  185. package/dist/collection/f-components/f-text-field/f-text-field-declarations.js +1 -1
  186. package/dist/collection/f-components/f-text-field/f-text-field-mdc.js +29 -29
  187. package/dist/collection/f-components/f-text-field/f-text-field.js +151 -151
  188. package/dist/collection/managers/kup-data/kup-data-cell-helper.js +86 -86
  189. package/dist/collection/managers/kup-data/kup-data-column-helper.js +300 -300
  190. package/dist/collection/managers/kup-data/kup-data-declarations.js +10 -10
  191. package/dist/collection/managers/kup-data/kup-data-node-helper.js +165 -165
  192. package/dist/collection/managers/kup-data/kup-data-row-helper.js +28 -28
  193. package/dist/collection/managers/kup-data/kup-data.js +499 -497
  194. package/dist/collection/managers/kup-dates/kup-dates-declarations.js +43 -32
  195. package/dist/collection/managers/kup-dates/kup-dates.js +654 -343
  196. package/dist/collection/managers/kup-debug/kup-debug-declarations.js +20 -20
  197. package/dist/collection/managers/kup-debug/kup-debug.js +670 -670
  198. package/dist/collection/managers/kup-dynamic-position/kup-dynamic-position-declarations.js +27 -27
  199. package/dist/collection/managers/kup-dynamic-position/kup-dynamic-position.js +244 -244
  200. package/dist/collection/managers/kup-interact/kup-interact-declarations.js +49 -49
  201. package/dist/collection/managers/kup-interact/kup-interact.js +397 -397
  202. package/dist/collection/managers/kup-language/kup-language-declarations.js +211 -211
  203. package/dist/collection/managers/kup-language/kup-language.js +151 -151
  204. package/dist/collection/managers/kup-manager/kup-manager-declarations.js +1 -1
  205. package/dist/collection/managers/kup-manager/kup-manager.js +303 -303
  206. package/dist/collection/managers/kup-math/kup-math-declarations.js +13 -13
  207. package/dist/collection/managers/kup-math/kup-math-helper.js +39 -39
  208. package/dist/collection/managers/kup-math/kup-math.js +413 -242
  209. package/dist/collection/managers/kup-objects/kup-objects-declarations.js +1 -1
  210. package/dist/collection/managers/kup-objects/kup-objects.js +387 -387
  211. package/dist/collection/managers/kup-scroll-on-hover/kup-scroll-on-hover-declarations.js +10 -10
  212. package/dist/collection/managers/kup-scroll-on-hover/kup-scroll-on-hover.js +334 -334
  213. package/dist/collection/managers/kup-search/kup-search-declarations.js +1 -1
  214. package/dist/collection/managers/kup-search/kup-search.js +75 -75
  215. package/dist/collection/managers/kup-theme/kup-theme-declarations.js +177 -177
  216. package/dist/collection/managers/kup-theme/kup-theme.js +715 -715
  217. package/dist/collection/managers/kup-toolbar/kup-toolbar-declarations.js +9 -9
  218. package/dist/collection/managers/kup-toolbar/kup-toolbar.js +111 -111
  219. package/dist/collection/managers/kup-tooltip/kup-tooltip-declarations.js +1 -1
  220. package/dist/collection/managers/kup-tooltip/kup-tooltip.js +229 -229
  221. package/dist/collection/types/GenericTypes.js +54 -54
  222. package/dist/collection/utils/cell-utils.js +156 -157
  223. package/dist/collection/utils/filters/filters-column-menu.js +360 -360
  224. package/dist/collection/utils/filters/filters-declarations.js +25 -25
  225. package/dist/collection/utils/filters/filters-rows.js +238 -238
  226. package/dist/collection/utils/filters/filters-tree-items.js +117 -117
  227. package/dist/collection/utils/filters/filters.js +287 -289
  228. package/dist/collection/utils/kup-column-menu/kup-column-menu-declarations.js +20 -20
  229. package/dist/collection/utils/kup-column-menu/kup-column-menu.js +751 -751
  230. package/dist/collection/utils/utils.js +84 -497
  231. package/dist/collection/variables/GenericVariables.js +4 -4
  232. package/dist/components/kup-accordion.js +355 -355
  233. package/dist/components/kup-autocomplete2.js +31828 -31684
  234. package/dist/components/kup-box2.js +1470 -1406
  235. package/dist/components/kup-calendar.js +9788 -10280
  236. package/dist/components/kup-card.js +1 -1
  237. package/dist/components/kup-cell.js +325 -325
  238. package/dist/components/kup-chart.js +1 -1
  239. package/dist/components/kup-checkbox.js +1 -1
  240. package/dist/components/kup-chip.js +1 -1
  241. package/dist/components/kup-color-picker.js +1 -1
  242. package/dist/components/kup-combobox.js +1 -1
  243. package/dist/components/kup-dash-list.js +276 -276
  244. package/dist/components/kup-dash2.js +220 -220
  245. package/dist/components/kup-dashboard.js +549 -549
  246. package/dist/components/kup-data-table.js +1 -1
  247. package/dist/components/kup-date-picker.js +1 -1
  248. package/dist/components/kup-dialog.js +1 -1
  249. package/dist/components/kup-drawer.js +295 -295
  250. package/dist/components/kup-dropdown-button.js +1 -1
  251. package/dist/components/kup-echart2.js +7312 -6765
  252. package/dist/components/kup-family-tree.js +604 -604
  253. package/dist/components/kup-form.js +1 -1
  254. package/dist/components/kup-gauge.js +1 -1
  255. package/dist/components/kup-grid2.js +252 -252
  256. package/dist/components/kup-iframe.js +250 -250
  257. package/dist/components/kup-image-list.js +407 -407
  258. package/dist/components/kup-image.js +1 -1
  259. package/dist/components/kup-lazy.js +344 -344
  260. package/dist/components/kup-list.js +1 -1
  261. package/dist/components/kup-magic-box.js +461 -461
  262. package/dist/components/kup-nav-bar.js +284 -284
  263. package/dist/components/kup-numeric-picker.js +529 -529
  264. package/dist/components/kup-photo-frame.js +300 -300
  265. package/dist/components/kup-planner.js +1342 -1189
  266. package/dist/components/kup-probe.js +399 -399
  267. package/dist/components/kup-progress-bar.js +1 -1
  268. package/dist/components/kup-qlik.js +296 -296
  269. package/dist/components/kup-radio.js +1 -1
  270. package/dist/components/kup-rating.js +1 -1
  271. package/dist/components/kup-snackbar.js +273 -273
  272. package/dist/components/kup-spinner.js +1 -1
  273. package/dist/components/kup-switch.js +1 -1
  274. package/dist/components/kup-tab-bar.js +1 -1
  275. package/dist/components/kup-text-field.js +1 -1
  276. package/dist/components/kup-time-picker.js +1 -1
  277. package/dist/components/kup-tree.js +1 -1
  278. package/dist/esm/{GenericVariables-665de00a.js → GenericVariables-6dfdd433.js} +3 -3
  279. package/dist/esm/{component-120651a0.js → component-e86c51ea.js} +81 -2
  280. package/dist/esm/{f-button-c377973d.js → f-button-c6a69f75.js} +99 -99
  281. package/dist/esm/{f-button-declarations-b1b4cac4.js → f-button-declarations-fd4965d1.js} +16 -16
  282. package/dist/esm/{f-cell-e5a98bc8.js → f-cell-5822ea68.js} +472 -470
  283. package/dist/esm/{f-checkbox-9b3f5f5b.js → f-checkbox-c15911de.js} +23 -23
  284. package/dist/esm/{f-chip-c8a18c48.js → f-chip-f46a03f5.js} +125 -125
  285. package/dist/esm/{f-image-5cbdf39d.js → f-image-f57832fa.js} +107 -107
  286. package/dist/esm/{f-paginator-utils-a1dab059.js → f-paginator-utils-bafc463d.js} +1548 -1547
  287. package/dist/esm/{f-text-field-dafb7c8b.js → f-text-field-15850e05.js} +172 -172
  288. package/dist/esm/{f-text-field-mdc-cee583ea.js → f-text-field-mdc-a1b4a919.js} +27 -28
  289. package/dist/esm/{index-8bd38435.js → index-238342f2.js} +78 -24
  290. package/dist/esm/ketchup.js +4 -4
  291. package/dist/esm/kup-accordion.entry.js +199 -200
  292. package/dist/esm/kup-autocomplete_27.entry.js +17546 -17563
  293. package/dist/esm/kup-box.entry.js +1294 -1232
  294. package/dist/esm/kup-calendar.entry.js +9557 -10050
  295. package/dist/esm/kup-cell.entry.js +172 -172
  296. package/dist/esm/kup-dash-list.entry.js +106 -106
  297. package/dist/esm/kup-dash_2.entry.js +162 -162
  298. package/dist/esm/kup-dashboard.entry.js +400 -401
  299. package/dist/esm/kup-drawer.entry.js +138 -138
  300. package/dist/esm/kup-echart.entry.js +7145 -6598
  301. package/dist/esm/kup-family-tree.entry.js +439 -439
  302. package/dist/esm/kup-iframe.entry.js +94 -94
  303. package/dist/esm/kup-image-list.entry.js +255 -256
  304. package/dist/esm/kup-lazy.entry.js +186 -186
  305. package/dist/esm/kup-magic-box.entry.js +298 -298
  306. package/dist/esm/{kup-manager-3594cde8.js → kup-manager-89dd9137.js} +7273 -7116
  307. package/dist/esm/kup-nav-bar.entry.js +130 -130
  308. package/dist/esm/kup-numeric-picker.entry.js +367 -368
  309. package/dist/esm/kup-photo-frame.entry.js +144 -144
  310. package/dist/esm/kup-planner.entry.js +1151 -1009
  311. package/dist/esm/kup-probe.entry.js +246 -246
  312. package/dist/esm/kup-qlik.entry.js +138 -138
  313. package/dist/esm/kup-snackbar.entry.js +116 -116
  314. package/dist/esm/loader.js +4 -4
  315. package/dist/ketchup/ketchup.esm.js +1 -1
  316. package/dist/ketchup/{p-d1164680.entry.js → p-01d44efe.entry.js} +1 -1
  317. package/dist/ketchup/{p-6762d447.js → p-1a8a06de.js} +1 -1
  318. package/dist/ketchup/p-206245c0.js +1 -0
  319. package/dist/ketchup/p-4bd63e97.entry.js +25 -0
  320. package/dist/ketchup/{p-cf322853.entry.js → p-4da77173.entry.js} +1 -1
  321. package/dist/ketchup/{p-7be5ef32.entry.js → p-514dcb7d.entry.js} +1 -1
  322. package/dist/ketchup/{p-22e72f06.entry.js → p-51573263.entry.js} +1 -1
  323. package/dist/ketchup/{p-9f9b6656.js → p-54248440.js} +1 -1
  324. package/dist/ketchup/{p-37ada0f0.entry.js → p-5dfa5c49.entry.js} +1 -1
  325. package/dist/ketchup/{p-10d84b1b.js → p-6507e9eb.js} +7 -6
  326. package/dist/ketchup/p-673bb93e.js +1 -0
  327. package/dist/ketchup/{p-31abf4b6.entry.js → p-688478e9.entry.js} +1 -1
  328. package/dist/ketchup/p-6a5d95df.entry.js +1 -0
  329. package/dist/ketchup/p-6ec8629e.js +30 -0
  330. package/dist/ketchup/p-785e8d74.entry.js +1 -0
  331. package/dist/ketchup/{p-d76be079.entry.js → p-78cc5a2d.entry.js} +1 -1
  332. package/dist/ketchup/{p-ce5b6ce7.entry.js → p-799f7f10.entry.js} +1 -1
  333. package/dist/ketchup/p-7e757c27.entry.js +1 -0
  334. package/dist/ketchup/p-843253dd.entry.js +1 -0
  335. package/dist/ketchup/{p-473d2bea.entry.js → p-84d3f676.entry.js} +1 -1
  336. package/dist/ketchup/p-8c1edebd.js +2 -0
  337. package/dist/ketchup/{p-2d32e3cd.js → p-a5f15864.js} +1 -1
  338. package/dist/ketchup/p-af7202ff.entry.js +1 -0
  339. package/dist/ketchup/{p-7f4f5f0f.entry.js → p-ba959bb5.entry.js} +1 -1
  340. package/dist/ketchup/p-c1931214.js +1 -0
  341. package/dist/ketchup/{p-8b248655.js → p-c354c5d0.js} +1 -1
  342. package/dist/ketchup/p-cd8512d9.entry.js +39 -0
  343. package/dist/ketchup/p-d4f86197.entry.js +9 -0
  344. package/dist/ketchup/{p-b718af72.entry.js → p-e59c2bc0.entry.js} +1 -1
  345. package/dist/ketchup/{p-afff7a6e.entry.js → p-f2fda43b.entry.js} +1 -1
  346. package/dist/ketchup/p-f4b6aa3f.entry.js +1 -0
  347. package/dist/ketchup/p-f4f5170c.entry.js +1 -0
  348. package/dist/ketchup/{p-27a56c87.js → p-fb03f2f5.js} +2 -2
  349. package/dist/loader/index.d.ts +1 -1
  350. package/dist/types/components/kup-accordion/kup-accordion-declarations.d.ts +20 -20
  351. package/dist/types/components/kup-accordion/kup-accordion.d.ts +80 -80
  352. package/dist/types/components/kup-autocomplete/kup-autocomplete-declarations.d.ts +35 -35
  353. package/dist/types/components/kup-autocomplete/kup-autocomplete.d.ts +119 -119
  354. package/dist/types/components/kup-badge/kup-badge-declarations.d.ts +9 -9
  355. package/dist/types/components/kup-badge/kup-badge.d.ts +51 -51
  356. package/dist/types/components/kup-box/kup-box-declarations.d.ts +114 -113
  357. package/dist/types/components/kup-box/kup-box-state.d.ts +10 -10
  358. package/dist/types/components/kup-box/kup-box.d.ts +275 -270
  359. package/dist/types/components/kup-button/kup-button-declarations.d.ts +24 -24
  360. package/dist/types/components/kup-button/kup-button.d.ts +111 -111
  361. package/dist/types/components/kup-button-list/kup-button-list-declarations.d.ts +24 -24
  362. package/dist/types/components/kup-button-list/kup-button-list.d.ts +82 -82
  363. package/dist/types/components/kup-calendar/kup-calendar-declarations.d.ts +70 -70
  364. package/dist/types/components/kup-calendar/kup-calendar.d.ts +100 -100
  365. package/dist/types/components/kup-card/box/kup-card-box.d.ts +50 -50
  366. package/dist/types/components/kup-card/built-in/kup-card-built-in.d.ts +39 -39
  367. package/dist/types/components/kup-card/built-in/kup-card-calendar.d.ts +2 -2
  368. package/dist/types/components/kup-card/built-in/kup-card-clock.d.ts +2 -2
  369. package/dist/types/components/kup-card/built-in/kup-card-column-drop-menu.d.ts +3 -3
  370. package/dist/types/components/kup-card/built-in/kup-card-message-box.d.ts +3 -3
  371. package/dist/types/components/kup-card/built-in/kup-card-numeric.d.ts +2 -2
  372. package/dist/types/components/kup-card/collapsible/kup-card-collapsible.d.ts +14 -14
  373. package/dist/types/components/kup-card/dialog/kup-card-dialog.d.ts +44 -44
  374. package/dist/types/components/kup-card/free/kup-card-free.d.ts +14 -14
  375. package/dist/types/components/kup-card/kup-card-declarations.d.ts +236 -236
  376. package/dist/types/components/kup-card/kup-card-helper.d.ts +27 -27
  377. package/dist/types/components/kup-card/kup-card.d.ts +159 -159
  378. package/dist/types/components/kup-card/scalable/kup-card-scalable.d.ts +56 -56
  379. package/dist/types/components/kup-card/standard/kup-card-standard.d.ts +92 -92
  380. package/dist/types/components/kup-cell/kup-cell-declarations.d.ts +10 -10
  381. package/dist/types/components/kup-cell/kup-cell.d.ts +67 -67
  382. package/dist/types/components/kup-chart/kup-chart-builder.d.ts +7 -7
  383. package/dist/types/components/kup-chart/kup-chart-declarations.d.ts +135 -135
  384. package/dist/types/components/kup-chart/kup-chart.d.ts +170 -170
  385. package/dist/types/components/kup-checkbox/kup-checkbox-declarations.d.ts +17 -17
  386. package/dist/types/components/kup-checkbox/kup-checkbox.d.ts +85 -85
  387. package/dist/types/components/kup-chip/kup-chip-declarations.d.ts +22 -22
  388. package/dist/types/components/kup-chip/kup-chip.d.ts +89 -89
  389. package/dist/types/components/kup-color-picker/kup-color-picker-declarations.d.ts +15 -15
  390. package/dist/types/components/kup-color-picker/kup-color-picker.d.ts +89 -89
  391. package/dist/types/components/kup-combobox/kup-combobox-declarations.d.ts +24 -24
  392. package/dist/types/components/kup-combobox/kup-combobox.d.ts +95 -95
  393. package/dist/types/components/kup-dash/kup-dash.d.ts +33 -33
  394. package/dist/types/components/kup-dash-list/kup-dash-list.d.ts +22 -22
  395. package/dist/types/components/kup-dashboard/kup-dashboard-declarations.d.ts +61 -61
  396. package/dist/types/components/kup-dashboard/kup-dashboard.d.ts +80 -80
  397. package/dist/types/components/kup-data-table/kup-data-table-declarations.d.ts +254 -254
  398. package/dist/types/components/kup-data-table/kup-data-table-helper.d.ts +25 -25
  399. package/dist/types/components/kup-data-table/kup-data-table-state.d.ts +36 -36
  400. package/dist/types/components/kup-data-table/kup-data-table.d.ts +444 -444
  401. package/dist/types/components/kup-date-picker/kup-date-picker-declarations.d.ts +20 -20
  402. package/dist/types/components/kup-date-picker/kup-date-picker.d.ts +110 -110
  403. package/dist/types/components/kup-dialog/kup-dialog-declarations.d.ts +26 -26
  404. package/dist/types/components/kup-dialog/kup-dialog.d.ts +77 -77
  405. package/dist/types/components/kup-drawer/kup-drawer-declarations.d.ts +9 -9
  406. package/dist/types/components/kup-drawer/kup-drawer.d.ts +74 -74
  407. package/dist/types/components/kup-dropdown-button/kup-dropdown-button-declarations.d.ts +21 -21
  408. package/dist/types/components/kup-dropdown-button/kup-dropdown-button.d.ts +161 -161
  409. package/dist/types/components/kup-echart/kup-echart-declarations.d.ts +62 -62
  410. package/dist/types/components/kup-echart/kup-echart.d.ts +111 -111
  411. package/dist/types/components/kup-family-tree/kup-family-tree-declarations.d.ts +38 -38
  412. package/dist/types/components/kup-family-tree/kup-family-tree.d.ts +87 -87
  413. package/dist/types/components/kup-form/kup-form-declarations.d.ts +64 -64
  414. package/dist/types/components/kup-form/kup-form.d.ts +83 -83
  415. package/dist/types/components/kup-gauge/kup-gauge-declarations.d.ts +25 -25
  416. package/dist/types/components/kup-gauge/kup-gauge.d.ts +147 -147
  417. package/dist/types/components/kup-grid/kup-grid-declarations.d.ts +9 -9
  418. package/dist/types/components/kup-grid/kup-grid.d.ts +48 -48
  419. package/dist/types/components/kup-iframe/kup-iframe-declarations.d.ts +9 -9
  420. package/dist/types/components/kup-iframe/kup-iframe.d.ts +49 -49
  421. package/dist/types/components/kup-image/canvas/kup-image-canvas-declarations.d.ts +23 -23
  422. package/dist/types/components/kup-image/canvas/kup-image-canvas-helper.d.ts +2 -2
  423. package/dist/types/components/kup-image/canvas/kup-image-canvas.d.ts +28 -28
  424. package/dist/types/components/kup-image/kup-image-declarations.d.ts +19 -19
  425. package/dist/types/components/kup-image/kup-image.d.ts +103 -103
  426. package/dist/types/components/kup-image-list/kup-image-list-declarations.d.ts +14 -14
  427. package/dist/types/components/kup-image-list/kup-image-list-state.d.ts +6 -6
  428. package/dist/types/components/kup-image-list/kup-image-list.d.ts +73 -73
  429. package/dist/types/components/kup-lazy/kup-lazy-declarations.d.ts +18 -18
  430. package/dist/types/components/kup-lazy/kup-lazy.d.ts +78 -78
  431. package/dist/types/components/kup-list/kup-list-declarations.d.ts +48 -48
  432. package/dist/types/components/kup-list/kup-list-helper.d.ts +6 -6
  433. package/dist/types/components/kup-list/kup-list.d.ts +128 -128
  434. package/dist/types/components/kup-magic-box/kup-magic-box-declarations.d.ts +21 -21
  435. package/dist/types/components/kup-magic-box/kup-magic-box.d.ts +65 -65
  436. package/dist/types/components/kup-nav-bar/kup-nav-bar-declarations.d.ts +19 -19
  437. package/dist/types/components/kup-nav-bar/kup-nav-bar.d.ts +65 -65
  438. package/dist/types/components/kup-numeric-picker/kup-numeric-picker-declarations.d.ts +19 -19
  439. package/dist/types/components/kup-numeric-picker/kup-numeric-picker.d.ts +121 -121
  440. package/dist/types/components/kup-photo-frame/kup-photo-frame-declarations.d.ts +9 -9
  441. package/dist/types/components/kup-photo-frame/kup-photo-frame.d.ts +61 -61
  442. package/dist/types/components/kup-planner/kup-planner-declarations.d.ts +127 -106
  443. package/dist/types/components/kup-planner/kup-planner-helper.d.ts +6 -6
  444. package/dist/types/components/kup-planner/kup-planner-state.d.ts +13 -0
  445. package/dist/types/components/kup-planner/kup-planner.d.ts +266 -212
  446. package/dist/types/components/kup-probe/kup-probe.d.ts +72 -72
  447. package/dist/types/components/kup-progress-bar/kup-progress-bar-declarations.d.ts +13 -13
  448. package/dist/types/components/kup-progress-bar/kup-progress-bar.d.ts +69 -69
  449. package/dist/types/components/kup-qlik/kup-qlik-declarations.d.ts +19 -19
  450. package/dist/types/components/kup-qlik/kup-qlik.d.ts +100 -100
  451. package/dist/types/components/kup-radio/kup-radio-declarations.d.ts +23 -23
  452. package/dist/types/components/kup-radio/kup-radio.d.ts +80 -80
  453. package/dist/types/components/kup-rating/kup-rating-declarations.d.ts +14 -14
  454. package/dist/types/components/kup-rating/kup-rating.d.ts +62 -62
  455. package/dist/types/components/kup-snackbar/kup-snackbar-declarations.d.ts +12 -12
  456. package/dist/types/components/kup-snackbar/kup-snackbar.d.ts +84 -84
  457. package/dist/types/components/kup-spinner/kup-spinner-declarations.d.ts +14 -14
  458. package/dist/types/components/kup-spinner/kup-spinner.d.ts +79 -79
  459. package/dist/types/components/kup-state/kup-state.d.ts +3 -3
  460. package/dist/types/components/kup-state/kup-store.d.ts +4 -4
  461. package/dist/types/components/kup-state/mock-store.d.ts +8 -8
  462. package/dist/types/components/kup-switch/kup-switch-declarations.d.ts +15 -15
  463. package/dist/types/components/kup-switch/kup-switch.d.ts +80 -80
  464. package/dist/types/components/kup-tab-bar/kup-tab-bar-declarations.d.ts +21 -21
  465. package/dist/types/components/kup-tab-bar/kup-tab-bar.d.ts +77 -77
  466. package/dist/types/components/kup-text-field/kup-text-field-declarations.d.ts +38 -38
  467. package/dist/types/components/kup-text-field/kup-text-field.d.ts +253 -253
  468. package/dist/types/components/kup-time-picker/kup-time-picker-declarations.d.ts +17 -17
  469. package/dist/types/components/kup-time-picker/kup-time-picker.d.ts +125 -125
  470. package/dist/types/components/kup-tree/kup-tree-declarations.d.ts +97 -97
  471. package/dist/types/components/kup-tree/kup-tree-faker.d.ts +54 -54
  472. package/dist/types/components/kup-tree/kup-tree-state.d.ts +14 -14
  473. package/dist/types/components/kup-tree/kup-tree.d.ts +362 -362
  474. package/dist/types/components.d.ts +98 -2
  475. package/dist/types/f-components/f-button/f-button-declarations.d.ts +41 -41
  476. package/dist/types/f-components/f-button/f-button.d.ts +3 -3
  477. package/dist/types/f-components/f-cell/f-cell-declarations.d.ts +162 -162
  478. package/dist/types/f-components/f-cell/f-cell.d.ts +3 -3
  479. package/dist/types/f-components/f-checkbox/f-checkbox-declarations.d.ts +15 -15
  480. package/dist/types/f-components/f-checkbox/f-checkbox.d.ts +3 -3
  481. package/dist/types/f-components/f-chip/f-chip-declarations.d.ts +29 -29
  482. package/dist/types/f-components/f-chip/f-chip.d.ts +3 -3
  483. package/dist/types/f-components/f-image/f-image-declarations.d.ts +36 -36
  484. package/dist/types/f-components/f-image/f-image.d.ts +3 -3
  485. package/dist/types/f-components/f-paginator/f-paginator-declarations.d.ts +22 -22
  486. package/dist/types/f-components/f-paginator/f-paginator-utils.d.ts +2 -2
  487. package/dist/types/f-components/f-paginator/f-paginator.d.ts +3 -3
  488. package/dist/types/f-components/f-switch/f-switch-declarations.d.ts +14 -14
  489. package/dist/types/f-components/f-switch/f-switch.d.ts +3 -3
  490. package/dist/types/f-components/f-text-field/f-text-field-declarations.d.ts +42 -42
  491. package/dist/types/f-components/f-text-field/f-text-field-mdc.d.ts +6 -6
  492. package/dist/types/f-components/f-text-field/f-text-field.d.ts +3 -3
  493. package/dist/types/managers/kup-data/kup-data-cell-helper.d.ts +31 -31
  494. package/dist/types/managers/kup-data/kup-data-column-helper.d.ts +39 -39
  495. package/dist/types/managers/kup-data/kup-data-declarations.d.ts +173 -173
  496. package/dist/types/managers/kup-data/kup-data-node-helper.d.ts +44 -44
  497. package/dist/types/managers/kup-data/kup-data-row-helper.d.ts +14 -14
  498. package/dist/types/managers/kup-data/kup-data.d.ts +86 -86
  499. package/dist/types/managers/kup-dates/kup-dates-declarations.d.ts +39 -29
  500. package/dist/types/managers/kup-dates/kup-dates.d.ts +207 -114
  501. package/dist/types/managers/kup-debug/kup-debug-declarations.d.ts +38 -38
  502. package/dist/types/managers/kup-debug/kup-debug.d.ts +95 -95
  503. package/dist/types/managers/kup-dynamic-position/kup-dynamic-position-declarations.d.ts +50 -50
  504. package/dist/types/managers/kup-dynamic-position/kup-dynamic-position.d.ts +61 -61
  505. package/dist/types/managers/kup-interact/kup-interact-declarations.d.ts +128 -128
  506. package/dist/types/managers/kup-interact/kup-interact.d.ts +105 -105
  507. package/dist/types/managers/kup-language/kup-language-declarations.d.ts +225 -225
  508. package/dist/types/managers/kup-language/kup-language.d.ts +52 -52
  509. package/dist/types/managers/kup-manager/kup-manager-declarations.d.ts +162 -162
  510. package/dist/types/managers/kup-manager/kup-manager.d.ts +95 -95
  511. package/dist/types/managers/kup-math/kup-math-declarations.d.ts +33 -33
  512. package/dist/types/managers/kup-math/kup-math-helper.d.ts +17 -17
  513. package/dist/types/managers/kup-math/kup-math.d.ts +147 -85
  514. package/dist/types/managers/kup-objects/kup-objects-declarations.d.ts +15 -15
  515. package/dist/types/managers/kup-objects/kup-objects.d.ts +210 -210
  516. package/dist/types/managers/kup-scroll-on-hover/kup-scroll-on-hover-declarations.d.ts +28 -28
  517. package/dist/types/managers/kup-scroll-on-hover/kup-scroll-on-hover.d.ts +62 -62
  518. package/dist/types/managers/kup-search/kup-search-declarations.d.ts +7 -7
  519. package/dist/types/managers/kup-search/kup-search.d.ts +20 -20
  520. package/dist/types/managers/kup-theme/kup-theme-declarations.d.ts +185 -185
  521. package/dist/types/managers/kup-theme/kup-theme.d.ts +127 -127
  522. package/dist/types/managers/kup-toolbar/kup-toolbar-declarations.d.ts +8 -8
  523. package/dist/types/managers/kup-toolbar/kup-toolbar.d.ts +39 -39
  524. package/dist/types/managers/kup-tooltip/kup-tooltip-declarations.d.ts +8 -8
  525. package/dist/types/managers/kup-tooltip/kup-tooltip.d.ts +51 -51
  526. package/dist/types/stencil-public-runtime.d.ts +1 -0
  527. package/dist/types/types/GenericTypes.d.ts +110 -110
  528. package/dist/types/utils/cell-utils.d.ts +10 -10
  529. package/dist/types/utils/filters/filters-column-menu.d.ts +96 -96
  530. package/dist/types/utils/filters/filters-declarations.d.ts +39 -39
  531. package/dist/types/utils/filters/filters-rows.d.ts +30 -30
  532. package/dist/types/utils/filters/filters-tree-items.d.ts +19 -19
  533. package/dist/types/utils/filters/filters.d.ts +72 -72
  534. package/dist/types/utils/kup-column-menu/kup-column-menu-declarations.d.ts +19 -19
  535. package/dist/types/utils/kup-column-menu/kup-column-menu.d.ts +142 -142
  536. package/dist/types/utils/utils.d.ts +37 -124
  537. package/dist/types/variables/GenericVariables.d.ts +4 -4
  538. package/package.json +21 -16
  539. package/dist/cjs/tslib.es6-386654de.js +0 -87
  540. package/dist/esm/tslib.es6-8c2af864.js +0 -82
  541. package/dist/ketchup/p-017418e7.entry.js +0 -27
  542. package/dist/ketchup/p-38f16697.entry.js +0 -9
  543. package/dist/ketchup/p-4638fbff.js +0 -1
  544. package/dist/ketchup/p-4c56e199.entry.js +0 -1
  545. package/dist/ketchup/p-5205286a.entry.js +0 -25
  546. package/dist/ketchup/p-61319cfa.js +0 -1
  547. package/dist/ketchup/p-6c726886.entry.js +0 -1
  548. package/dist/ketchup/p-7f59211b.js +0 -1
  549. package/dist/ketchup/p-80815edf.entry.js +0 -1
  550. package/dist/ketchup/p-9dcfbb1e.js +0 -2
  551. package/dist/ketchup/p-9fc6a9a8.entry.js +0 -1
  552. package/dist/ketchup/p-acaa171f.js +0 -30
  553. package/dist/ketchup/p-bf4a881b.js +0 -1
  554. package/dist/ketchup/p-d4eb9a76.entry.js +0 -1
  555. package/dist/ketchup/p-ed7e118e.entry.js +0 -1
  556. package/dist/ketchup/p-ef0b4f19.entry.js +0 -39
  557. /package/dist/ketchup/{p-6c77a36c.js → p-0fd98ab4.js} +0 -0
  558. /package/dist/ketchup/{p-97e8ea42.js → p-ad2e21d2.js} +0 -0
@@ -1,809 +1,808 @@
1
- import { SortMode, TotalMode, } from './kup-data-table-declarations';
2
- import { isNumber, stringToNumber } from '../../utils/utils';
3
- import { getCellValueForDisplay, getColumnByName, compareCell, } from '../../utils/cell-utils';
4
- import { FiltersRows } from '../../utils/filters/filters-rows';
5
- import { KupDatesFormats } from '../../managers/kup-dates/kup-dates-declarations';
6
- const dom = document.documentElement;
7
- export function sortRows(rows = [], sort = []) {
8
- if (!rows || rows.length === 0) {
9
- return [];
10
- }
11
- // check if row is group
12
- if (rows[0].group) {
13
- return sortGroupRows(rows, sort);
14
- }
15
- // sorting rows
16
- if (!sort || sort.length === 0) {
17
- // no sort -> return rows as they are
18
- return rows;
19
- }
20
- // check multiple sort
21
- const isMultiSort = sort.length > 1;
22
- // sorting rows
23
- return rows.slice(0).sort((r1, r2) => {
24
- if (isMultiSort) {
25
- for (let i = 0; i < sort.length; i++) {
26
- const compare = compareRows(r1, r2, sort[i]);
27
- if (compare !== 0) {
28
- // not same row
29
- return compare;
30
- }
31
- }
32
- // same row
33
- return 0;
34
- }
35
- else {
36
- return compareRows(r1, r2, sort[0]);
37
- }
38
- });
39
- }
40
- function sortGroupRows(rows = [], sort = []) {
41
- if (!rows || rows.length === 0) {
42
- return [];
43
- }
44
- // getting columm group
45
- const groupColumn = rows[0].group.column;
46
- // check if column is in sort
47
- let sortObject = getSortOnColumn(groupColumn, sort);
48
- if (!sortObject) {
49
- sortObject = {
50
- column: groupColumn,
51
- sortMode: SortMode.A,
52
- };
53
- }
54
- // sorting rows
55
- rows.sort((r1, r2) => {
56
- // creating fake cells
57
- const cell1 = {
58
- obj: r1.group.obj,
59
- value: r1.group.id,
60
- };
61
- const cell2 = {
62
- obj: r2.group.obj,
63
- value: r2.group.id,
64
- };
65
- return compareCell(cell1, cell2, sortObject.sortMode);
66
- });
67
- // sorting children
68
- rows.forEach((row) => {
69
- row.group.children = sortRows(row.group.children, sort);
70
- });
71
- return rows;
72
- }
73
- function getSortOnColumn(column = '', sort = []) {
74
- if (!column || !sort || sort.length === 0) {
75
- return null;
76
- }
77
- for (let sortObject of sort) {
78
- if (sortObject.column === column) {
79
- return sortObject;
80
- }
81
- }
82
- return null;
83
- }
84
- function compareRows(r1, r2, sortObj) {
85
- const cell1 = r1.cells[sortObj.column];
86
- const cell2 = r2.cells[sortObj.column];
87
- if (!cell1 && !cell2) {
88
- return 0;
89
- }
90
- if (!cell1) {
91
- return 1;
92
- }
93
- if (!cell2) {
94
- return -1;
95
- }
96
- return compareCell(cell1, cell2, sortObj.sortMode);
97
- }
98
- //-------- FILTER FUNCTIONS --------
99
- /**
100
- * Filters the rows data of a data-table component according to the parameters
101
- *
102
- * @param rows - The data of the rows to filter.
103
- * @param filters - The the filters for each column.
104
- * @param globalFilter - A global filter applied to all columns.
105
- * @param columns - The colmns on which the filter will take effect.
106
- * @todo This function can be improved in its speed by a refactor in which from two different cycles of execution for
107
- * single filters and global filter, all controls on a single column are done in a single cycle.
108
- */
109
- export function filterRows(rows = [], filters = {}, globalFilter = '', columns = [], columnFilters, filtersRows) {
110
- if (filtersRows == null) {
111
- filtersRows = new FiltersRows();
112
- }
113
- return filtersRows.filterRows(rows, filters, globalFilter, columns, columnFilters);
114
- }
115
- export function groupRows(columns = [], rows = [], groups = [], totals = {}) {
116
- if (!rows) {
117
- return [];
118
- }
119
- if (!groups || groups.length === 0 || !columns || columns.length === 0) {
120
- return rows;
121
- }
122
- // Keeps label of the valid columns
123
- const columnLabels = {};
124
- // remove invalid groups and store column labels
125
- const validGroups = groups.filter(({ column }) => {
126
- for (let { name, title } of columns) {
127
- if (name === column) {
128
- // Store label of the columns
129
- columnLabels[name] = title;
130
- return true;
131
- }
132
- }
133
- return false;
134
- });
135
- if (validGroups.length === 0) {
136
- // no valid groups
137
- return rows;
138
- }
139
- // creating root
140
- const groupRows = [];
141
- // obj used to calculate the group distinct value
142
- let distinctObj = {};
143
- rows.forEach((row) => {
144
- // getting column name from first group
145
- const columnName = validGroups[0].column;
146
- // getting row value
147
- const cell = row.cells[columnName];
148
- if (cell) {
149
- const column = getColumnByName(columns, columnName);
150
- const cellValueForDisplay = getCellValueForDisplay(column, cell);
151
- const cellValue = cell.value;
152
- let groupRow = null;
153
- // check in already in groupedRow
154
- for (let currentGroupRow of groupRows) {
155
- if (currentGroupRow.group.label === cellValueForDisplay) {
156
- groupRow = currentGroupRow;
157
- break;
158
- }
159
- }
160
- if (groupRow === null) {
161
- // create group row
162
- groupRow = {
163
- group: {
164
- id: cellValue,
165
- parent: null,
166
- column: columnName,
167
- columnLabel: columnLabels[columnName],
168
- expanded: false,
169
- label: cellValueForDisplay,
170
- children: [],
171
- obj: cell.obj,
172
- totals: {},
173
- },
174
- cells: {},
175
- };
176
- // add group to list
177
- groupRows.push(groupRow);
178
- }
179
- for (let i = 1; i < validGroups.length; i++) {
180
- const group = validGroups[i];
181
- // getting cell value
182
- const tempCell = row.cells[group.column];
183
- if (tempCell) {
184
- const column = getColumnByName(columns, group.column);
185
- const tempCellValueForDisplay = getCellValueForDisplay(column, tempCell);
186
- const tempCellValue = tempCell.value;
187
- // check if group already exists
188
- let tempGroupingRow = null;
189
- for (let j = 0; j < groupRow.group.children.length; j++) {
190
- const childGroup = groupRow.group.children[j];
191
- const groupLabel = childGroup.group.label;
192
- if (groupLabel === tempCellValueForDisplay) {
193
- tempGroupingRow = childGroup;
194
- break;
195
- }
196
- }
197
- if (!tempGroupingRow) {
198
- tempGroupingRow = {
199
- cells: {},
200
- group: {
201
- id: tempCellValue,
202
- parent: groupRow,
203
- column: group.column,
204
- columnLabel: columnLabels[group.column],
205
- children: [],
206
- expanded: false,
207
- label: tempCellValueForDisplay,
208
- totals: {},
209
- obj: tempCell.obj,
210
- },
211
- };
212
- adjustGroupId(tempGroupingRow);
213
- groupRow.group.children.push(tempGroupingRow);
214
- }
215
- groupRow = tempGroupingRow;
216
- }
217
- }
218
- // adding row
219
- groupRow.group.children.push(row);
220
- updateGroupTotal(groupRow, totals, row, distinctObj);
221
- }
222
- });
223
- adjustGroupsDistinct(groupRows, totals, distinctObj);
224
- adjustGroupsAverageOrFormula(groupRows, TotalMode.AVERAGE, totals);
225
- adjustGroupsAverageOrFormula(groupRows, TotalMode.MATH, totals);
226
- return groupRows;
227
- }
228
- function updateGroupTotal(groupRow, totals, addedRow, distinctObj) {
229
- if (!groupRow || !totals) {
230
- return;
231
- }
232
- const keys = Object.keys(totals);
233
- if (keys.length === 0) {
234
- return;
235
- }
236
- keys.forEach((key) => {
237
- const currentTotalValue = dom.ketchup.math.numberify(groupRow.group.totals[key] || 0);
238
- const cell = addedRow.cells[key];
239
- if (cell) {
240
- let _isNumber = dom.ketchup.objects.isNumber(cell.obj);
241
- const totalMode = totals[key];
242
- switch (totalMode) {
243
- case TotalMode.COUNT:
244
- groupRow.group.totals[key] = currentTotalValue + 1;
245
- // updating parents
246
- let parent = groupRow.group.parent;
247
- while (parent != null) {
248
- const currentParentCount = parent.group.totals[key] || 0;
249
- parent.group.totals[key] = currentParentCount + 1;
250
- parent = parent.group.parent;
251
- }
252
- break;
253
- case TotalMode.DISTINCT:
254
- let cellValue;
255
- if (_isNumber) {
256
- cellValue = dom.ketchup.math.numberify(stringToNumber(cell.value));
257
- }
258
- else {
259
- cellValue = cell.value;
260
- }
261
- let distinctGroup = distinctObj[groupRow.group.id];
262
- if (!distinctGroup) {
263
- distinctObj[groupRow.group.id] = {};
264
- distinctObj[groupRow.group.id][key] = [];
265
- distinctObj[groupRow.group.id][key].push(cellValue);
266
- }
267
- else {
268
- let distinctList = distinctObj[groupRow.group.id][key];
269
- if (!distinctList) {
270
- // first round
271
- distinctObj[groupRow.group.id][key] = [];
272
- distinctObj[groupRow.group.id][key].push(cellValue);
273
- }
274
- else {
275
- // update the list
276
- distinctList.push(cellValue);
277
- }
278
- }
279
- // updating parents
280
- let distinctParent = groupRow.group.parent;
281
- while (distinctParent != null) {
282
- // get parent value
283
- let distinctGroupParent = distinctObj[distinctParent.group.id];
284
- if (!distinctGroupParent) {
285
- distinctObj[distinctParent.group.id] = {};
286
- distinctObj[distinctParent.group.id][key] = [];
287
- distinctObj[distinctParent.group.id][key].push(cellValue);
288
- }
289
- else {
290
- let distinctParentList = distinctObj[distinctParent.group.id][key];
291
- if (!distinctParentList) {
292
- // first round
293
- distinctObj[distinctParent.group.id][key] = [];
294
- distinctObj[distinctParent.group.id][key].push(cellValue);
295
- }
296
- else {
297
- // update the list
298
- distinctParentList.push(cellValue);
299
- }
300
- }
301
- // continue
302
- distinctParent = distinctParent.group.parent;
303
- }
304
- break;
305
- case TotalMode.SUM:
306
- case TotalMode.AVERAGE:
307
- if (_isNumber) {
308
- const cellValue = dom.ketchup.math.numberify(stringToNumber(cell.value));
309
- groupRow.group.totals[key] =
310
- cellValue + currentTotalValue;
311
- // updating parents
312
- let parent = groupRow.group.parent;
313
- while (parent != null) {
314
- const currentParentSum = dom.ketchup.math.numberify(parent.group.totals[key] || 0);
315
- parent.group.totals[key] =
316
- cellValue + currentParentSum;
317
- parent = parent.group.parent;
318
- }
319
- }
320
- break;
321
- // TODO DRY the MIN and MAX functions
322
- case TotalMode.MIN:
323
- if (_isNumber) {
324
- const currentTotalValue = groupRow.group.totals[key];
325
- const cellValue = dom.ketchup.math.numberify(stringToNumber(cell.value));
326
- if (currentTotalValue) {
327
- groupRow.group.totals[key] = Math.min(currentTotalValue, cellValue);
328
- }
329
- else {
330
- // first round
331
- groupRow.group.totals[key] = cellValue;
332
- }
333
- // updating parents
334
- let parent = groupRow.group.parent;
335
- while (parent != null) {
336
- const currentParentMin = parent.group.totals[key];
337
- if (currentParentMin) {
338
- parent.group.totals[key] = Math.min(currentParentMin, cellValue);
339
- }
340
- else {
341
- // first round
342
- parent.group.totals[key] = cellValue;
343
- }
344
- parent = parent.group.parent;
345
- }
346
- }
347
- else if (dom.ketchup.objects.isDate(cell.obj)) {
348
- const momentValue = cell.obj
349
- ? dom.ketchup.objects.parseDate(cell.obj)
350
- : dom.ketchup.dates.toDayjs(cell.value);
351
- if (dom.ketchup.dates.isValid(momentValue)) {
352
- const cellValue = dom.ketchup.dates.toDate(momentValue);
353
- const currentTotalValue = groupRow.group.totals[key];
354
- if (currentTotalValue) {
355
- let moments = [];
356
- moments.push(cellValue);
357
- moments.push(dom.ketchup.dates.format(currentTotalValue));
358
- groupRow.group.totals[key] =
359
- dom.ketchup.dates.format(dom.ketchup.dates.min(moments));
360
- }
361
- else {
362
- groupRow.group.totals[key] = cellValue;
363
- }
364
- // updating parents
365
- let parent = groupRow.group.parent;
366
- while (parent != null) {
367
- const currentParentMin = parent.group.totals[key];
368
- if (currentParentMin) {
369
- let moments = [];
370
- moments.push(cellValue);
371
- moments.push(dom.ketchup.dates.format(currentParentMin));
372
- parent.group.totals[key] =
373
- dom.ketchup.dates.format(dom.ketchup.dates.min(moments));
374
- }
375
- else {
376
- // first round
377
- parent.group.totals[key] = cellValue;
378
- }
379
- parent = parent.group.parent;
380
- }
381
- }
382
- }
383
- break;
384
- // TODO DRY the MIN and MAX functions
385
- case TotalMode.MAX:
386
- if (_isNumber) {
387
- const currentTotalValue = groupRow.group.totals[key];
388
- const cellValue = dom.ketchup.math.numberify(stringToNumber(cell.value));
389
- if (currentTotalValue) {
390
- groupRow.group.totals[key] = Math.max(currentTotalValue, cellValue);
391
- }
392
- else {
393
- // first round
394
- groupRow.group.totals[key] = cellValue;
395
- }
396
- // updating parents
397
- let parent = groupRow.group.parent;
398
- while (parent != null) {
399
- const currentParentMax = parent.group.totals[key];
400
- if (currentParentMax) {
401
- parent.group.totals[key] = Math.max(currentParentMax, cellValue);
402
- }
403
- else {
404
- // first round
405
- parent.group.totals[key] = cellValue;
406
- }
407
- parent = parent.group.parent;
408
- }
409
- }
410
- else if (dom.ketchup.objects.isDate(cell.obj)) {
411
- const momentValue = cell.obj
412
- ? dom.ketchup.objects.parseDate(cell.obj)
413
- : dom.ketchup.dates.toDayjs(cell.value);
414
- if (dom.ketchup.dates.isValid(momentValue)) {
415
- const cellValue = dom.ketchup.dates.toDate(momentValue);
416
- const currentTotalValue = groupRow.group.totals[key];
417
- if (currentTotalValue) {
418
- let moments = [];
419
- moments.push(cellValue);
420
- moments.push(dom.ketchup.dates.format(currentTotalValue));
421
- groupRow.group.totals[key] =
422
- dom.ketchup.dates.format(dom.ketchup.dates.max(moments));
423
- }
424
- else {
425
- groupRow.group.totals[key] = cellValue;
426
- }
427
- // updating parents
428
- let parent = groupRow.group.parent;
429
- while (parent != null) {
430
- const currentParentMin = parent.group.totals[key];
431
- if (currentParentMin) {
432
- let moments = [];
433
- moments.push(cellValue);
434
- moments.push(dom.ketchup.dates.format(currentParentMin));
435
- parent.group.totals[key] =
436
- dom.ketchup.dates.format(dom.ketchup.dates.max(moments));
437
- }
438
- else {
439
- // first round
440
- parent.group.totals[key] = cellValue;
441
- }
442
- parent = parent.group.parent;
443
- }
444
- }
445
- }
446
- break;
447
- default: {
448
- if (totalMode.indexOf(TotalMode.MATH) != 0) {
449
- console.warn(`invalid total mode: ${totalMode}`);
450
- }
451
- break;
452
- }
453
- }
454
- }
455
- });
456
- }
457
- function adjustGroupsDistinct(groupRows, totals, distinctObj) {
458
- if (!groupRows || !totals) {
459
- return;
460
- }
461
- const keys = Object.keys(totals);
462
- if (groupRows.length === 0 || !groupRows[0].group || keys.length === 0) {
463
- return;
464
- }
465
- let toAdjustKeys = keys.filter((key) => TotalMode.DISTINCT === totals[key]);
466
- if (toAdjustKeys.length > 0) {
467
- groupRows
468
- .filter((groupRow) => groupRow.group.children.length > 0)
469
- .forEach((groupRow) => adjustGroupDistinct(groupRow, toAdjustKeys, distinctObj));
470
- }
471
- }
472
- function adjustGroupsAverageOrFormula(groupRows, type, totals) {
473
- if (!groupRows || !totals) {
474
- return;
475
- }
476
- const keys = Object.keys(totals);
477
- if (groupRows.length === 0 || !groupRows[0].group || keys.length === 0) {
478
- return;
479
- }
480
- let toAdjustKeys;
481
- if (type == TotalMode.AVERAGE) {
482
- toAdjustKeys = keys.filter((key) => TotalMode.AVERAGE === totals[key]);
483
- }
484
- if (type == TotalMode.MATH) {
485
- toAdjustKeys = keys.filter((key) => totals[key].indexOf(TotalMode.MATH) == 0);
486
- }
487
- if (toAdjustKeys.length > 0) {
488
- groupRows
489
- .filter((groupRow) => groupRow.group.children.length > 0)
490
- .forEach((groupRow) => adjustGroupAverageOrFormula(groupRow, type, toAdjustKeys, totals));
491
- }
492
- }
493
- function adjustGroupDistinct(groupRow, toAdjustKeys, distinctObj) {
494
- const children = groupRow.group.children;
495
- if (children.length === 0) {
496
- return;
497
- }
498
- if (children[0].group) {
499
- children.forEach((child) => {
500
- adjustGroupDistinct(child, toAdjustKeys, distinctObj);
501
- });
502
- }
503
- toAdjustKeys.forEach((key) => {
504
- const distinctList = distinctObj[groupRow.group.id][key];
505
- groupRow.group.totals[key] = new Set(distinctList).size;
506
- });
507
- }
508
- /**
509
- * @returns number of 'leaf' of group
510
- */
511
- function adjustGroupAverageOrFormula(row, type, toAdjustKeys, totals) {
512
- const children = row.group.children;
513
- if (children.length === 0) {
514
- return 0;
515
- }
516
- let numberOfLeaf = 0;
517
- // check if child is a grouping row
518
- if (children[0].group) {
519
- children.forEach((child) => {
520
- numberOfLeaf += adjustGroupAverageOrFormula(child, type, toAdjustKeys, totals);
521
- });
522
- }
523
- else {
524
- numberOfLeaf = children.length;
525
- }
526
- // adjust average/formulas
527
- toAdjustKeys.forEach((key) => {
528
- if (type == TotalMode.AVERAGE) {
529
- row.group.totals[key] =
530
- dom.ketchup.math.numberify(row.group.totals[key]) /
531
- numberOfLeaf;
532
- }
533
- if (type == TotalMode.MATH) {
534
- let formula = totals[key].substring(TotalMode.MATH.length);
535
- row.group.totals[key] = dom.ketchup.math.formulas.custom(formula, row.group.totals);
536
- }
537
- });
538
- return numberOfLeaf;
539
- }
540
- export function normalizeRows(columns, rows) {
541
- if (rows) {
542
- const normalizedrows = Object.assign(rows);
543
- rows.forEach((row) => {
544
- columns.forEach((column) => {
545
- if (row.cells) {
546
- const cell = row.cells[column.name];
547
- if (cell && column.obj && !cell.obj) {
548
- // cell.obj = Object.assign(column.obj);
549
- cell.obj = {
550
- t: column.obj.t,
551
- p: column.obj.p,
552
- k: cell.value,
553
- };
554
- }
555
- }
556
- });
557
- });
558
- return normalizedrows;
559
- }
560
- else {
561
- return undefined;
562
- }
563
- }
564
- export function calcTotals(rows = [], totals = {}) {
565
- if (dom.ketchup.objects.isEmptyJsObject(rows) ||
566
- dom.ketchup.objects.isEmptyJsObject(totals)) {
567
- return {};
568
- }
569
- const keys = Object.keys(totals);
570
- const footerRow = {};
571
- const dateColumns = new Array();
572
- // if there are only COUNT, no need to loop on rows
573
- let onlyCount = keys.length === 0 ||
574
- keys.every((key) => totals[key] === TotalMode.COUNT);
575
- if (onlyCount) {
576
- keys.forEach((columnName) => (footerRow[columnName] = rows.length));
577
- }
578
- else {
579
- let distinctObj = {};
580
- rows.forEach((r, index, array) => {
581
- keys.filter((key) => TotalMode.COUNT !== totals[key] &&
582
- totals[key].indexOf(TotalMode.MATH) != 0).forEach((key) => {
583
- // getting cell
584
- const cell = r.cells[key];
585
- if (cell) {
586
- if (totals[key] === TotalMode.DISTINCT) {
587
- let cellValue;
588
- if (dom.ketchup.objects.isNumber(cell.obj)) {
589
- cellValue = dom.ketchup.math.numberify(stringToNumber(cell.value));
590
- }
591
- else {
592
- cellValue = cell.value;
593
- }
594
- let distinctList = distinctObj[key];
595
- if (!distinctList) {
596
- // first round
597
- distinctObj[key] = [];
598
- distinctObj[key].push(cellValue);
599
- }
600
- else {
601
- // update the list
602
- distinctList.push(cellValue);
603
- }
604
- }
605
- else if (dom.ketchup.objects.isNumber(cell.obj)) {
606
- const cellValue = dom.ketchup.math.numberify(stringToNumber(cell.value));
607
- let currentFooterValue = footerRow[key];
608
- switch (true) {
609
- // TODO DRY the MIN and MAX functions
610
- case totals[key] === TotalMode.MIN:
611
- if (currentFooterValue) {
612
- footerRow[key] = Math.min(currentFooterValue, cellValue);
613
- }
614
- else {
615
- footerRow[key] = cellValue;
616
- }
617
- break;
618
- case totals[key] === TotalMode.MAX:
619
- if (currentFooterValue) {
620
- footerRow[key] = Math.max(currentFooterValue, cellValue);
621
- }
622
- else {
623
- footerRow[key] = cellValue;
624
- }
625
- break;
626
- default:
627
- // SUM
628
- currentFooterValue = footerRow[key] || 0;
629
- footerRow[key] =
630
- cellValue +
631
- dom.ketchup.math.numberify(currentFooterValue);
632
- }
633
- // TODO DRY the MIN and MAX functions
634
- }
635
- else if (dom.ketchup.objects.isDate(cell.obj)) {
636
- if (dateColumns.indexOf(key) == -1) {
637
- dateColumns.push(key);
638
- }
639
- const momentValue = dom.ketchup.dates.toDayjs(cell.value);
640
- if (dom.ketchup.dates.isValid(momentValue)) {
641
- const cellValue = dom.ketchup.dates.toDate(momentValue);
642
- const currentFooterValue = footerRow[key]
643
- ? dom.ketchup.dates.toDate(dom.ketchup.dates.toDayjs(footerRow[key]))
644
- : null;
645
- switch (true) {
646
- case totals[key] === TotalMode.MIN:
647
- if (currentFooterValue) {
648
- let moments = [];
649
- moments.push(cellValue);
650
- moments.push(currentFooterValue);
651
- footerRow[key] =
652
- dom.ketchup.dates.format(dom.ketchup.dates.min(moments), KupDatesFormats.ISO_DATE);
653
- }
654
- else {
655
- footerRow[key] =
656
- dom.ketchup.dates.format(cellValue, KupDatesFormats.ISO_DATE);
657
- }
658
- break;
659
- case totals[key] === TotalMode.MAX:
660
- if (currentFooterValue) {
661
- let moments = [];
662
- moments.push(cellValue);
663
- moments.push(currentFooterValue);
664
- footerRow[key] =
665
- dom.ketchup.dates.format(dom.ketchup.dates.max(moments), KupDatesFormats.ISO_DATE);
666
- }
667
- else {
668
- footerRow[key] =
669
- dom.ketchup.dates.format(cellValue, KupDatesFormats.ISO_DATE);
670
- }
671
- break;
672
- default:
673
- break;
674
- }
675
- }
676
- }
677
- }
678
- if (index === array.length - 1 &&
679
- totals[key] === TotalMode.DISTINCT) {
680
- // last round
681
- footerRow[key] = new Set(distinctObj[key]).size;
682
- distinctObj[key] = [];
683
- }
684
- });
685
- });
686
- }
687
- // fixing MATH, AVERAGE and COUNT
688
- for (let key of keys) {
689
- switch (true) {
690
- case totals[key] === TotalMode.AVERAGE:
691
- const sum = footerRow[key];
692
- if (sum && rows.length > 0) {
693
- footerRow[key] = sum / rows.length;
694
- }
695
- break;
696
- case totals[key] === TotalMode.COUNT:
697
- footerRow[key] = rows.length;
698
- break;
699
- case totals[key].indexOf(TotalMode.MATH) == 0:
700
- footerRow[key] = dom.ketchup.math.formulas.custom(totals[key].substring(TotalMode.MATH.length), footerRow);
701
- break;
702
- default:
703
- break;
704
- }
705
- if (footerRow[key]) {
706
- if (dateColumns.indexOf(key) != -1) {
707
- footerRow[key] = dom.ketchup.dates.format(footerRow[key]);
708
- }
709
- else if (isNumber(footerRow[key])) {
710
- footerRow[key] = +footerRow[key].toFixed(2);
711
- }
712
- }
713
- }
714
- return footerRow;
715
- }
716
- function adjustGroupId(row) {
717
- if (!row.group) {
718
- return;
719
- }
720
- let groupID = row.group.id;
721
- let parentRow = row.group.parent;
722
- while (parentRow !== null) {
723
- groupID = `${parentRow.group.id};${groupID}`;
724
- parentRow = parentRow.group.parent;
725
- }
726
- row.group.id = groupID;
727
- }
728
- export function paginateRows(rows, currentPage, rowsPerPage, areGrouped) {
729
- const start = currentPage * rowsPerPage - rowsPerPage;
730
- const end = start + Number(rowsPerPage);
731
- if (areGrouped == false) {
732
- return rows.slice(start, end);
733
- }
734
- let pagRows = [];
735
- _paginateRows(rows, pagRows, start, Number(rowsPerPage), 0);
736
- return pagRows;
737
- }
738
- function _paginateRows(rows, pagRows, start, rowsPerPage, ci) {
739
- let added = false;
740
- for (let i = 0; i < rows.length; i++) {
741
- let originalRow = rows[i];
742
- let row = cloneRow(rows[i]);
743
- if (originalRow.group != null &&
744
- originalRow.group.children != null &&
745
- originalRow.group.children.length > 0) {
746
- row.group.children = [];
747
- let retValue = _paginateRows(originalRow.group.children, row.group.children, start, rowsPerPage, ci);
748
- ci = retValue.ci;
749
- added = retValue.added;
750
- if (added == true) {
751
- pagRows[pagRows.length] = row;
752
- }
753
- }
754
- else {
755
- if (ci >= start) {
756
- pagRows[pagRows.length] = row;
757
- added = true;
758
- }
759
- ci++;
760
- }
761
- if (ci >= start + rowsPerPage) {
762
- break;
763
- }
764
- }
765
- return { ci: ci, added: added };
766
- }
767
- function cloneRow(row) {
768
- if (row == null) {
769
- return null;
770
- }
771
- else {
772
- return {
773
- id: row.id,
774
- cells: Object.assign({}, row.cells),
775
- actions: row.actions ? [...row.actions] : null,
776
- group: cloneRowGroup(row.group),
777
- clonedFrom: row,
778
- readOnly: row.readOnly,
779
- cssClass: row.cssClass,
780
- };
781
- }
782
- }
783
- function cloneRows(rows) {
784
- if (rows == null) {
785
- return null;
786
- }
787
- let cloned = [];
788
- for (let i = 0; i < rows.length; i++) {
789
- cloned[cloned.length] = cloneRow(rows[i]);
790
- }
791
- return cloned;
792
- }
793
- function cloneRowGroup(group) {
794
- if (group == null) {
795
- return null;
796
- }
797
- let cloned = {
798
- id: group.id,
799
- parent: Object.assign({}, group.parent),
800
- column: group.column,
801
- columnLabel: group.columnLabel,
802
- expanded: group.expanded,
803
- label: group.label,
804
- children: cloneRows(group.children),
805
- obj: Object.assign({}, group.obj),
806
- totals: Object.assign({}, group.totals),
807
- };
808
- return cloned;
809
- }
1
+ import { SortMode, TotalMode, } from './kup-data-table-declarations';
2
+ import { getCellValueForDisplay, getColumnByName, compareCell, } from '../../utils/cell-utils';
3
+ import { FiltersRows } from '../../utils/filters/filters-rows';
4
+ import { KupDatesFormats } from '../../managers/kup-dates/kup-dates-declarations';
5
+ const dom = document.documentElement;
6
+ export function sortRows(rows = [], sort = []) {
7
+ if (!rows || rows.length === 0) {
8
+ return [];
9
+ }
10
+ // check if row is group
11
+ if (rows[0].group) {
12
+ return sortGroupRows(rows, sort);
13
+ }
14
+ // sorting rows
15
+ if (!sort || sort.length === 0) {
16
+ // no sort -> return rows as they are
17
+ return rows;
18
+ }
19
+ // check multiple sort
20
+ const isMultiSort = sort.length > 1;
21
+ // sorting rows
22
+ return rows.slice(0).sort((r1, r2) => {
23
+ if (isMultiSort) {
24
+ for (let i = 0; i < sort.length; i++) {
25
+ const compare = compareRows(r1, r2, sort[i]);
26
+ if (compare !== 0) {
27
+ // not same row
28
+ return compare;
29
+ }
30
+ }
31
+ // same row
32
+ return 0;
33
+ }
34
+ else {
35
+ return compareRows(r1, r2, sort[0]);
36
+ }
37
+ });
38
+ }
39
+ function sortGroupRows(rows = [], sort = []) {
40
+ if (!rows || rows.length === 0) {
41
+ return [];
42
+ }
43
+ // getting columm group
44
+ const groupColumn = rows[0].group.column;
45
+ // check if column is in sort
46
+ let sortObject = getSortOnColumn(groupColumn, sort);
47
+ if (!sortObject) {
48
+ sortObject = {
49
+ column: groupColumn,
50
+ sortMode: SortMode.A,
51
+ };
52
+ }
53
+ // sorting rows
54
+ rows.sort((r1, r2) => {
55
+ // creating fake cells
56
+ const cell1 = {
57
+ obj: r1.group.obj,
58
+ value: r1.group.id,
59
+ };
60
+ const cell2 = {
61
+ obj: r2.group.obj,
62
+ value: r2.group.id,
63
+ };
64
+ return compareCell(cell1, cell2, sortObject.sortMode);
65
+ });
66
+ // sorting children
67
+ rows.forEach((row) => {
68
+ row.group.children = sortRows(row.group.children, sort);
69
+ });
70
+ return rows;
71
+ }
72
+ function getSortOnColumn(column = '', sort = []) {
73
+ if (!column || !sort || sort.length === 0) {
74
+ return null;
75
+ }
76
+ for (let sortObject of sort) {
77
+ if (sortObject.column === column) {
78
+ return sortObject;
79
+ }
80
+ }
81
+ return null;
82
+ }
83
+ function compareRows(r1, r2, sortObj) {
84
+ const cell1 = r1.cells[sortObj.column];
85
+ const cell2 = r2.cells[sortObj.column];
86
+ if (!cell1 && !cell2) {
87
+ return 0;
88
+ }
89
+ if (!cell1) {
90
+ return 1;
91
+ }
92
+ if (!cell2) {
93
+ return -1;
94
+ }
95
+ return compareCell(cell1, cell2, sortObj.sortMode);
96
+ }
97
+ //-------- FILTER FUNCTIONS --------
98
+ /**
99
+ * Filters the rows data of a data-table component according to the parameters
100
+ *
101
+ * @param rows - The data of the rows to filter.
102
+ * @param filters - The the filters for each column.
103
+ * @param globalFilter - A global filter applied to all columns.
104
+ * @param columns - The colmns on which the filter will take effect.
105
+ * @todo This function can be improved in its speed by a refactor in which from two different cycles of execution for
106
+ * single filters and global filter, all controls on a single column are done in a single cycle.
107
+ */
108
+ export function filterRows(rows = [], filters = {}, globalFilter = '', columns = [], columnFilters, filtersRows) {
109
+ if (filtersRows == null) {
110
+ filtersRows = new FiltersRows();
111
+ }
112
+ return filtersRows.filterRows(rows, filters, globalFilter, columns, columnFilters);
113
+ }
114
+ export function groupRows(columns = [], rows = [], groups = [], totals = {}) {
115
+ if (!rows) {
116
+ return [];
117
+ }
118
+ if (!groups || groups.length === 0 || !columns || columns.length === 0) {
119
+ return rows;
120
+ }
121
+ // Keeps label of the valid columns
122
+ const columnLabels = {};
123
+ // remove invalid groups and store column labels
124
+ const validGroups = groups.filter(({ column }) => {
125
+ for (let { name, title } of columns) {
126
+ if (name === column) {
127
+ // Store label of the columns
128
+ columnLabels[name] = title;
129
+ return true;
130
+ }
131
+ }
132
+ return false;
133
+ });
134
+ if (validGroups.length === 0) {
135
+ // no valid groups
136
+ return rows;
137
+ }
138
+ // creating root
139
+ const groupRows = [];
140
+ // obj used to calculate the group distinct value
141
+ let distinctObj = {};
142
+ rows.forEach((row) => {
143
+ // getting column name from first group
144
+ const columnName = validGroups[0].column;
145
+ // getting row value
146
+ const cell = row.cells[columnName];
147
+ if (cell) {
148
+ const column = getColumnByName(columns, columnName);
149
+ const cellValueForDisplay = getCellValueForDisplay(column, cell);
150
+ const cellValue = cell.value;
151
+ let groupRow = null;
152
+ // check in already in groupedRow
153
+ for (let currentGroupRow of groupRows) {
154
+ if (currentGroupRow.group.label === cellValueForDisplay) {
155
+ groupRow = currentGroupRow;
156
+ break;
157
+ }
158
+ }
159
+ if (groupRow === null) {
160
+ // create group row
161
+ groupRow = {
162
+ group: {
163
+ id: cellValue,
164
+ parent: null,
165
+ column: columnName,
166
+ columnLabel: columnLabels[columnName],
167
+ expanded: false,
168
+ label: cellValueForDisplay,
169
+ children: [],
170
+ obj: cell.obj,
171
+ totals: {},
172
+ },
173
+ cells: {},
174
+ };
175
+ // add group to list
176
+ groupRows.push(groupRow);
177
+ }
178
+ for (let i = 1; i < validGroups.length; i++) {
179
+ const group = validGroups[i];
180
+ // getting cell value
181
+ const tempCell = row.cells[group.column];
182
+ if (tempCell) {
183
+ const column = getColumnByName(columns, group.column);
184
+ const tempCellValueForDisplay = getCellValueForDisplay(column, tempCell);
185
+ const tempCellValue = tempCell.value;
186
+ // check if group already exists
187
+ let tempGroupingRow = null;
188
+ for (let j = 0; j < groupRow.group.children.length; j++) {
189
+ const childGroup = groupRow.group.children[j];
190
+ const groupLabel = childGroup.group.label;
191
+ if (groupLabel === tempCellValueForDisplay) {
192
+ tempGroupingRow = childGroup;
193
+ break;
194
+ }
195
+ }
196
+ if (!tempGroupingRow) {
197
+ tempGroupingRow = {
198
+ cells: {},
199
+ group: {
200
+ id: tempCellValue,
201
+ parent: groupRow,
202
+ column: group.column,
203
+ columnLabel: columnLabels[group.column],
204
+ children: [],
205
+ expanded: false,
206
+ label: tempCellValueForDisplay,
207
+ totals: {},
208
+ obj: tempCell.obj,
209
+ },
210
+ };
211
+ adjustGroupId(tempGroupingRow);
212
+ groupRow.group.children.push(tempGroupingRow);
213
+ }
214
+ groupRow = tempGroupingRow;
215
+ }
216
+ }
217
+ // adding row
218
+ groupRow.group.children.push(row);
219
+ updateGroupTotal(groupRow, totals, row, distinctObj);
220
+ }
221
+ });
222
+ adjustGroupsDistinct(groupRows, totals, distinctObj);
223
+ adjustGroupsAverageOrFormula(groupRows, TotalMode.AVERAGE, totals);
224
+ adjustGroupsAverageOrFormula(groupRows, TotalMode.MATH, totals);
225
+ return groupRows;
226
+ }
227
+ function updateGroupTotal(groupRow, totals, addedRow, distinctObj) {
228
+ if (!groupRow || !totals) {
229
+ return;
230
+ }
231
+ const keys = Object.keys(totals);
232
+ if (keys.length === 0) {
233
+ return;
234
+ }
235
+ keys.forEach((key) => {
236
+ const currentTotalValue = dom.ketchup.math.numberify(groupRow.group.totals[key] || 0);
237
+ const cell = addedRow.cells[key];
238
+ if (cell) {
239
+ let _isNumber = dom.ketchup.objects.isNumber(cell.obj);
240
+ const totalMode = totals[key];
241
+ switch (totalMode) {
242
+ case TotalMode.COUNT:
243
+ groupRow.group.totals[key] = currentTotalValue + 1;
244
+ // updating parents
245
+ let parent = groupRow.group.parent;
246
+ while (parent != null) {
247
+ const currentParentCount = parent.group.totals[key] || 0;
248
+ parent.group.totals[key] = currentParentCount + 1;
249
+ parent = parent.group.parent;
250
+ }
251
+ break;
252
+ case TotalMode.DISTINCT:
253
+ let cellValue;
254
+ if (_isNumber) {
255
+ cellValue = dom.ketchup.math.numberify(dom.ketchup.math.numberifySafe(cell.value));
256
+ }
257
+ else {
258
+ cellValue = cell.value;
259
+ }
260
+ let distinctGroup = distinctObj[groupRow.group.id];
261
+ if (!distinctGroup) {
262
+ distinctObj[groupRow.group.id] = {};
263
+ distinctObj[groupRow.group.id][key] = [];
264
+ distinctObj[groupRow.group.id][key].push(cellValue);
265
+ }
266
+ else {
267
+ let distinctList = distinctObj[groupRow.group.id][key];
268
+ if (!distinctList) {
269
+ // first round
270
+ distinctObj[groupRow.group.id][key] = [];
271
+ distinctObj[groupRow.group.id][key].push(cellValue);
272
+ }
273
+ else {
274
+ // update the list
275
+ distinctList.push(cellValue);
276
+ }
277
+ }
278
+ // updating parents
279
+ let distinctParent = groupRow.group.parent;
280
+ while (distinctParent != null) {
281
+ // get parent value
282
+ let distinctGroupParent = distinctObj[distinctParent.group.id];
283
+ if (!distinctGroupParent) {
284
+ distinctObj[distinctParent.group.id] = {};
285
+ distinctObj[distinctParent.group.id][key] = [];
286
+ distinctObj[distinctParent.group.id][key].push(cellValue);
287
+ }
288
+ else {
289
+ let distinctParentList = distinctObj[distinctParent.group.id][key];
290
+ if (!distinctParentList) {
291
+ // first round
292
+ distinctObj[distinctParent.group.id][key] = [];
293
+ distinctObj[distinctParent.group.id][key].push(cellValue);
294
+ }
295
+ else {
296
+ // update the list
297
+ distinctParentList.push(cellValue);
298
+ }
299
+ }
300
+ // continue
301
+ distinctParent = distinctParent.group.parent;
302
+ }
303
+ break;
304
+ case TotalMode.SUM:
305
+ case TotalMode.AVERAGE:
306
+ if (_isNumber) {
307
+ const cellValue = dom.ketchup.math.numberify(dom.ketchup.math.numberifySafe(cell.value));
308
+ groupRow.group.totals[key] =
309
+ cellValue + currentTotalValue;
310
+ // updating parents
311
+ let parent = groupRow.group.parent;
312
+ while (parent != null) {
313
+ const currentParentSum = dom.ketchup.math.numberify(parent.group.totals[key] || 0);
314
+ parent.group.totals[key] =
315
+ cellValue + currentParentSum;
316
+ parent = parent.group.parent;
317
+ }
318
+ }
319
+ break;
320
+ // TODO DRY the MIN and MAX functions
321
+ case TotalMode.MIN:
322
+ if (_isNumber) {
323
+ const currentTotalValue = groupRow.group.totals[key];
324
+ const cellValue = dom.ketchup.math.numberify(dom.ketchup.math.numberifySafe(cell.value));
325
+ if (currentTotalValue) {
326
+ groupRow.group.totals[key] = Math.min(currentTotalValue, cellValue);
327
+ }
328
+ else {
329
+ // first round
330
+ groupRow.group.totals[key] = cellValue;
331
+ }
332
+ // updating parents
333
+ let parent = groupRow.group.parent;
334
+ while (parent != null) {
335
+ const currentParentMin = parent.group.totals[key];
336
+ if (currentParentMin) {
337
+ parent.group.totals[key] = Math.min(currentParentMin, cellValue);
338
+ }
339
+ else {
340
+ // first round
341
+ parent.group.totals[key] = cellValue;
342
+ }
343
+ parent = parent.group.parent;
344
+ }
345
+ }
346
+ else if (dom.ketchup.objects.isDate(cell.obj)) {
347
+ const momentValue = cell.obj
348
+ ? dom.ketchup.objects.parseDate(cell.obj)
349
+ : dom.ketchup.dates.toDayjs(cell.value);
350
+ if (dom.ketchup.dates.isValid(momentValue)) {
351
+ const cellValue = dom.ketchup.dates.toDate(momentValue);
352
+ const currentTotalValue = groupRow.group.totals[key];
353
+ if (currentTotalValue) {
354
+ let moments = [];
355
+ moments.push(cellValue);
356
+ moments.push(dom.ketchup.dates.format(currentTotalValue));
357
+ groupRow.group.totals[key] =
358
+ dom.ketchup.dates.format(dom.ketchup.dates.min(moments));
359
+ }
360
+ else {
361
+ groupRow.group.totals[key] = cellValue;
362
+ }
363
+ // updating parents
364
+ let parent = groupRow.group.parent;
365
+ while (parent != null) {
366
+ const currentParentMin = parent.group.totals[key];
367
+ if (currentParentMin) {
368
+ let moments = [];
369
+ moments.push(cellValue);
370
+ moments.push(dom.ketchup.dates.format(currentParentMin));
371
+ parent.group.totals[key] =
372
+ dom.ketchup.dates.format(dom.ketchup.dates.min(moments));
373
+ }
374
+ else {
375
+ // first round
376
+ parent.group.totals[key] = cellValue;
377
+ }
378
+ parent = parent.group.parent;
379
+ }
380
+ }
381
+ }
382
+ break;
383
+ // TODO DRY the MIN and MAX functions
384
+ case TotalMode.MAX:
385
+ if (_isNumber) {
386
+ const currentTotalValue = groupRow.group.totals[key];
387
+ const cellValue = dom.ketchup.math.numberify(dom.ketchup.math.numberifySafe(cell.value));
388
+ if (currentTotalValue) {
389
+ groupRow.group.totals[key] = Math.max(currentTotalValue, cellValue);
390
+ }
391
+ else {
392
+ // first round
393
+ groupRow.group.totals[key] = cellValue;
394
+ }
395
+ // updating parents
396
+ let parent = groupRow.group.parent;
397
+ while (parent != null) {
398
+ const currentParentMax = parent.group.totals[key];
399
+ if (currentParentMax) {
400
+ parent.group.totals[key] = Math.max(currentParentMax, cellValue);
401
+ }
402
+ else {
403
+ // first round
404
+ parent.group.totals[key] = cellValue;
405
+ }
406
+ parent = parent.group.parent;
407
+ }
408
+ }
409
+ else if (dom.ketchup.objects.isDate(cell.obj)) {
410
+ const momentValue = cell.obj
411
+ ? dom.ketchup.objects.parseDate(cell.obj)
412
+ : dom.ketchup.dates.toDayjs(cell.value);
413
+ if (dom.ketchup.dates.isValid(momentValue)) {
414
+ const cellValue = dom.ketchup.dates.toDate(momentValue);
415
+ const currentTotalValue = groupRow.group.totals[key];
416
+ if (currentTotalValue) {
417
+ let moments = [];
418
+ moments.push(cellValue);
419
+ moments.push(dom.ketchup.dates.format(currentTotalValue));
420
+ groupRow.group.totals[key] =
421
+ dom.ketchup.dates.format(dom.ketchup.dates.max(moments));
422
+ }
423
+ else {
424
+ groupRow.group.totals[key] = cellValue;
425
+ }
426
+ // updating parents
427
+ let parent = groupRow.group.parent;
428
+ while (parent != null) {
429
+ const currentParentMin = parent.group.totals[key];
430
+ if (currentParentMin) {
431
+ let moments = [];
432
+ moments.push(cellValue);
433
+ moments.push(dom.ketchup.dates.format(currentParentMin));
434
+ parent.group.totals[key] =
435
+ dom.ketchup.dates.format(dom.ketchup.dates.max(moments));
436
+ }
437
+ else {
438
+ // first round
439
+ parent.group.totals[key] = cellValue;
440
+ }
441
+ parent = parent.group.parent;
442
+ }
443
+ }
444
+ }
445
+ break;
446
+ default: {
447
+ if (totalMode.indexOf(TotalMode.MATH) != 0) {
448
+ console.warn(`invalid total mode: ${totalMode}`);
449
+ }
450
+ break;
451
+ }
452
+ }
453
+ }
454
+ });
455
+ }
456
+ function adjustGroupsDistinct(groupRows, totals, distinctObj) {
457
+ if (!groupRows || !totals) {
458
+ return;
459
+ }
460
+ const keys = Object.keys(totals);
461
+ if (groupRows.length === 0 || !groupRows[0].group || keys.length === 0) {
462
+ return;
463
+ }
464
+ let toAdjustKeys = keys.filter((key) => TotalMode.DISTINCT === totals[key]);
465
+ if (toAdjustKeys.length > 0) {
466
+ groupRows
467
+ .filter((groupRow) => groupRow.group.children.length > 0)
468
+ .forEach((groupRow) => adjustGroupDistinct(groupRow, toAdjustKeys, distinctObj));
469
+ }
470
+ }
471
+ function adjustGroupsAverageOrFormula(groupRows, type, totals) {
472
+ if (!groupRows || !totals) {
473
+ return;
474
+ }
475
+ const keys = Object.keys(totals);
476
+ if (groupRows.length === 0 || !groupRows[0].group || keys.length === 0) {
477
+ return;
478
+ }
479
+ let toAdjustKeys;
480
+ if (type == TotalMode.AVERAGE) {
481
+ toAdjustKeys = keys.filter((key) => TotalMode.AVERAGE === totals[key]);
482
+ }
483
+ if (type == TotalMode.MATH) {
484
+ toAdjustKeys = keys.filter((key) => totals[key].indexOf(TotalMode.MATH) == 0);
485
+ }
486
+ if (toAdjustKeys.length > 0) {
487
+ groupRows
488
+ .filter((groupRow) => groupRow.group.children.length > 0)
489
+ .forEach((groupRow) => adjustGroupAverageOrFormula(groupRow, type, toAdjustKeys, totals));
490
+ }
491
+ }
492
+ function adjustGroupDistinct(groupRow, toAdjustKeys, distinctObj) {
493
+ const children = groupRow.group.children;
494
+ if (children.length === 0) {
495
+ return;
496
+ }
497
+ if (children[0].group) {
498
+ children.forEach((child) => {
499
+ adjustGroupDistinct(child, toAdjustKeys, distinctObj);
500
+ });
501
+ }
502
+ toAdjustKeys.forEach((key) => {
503
+ const distinctList = distinctObj[groupRow.group.id][key];
504
+ groupRow.group.totals[key] = new Set(distinctList).size;
505
+ });
506
+ }
507
+ /**
508
+ * @returns number of 'leaf' of group
509
+ */
510
+ function adjustGroupAverageOrFormula(row, type, toAdjustKeys, totals) {
511
+ const children = row.group.children;
512
+ if (children.length === 0) {
513
+ return 0;
514
+ }
515
+ let numberOfLeaf = 0;
516
+ // check if child is a grouping row
517
+ if (children[0].group) {
518
+ children.forEach((child) => {
519
+ numberOfLeaf += adjustGroupAverageOrFormula(child, type, toAdjustKeys, totals);
520
+ });
521
+ }
522
+ else {
523
+ numberOfLeaf = children.length;
524
+ }
525
+ // adjust average/formulas
526
+ toAdjustKeys.forEach((key) => {
527
+ if (type == TotalMode.AVERAGE) {
528
+ row.group.totals[key] =
529
+ dom.ketchup.math.numberify(row.group.totals[key]) /
530
+ numberOfLeaf;
531
+ }
532
+ if (type == TotalMode.MATH) {
533
+ let formula = totals[key].substring(TotalMode.MATH.length);
534
+ row.group.totals[key] = dom.ketchup.math.formulas.custom(formula, row.group.totals);
535
+ }
536
+ });
537
+ return numberOfLeaf;
538
+ }
539
+ export function normalizeRows(columns, rows) {
540
+ if (rows) {
541
+ const normalizedrows = Object.assign(rows);
542
+ rows.forEach((row) => {
543
+ columns.forEach((column) => {
544
+ if (row.cells) {
545
+ const cell = row.cells[column.name];
546
+ if (cell && column.obj && !cell.obj) {
547
+ // cell.obj = Object.assign(column.obj);
548
+ cell.obj = {
549
+ t: column.obj.t,
550
+ p: column.obj.p,
551
+ k: cell.value,
552
+ };
553
+ }
554
+ }
555
+ });
556
+ });
557
+ return normalizedrows;
558
+ }
559
+ else {
560
+ return undefined;
561
+ }
562
+ }
563
+ export function calcTotals(rows = [], totals = {}) {
564
+ if (dom.ketchup.objects.isEmptyJsObject(rows) ||
565
+ dom.ketchup.objects.isEmptyJsObject(totals)) {
566
+ return {};
567
+ }
568
+ const keys = Object.keys(totals);
569
+ const footerRow = {};
570
+ const dateColumns = new Array();
571
+ // if there are only COUNT, no need to loop on rows
572
+ let onlyCount = keys.length === 0 ||
573
+ keys.every((key) => totals[key] === TotalMode.COUNT);
574
+ if (onlyCount) {
575
+ keys.forEach((columnName) => (footerRow[columnName] = rows.length));
576
+ }
577
+ else {
578
+ let distinctObj = {};
579
+ rows.forEach((r, index, array) => {
580
+ keys.filter((key) => TotalMode.COUNT !== totals[key] &&
581
+ totals[key].indexOf(TotalMode.MATH) != 0).forEach((key) => {
582
+ // getting cell
583
+ const cell = r.cells[key];
584
+ if (cell) {
585
+ if (totals[key] === TotalMode.DISTINCT) {
586
+ let cellValue;
587
+ if (dom.ketchup.objects.isNumber(cell.obj)) {
588
+ cellValue = dom.ketchup.math.numberify(dom.ketchup.math.numberifySafe(cell.value));
589
+ }
590
+ else {
591
+ cellValue = cell.value;
592
+ }
593
+ let distinctList = distinctObj[key];
594
+ if (!distinctList) {
595
+ // first round
596
+ distinctObj[key] = [];
597
+ distinctObj[key].push(cellValue);
598
+ }
599
+ else {
600
+ // update the list
601
+ distinctList.push(cellValue);
602
+ }
603
+ }
604
+ else if (dom.ketchup.objects.isNumber(cell.obj)) {
605
+ const cellValue = dom.ketchup.math.numberify(dom.ketchup.math.numberifySafe(cell.value));
606
+ let currentFooterValue = footerRow[key];
607
+ switch (true) {
608
+ // TODO DRY the MIN and MAX functions
609
+ case totals[key] === TotalMode.MIN:
610
+ if (currentFooterValue) {
611
+ footerRow[key] = Math.min(currentFooterValue, cellValue);
612
+ }
613
+ else {
614
+ footerRow[key] = cellValue;
615
+ }
616
+ break;
617
+ case totals[key] === TotalMode.MAX:
618
+ if (currentFooterValue) {
619
+ footerRow[key] = Math.max(currentFooterValue, cellValue);
620
+ }
621
+ else {
622
+ footerRow[key] = cellValue;
623
+ }
624
+ break;
625
+ default:
626
+ // SUM
627
+ currentFooterValue = footerRow[key] || 0;
628
+ footerRow[key] =
629
+ cellValue +
630
+ dom.ketchup.math.numberify(currentFooterValue);
631
+ }
632
+ // TODO DRY the MIN and MAX functions
633
+ }
634
+ else if (dom.ketchup.objects.isDate(cell.obj)) {
635
+ if (dateColumns.indexOf(key) == -1) {
636
+ dateColumns.push(key);
637
+ }
638
+ const momentValue = dom.ketchup.dates.toDayjs(cell.value);
639
+ if (dom.ketchup.dates.isValid(momentValue)) {
640
+ const cellValue = dom.ketchup.dates.toDate(momentValue);
641
+ const currentFooterValue = footerRow[key]
642
+ ? dom.ketchup.dates.toDate(dom.ketchup.dates.toDayjs(footerRow[key]))
643
+ : null;
644
+ switch (true) {
645
+ case totals[key] === TotalMode.MIN:
646
+ if (currentFooterValue) {
647
+ let moments = [];
648
+ moments.push(cellValue);
649
+ moments.push(currentFooterValue);
650
+ footerRow[key] =
651
+ dom.ketchup.dates.format(dom.ketchup.dates.min(moments), KupDatesFormats.ISO_DATE);
652
+ }
653
+ else {
654
+ footerRow[key] =
655
+ dom.ketchup.dates.format(cellValue, KupDatesFormats.ISO_DATE);
656
+ }
657
+ break;
658
+ case totals[key] === TotalMode.MAX:
659
+ if (currentFooterValue) {
660
+ let moments = [];
661
+ moments.push(cellValue);
662
+ moments.push(currentFooterValue);
663
+ footerRow[key] =
664
+ dom.ketchup.dates.format(dom.ketchup.dates.max(moments), KupDatesFormats.ISO_DATE);
665
+ }
666
+ else {
667
+ footerRow[key] =
668
+ dom.ketchup.dates.format(cellValue, KupDatesFormats.ISO_DATE);
669
+ }
670
+ break;
671
+ default:
672
+ break;
673
+ }
674
+ }
675
+ }
676
+ }
677
+ if (index === array.length - 1 &&
678
+ totals[key] === TotalMode.DISTINCT) {
679
+ // last round
680
+ footerRow[key] = new Set(distinctObj[key]).size;
681
+ distinctObj[key] = [];
682
+ }
683
+ });
684
+ });
685
+ }
686
+ // fixing MATH, AVERAGE and COUNT
687
+ for (let key of keys) {
688
+ switch (true) {
689
+ case totals[key] === TotalMode.AVERAGE:
690
+ const sum = footerRow[key];
691
+ if (sum && rows.length > 0) {
692
+ footerRow[key] = sum / rows.length;
693
+ }
694
+ break;
695
+ case totals[key] === TotalMode.COUNT:
696
+ footerRow[key] = rows.length;
697
+ break;
698
+ case totals[key].indexOf(TotalMode.MATH) == 0:
699
+ footerRow[key] = dom.ketchup.math.formulas.custom(totals[key].substring(TotalMode.MATH.length), footerRow);
700
+ break;
701
+ default:
702
+ break;
703
+ }
704
+ if (footerRow[key]) {
705
+ if (dateColumns.indexOf(key) != -1) {
706
+ footerRow[key] = dom.ketchup.dates.format(footerRow[key]);
707
+ }
708
+ else if (dom.ketchup.math.isNumber(footerRow[key])) {
709
+ footerRow[key] = +footerRow[key].toFixed(2);
710
+ }
711
+ }
712
+ }
713
+ return footerRow;
714
+ }
715
+ function adjustGroupId(row) {
716
+ if (!row.group) {
717
+ return;
718
+ }
719
+ let groupID = row.group.id;
720
+ let parentRow = row.group.parent;
721
+ while (parentRow !== null) {
722
+ groupID = `${parentRow.group.id};${groupID}`;
723
+ parentRow = parentRow.group.parent;
724
+ }
725
+ row.group.id = groupID;
726
+ }
727
+ export function paginateRows(rows, currentPage, rowsPerPage, areGrouped) {
728
+ const start = currentPage * rowsPerPage - rowsPerPage;
729
+ const end = start + Number(rowsPerPage);
730
+ if (areGrouped == false) {
731
+ return rows.slice(start, end);
732
+ }
733
+ let pagRows = [];
734
+ _paginateRows(rows, pagRows, start, Number(rowsPerPage), 0);
735
+ return pagRows;
736
+ }
737
+ function _paginateRows(rows, pagRows, start, rowsPerPage, ci) {
738
+ let added = false;
739
+ for (let i = 0; i < rows.length; i++) {
740
+ let originalRow = rows[i];
741
+ let row = cloneRow(rows[i]);
742
+ if (originalRow.group != null &&
743
+ originalRow.group.children != null &&
744
+ originalRow.group.children.length > 0) {
745
+ row.group.children = [];
746
+ let retValue = _paginateRows(originalRow.group.children, row.group.children, start, rowsPerPage, ci);
747
+ ci = retValue.ci;
748
+ added = retValue.added;
749
+ if (added == true) {
750
+ pagRows[pagRows.length] = row;
751
+ }
752
+ }
753
+ else {
754
+ if (ci >= start) {
755
+ pagRows[pagRows.length] = row;
756
+ added = true;
757
+ }
758
+ ci++;
759
+ }
760
+ if (ci >= start + rowsPerPage) {
761
+ break;
762
+ }
763
+ }
764
+ return { ci: ci, added: added };
765
+ }
766
+ function cloneRow(row) {
767
+ if (row == null) {
768
+ return null;
769
+ }
770
+ else {
771
+ return {
772
+ id: row.id,
773
+ cells: Object.assign({}, row.cells),
774
+ actions: row.actions ? [...row.actions] : null,
775
+ group: cloneRowGroup(row.group),
776
+ clonedFrom: row,
777
+ readOnly: row.readOnly,
778
+ cssClass: row.cssClass,
779
+ };
780
+ }
781
+ }
782
+ function cloneRows(rows) {
783
+ if (rows == null) {
784
+ return null;
785
+ }
786
+ let cloned = [];
787
+ for (let i = 0; i < rows.length; i++) {
788
+ cloned[cloned.length] = cloneRow(rows[i]);
789
+ }
790
+ return cloned;
791
+ }
792
+ function cloneRowGroup(group) {
793
+ if (group == null) {
794
+ return null;
795
+ }
796
+ let cloned = {
797
+ id: group.id,
798
+ parent: Object.assign({}, group.parent),
799
+ column: group.column,
800
+ columnLabel: group.columnLabel,
801
+ expanded: group.expanded,
802
+ label: group.label,
803
+ children: cloneRows(group.children),
804
+ obj: Object.assign({}, group.obj),
805
+ totals: Object.assign({}, group.totals),
806
+ };
807
+ return cloned;
808
+ }