@sme.up/ketchup 8.0.2 → 8.2.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-9524bbf7.js → f-button-797c8e7f.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-bcb75ade.js → f-cell-9c8ed48b.js} +478 -472
  6. package/dist/cjs/{f-checkbox-1148e791.js → f-checkbox-cff77b2c.js} +23 -23
  7. package/dist/cjs/{f-chip-2249b386.js → f-chip-318863df.js} +125 -125
  8. package/dist/cjs/{f-image-47d74999.js → f-image-f10144e9.js} +107 -107
  9. package/dist/cjs/{f-paginator-utils-b0a9ae5f.js → f-paginator-utils-8c44a37b.js} +1548 -1548
  10. package/dist/cjs/{f-text-field-579c0fc0.js → f-text-field-9610c198.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-a9a3b467.js} +93 -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 +17557 -17508
  16. package/dist/cjs/kup-box.cjs.entry.js +1289 -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 +7228 -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-85b2a756.js → kup-manager-7747decd.js} +7287 -7287
  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 +1185 -1027
  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 +45 -0
  40. package/dist/collection/assets/echart.js +176 -0
  41. package/dist/collection/assets/index.js +4 -0
  42. package/dist/collection/assets/planner.js +8189 -0
  43. package/dist/collection/collection-manifest.json +2 -2
  44. package/dist/collection/components/kup-accordion/kup-accordion-declarations.js +10 -10
  45. package/dist/collection/components/kup-accordion/kup-accordion.js +445 -445
  46. package/dist/collection/components/kup-autocomplete/kup-autocomplete-declarations.js +27 -27
  47. package/dist/collection/components/kup-autocomplete/kup-autocomplete.js +908 -908
  48. package/dist/collection/components/kup-badge/kup-badge-declarations.js +10 -10
  49. package/dist/collection/components/kup-badge/kup-badge.js +276 -276
  50. package/dist/collection/components/kup-box/kup-box-declarations.js +33 -33
  51. package/dist/collection/components/kup-box/kup-box-state.js +15 -15
  52. package/dist/collection/components/kup-box/kup-box.js +2134 -2079
  53. package/dist/collection/components/kup-button/kup-button-declarations.js +18 -18
  54. package/dist/collection/components/kup-button/kup-button.js +580 -580
  55. package/dist/collection/components/kup-button-list/kup-button-list-declarations.js +13 -13
  56. package/dist/collection/components/kup-button-list/kup-button-list.e2e.js +144 -0
  57. package/dist/collection/components/kup-button-list/kup-button-list.js +527 -527
  58. package/dist/collection/components/kup-calendar/kup-calendar-declarations.js +35 -35
  59. package/dist/collection/components/kup-calendar/kup-calendar.css +0 -4
  60. package/dist/collection/components/kup-calendar/kup-calendar.js +690 -690
  61. package/dist/collection/components/kup-card/box/kup-card-box.js +227 -227
  62. package/dist/collection/components/kup-card/built-in/kup-card-built-in.js +56 -56
  63. package/dist/collection/components/kup-card/built-in/kup-card-calendar.js +393 -393
  64. package/dist/collection/components/kup-card/built-in/kup-card-clock.js +308 -308
  65. package/dist/collection/components/kup-card/built-in/kup-card-column-drop-menu.js +165 -165
  66. package/dist/collection/components/kup-card/built-in/kup-card-message-box.js +10 -10
  67. package/dist/collection/components/kup-card/built-in/kup-card-numeric.js +118 -118
  68. package/dist/collection/components/kup-card/collapsible/kup-card-collapsible.js +64 -64
  69. package/dist/collection/components/kup-card/dialog/kup-card-dialog.js +217 -217
  70. package/dist/collection/components/kup-card/free/kup-card-free.js +22 -22
  71. package/dist/collection/components/kup-card/kup-card-declarations.js +98 -98
  72. package/dist/collection/components/kup-card/kup-card-helper.js +196 -196
  73. package/dist/collection/components/kup-card/kup-card.js +809 -809
  74. package/dist/collection/components/kup-card/scalable/kup-card-scalable.js +251 -251
  75. package/dist/collection/components/kup-card/standard/kup-card-standard.js +593 -593
  76. package/dist/collection/components/kup-cell/kup-cell-declarations.js +11 -11
  77. package/dist/collection/components/kup-cell/kup-cell.js +401 -401
  78. package/dist/collection/components/kup-chart/kup-chart-builder.js +93 -93
  79. package/dist/collection/components/kup-chart/kup-chart-declarations.js +49 -49
  80. package/dist/collection/components/kup-chart/kup-chart.js +1080 -1080
  81. package/dist/collection/components/kup-checkbox/kup-checkbox-declarations.js +13 -13
  82. package/dist/collection/components/kup-checkbox/kup-checkbox.js +433 -433
  83. package/dist/collection/components/kup-chip/kup-chip-declarations.js +12 -12
  84. package/dist/collection/components/kup-chip/kup-chip.js +558 -558
  85. package/dist/collection/components/kup-color-picker/kup-color-picker-declarations.js +12 -12
  86. package/dist/collection/components/kup-color-picker/kup-color-picker.js +546 -546
  87. package/dist/collection/components/kup-combobox/kup-combobox-declarations.js +15 -15
  88. package/dist/collection/components/kup-combobox/kup-combobox.js +821 -821
  89. package/dist/collection/components/kup-dash/kup-dash.js +171 -171
  90. package/dist/collection/components/kup-dash-list/kup-dash-list.js +327 -327
  91. package/dist/collection/components/kup-dashboard/kup-dashboard-declarations.js +10 -10
  92. package/dist/collection/components/kup-dashboard/kup-dashboard.js +588 -588
  93. package/dist/collection/components/kup-data-table/kup-data-table-declarations.js +157 -156
  94. package/dist/collection/components/kup-data-table/kup-data-table-helper.js +808 -808
  95. package/dist/collection/components/kup-data-table/kup-data-table-state.js +36 -36
  96. package/dist/collection/components/kup-data-table/kup-data-table.css +1 -0
  97. package/dist/collection/components/kup-data-table/kup-data-table.js +5572 -5527
  98. package/dist/collection/components/kup-date-picker/kup-date-picker-declarations.js +18 -18
  99. package/dist/collection/components/kup-date-picker/kup-date-picker.js +816 -816
  100. package/dist/collection/components/kup-dialog/kup-dialog-declarations.js +14 -14
  101. package/dist/collection/components/kup-dialog/kup-dialog.js +467 -467
  102. package/dist/collection/components/kup-drawer/kup-drawer-declarations.js +10 -10
  103. package/dist/collection/components/kup-drawer/kup-drawer.e2e.js +9 -0
  104. package/dist/collection/components/kup-drawer/kup-drawer.js +383 -383
  105. package/dist/collection/components/kup-dropdown-button/kup-dropdown-button-declarations.js +18 -18
  106. package/dist/collection/components/kup-dropdown-button/kup-dropdown-button.js +800 -800
  107. package/dist/collection/components/kup-echart/kup-echart-declarations.js +53 -52
  108. package/dist/collection/components/kup-echart/kup-echart.js +1519 -1437
  109. package/dist/collection/components/kup-family-tree/kup-family-tree-declarations.js +15 -15
  110. package/dist/collection/components/kup-family-tree/kup-family-tree.js +829 -829
  111. package/dist/collection/components/kup-form/kup-form-declarations.js +29 -29
  112. package/dist/collection/components/kup-form/kup-form.js +734 -731
  113. package/dist/collection/components/kup-gauge/kup-gauge-declarations.js +26 -26
  114. package/dist/collection/components/kup-gauge/kup-gauge.js +764 -764
  115. package/dist/collection/components/kup-grid/kup-grid-declarations.js +10 -10
  116. package/dist/collection/components/kup-grid/kup-grid.js +253 -253
  117. package/dist/collection/components/kup-iframe/kup-iframe-declarations.js +10 -10
  118. package/dist/collection/components/kup-iframe/kup-iframe.js +281 -281
  119. package/dist/collection/components/kup-image/canvas/kup-image-canvas-declarations.js +184 -184
  120. package/dist/collection/components/kup-image/canvas/kup-image-canvas-helper.js +19 -19
  121. package/dist/collection/components/kup-image/canvas/kup-image-canvas.js +225 -225
  122. package/dist/collection/components/kup-image/kup-image-declarations.js +16 -16
  123. package/dist/collection/components/kup-image/kup-image.js +491 -491
  124. package/dist/collection/components/kup-image-list/kup-image-list-declarations.js +10 -10
  125. package/dist/collection/components/kup-image-list/kup-image-list-state.js +9 -9
  126. package/dist/collection/components/kup-image-list/kup-image-list.js +533 -533
  127. package/dist/collection/components/kup-lazy/kup-lazy-declarations.js +20 -20
  128. package/dist/collection/components/kup-lazy/kup-lazy.js +430 -430
  129. package/dist/collection/components/kup-list/kup-list-declarations.js +34 -34
  130. package/dist/collection/components/kup-list/kup-list-helper.js +121 -121
  131. package/dist/collection/components/kup-list/kup-list.js +949 -949
  132. package/dist/collection/components/kup-magic-box/kup-magic-box-declarations.js +23 -23
  133. package/dist/collection/components/kup-magic-box/kup-magic-box.js +431 -431
  134. package/dist/collection/components/kup-nav-bar/kup-nav-bar-declarations.js +21 -21
  135. package/dist/collection/components/kup-nav-bar/kup-nav-bar.js +315 -315
  136. package/dist/collection/components/kup-numeric-picker/kup-numeric-picker-declarations.js +16 -16
  137. package/dist/collection/components/kup-numeric-picker/kup-numeric-picker.js +864 -864
  138. package/dist/collection/components/kup-photo-frame/kup-photo-frame-declarations.js +10 -10
  139. package/dist/collection/components/kup-photo-frame/kup-photo-frame.js +372 -372
  140. package/dist/collection/components/kup-planner/kup-planner-declarations.js +83 -76
  141. package/dist/collection/components/kup-planner/kup-planner-helper.js +54 -54
  142. package/dist/collection/components/kup-planner/kup-planner-state.js +16 -0
  143. package/dist/collection/components/kup-planner/kup-planner.css +2 -2
  144. package/dist/collection/components/kup-planner/kup-planner.js +1732 -1352
  145. package/dist/collection/components/kup-probe/kup-probe.js +358 -358
  146. package/dist/collection/components/kup-progress-bar/kup-progress-bar-declarations.js +14 -14
  147. package/dist/collection/components/kup-progress-bar/kup-progress-bar.js +405 -405
  148. package/dist/collection/components/kup-qlik/kup-qlik-declarations.js +1 -1
  149. package/dist/collection/components/kup-qlik/kup-qlik.js +326 -326
  150. package/dist/collection/components/kup-radio/kup-radio-declarations.js +12 -12
  151. package/dist/collection/components/kup-radio/kup-radio.js +398 -398
  152. package/dist/collection/components/kup-rating/kup-rating-declarations.js +11 -11
  153. package/dist/collection/components/kup-rating/kup-rating.js +332 -332
  154. package/dist/collection/components/kup-snackbar/kup-snackbar-declarations.js +13 -13
  155. package/dist/collection/components/kup-snackbar/kup-snackbar.js +389 -389
  156. package/dist/collection/components/kup-spinner/kup-spinner-declarations.js +15 -15
  157. package/dist/collection/components/kup-spinner/kup-spinner.js +468 -468
  158. package/dist/collection/components/kup-state/kup-state.js +1 -1
  159. package/dist/collection/components/kup-state/kup-store.js +1 -1
  160. package/dist/collection/components/kup-state/mock-store.js +13 -13
  161. package/dist/collection/components/kup-switch/kup-switch-declarations.js +12 -12
  162. package/dist/collection/components/kup-switch/kup-switch.js +402 -402
  163. package/dist/collection/components/kup-tab-bar/kup-tab-bar-declarations.js +10 -10
  164. package/dist/collection/components/kup-tab-bar/kup-tab-bar.js +443 -443
  165. package/dist/collection/components/kup-text-field/kup-text-field-declarations.js +35 -35
  166. package/dist/collection/components/kup-text-field/kup-text-field.js +1193 -1189
  167. package/dist/collection/components/kup-time-picker/kup-time-picker-declarations.js +14 -14
  168. package/dist/collection/components/kup-time-picker/kup-time-picker.js +921 -921
  169. package/dist/collection/components/kup-tree/kup-tree-declarations.js +43 -43
  170. package/dist/collection/components/kup-tree/kup-tree-faker.js +305 -305
  171. package/dist/collection/components/kup-tree/kup-tree-state.js +15 -15
  172. package/dist/collection/components/kup-tree/kup-tree.js +2479 -2479
  173. package/dist/collection/f-components/f-button/f-button-declarations.js +17 -17
  174. package/dist/collection/f-components/f-button/f-button.js +91 -91
  175. package/dist/collection/f-components/f-cell/f-cell-declarations.js +158 -158
  176. package/dist/collection/f-components/f-cell/f-cell.js +435 -429
  177. package/dist/collection/f-components/f-checkbox/f-checkbox-declarations.js +1 -1
  178. package/dist/collection/f-components/f-checkbox/f-checkbox.js +16 -16
  179. package/dist/collection/f-components/f-chip/f-chip-declarations.js +15 -15
  180. package/dist/collection/f-components/f-chip/f-chip.js +101 -101
  181. package/dist/collection/f-components/f-image/f-image-declarations.js +8 -8
  182. package/dist/collection/f-components/f-image/f-image.js +100 -100
  183. package/dist/collection/f-components/f-paginator/f-paginator-declarations.js +5 -5
  184. package/dist/collection/f-components/f-paginator/f-paginator-utils.js +28 -28
  185. package/dist/collection/f-components/f-paginator/f-paginator.js +86 -86
  186. package/dist/collection/f-components/f-switch/f-switch-declarations.js +1 -1
  187. package/dist/collection/f-components/f-switch/f-switch.js +12 -12
  188. package/dist/collection/f-components/f-text-field/f-text-field-declarations.js +1 -1
  189. package/dist/collection/f-components/f-text-field/f-text-field-mdc.js +29 -29
  190. package/dist/collection/f-components/f-text-field/f-text-field.js +151 -151
  191. package/dist/collection/managers/kup-data/kup-data-cell-helper.js +86 -86
  192. package/dist/collection/managers/kup-data/kup-data-column-helper.js +300 -300
  193. package/dist/collection/managers/kup-data/kup-data-declarations.js +10 -10
  194. package/dist/collection/managers/kup-data/kup-data-node-helper.js +165 -165
  195. package/dist/collection/managers/kup-data/kup-data-row-helper.js +28 -28
  196. package/dist/collection/managers/kup-data/kup-data.js +499 -499
  197. package/dist/collection/managers/kup-dates/kup-dates-declarations.js +43 -43
  198. package/dist/collection/managers/kup-dates/kup-dates.js +654 -654
  199. package/dist/collection/managers/kup-debug/kup-debug-declarations.js +20 -20
  200. package/dist/collection/managers/kup-debug/kup-debug.js +670 -670
  201. package/dist/collection/managers/kup-dynamic-position/kup-dynamic-position-declarations.js +27 -27
  202. package/dist/collection/managers/kup-dynamic-position/kup-dynamic-position.js +244 -244
  203. package/dist/collection/managers/kup-interact/kup-interact-declarations.js +49 -49
  204. package/dist/collection/managers/kup-interact/kup-interact.js +397 -397
  205. package/dist/collection/managers/kup-language/kup-language-declarations.js +211 -211
  206. package/dist/collection/managers/kup-language/kup-language.js +151 -151
  207. package/dist/collection/managers/kup-manager/kup-manager-declarations.js +1 -1
  208. package/dist/collection/managers/kup-manager/kup-manager.js +303 -303
  209. package/dist/collection/managers/kup-math/kup-math-declarations.js +13 -13
  210. package/dist/collection/managers/kup-math/kup-math-helper.js +39 -39
  211. package/dist/collection/managers/kup-math/kup-math.js +413 -413
  212. package/dist/collection/managers/kup-objects/kup-objects-declarations.js +1 -1
  213. package/dist/collection/managers/kup-objects/kup-objects.js +387 -387
  214. package/dist/collection/managers/kup-scroll-on-hover/kup-scroll-on-hover-declarations.js +10 -10
  215. package/dist/collection/managers/kup-scroll-on-hover/kup-scroll-on-hover.js +334 -334
  216. package/dist/collection/managers/kup-search/kup-search-declarations.js +1 -1
  217. package/dist/collection/managers/kup-search/kup-search.js +75 -75
  218. package/dist/collection/managers/kup-theme/kup-theme-declarations.js +177 -177
  219. package/dist/collection/managers/kup-theme/kup-theme.js +715 -715
  220. package/dist/collection/managers/kup-toolbar/kup-toolbar-declarations.js +9 -9
  221. package/dist/collection/managers/kup-toolbar/kup-toolbar.js +111 -111
  222. package/dist/collection/managers/kup-tooltip/kup-tooltip-declarations.js +1 -1
  223. package/dist/collection/managers/kup-tooltip/kup-tooltip.js +229 -229
  224. package/dist/collection/types/GenericTypes.js +54 -54
  225. package/dist/collection/utils/cell-utils.js +156 -156
  226. package/dist/collection/utils/filters/filters-column-menu.js +360 -360
  227. package/dist/collection/utils/filters/filters-declarations.js +25 -25
  228. package/dist/collection/utils/filters/filters-rows.js +238 -238
  229. package/dist/collection/utils/filters/filters-tree-items.js +117 -117
  230. package/dist/collection/utils/filters/filters.js +287 -287
  231. package/dist/collection/utils/kup-column-menu/kup-column-menu-declarations.js +20 -20
  232. package/dist/collection/utils/kup-column-menu/kup-column-menu.js +751 -751
  233. package/dist/collection/utils/utils.js +84 -80
  234. package/dist/collection/variables/GenericVariables.js +4 -4
  235. package/dist/components/kup-accordion.js +355 -355
  236. package/dist/components/kup-autocomplete2.js +31821 -31763
  237. package/dist/components/kup-box2.js +1463 -1405
  238. package/dist/components/kup-calendar.js +9788 -10280
  239. package/dist/components/kup-card.js +1 -1
  240. package/dist/components/kup-cell.js +325 -325
  241. package/dist/components/kup-chart.js +1 -1
  242. package/dist/components/kup-checkbox.js +1 -1
  243. package/dist/components/kup-chip.js +1 -1
  244. package/dist/components/kup-color-picker.js +1 -1
  245. package/dist/components/kup-combobox.js +1 -1
  246. package/dist/components/kup-dash-list.js +276 -276
  247. package/dist/components/kup-dash2.js +220 -220
  248. package/dist/components/kup-dashboard.js +549 -549
  249. package/dist/components/kup-data-table.js +1 -1
  250. package/dist/components/kup-date-picker.js +1 -1
  251. package/dist/components/kup-dialog.js +1 -1
  252. package/dist/components/kup-drawer.js +295 -295
  253. package/dist/components/kup-dropdown-button.js +1 -1
  254. package/dist/components/kup-echart2.js +7395 -6765
  255. package/dist/components/kup-family-tree.js +604 -604
  256. package/dist/components/kup-form.js +1 -1
  257. package/dist/components/kup-gauge.js +1 -1
  258. package/dist/components/kup-grid2.js +251 -251
  259. package/dist/components/kup-iframe.js +249 -249
  260. package/dist/components/kup-image-list.js +407 -407
  261. package/dist/components/kup-image.js +1 -1
  262. package/dist/components/kup-lazy.js +344 -344
  263. package/dist/components/kup-list.js +1 -1
  264. package/dist/components/kup-magic-box.js +461 -461
  265. package/dist/components/kup-nav-bar.js +284 -284
  266. package/dist/components/kup-numeric-picker.js +529 -529
  267. package/dist/components/kup-photo-frame.js +300 -300
  268. package/dist/components/kup-planner.js +1376 -1207
  269. package/dist/components/kup-probe.js +399 -399
  270. package/dist/components/kup-progress-bar.js +1 -1
  271. package/dist/components/kup-qlik.js +296 -296
  272. package/dist/components/kup-radio.js +1 -1
  273. package/dist/components/kup-rating.js +1 -1
  274. package/dist/components/kup-snackbar.js +273 -273
  275. package/dist/components/kup-spinner.js +1 -1
  276. package/dist/components/kup-switch.js +1 -1
  277. package/dist/components/kup-tab-bar.js +1 -1
  278. package/dist/components/kup-text-field.js +1 -1
  279. package/dist/components/kup-time-picker.js +1 -1
  280. package/dist/components/kup-tree.js +1 -1
  281. package/dist/esm/{GenericVariables-665de00a.js → GenericVariables-6dfdd433.js} +3 -3
  282. package/dist/esm/{component-120651a0.js → component-e86c51ea.js} +81 -2
  283. package/dist/esm/{f-button-declarations-b1b4cac4.js → f-button-declarations-fd4965d1.js} +16 -16
  284. package/dist/esm/{f-button-024f0cfe.js → f-button-e0e6f65f.js} +99 -99
  285. package/dist/esm/{f-cell-90240a8c.js → f-cell-359dfe28.js} +478 -472
  286. package/dist/esm/{f-checkbox-9b3f5f5b.js → f-checkbox-91358c27.js} +23 -23
  287. package/dist/esm/{f-chip-2238ad43.js → f-chip-0fd043b4.js} +125 -125
  288. package/dist/esm/{f-image-f2e9bf79.js → f-image-b853b0cc.js} +107 -107
  289. package/dist/esm/{f-paginator-utils-8cb3c023.js → f-paginator-utils-124c146a.js} +1548 -1548
  290. package/dist/esm/{f-text-field-d231982c.js → f-text-field-92bb3a1f.js} +172 -172
  291. package/dist/esm/{f-text-field-mdc-cee583ea.js → f-text-field-mdc-a1b4a919.js} +27 -28
  292. package/dist/esm/{index-8bd38435.js → index-bb15ce14.js} +93 -25
  293. package/dist/esm/ketchup.js +4 -4
  294. package/dist/esm/kup-accordion.entry.js +199 -200
  295. package/dist/esm/kup-autocomplete_27.entry.js +17557 -17508
  296. package/dist/esm/kup-box.entry.js +1289 -1232
  297. package/dist/esm/kup-calendar.entry.js +9557 -10050
  298. package/dist/esm/kup-cell.entry.js +172 -172
  299. package/dist/esm/kup-dash-list.entry.js +106 -106
  300. package/dist/esm/kup-dash_2.entry.js +162 -162
  301. package/dist/esm/kup-dashboard.entry.js +400 -401
  302. package/dist/esm/kup-drawer.entry.js +138 -138
  303. package/dist/esm/kup-echart.entry.js +7228 -6598
  304. package/dist/esm/kup-family-tree.entry.js +439 -439
  305. package/dist/esm/kup-iframe.entry.js +94 -94
  306. package/dist/esm/kup-image-list.entry.js +255 -256
  307. package/dist/esm/kup-lazy.entry.js +186 -186
  308. package/dist/esm/kup-magic-box.entry.js +298 -298
  309. package/dist/esm/{kup-manager-d1da769e.js → kup-manager-1e6ea451.js} +7288 -7287
  310. package/dist/esm/kup-nav-bar.entry.js +130 -130
  311. package/dist/esm/kup-numeric-picker.entry.js +367 -368
  312. package/dist/esm/kup-photo-frame.entry.js +144 -144
  313. package/dist/esm/kup-planner.entry.js +1185 -1027
  314. package/dist/esm/kup-probe.entry.js +246 -246
  315. package/dist/esm/kup-qlik.entry.js +138 -138
  316. package/dist/esm/kup-snackbar.entry.js +116 -116
  317. package/dist/esm/loader.js +4 -4
  318. package/dist/ketchup/ketchup.esm.js +1 -1
  319. package/dist/ketchup/{p-3cf64473.js → p-0143e942.js} +1 -1
  320. package/dist/ketchup/{p-5f3680f2.js → p-1ca9aece.js} +1 -1
  321. package/dist/ketchup/p-1cd5785e.entry.js +9 -0
  322. package/dist/ketchup/{p-410c102a.js → p-2ac2c05e.js} +1 -1
  323. package/dist/ketchup/{p-8b46e7ce.js → p-349d4715.js} +1 -1
  324. package/dist/ketchup/{p-83435e6c.entry.js → p-374f867e.entry.js} +1 -1
  325. package/dist/ketchup/{p-c42b80c1.entry.js → p-41c00681.entry.js} +1 -1
  326. package/dist/ketchup/p-5dbd4402.entry.js +1 -0
  327. package/dist/ketchup/{p-89743989.entry.js → p-620faa59.entry.js} +1 -1
  328. package/dist/ketchup/{p-10d84b1b.js → p-6507e9eb.js} +7 -6
  329. package/dist/ketchup/{p-a84f1d24.entry.js → p-6837f725.entry.js} +1 -1
  330. package/dist/ketchup/p-6d46cbb0.js +30 -0
  331. package/dist/ketchup/{p-e1f1e661.entry.js → p-6e79b764.entry.js} +1 -1
  332. package/dist/ketchup/{p-1ad628fb.entry.js → p-818a4a09.entry.js} +1 -1
  333. package/dist/ketchup/p-81e20baa.entry.js +1 -0
  334. package/dist/ketchup/p-85d6bb1f.entry.js +1 -0
  335. package/dist/ketchup/p-8c1804d7.entry.js +1 -0
  336. package/dist/ketchup/{p-163b18b9.entry.js → p-ad919f87.entry.js} +1 -1
  337. package/dist/ketchup/{p-651d89c8.entry.js → p-adad6804.entry.js} +1 -1
  338. package/dist/ketchup/{p-37067ee6.entry.js → p-adebe276.entry.js} +1 -1
  339. package/dist/ketchup/p-b5deb573.js +2 -0
  340. package/dist/ketchup/{p-f876125d.entry.js → p-b73b3b52.entry.js} +1 -1
  341. package/dist/ketchup/{p-0d7d59c7.entry.js → p-ba0c4019.entry.js} +1 -1
  342. package/dist/ketchup/p-c010483d.entry.js +25 -0
  343. package/dist/ketchup/p-c1b10c9c.entry.js +1 -0
  344. package/dist/ketchup/{p-063d4c27.entry.js → p-c28be862.entry.js} +1 -1
  345. package/dist/ketchup/p-c6088459.entry.js +39 -0
  346. package/dist/ketchup/{p-43b67de4.entry.js → p-cf24193b.entry.js} +1 -1
  347. package/dist/ketchup/p-e646523d.js +1 -0
  348. package/dist/ketchup/p-e8977116.entry.js +1 -0
  349. package/dist/ketchup/{p-27a56c87.js → p-fb03f2f5.js} +2 -2
  350. package/dist/ketchup/{p-eda7f130.js → p-fb29ba2a.js} +1 -1
  351. package/dist/ketchup/{p-9f9b6656.js → p-fd1323da.js} +1 -1
  352. package/dist/loader/index.d.ts +1 -1
  353. package/dist/types/components/kup-accordion/kup-accordion-declarations.d.ts +20 -20
  354. package/dist/types/components/kup-accordion/kup-accordion.d.ts +80 -80
  355. package/dist/types/components/kup-autocomplete/kup-autocomplete-declarations.d.ts +35 -35
  356. package/dist/types/components/kup-autocomplete/kup-autocomplete.d.ts +119 -119
  357. package/dist/types/components/kup-badge/kup-badge-declarations.d.ts +9 -9
  358. package/dist/types/components/kup-badge/kup-badge.d.ts +51 -51
  359. package/dist/types/components/kup-box/kup-box-declarations.d.ts +113 -113
  360. package/dist/types/components/kup-box/kup-box-state.d.ts +10 -10
  361. package/dist/types/components/kup-box/kup-box.d.ts +270 -270
  362. package/dist/types/components/kup-button/kup-button-declarations.d.ts +24 -24
  363. package/dist/types/components/kup-button/kup-button.d.ts +111 -111
  364. package/dist/types/components/kup-button-list/kup-button-list-declarations.d.ts +24 -24
  365. package/dist/types/components/kup-button-list/kup-button-list.d.ts +82 -82
  366. package/dist/types/components/kup-calendar/kup-calendar-declarations.d.ts +70 -70
  367. package/dist/types/components/kup-calendar/kup-calendar.d.ts +100 -100
  368. package/dist/types/components/kup-card/box/kup-card-box.d.ts +50 -50
  369. package/dist/types/components/kup-card/built-in/kup-card-built-in.d.ts +39 -39
  370. package/dist/types/components/kup-card/built-in/kup-card-calendar.d.ts +2 -2
  371. package/dist/types/components/kup-card/built-in/kup-card-clock.d.ts +2 -2
  372. package/dist/types/components/kup-card/built-in/kup-card-column-drop-menu.d.ts +3 -3
  373. package/dist/types/components/kup-card/built-in/kup-card-message-box.d.ts +3 -3
  374. package/dist/types/components/kup-card/built-in/kup-card-numeric.d.ts +2 -2
  375. package/dist/types/components/kup-card/collapsible/kup-card-collapsible.d.ts +14 -14
  376. package/dist/types/components/kup-card/dialog/kup-card-dialog.d.ts +44 -44
  377. package/dist/types/components/kup-card/free/kup-card-free.d.ts +14 -14
  378. package/dist/types/components/kup-card/kup-card-declarations.d.ts +236 -236
  379. package/dist/types/components/kup-card/kup-card-helper.d.ts +27 -27
  380. package/dist/types/components/kup-card/kup-card.d.ts +159 -159
  381. package/dist/types/components/kup-card/scalable/kup-card-scalable.d.ts +56 -56
  382. package/dist/types/components/kup-card/standard/kup-card-standard.d.ts +92 -92
  383. package/dist/types/components/kup-cell/kup-cell-declarations.d.ts +10 -10
  384. package/dist/types/components/kup-cell/kup-cell.d.ts +67 -67
  385. package/dist/types/components/kup-chart/kup-chart-builder.d.ts +7 -7
  386. package/dist/types/components/kup-chart/kup-chart-declarations.d.ts +135 -135
  387. package/dist/types/components/kup-chart/kup-chart.d.ts +170 -170
  388. package/dist/types/components/kup-checkbox/kup-checkbox-declarations.d.ts +17 -17
  389. package/dist/types/components/kup-checkbox/kup-checkbox.d.ts +85 -85
  390. package/dist/types/components/kup-chip/kup-chip-declarations.d.ts +22 -22
  391. package/dist/types/components/kup-chip/kup-chip.d.ts +89 -89
  392. package/dist/types/components/kup-color-picker/kup-color-picker-declarations.d.ts +15 -15
  393. package/dist/types/components/kup-color-picker/kup-color-picker.d.ts +89 -89
  394. package/dist/types/components/kup-combobox/kup-combobox-declarations.d.ts +24 -24
  395. package/dist/types/components/kup-combobox/kup-combobox.d.ts +95 -95
  396. package/dist/types/components/kup-dash/kup-dash.d.ts +33 -33
  397. package/dist/types/components/kup-dash-list/kup-dash-list.d.ts +22 -22
  398. package/dist/types/components/kup-dashboard/kup-dashboard-declarations.d.ts +61 -61
  399. package/dist/types/components/kup-dashboard/kup-dashboard.d.ts +80 -80
  400. package/dist/types/components/kup-data-table/kup-data-table-declarations.d.ts +258 -254
  401. package/dist/types/components/kup-data-table/kup-data-table-helper.d.ts +25 -25
  402. package/dist/types/components/kup-data-table/kup-data-table-state.d.ts +36 -36
  403. package/dist/types/components/kup-data-table/kup-data-table.d.ts +452 -444
  404. package/dist/types/components/kup-date-picker/kup-date-picker-declarations.d.ts +20 -20
  405. package/dist/types/components/kup-date-picker/kup-date-picker.d.ts +110 -110
  406. package/dist/types/components/kup-dialog/kup-dialog-declarations.d.ts +26 -26
  407. package/dist/types/components/kup-dialog/kup-dialog.d.ts +77 -77
  408. package/dist/types/components/kup-drawer/kup-drawer-declarations.d.ts +9 -9
  409. package/dist/types/components/kup-drawer/kup-drawer.d.ts +74 -74
  410. package/dist/types/components/kup-dropdown-button/kup-dropdown-button-declarations.d.ts +21 -21
  411. package/dist/types/components/kup-dropdown-button/kup-dropdown-button.d.ts +161 -161
  412. package/dist/types/components/kup-echart/kup-echart-declarations.d.ts +63 -62
  413. package/dist/types/components/kup-echart/kup-echart.d.ts +111 -111
  414. package/dist/types/components/kup-family-tree/kup-family-tree-declarations.d.ts +38 -38
  415. package/dist/types/components/kup-family-tree/kup-family-tree.d.ts +87 -87
  416. package/dist/types/components/kup-form/kup-form-declarations.d.ts +64 -64
  417. package/dist/types/components/kup-form/kup-form.d.ts +83 -83
  418. package/dist/types/components/kup-gauge/kup-gauge-declarations.d.ts +25 -25
  419. package/dist/types/components/kup-gauge/kup-gauge.d.ts +147 -147
  420. package/dist/types/components/kup-grid/kup-grid-declarations.d.ts +9 -9
  421. package/dist/types/components/kup-grid/kup-grid.d.ts +48 -48
  422. package/dist/types/components/kup-iframe/kup-iframe-declarations.d.ts +9 -9
  423. package/dist/types/components/kup-iframe/kup-iframe.d.ts +49 -49
  424. package/dist/types/components/kup-image/canvas/kup-image-canvas-declarations.d.ts +23 -23
  425. package/dist/types/components/kup-image/canvas/kup-image-canvas-helper.d.ts +2 -2
  426. package/dist/types/components/kup-image/canvas/kup-image-canvas.d.ts +28 -28
  427. package/dist/types/components/kup-image/kup-image-declarations.d.ts +19 -19
  428. package/dist/types/components/kup-image/kup-image.d.ts +103 -103
  429. package/dist/types/components/kup-image-list/kup-image-list-declarations.d.ts +14 -14
  430. package/dist/types/components/kup-image-list/kup-image-list-state.d.ts +6 -6
  431. package/dist/types/components/kup-image-list/kup-image-list.d.ts +73 -73
  432. package/dist/types/components/kup-lazy/kup-lazy-declarations.d.ts +18 -18
  433. package/dist/types/components/kup-lazy/kup-lazy.d.ts +78 -78
  434. package/dist/types/components/kup-list/kup-list-declarations.d.ts +48 -48
  435. package/dist/types/components/kup-list/kup-list-helper.d.ts +6 -6
  436. package/dist/types/components/kup-list/kup-list.d.ts +128 -128
  437. package/dist/types/components/kup-magic-box/kup-magic-box-declarations.d.ts +21 -21
  438. package/dist/types/components/kup-magic-box/kup-magic-box.d.ts +65 -65
  439. package/dist/types/components/kup-nav-bar/kup-nav-bar-declarations.d.ts +19 -19
  440. package/dist/types/components/kup-nav-bar/kup-nav-bar.d.ts +65 -65
  441. package/dist/types/components/kup-numeric-picker/kup-numeric-picker-declarations.d.ts +19 -19
  442. package/dist/types/components/kup-numeric-picker/kup-numeric-picker.d.ts +121 -121
  443. package/dist/types/components/kup-photo-frame/kup-photo-frame-declarations.d.ts +9 -9
  444. package/dist/types/components/kup-photo-frame/kup-photo-frame.d.ts +61 -61
  445. package/dist/types/components/kup-planner/kup-planner-declarations.d.ts +127 -106
  446. package/dist/types/components/kup-planner/kup-planner-helper.d.ts +6 -6
  447. package/dist/types/components/kup-planner/kup-planner-state.d.ts +13 -0
  448. package/dist/types/components/kup-planner/kup-planner.d.ts +266 -212
  449. package/dist/types/components/kup-probe/kup-probe.d.ts +72 -72
  450. package/dist/types/components/kup-progress-bar/kup-progress-bar-declarations.d.ts +13 -13
  451. package/dist/types/components/kup-progress-bar/kup-progress-bar.d.ts +69 -69
  452. package/dist/types/components/kup-qlik/kup-qlik-declarations.d.ts +19 -19
  453. package/dist/types/components/kup-qlik/kup-qlik.d.ts +100 -100
  454. package/dist/types/components/kup-radio/kup-radio-declarations.d.ts +23 -23
  455. package/dist/types/components/kup-radio/kup-radio.d.ts +80 -80
  456. package/dist/types/components/kup-rating/kup-rating-declarations.d.ts +14 -14
  457. package/dist/types/components/kup-rating/kup-rating.d.ts +62 -62
  458. package/dist/types/components/kup-snackbar/kup-snackbar-declarations.d.ts +12 -12
  459. package/dist/types/components/kup-snackbar/kup-snackbar.d.ts +84 -84
  460. package/dist/types/components/kup-spinner/kup-spinner-declarations.d.ts +14 -14
  461. package/dist/types/components/kup-spinner/kup-spinner.d.ts +79 -79
  462. package/dist/types/components/kup-state/kup-state.d.ts +3 -3
  463. package/dist/types/components/kup-state/kup-store.d.ts +4 -4
  464. package/dist/types/components/kup-state/mock-store.d.ts +8 -8
  465. package/dist/types/components/kup-switch/kup-switch-declarations.d.ts +15 -15
  466. package/dist/types/components/kup-switch/kup-switch.d.ts +80 -80
  467. package/dist/types/components/kup-tab-bar/kup-tab-bar-declarations.d.ts +21 -21
  468. package/dist/types/components/kup-tab-bar/kup-tab-bar.d.ts +77 -77
  469. package/dist/types/components/kup-text-field/kup-text-field-declarations.d.ts +38 -38
  470. package/dist/types/components/kup-text-field/kup-text-field.d.ts +253 -253
  471. package/dist/types/components/kup-time-picker/kup-time-picker-declarations.d.ts +17 -17
  472. package/dist/types/components/kup-time-picker/kup-time-picker.d.ts +125 -125
  473. package/dist/types/components/kup-tree/kup-tree-declarations.d.ts +97 -97
  474. package/dist/types/components/kup-tree/kup-tree-faker.d.ts +54 -54
  475. package/dist/types/components/kup-tree/kup-tree-state.d.ts +14 -14
  476. package/dist/types/components/kup-tree/kup-tree.d.ts +362 -362
  477. package/dist/types/components.d.ts +112 -14
  478. package/dist/types/f-components/f-button/f-button-declarations.d.ts +41 -41
  479. package/dist/types/f-components/f-button/f-button.d.ts +3 -3
  480. package/dist/types/f-components/f-cell/f-cell-declarations.d.ts +162 -162
  481. package/dist/types/f-components/f-cell/f-cell.d.ts +3 -3
  482. package/dist/types/f-components/f-checkbox/f-checkbox-declarations.d.ts +15 -15
  483. package/dist/types/f-components/f-checkbox/f-checkbox.d.ts +3 -3
  484. package/dist/types/f-components/f-chip/f-chip-declarations.d.ts +29 -29
  485. package/dist/types/f-components/f-chip/f-chip.d.ts +3 -3
  486. package/dist/types/f-components/f-image/f-image-declarations.d.ts +36 -36
  487. package/dist/types/f-components/f-image/f-image.d.ts +3 -3
  488. package/dist/types/f-components/f-paginator/f-paginator-declarations.d.ts +22 -22
  489. package/dist/types/f-components/f-paginator/f-paginator-utils.d.ts +2 -2
  490. package/dist/types/f-components/f-paginator/f-paginator.d.ts +3 -3
  491. package/dist/types/f-components/f-switch/f-switch-declarations.d.ts +14 -14
  492. package/dist/types/f-components/f-switch/f-switch.d.ts +3 -3
  493. package/dist/types/f-components/f-text-field/f-text-field-declarations.d.ts +42 -42
  494. package/dist/types/f-components/f-text-field/f-text-field-mdc.d.ts +6 -6
  495. package/dist/types/f-components/f-text-field/f-text-field.d.ts +3 -3
  496. package/dist/types/managers/kup-data/kup-data-cell-helper.d.ts +31 -31
  497. package/dist/types/managers/kup-data/kup-data-column-helper.d.ts +39 -39
  498. package/dist/types/managers/kup-data/kup-data-declarations.d.ts +173 -173
  499. package/dist/types/managers/kup-data/kup-data-node-helper.d.ts +44 -44
  500. package/dist/types/managers/kup-data/kup-data-row-helper.d.ts +14 -14
  501. package/dist/types/managers/kup-data/kup-data.d.ts +86 -86
  502. package/dist/types/managers/kup-dates/kup-dates-declarations.d.ts +39 -39
  503. package/dist/types/managers/kup-dates/kup-dates.d.ts +207 -207
  504. package/dist/types/managers/kup-debug/kup-debug-declarations.d.ts +38 -38
  505. package/dist/types/managers/kup-debug/kup-debug.d.ts +95 -95
  506. package/dist/types/managers/kup-dynamic-position/kup-dynamic-position-declarations.d.ts +50 -50
  507. package/dist/types/managers/kup-dynamic-position/kup-dynamic-position.d.ts +61 -61
  508. package/dist/types/managers/kup-interact/kup-interact-declarations.d.ts +128 -128
  509. package/dist/types/managers/kup-interact/kup-interact.d.ts +105 -105
  510. package/dist/types/managers/kup-language/kup-language-declarations.d.ts +225 -225
  511. package/dist/types/managers/kup-language/kup-language.d.ts +52 -52
  512. package/dist/types/managers/kup-manager/kup-manager-declarations.d.ts +162 -162
  513. package/dist/types/managers/kup-manager/kup-manager.d.ts +95 -95
  514. package/dist/types/managers/kup-math/kup-math-declarations.d.ts +33 -33
  515. package/dist/types/managers/kup-math/kup-math-helper.d.ts +17 -17
  516. package/dist/types/managers/kup-math/kup-math.d.ts +147 -146
  517. package/dist/types/managers/kup-objects/kup-objects-declarations.d.ts +15 -15
  518. package/dist/types/managers/kup-objects/kup-objects.d.ts +210 -210
  519. package/dist/types/managers/kup-scroll-on-hover/kup-scroll-on-hover-declarations.d.ts +28 -28
  520. package/dist/types/managers/kup-scroll-on-hover/kup-scroll-on-hover.d.ts +62 -62
  521. package/dist/types/managers/kup-search/kup-search-declarations.d.ts +7 -7
  522. package/dist/types/managers/kup-search/kup-search.d.ts +20 -20
  523. package/dist/types/managers/kup-theme/kup-theme-declarations.d.ts +185 -185
  524. package/dist/types/managers/kup-theme/kup-theme.d.ts +127 -127
  525. package/dist/types/managers/kup-toolbar/kup-toolbar-declarations.d.ts +8 -8
  526. package/dist/types/managers/kup-toolbar/kup-toolbar.d.ts +39 -39
  527. package/dist/types/managers/kup-tooltip/kup-tooltip-declarations.d.ts +8 -8
  528. package/dist/types/managers/kup-tooltip/kup-tooltip.d.ts +51 -51
  529. package/dist/types/stencil-public-runtime.d.ts +3 -0
  530. package/dist/types/types/GenericTypes.d.ts +110 -110
  531. package/dist/types/utils/cell-utils.d.ts +10 -10
  532. package/dist/types/utils/filters/filters-column-menu.d.ts +96 -96
  533. package/dist/types/utils/filters/filters-declarations.d.ts +39 -39
  534. package/dist/types/utils/filters/filters-rows.d.ts +30 -30
  535. package/dist/types/utils/filters/filters-tree-items.d.ts +19 -19
  536. package/dist/types/utils/filters/filters.d.ts +72 -72
  537. package/dist/types/utils/kup-column-menu/kup-column-menu-declarations.d.ts +19 -19
  538. package/dist/types/utils/kup-column-menu/kup-column-menu.d.ts +142 -142
  539. package/dist/types/utils/utils.d.ts +37 -35
  540. package/dist/types/variables/GenericVariables.d.ts +4 -4
  541. package/package.json +21 -16
  542. package/dist/cjs/tslib.es6-386654de.js +0 -87
  543. package/dist/esm/tslib.es6-8c2af864.js +0 -82
  544. package/dist/ketchup/p-0bcda0e2.entry.js +0 -1
  545. package/dist/ketchup/p-33aff1ca.entry.js +0 -25
  546. package/dist/ketchup/p-3432ebaf.entry.js +0 -9
  547. package/dist/ketchup/p-35b29b22.entry.js +0 -1
  548. package/dist/ketchup/p-36dac88e.js +0 -30
  549. package/dist/ketchup/p-39a55c47.js +0 -1
  550. package/dist/ketchup/p-489d55ff.entry.js +0 -39
  551. package/dist/ketchup/p-73c8d651.entry.js +0 -1
  552. package/dist/ketchup/p-7f59211b.js +0 -1
  553. package/dist/ketchup/p-9dcfbb1e.js +0 -2
  554. package/dist/ketchup/p-b2fd2dbf.entry.js +0 -1
  555. package/dist/ketchup/p-d1b050d0.entry.js +0 -27
  556. package/dist/ketchup/p-d6ea709e.entry.js +0 -1
  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,1564 +1,1564 @@
1
- import { E as Filters, J as FilterInterval, H as getValueForDisplay, D as getValueForDisplay2, af as getCellValueForDisplay, v as getColumnByName, z as KupObjects, ah as KupData, ai as compareCell, N as TotalMode, h as KupDatesFormats, a2 as SortMode, aj as KupLanguagePage, r as KupLanguageRow, m as KupLanguageGeneric } from './kup-manager-d1da769e.js';
2
- import { h } from './index-8bd38435.js';
3
- import { F as FButton } from './f-button-024f0cfe.js';
4
- import { F as FButtonStyling } from './f-button-declarations-b1b4cac4.js';
1
+ import { E as Filters, J as FilterInterval, H as getValueForDisplay, D as getValueForDisplay2, af as getCellValueForDisplay, v as getColumnByName, z as KupObjects, ah as KupData, ai as compareCell, N as TotalMode, h as KupDatesFormats, a2 as SortMode, aj as KupLanguagePage, r as KupLanguageRow, m as KupLanguageGeneric } from './kup-manager-1e6ea451.js';
2
+ import { h } from './index-bb15ce14.js';
3
+ import { F as FButton } from './f-button-e0e6f65f.js';
4
+ import { F as FButtonStyling } from './f-button-declarations-fd4965d1.js';
5
5
 
6
- /**
7
- * Filtering algorithms related to column menus.
8
- * @module FiltersColumnMenu
9
- * @todo Should contain EVERY column-specific filtering method.
10
- */
11
- class FiltersColumnMenu extends Filters {
12
- /**
13
- * Gets the value of the filter prop.
14
- * @param {GenericFilter} filters - Filters of the component.
15
- * @param {string} column - Name of the column.
16
- * @returns {string} Value of the filter.
17
- */
18
- getTextFilterValue(filters = {}, column) {
19
- return this._getTextFilterValue(filters, column, false);
20
- }
21
- /**
22
- * Gets the value of the filter prop, set temporarly.
23
- * @param {GenericFilter} filters - Filters of the component.
24
- * @param {string} column - Name of the column.
25
- * @returns {string} Value of the filter.
26
- */
27
- getTextFilterValueTmp(filters = {}, column) {
28
- return this._getTextFilterValue(filters, column, true);
29
- }
30
- _getTextFilterValue(filters = {}, column, tmp) {
31
- let value = '';
32
- if (filters == null) {
33
- return value;
34
- }
35
- let filter = filters[column];
36
- if (filter == null) {
37
- return value;
38
- }
39
- value = tmp ? filter.textFieldTmp : filter.textField;
40
- return value;
41
- }
42
- /**
43
- * Returns whether a column has filters or not.
44
- * @param {GenericFilter} filters - Filters of the component.
45
- * @param {KupDataColumn} column - Name of the column.
46
- * @returns {boolean} True when a given column has filters.
47
- */
48
- hasFiltersForColumn(filters = {}, column) {
49
- return this._hasFiltersForColumn(filters, column, false);
50
- }
51
- /**
52
- * Returns whether a column has filters or not.
53
- * @param {GenericFilter} filters - Filters of the component.
54
- * @param {KupDataColumn} column - Name of the column.
55
- * @returns {boolean} True when a given column has filters.
56
- */
57
- hasFiltersForColumnTmp(filters = {}, column) {
58
- return this._hasFiltersForColumn(filters, column, true);
59
- }
60
- /**
61
- * Returns whether a column has filters or not.
62
- * @param {GenericFilter} filters - Filters of the component.
63
- * @param {KupDataColumn} column - Name of the column.
64
- * @returns {boolean} True when a given column has filters.
65
- */
66
- _hasFiltersForColumn(filters = {}, column, tmp) {
67
- if (!column) {
68
- return false;
69
- }
70
- let textfield = this._getTextFilterValue(filters, column.name, tmp);
71
- if (textfield != null && textfield.trim() != '') {
72
- return true;
73
- }
74
- if (this._hasIntervalTextFieldFilterValues(filters, column, tmp)) {
75
- return true;
76
- }
77
- let checkboxes = this.getCheckBoxFilterValues(filters, column.name);
78
- if (checkboxes == null || checkboxes.length < 1) {
79
- return false;
80
- }
81
- return true;
82
- }
83
- /**
84
- * Returns the values of column menu's checkboxes.
85
- * @param {GenericFilter} filters - Filters of the component.
86
- * @param {string} column - Name of the column.
87
- * @returns {Array<string>} Array of checkboxes values.
88
- */
89
- getCheckBoxFilterValues(filters = {}, column) {
90
- let values = [];
91
- if (filters == null) {
92
- return values;
93
- }
94
- let filter = filters[column];
95
- if (filter == null) {
96
- return values;
97
- }
98
- if (filter.checkBoxes == null) {
99
- return values;
100
- }
101
- values = filter.checkBoxes;
102
- return values;
103
- }
104
- /**
105
- * Returns whether a text field should be a date or time picker.
106
- * @param {GenericFilter} filters - Filters of the component.
107
- * @param {KupDataColumn} column - Name of the column.
108
- * @returns {boolean} True when the text field is a date or time picker.
109
- */
110
- hasIntervalTextFieldFilterValues(filters = {}, column) {
111
- return this._hasIntervalTextFieldFilterValues(filters, column, false);
112
- }
113
- hasIntervalTextFieldFilterValuesTmp(filters = {}, column) {
114
- return this._hasIntervalTextFieldFilterValues(filters, column, true);
115
- }
116
- _hasIntervalTextFieldFilterValues(filters = {}, column, tmp) {
117
- if (column == null) {
118
- return false;
119
- }
120
- if (!this.isColumnFiltrableByInterval(column)) {
121
- return false;
122
- }
123
- let intervalFrom = this._getIntervalTextFieldFilterValue(filters, column.name, FilterInterval.FROM, tmp);
124
- if (intervalFrom != null && intervalFrom.trim() != '') {
125
- return true;
126
- }
127
- let intervalTo = this._getIntervalTextFieldFilterValue(filters, column.name, FilterInterval.TO, tmp);
128
- if (intervalTo != null && intervalTo.trim() != '') {
129
- return true;
130
- }
131
- return false;
132
- }
133
- /**
134
- * Triggers when a new filter checkbox becomes checked.
135
- * @param {GenericFilter} filters - Filters of the component.
136
- * @param {string} column - Name of the column.
137
- * @param {ValueDisplayedValue} newFilter - Added filter.
138
- */
139
- addCheckboxFilter(filters = {}, column, newFilterItem) {
140
- if (filters == null) {
141
- return;
142
- }
143
- let filter = filters[column];
144
- if (filter == null) {
145
- filter = {
146
- textField: '',
147
- textFieldTmp: '',
148
- checkBoxes: [],
149
- interval: null,
150
- intervalTmp: null,
151
- };
152
- filters[column] = filter;
153
- }
154
- if (filter.checkBoxes == null) {
155
- filter.checkBoxes = [];
156
- }
157
- if (newFilterItem == null || newFilterItem.value == null) {
158
- filter.checkBoxes = [];
159
- }
160
- else {
161
- if (!Filters.valuesArrayContainsValue(filter.checkBoxes, newFilterItem.value)) {
162
- filter.checkBoxes[filter.checkBoxes.length] = newFilterItem;
163
- }
164
- }
165
- }
166
- /**
167
- * Triggers when a filter checkbox becomes unchecked.
168
- * @param {GenericFilter} filters - Filters of the component.
169
- * @param {string} column - Name of the column.
170
- * @param {string} remFilter - Removed filter.
171
- */
172
- removeCheckboxFilter(filters = {}, column, remFilter) {
173
- if (filters == null || remFilter == null) {
174
- return;
175
- }
176
- let filter = filters[column];
177
- if (filter == null) {
178
- return;
179
- }
180
- if (filter.checkBoxes == null) {
181
- filter.checkBoxes = [];
182
- }
183
- let index = Filters.indexOfValueInValuesArray(filter.checkBoxes, remFilter);
184
- if (index >= 0) {
185
- let chs = [];
186
- for (let i = 0; i < filter.checkBoxes.length; i++) {
187
- if (i != index) {
188
- chs[chs.length] = filter.checkBoxes[i];
189
- }
190
- }
191
- filter.checkBoxes = [...chs];
192
- }
193
- }
194
- isColumnFiltrableByInterval(column) {
195
- return this.isObjFiltrableByInterval(column.obj);
196
- }
197
- getIntervalTextFieldFilterValues(filters = {}, column) {
198
- return this._getIntervalTextFieldFilterValues(filters, column, false);
199
- }
200
- getIntervalTextFieldFilterValuesTmp(filters = {}, column) {
201
- return this._getIntervalTextFieldFilterValues(filters, column, true);
202
- }
203
- _getIntervalTextFieldFilterValues(filters = {}, column, tmp) {
204
- if (!this._hasIntervalTextFieldFilterValues(filters, column, tmp)) {
205
- return ['', ''];
206
- }
207
- let values = [
208
- this._getIntervalTextFieldFilterValue(filters, column.name, FilterInterval.FROM, tmp),
209
- this._getIntervalTextFieldFilterValue(filters, column.name, FilterInterval.TO, tmp),
210
- ];
211
- return values;
212
- }
213
- getIntervalTextFieldFilterValue(filters = {}, column, index) {
214
- return this._getIntervalTextFieldFilterValue(filters, column, index, false);
215
- }
216
- getIntervalTextFieldFilterValueTmp(filters = {}, column, index) {
217
- return this._getIntervalTextFieldFilterValue(filters, column, index, true);
218
- }
219
- _getIntervalTextFieldFilterValue(filters = {}, column, index, tmp) {
220
- let value = '';
221
- if (filters == null) {
222
- return value;
223
- }
224
- let filter = filters[column];
225
- if (filter == null) {
226
- return value;
227
- }
228
- if (tmp && filter.intervalTmp == null) {
229
- return value;
230
- }
231
- if (!tmp && filter.interval == null) {
232
- return value;
233
- }
234
- value = tmp ? filter.intervalTmp[index] : filter.interval[index];
235
- return value;
236
- }
237
- setTextFieldFilterValue(filters = {}, column, newFilter) {
238
- this._setTextFieldFilterValue(filters, column, newFilter, true);
239
- }
240
- _setTextFieldFilterValue(filters = {}, column, newFilter, tmp) {
241
- if (filters == null) {
242
- return;
243
- }
244
- let filter = filters[column];
245
- if (filter == null) {
246
- filter = {
247
- textField: '',
248
- textFieldTmp: '',
249
- checkBoxes: [],
250
- interval: null,
251
- intervalTmp: null,
252
- };
253
- filters[column] = filter;
254
- }
255
- if (tmp) {
256
- filter.textFieldTmp =
257
- newFilter != null ? newFilter.trim() : newFilter;
258
- }
259
- else {
260
- filter.textField = newFilter != null ? newFilter.trim() : newFilter;
261
- }
262
- }
263
- setIntervalTextFieldFilterValue(filters = {}, column, newFilter, index) {
264
- this._setIntervalTextFieldFilterValue(filters, column, newFilter, index, true);
265
- }
266
- _setIntervalTextFieldFilterValue(filters = {}, column, newFilter, index, tmp) {
267
- if (filters == null) {
268
- return;
269
- }
270
- let filter = filters[column];
271
- if (filter == null) {
272
- filter = {
273
- textField: '',
274
- textFieldTmp: '',
275
- checkBoxes: [],
276
- interval: null,
277
- intervalTmp: null,
278
- };
279
- filters[column] = filter;
280
- }
281
- if (filter.interval == null) {
282
- filter.interval = [];
283
- filter.interval.push('', '');
284
- }
285
- if (filter.intervalTmp == null) {
286
- filter.intervalTmp = [];
287
- filter.intervalTmp.push('', '');
288
- }
289
- if (tmp) {
290
- filter.intervalTmp[index] =
291
- newFilter != null ? newFilter.trim() : newFilter;
292
- }
293
- else {
294
- filter.interval[index] =
295
- newFilter != null ? newFilter.trim() : newFilter;
296
- }
297
- }
298
- saveTextualFilters(filters = {}, column) {
299
- this._setTextFieldFilterValue(filters, column, this.getTextFilterValueTmp(filters, column), false);
300
- this._setIntervalTextFieldFilterValue(filters, column, this.getIntervalTextFieldFilterValueTmp(filters, column, FilterInterval.FROM), FilterInterval.FROM, false);
301
- this._setIntervalTextFieldFilterValue(filters, column, this.getIntervalTextFieldFilterValueTmp(filters, column, FilterInterval.TO), FilterInterval.TO, false);
302
- }
303
- resetTextualFilters(filters = {}, column) {
304
- this._setTextFieldFilterValue(filters, column, this.getTextFilterValue(filters, column), true);
305
- this._setIntervalTextFieldFilterValue(filters, column, this.getIntervalTextFieldFilterValue(filters, column, FilterInterval.FROM), FilterInterval.FROM, true);
306
- this._setIntervalTextFieldFilterValue(filters, column, this.getIntervalTextFieldFilterValue(filters, column, FilterInterval.TO), FilterInterval.TO, true);
307
- }
308
- getFilterValueForTooltip(filters = {}, column) {
309
- let txtFilter = this.getTextFilterValue(filters, column.name);
310
- let interval = this.getIntervalTextFieldFilterValues(filters, column);
311
- let chkFilters = this.getCheckBoxFilterValues(filters, column.name);
312
- let separator = '';
313
- let txtFiterRis = getValueForDisplay(txtFilter, column.obj, column.decimals);
314
- if (txtFilter != '') {
315
- separator = ' AND ';
316
- }
317
- if (interval[FilterInterval.FROM] != '') {
318
- txtFiterRis +=
319
- separator +
320
- '(>= ' +
321
- getValueForDisplay(interval[FilterInterval.FROM], column.obj, column.decimals) +
322
- ')';
323
- separator = ' AND ';
324
- }
325
- if (interval[FilterInterval.TO] != '') {
326
- txtFiterRis +=
327
- separator +
328
- '(<= ' +
329
- getValueForDisplay(interval[FilterInterval.TO], column.obj, column.decimals) +
330
- ')';
331
- separator = ' AND ';
332
- }
333
- separator = '';
334
- let ris = '';
335
- chkFilters.forEach((f) => {
336
- ris += separator + getValueForDisplay2(f, column);
337
- separator = ' OR ';
338
- });
339
- if (ris != '') {
340
- ris = '(' + ris + ')';
341
- if (txtFiterRis != '') {
342
- ris = ' AND ' + ris;
343
- }
344
- }
345
- ris = txtFiterRis + ris;
346
- return ris;
347
- }
348
- /**
349
- * Triggers when a filter must be removed, for column.
350
- * @param {GenericFilter} filters - Filters of the component.
351
- * @param {string} column - Name of the column.
352
- */
353
- removeFilter(filters = {}, column) {
354
- filters[column] = {
355
- textField: '',
356
- textFieldTmp: '',
357
- checkBoxes: [],
358
- interval: null,
359
- intervalTmp: null,
360
- };
361
- }
6
+ /**
7
+ * Filtering algorithms related to column menus.
8
+ * @module FiltersColumnMenu
9
+ * @todo Should contain EVERY column-specific filtering method.
10
+ */
11
+ class FiltersColumnMenu extends Filters {
12
+ /**
13
+ * Gets the value of the filter prop.
14
+ * @param {GenericFilter} filters - Filters of the component.
15
+ * @param {string} column - Name of the column.
16
+ * @returns {string} Value of the filter.
17
+ */
18
+ getTextFilterValue(filters = {}, column) {
19
+ return this._getTextFilterValue(filters, column, false);
20
+ }
21
+ /**
22
+ * Gets the value of the filter prop, set temporarly.
23
+ * @param {GenericFilter} filters - Filters of the component.
24
+ * @param {string} column - Name of the column.
25
+ * @returns {string} Value of the filter.
26
+ */
27
+ getTextFilterValueTmp(filters = {}, column) {
28
+ return this._getTextFilterValue(filters, column, true);
29
+ }
30
+ _getTextFilterValue(filters = {}, column, tmp) {
31
+ let value = '';
32
+ if (filters == null) {
33
+ return value;
34
+ }
35
+ let filter = filters[column];
36
+ if (filter == null) {
37
+ return value;
38
+ }
39
+ value = tmp ? filter.textFieldTmp : filter.textField;
40
+ return value;
41
+ }
42
+ /**
43
+ * Returns whether a column has filters or not.
44
+ * @param {GenericFilter} filters - Filters of the component.
45
+ * @param {KupDataColumn} column - Name of the column.
46
+ * @returns {boolean} True when a given column has filters.
47
+ */
48
+ hasFiltersForColumn(filters = {}, column) {
49
+ return this._hasFiltersForColumn(filters, column, false);
50
+ }
51
+ /**
52
+ * Returns whether a column has filters or not.
53
+ * @param {GenericFilter} filters - Filters of the component.
54
+ * @param {KupDataColumn} column - Name of the column.
55
+ * @returns {boolean} True when a given column has filters.
56
+ */
57
+ hasFiltersForColumnTmp(filters = {}, column) {
58
+ return this._hasFiltersForColumn(filters, column, true);
59
+ }
60
+ /**
61
+ * Returns whether a column has filters or not.
62
+ * @param {GenericFilter} filters - Filters of the component.
63
+ * @param {KupDataColumn} column - Name of the column.
64
+ * @returns {boolean} True when a given column has filters.
65
+ */
66
+ _hasFiltersForColumn(filters = {}, column, tmp) {
67
+ if (!column) {
68
+ return false;
69
+ }
70
+ let textfield = this._getTextFilterValue(filters, column.name, tmp);
71
+ if (textfield != null && textfield.trim() != '') {
72
+ return true;
73
+ }
74
+ if (this._hasIntervalTextFieldFilterValues(filters, column, tmp)) {
75
+ return true;
76
+ }
77
+ let checkboxes = this.getCheckBoxFilterValues(filters, column.name);
78
+ if (checkboxes == null || checkboxes.length < 1) {
79
+ return false;
80
+ }
81
+ return true;
82
+ }
83
+ /**
84
+ * Returns the values of column menu's checkboxes.
85
+ * @param {GenericFilter} filters - Filters of the component.
86
+ * @param {string} column - Name of the column.
87
+ * @returns {Array<string>} Array of checkboxes values.
88
+ */
89
+ getCheckBoxFilterValues(filters = {}, column) {
90
+ let values = [];
91
+ if (filters == null) {
92
+ return values;
93
+ }
94
+ let filter = filters[column];
95
+ if (filter == null) {
96
+ return values;
97
+ }
98
+ if (filter.checkBoxes == null) {
99
+ return values;
100
+ }
101
+ values = filter.checkBoxes;
102
+ return values;
103
+ }
104
+ /**
105
+ * Returns whether a text field should be a date or time picker.
106
+ * @param {GenericFilter} filters - Filters of the component.
107
+ * @param {KupDataColumn} column - Name of the column.
108
+ * @returns {boolean} True when the text field is a date or time picker.
109
+ */
110
+ hasIntervalTextFieldFilterValues(filters = {}, column) {
111
+ return this._hasIntervalTextFieldFilterValues(filters, column, false);
112
+ }
113
+ hasIntervalTextFieldFilterValuesTmp(filters = {}, column) {
114
+ return this._hasIntervalTextFieldFilterValues(filters, column, true);
115
+ }
116
+ _hasIntervalTextFieldFilterValues(filters = {}, column, tmp) {
117
+ if (column == null) {
118
+ return false;
119
+ }
120
+ if (!this.isColumnFiltrableByInterval(column)) {
121
+ return false;
122
+ }
123
+ let intervalFrom = this._getIntervalTextFieldFilterValue(filters, column.name, FilterInterval.FROM, tmp);
124
+ if (intervalFrom != null && intervalFrom.trim() != '') {
125
+ return true;
126
+ }
127
+ let intervalTo = this._getIntervalTextFieldFilterValue(filters, column.name, FilterInterval.TO, tmp);
128
+ if (intervalTo != null && intervalTo.trim() != '') {
129
+ return true;
130
+ }
131
+ return false;
132
+ }
133
+ /**
134
+ * Triggers when a new filter checkbox becomes checked.
135
+ * @param {GenericFilter} filters - Filters of the component.
136
+ * @param {string} column - Name of the column.
137
+ * @param {ValueDisplayedValue} newFilter - Added filter.
138
+ */
139
+ addCheckboxFilter(filters = {}, column, newFilterItem) {
140
+ if (filters == null) {
141
+ return;
142
+ }
143
+ let filter = filters[column];
144
+ if (filter == null) {
145
+ filter = {
146
+ textField: '',
147
+ textFieldTmp: '',
148
+ checkBoxes: [],
149
+ interval: null,
150
+ intervalTmp: null,
151
+ };
152
+ filters[column] = filter;
153
+ }
154
+ if (filter.checkBoxes == null) {
155
+ filter.checkBoxes = [];
156
+ }
157
+ if (newFilterItem == null || newFilterItem.value == null) {
158
+ filter.checkBoxes = [];
159
+ }
160
+ else {
161
+ if (!Filters.valuesArrayContainsValue(filter.checkBoxes, newFilterItem.value)) {
162
+ filter.checkBoxes[filter.checkBoxes.length] = newFilterItem;
163
+ }
164
+ }
165
+ }
166
+ /**
167
+ * Triggers when a filter checkbox becomes unchecked.
168
+ * @param {GenericFilter} filters - Filters of the component.
169
+ * @param {string} column - Name of the column.
170
+ * @param {string} remFilter - Removed filter.
171
+ */
172
+ removeCheckboxFilter(filters = {}, column, remFilter) {
173
+ if (filters == null || remFilter == null) {
174
+ return;
175
+ }
176
+ let filter = filters[column];
177
+ if (filter == null) {
178
+ return;
179
+ }
180
+ if (filter.checkBoxes == null) {
181
+ filter.checkBoxes = [];
182
+ }
183
+ let index = Filters.indexOfValueInValuesArray(filter.checkBoxes, remFilter);
184
+ if (index >= 0) {
185
+ let chs = [];
186
+ for (let i = 0; i < filter.checkBoxes.length; i++) {
187
+ if (i != index) {
188
+ chs[chs.length] = filter.checkBoxes[i];
189
+ }
190
+ }
191
+ filter.checkBoxes = [...chs];
192
+ }
193
+ }
194
+ isColumnFiltrableByInterval(column) {
195
+ return this.isObjFiltrableByInterval(column.obj);
196
+ }
197
+ getIntervalTextFieldFilterValues(filters = {}, column) {
198
+ return this._getIntervalTextFieldFilterValues(filters, column, false);
199
+ }
200
+ getIntervalTextFieldFilterValuesTmp(filters = {}, column) {
201
+ return this._getIntervalTextFieldFilterValues(filters, column, true);
202
+ }
203
+ _getIntervalTextFieldFilterValues(filters = {}, column, tmp) {
204
+ if (!this._hasIntervalTextFieldFilterValues(filters, column, tmp)) {
205
+ return ['', ''];
206
+ }
207
+ let values = [
208
+ this._getIntervalTextFieldFilterValue(filters, column.name, FilterInterval.FROM, tmp),
209
+ this._getIntervalTextFieldFilterValue(filters, column.name, FilterInterval.TO, tmp),
210
+ ];
211
+ return values;
212
+ }
213
+ getIntervalTextFieldFilterValue(filters = {}, column, index) {
214
+ return this._getIntervalTextFieldFilterValue(filters, column, index, false);
215
+ }
216
+ getIntervalTextFieldFilterValueTmp(filters = {}, column, index) {
217
+ return this._getIntervalTextFieldFilterValue(filters, column, index, true);
218
+ }
219
+ _getIntervalTextFieldFilterValue(filters = {}, column, index, tmp) {
220
+ let value = '';
221
+ if (filters == null) {
222
+ return value;
223
+ }
224
+ let filter = filters[column];
225
+ if (filter == null) {
226
+ return value;
227
+ }
228
+ if (tmp && filter.intervalTmp == null) {
229
+ return value;
230
+ }
231
+ if (!tmp && filter.interval == null) {
232
+ return value;
233
+ }
234
+ value = tmp ? filter.intervalTmp[index] : filter.interval[index];
235
+ return value;
236
+ }
237
+ setTextFieldFilterValue(filters = {}, column, newFilter) {
238
+ this._setTextFieldFilterValue(filters, column, newFilter, true);
239
+ }
240
+ _setTextFieldFilterValue(filters = {}, column, newFilter, tmp) {
241
+ if (filters == null) {
242
+ return;
243
+ }
244
+ let filter = filters[column];
245
+ if (filter == null) {
246
+ filter = {
247
+ textField: '',
248
+ textFieldTmp: '',
249
+ checkBoxes: [],
250
+ interval: null,
251
+ intervalTmp: null,
252
+ };
253
+ filters[column] = filter;
254
+ }
255
+ if (tmp) {
256
+ filter.textFieldTmp =
257
+ newFilter != null ? newFilter.trim() : newFilter;
258
+ }
259
+ else {
260
+ filter.textField = newFilter != null ? newFilter.trim() : newFilter;
261
+ }
262
+ }
263
+ setIntervalTextFieldFilterValue(filters = {}, column, newFilter, index) {
264
+ this._setIntervalTextFieldFilterValue(filters, column, newFilter, index, true);
265
+ }
266
+ _setIntervalTextFieldFilterValue(filters = {}, column, newFilter, index, tmp) {
267
+ if (filters == null) {
268
+ return;
269
+ }
270
+ let filter = filters[column];
271
+ if (filter == null) {
272
+ filter = {
273
+ textField: '',
274
+ textFieldTmp: '',
275
+ checkBoxes: [],
276
+ interval: null,
277
+ intervalTmp: null,
278
+ };
279
+ filters[column] = filter;
280
+ }
281
+ if (filter.interval == null) {
282
+ filter.interval = [];
283
+ filter.interval.push('', '');
284
+ }
285
+ if (filter.intervalTmp == null) {
286
+ filter.intervalTmp = [];
287
+ filter.intervalTmp.push('', '');
288
+ }
289
+ if (tmp) {
290
+ filter.intervalTmp[index] =
291
+ newFilter != null ? newFilter.trim() : newFilter;
292
+ }
293
+ else {
294
+ filter.interval[index] =
295
+ newFilter != null ? newFilter.trim() : newFilter;
296
+ }
297
+ }
298
+ saveTextualFilters(filters = {}, column) {
299
+ this._setTextFieldFilterValue(filters, column, this.getTextFilterValueTmp(filters, column), false);
300
+ this._setIntervalTextFieldFilterValue(filters, column, this.getIntervalTextFieldFilterValueTmp(filters, column, FilterInterval.FROM), FilterInterval.FROM, false);
301
+ this._setIntervalTextFieldFilterValue(filters, column, this.getIntervalTextFieldFilterValueTmp(filters, column, FilterInterval.TO), FilterInterval.TO, false);
302
+ }
303
+ resetTextualFilters(filters = {}, column) {
304
+ this._setTextFieldFilterValue(filters, column, this.getTextFilterValue(filters, column), true);
305
+ this._setIntervalTextFieldFilterValue(filters, column, this.getIntervalTextFieldFilterValue(filters, column, FilterInterval.FROM), FilterInterval.FROM, true);
306
+ this._setIntervalTextFieldFilterValue(filters, column, this.getIntervalTextFieldFilterValue(filters, column, FilterInterval.TO), FilterInterval.TO, true);
307
+ }
308
+ getFilterValueForTooltip(filters = {}, column) {
309
+ let txtFilter = this.getTextFilterValue(filters, column.name);
310
+ let interval = this.getIntervalTextFieldFilterValues(filters, column);
311
+ let chkFilters = this.getCheckBoxFilterValues(filters, column.name);
312
+ let separator = '';
313
+ let txtFiterRis = getValueForDisplay(txtFilter, column.obj, column.decimals);
314
+ if (txtFilter != '') {
315
+ separator = ' AND ';
316
+ }
317
+ if (interval[FilterInterval.FROM] != '') {
318
+ txtFiterRis +=
319
+ separator +
320
+ '(>= ' +
321
+ getValueForDisplay(interval[FilterInterval.FROM], column.obj, column.decimals) +
322
+ ')';
323
+ separator = ' AND ';
324
+ }
325
+ if (interval[FilterInterval.TO] != '') {
326
+ txtFiterRis +=
327
+ separator +
328
+ '(<= ' +
329
+ getValueForDisplay(interval[FilterInterval.TO], column.obj, column.decimals) +
330
+ ')';
331
+ separator = ' AND ';
332
+ }
333
+ separator = '';
334
+ let ris = '';
335
+ chkFilters.forEach((f) => {
336
+ ris += separator + getValueForDisplay2(f, column);
337
+ separator = ' OR ';
338
+ });
339
+ if (ris != '') {
340
+ ris = '(' + ris + ')';
341
+ if (txtFiterRis != '') {
342
+ ris = ' AND ' + ris;
343
+ }
344
+ }
345
+ ris = txtFiterRis + ris;
346
+ return ris;
347
+ }
348
+ /**
349
+ * Triggers when a filter must be removed, for column.
350
+ * @param {GenericFilter} filters - Filters of the component.
351
+ * @param {string} column - Name of the column.
352
+ */
353
+ removeFilter(filters = {}, column) {
354
+ filters[column] = {
355
+ textField: '',
356
+ textFieldTmp: '',
357
+ checkBoxes: [],
358
+ interval: null,
359
+ intervalTmp: null,
360
+ };
361
+ }
362
362
  }
363
363
 
364
- /**
365
- * Props of the kup-tree component.
366
- * Used to export every prop in an object.
367
- */
368
- var KupTreeProps;
369
- (function (KupTreeProps) {
370
- KupTreeProps["asAccordion"] = "When enabled, the first level of depth will give an accordion look to nodes.";
371
- KupTreeProps["columns"] = "The columns of the tree when tree visualization is active.";
372
- KupTreeProps["customStyle"] = "Custom style of the component.";
373
- KupTreeProps["data"] = "The json data used to populate the tree view: the basic, always visible tree nodes.";
374
- KupTreeProps["density"] = "The density of the rows, defaults at 'medium' and can also be set to 'dense' or 'wide'.";
375
- KupTreeProps["dynamicExpansionCallback"] = "Function that gets invoked when a new set of nodes must be loaded as children of a node. When useDynamicExpansion is set, the tree component will have two different behaviors depending on the value of this prop. If this prop is set to null, no callback to download data is available: the component will emit an event requiring the parent to load the children of the given node. If this prop is set to have a callback, then the component will automatically make requests to load children of a given node. After the load has been completed, a different event will be fired to alert the parent of the change.";
376
- KupTreeProps["enableExtraColumns"] = "Enables adding extra columns.";
377
- KupTreeProps["expanded"] = "Flag: the nodes of the whole tree must be already expanded upon loading. Disabled nodes do NOT get expanded.";
378
- KupTreeProps["expansionMode"] = "Behavior of nodes' expansion: it can be chosen between expanding a node by clicking on the dropdown icon, or by clicking on the whole node.";
379
- KupTreeProps["filters"] = "List of filters set by the user.";
380
- KupTreeProps["globalFilter"] = "When set to true it activates the global filter.";
381
- KupTreeProps["globalFilterValue"] = "The value of the global filter.";
382
- KupTreeProps["globalFilterMode"] = "The mode of the global filter.";
383
- KupTreeProps["removableColumns"] = "Sets the possibility to remove the selected column.";
384
- KupTreeProps["preventXScroll"] = "Experimental feature: when active, the tree will try to prevent horizontal overflowing elements by setting a width on the content of the table cells. It works only on cells of the main column.";
385
- KupTreeProps["ripple"] = "When enabled displays Material's ripple effect on nodes (only when no columns are displayed).";
386
- KupTreeProps["scrollOnHover"] = "Activates the scroll on hover function.";
387
- KupTreeProps["showColumns"] = "Shows the tree data as a table.";
388
- KupTreeProps["showFilters"] = "When set to true enables the column filters.";
389
- KupTreeProps["showFooter"] = "When set to true shows the footer.";
390
- KupTreeProps["showHeader"] = "Flag: shows the header of the tree when the tree is displayed as a table.";
391
- KupTreeProps["showIcons"] = "Shows the icons of the nodes.";
392
- KupTreeProps["stateId"] = "";
393
- KupTreeProps["store"] = "";
394
- KupTreeProps["totals"] = "Defines the current totals options.";
395
- KupTreeProps["useDynamicExpansion"] = "When the component must use the dynamic expansion feature to open its nodes, it means that not all the nodes of the tree have been passed inside the data property. Therefore, when expanding a node, the tree must emit an event (or run a given callback) and wait for the child nodes to be downloaded from the server.";
396
- })(KupTreeProps || (KupTreeProps = {}));
397
- /**
398
- * The name of the constant used by the tree component to identify the main tree in column menu
399
- * @constant
400
- */
401
- const treeMainColumnName = 'TREE_COLUMN';
402
- var KupTreeExpansionMode;
403
- (function (KupTreeExpansionMode) {
404
- KupTreeExpansionMode["DROPDOWN"] = "dropdown";
405
- KupTreeExpansionMode["NODE"] = "node";
364
+ /**
365
+ * Props of the kup-tree component.
366
+ * Used to export every prop in an object.
367
+ */
368
+ var KupTreeProps;
369
+ (function (KupTreeProps) {
370
+ KupTreeProps["asAccordion"] = "When enabled, the first level of depth will give an accordion look to nodes.";
371
+ KupTreeProps["columns"] = "The columns of the tree when tree visualization is active.";
372
+ KupTreeProps["customStyle"] = "Custom style of the component.";
373
+ KupTreeProps["data"] = "The json data used to populate the tree view: the basic, always visible tree nodes.";
374
+ KupTreeProps["density"] = "The density of the rows, defaults at 'medium' and can also be set to 'dense' or 'wide'.";
375
+ KupTreeProps["dynamicExpansionCallback"] = "Function that gets invoked when a new set of nodes must be loaded as children of a node. When useDynamicExpansion is set, the tree component will have two different behaviors depending on the value of this prop. If this prop is set to null, no callback to download data is available: the component will emit an event requiring the parent to load the children of the given node. If this prop is set to have a callback, then the component will automatically make requests to load children of a given node. After the load has been completed, a different event will be fired to alert the parent of the change.";
376
+ KupTreeProps["enableExtraColumns"] = "Enables adding extra columns.";
377
+ KupTreeProps["expanded"] = "Flag: the nodes of the whole tree must be already expanded upon loading. Disabled nodes do NOT get expanded.";
378
+ KupTreeProps["expansionMode"] = "Behavior of nodes' expansion: it can be chosen between expanding a node by clicking on the dropdown icon, or by clicking on the whole node.";
379
+ KupTreeProps["filters"] = "List of filters set by the user.";
380
+ KupTreeProps["globalFilter"] = "When set to true it activates the global filter.";
381
+ KupTreeProps["globalFilterValue"] = "The value of the global filter.";
382
+ KupTreeProps["globalFilterMode"] = "The mode of the global filter.";
383
+ KupTreeProps["removableColumns"] = "Sets the possibility to remove the selected column.";
384
+ KupTreeProps["preventXScroll"] = "Experimental feature: when active, the tree will try to prevent horizontal overflowing elements by setting a width on the content of the table cells. It works only on cells of the main column.";
385
+ KupTreeProps["ripple"] = "When enabled displays Material's ripple effect on nodes (only when no columns are displayed).";
386
+ KupTreeProps["scrollOnHover"] = "Activates the scroll on hover function.";
387
+ KupTreeProps["showColumns"] = "Shows the tree data as a table.";
388
+ KupTreeProps["showFilters"] = "When set to true enables the column filters.";
389
+ KupTreeProps["showFooter"] = "When set to true shows the footer.";
390
+ KupTreeProps["showHeader"] = "Flag: shows the header of the tree when the tree is displayed as a table.";
391
+ KupTreeProps["showIcons"] = "Shows the icons of the nodes.";
392
+ KupTreeProps["stateId"] = "";
393
+ KupTreeProps["store"] = "";
394
+ KupTreeProps["totals"] = "Defines the current totals options.";
395
+ KupTreeProps["useDynamicExpansion"] = "When the component must use the dynamic expansion feature to open its nodes, it means that not all the nodes of the tree have been passed inside the data property. Therefore, when expanding a node, the tree must emit an event (or run a given callback) and wait for the child nodes to be downloaded from the server.";
396
+ })(KupTreeProps || (KupTreeProps = {}));
397
+ /**
398
+ * The name of the constant used by the tree component to identify the main tree in column menu
399
+ * @constant
400
+ */
401
+ const treeMainColumnName = 'TREE_COLUMN';
402
+ var KupTreeExpansionMode;
403
+ (function (KupTreeExpansionMode) {
404
+ KupTreeExpansionMode["DROPDOWN"] = "dropdown";
405
+ KupTreeExpansionMode["NODE"] = "node";
406
406
  })(KupTreeExpansionMode || (KupTreeExpansionMode = {}));
407
407
 
408
- const dom$3 = document.documentElement;
409
- const kupObjects = dom$3.ketchup
410
- ? dom$3.ketchup.objects
411
- : new KupObjects();
412
- const kupData = dom$3.ketchup ? dom$3.ketchup.data : new KupData();
413
- /**
414
- * Filtering algorithms related to data-table rows.
415
- * @module FiltersRows
416
- * @todo Should contain EVERY row-specific filtering method.
417
- */
418
- class FiltersRows extends Filters {
419
- isFilterCompliantForCell(cellValue, filterValue, interval) {
420
- if (!cellValue) {
421
- return false;
422
- }
423
- return this.isFilterCompliantForSimpleValue(cellValue.value, cellValue.obj, filterValue, interval);
424
- }
425
- isFilterCompliantForCellObj(cellValue, filterValue, interval) {
426
- if (!cellValue) {
427
- return false;
428
- }
429
- if (!cellValue.obj) {
430
- return false;
431
- }
432
- return this.isFilterCompliantForSimpleValue(cellValue.obj.k, cellValue.obj, filterValue, interval);
433
- }
434
- isRowCompliant(r, filters = {}, globalFilter = '', isUsingGlobalFilter = false, columns = [], columnFilters) {
435
- return this.areCellsCompliant(r.cells, filters, globalFilter, isUsingGlobalFilter, columns, columnFilters);
436
- }
437
- areCellsCompliant(cells, filters = {}, globalFilter = '', isUsingGlobalFilter = false, columns = [], columnFilters) {
438
- if (isUsingGlobalFilter) {
439
- let retValue = true;
440
- // There are no columns -> display element
441
- if (columns && columns != null && columns.length > 0) {
442
- retValue = false;
443
- let _filterIsNegative = this.filterIsNegative(globalFilter);
444
- // Search among all visible columns for the global filter
445
- for (let i = 0; i < columns.length; i++) {
446
- if (columns[i].visible == false) {
447
- continue;
448
- }
449
- const cell = cells[columns[i].name];
450
- if (cell == null) {
451
- continue;
452
- }
453
- retValue = this.isFilterCompliantForValue(cell.value, globalFilter);
454
- let displayedValue = getCellValueForDisplay(columns[i], cell);
455
- if (displayedValue != cell.value) {
456
- retValue =
457
- retValue ||
458
- this.isFilterCompliantForValue(displayedValue, globalFilter);
459
- }
460
- if (retValue == true && !_filterIsNegative) {
461
- break;
462
- }
463
- if (retValue == false && _filterIsNegative) {
464
- break;
465
- }
466
- }
467
- }
468
- if (!retValue) {
469
- return false;
470
- }
471
- }
472
- if (columnFilters == null) {
473
- columnFilters = new FiltersColumnMenu();
474
- }
475
- // There are no filters to check -> the element is valid
476
- if (!this.hasFilters(filters, columns, columnFilters)) {
477
- return true;
478
- }
479
- let keys = Object.keys(filters);
480
- // Filters
481
- for (let i = 0; i < keys.length; i++) {
482
- let key = keys[i];
483
- const cell = cells[key];
484
- if (!cell) {
485
- return false;
486
- }
487
- let filterValue = columnFilters.getTextFilterValue(filters, key);
488
- let interval = columnFilters.getIntervalTextFieldFilterValues(filters, getColumnByName(columns, key));
489
- const _filterIsNegative = this.filterIsNegative(filterValue);
490
- let b1 = this.isFilterCompliantForCell(cell, filterValue, interval);
491
- let b2 = _filterIsNegative;
492
- if (!kupObjects.isNumber(cell.obj) &&
493
- !kupObjects.isDate(cell.obj) &&
494
- !kupObjects.isTime(cell.obj) &&
495
- !kupObjects.isTimestamp(cell.obj)) {
496
- b2 = this.isFilterCompliantForCellObj(cell, filterValue, interval);
497
- }
498
- if (_filterIsNegative) {
499
- if (!b1 || !b2) {
500
- return false;
501
- }
502
- }
503
- else {
504
- if (!b1 && !b2) {
505
- return false;
506
- }
507
- }
508
- let filterValues = columnFilters.getCheckBoxFilterValues(filters, key);
509
- if (filterValues.length == 0) {
510
- continue;
511
- }
512
- let retValue = false;
513
- for (let i = 0; i < filterValues.length; i++) {
514
- let fv = filterValues[i];
515
- if (fv == null || fv.value == null) {
516
- continue;
517
- }
518
- if (cell.value != null) {
519
- if (cell.value.toLowerCase().trim() ==
520
- fv.value.toLowerCase().trim()) {
521
- retValue = true;
522
- break;
523
- }
524
- }
525
- if (cell.obj != null) {
526
- if (cell.obj.k.toLowerCase().trim() ==
527
- fv.value.toLowerCase().trim()) {
528
- retValue = true;
529
- break;
530
- }
531
- }
532
- }
533
- if (!retValue) {
534
- return false;
535
- }
536
- }
537
- return true;
538
- }
539
- hasFilters(filters = {}, columns, columnFilters) {
540
- if (filters == null) {
541
- return false;
542
- }
543
- let keys = Object.keys(filters);
544
- if (keys == null || keys.length < 1) {
545
- return false;
546
- }
547
- if (columnFilters == null) {
548
- columnFilters = new FiltersColumnMenu();
549
- }
550
- for (let i = 0; i < keys.length; i++) {
551
- let key = keys[i];
552
- let col = null;
553
- if (key === treeMainColumnName) {
554
- col = {
555
- name: treeMainColumnName,
556
- title: '',
557
- };
558
- }
559
- else {
560
- col = getColumnByName(columns, key);
561
- }
562
- if (columnFilters.hasFiltersForColumn(filters, col)) {
563
- return true;
564
- }
565
- }
566
- return false;
567
- }
568
- /**
569
- * Filters the rows data of a data-table component according to the parameters
570
- *
571
- * @param rows - The data of the rows to filter.
572
- * @param filters - The the filters for each column.
573
- * @param globalFilter - A global filter applied to all columns.
574
- * @param columns - The colmns on which the filter will take effect.
575
- * @todo This function can be improved in its speed by a refactor in which from two different cycles of execution for
576
- * single filters and global filter, all controls on a single column are done in a single cycle.
577
- */
578
- filterRows(rows = [], filters = {}, globalFilter = '', columns = [], columnFilters) {
579
- if (!rows || rows == null) {
580
- return [];
581
- }
582
- // There are rows to filter
583
- let filteredRows = [];
584
- const isUsingGlobalFilter = !!(globalFilter && columns);
585
- if (this.hasFilters(filters, columns, columnFilters) ||
586
- isUsingGlobalFilter) {
587
- for (let i = 0; i < rows.length; i++) {
588
- let r = rows[i];
589
- if ((r.id && r.id.indexOf('insert_') > -1) ||
590
- this.isRowCompliant(r, filters, globalFilter, isUsingGlobalFilter, columns, columnFilters)) {
591
- filteredRows[filteredRows.length] = r;
592
- }
593
- }
594
- }
595
- else {
596
- filteredRows = [...rows];
597
- }
598
- return filteredRows;
599
- }
600
- getColumnValues(comp, column, globalFilterValue, columnFilters) {
601
- let values = new Array();
602
- if (columnFilters == null) {
603
- columnFilters = new FiltersColumnMenu();
604
- }
605
- let value = columnFilters.getTextFilterValueTmp(comp.filters, column.name);
606
- let interval = columnFilters.getIntervalTextFieldFilterValuesTmp(comp.filters, column);
607
- let checkboxes = columnFilters.getCheckBoxFilterValues(comp.filters, column.name);
608
- if (column.valuesForFilter != null &&
609
- column.valuesForFilter.length > 0) {
610
- column.valuesForFilter.forEach((element) => {
611
- let v = element;
612
- if (Filters.valuesArrayContainsValue(checkboxes, v) ||
613
- value == '' ||
614
- columnFilters.isFilterCompliantForSimpleValue(v, column.obj, value, interval)) {
615
- values.push({
616
- value: v,
617
- displayedValue: getValueForDisplay(v, column.obj, column.decimals),
618
- });
619
- }
620
- });
621
- return values;
622
- }
623
- /** è necessario estrarre i valori della colonna di tutte le righe
624
- * filtrate SENZA il filtro della colonna stessa corrente */
625
- let tmpFilters = Object.assign({}, comp.filters);
626
- tmpFilters[column.name] = {
627
- textField: value,
628
- textFieldTmp: value,
629
- checkBoxes: [],
630
- interval: interval,
631
- intervalTmp: interval,
632
- };
633
- let tmpRows = this.filterRows(comp.getRows(), tmpFilters, globalFilterValue, comp.getVisibleColumns(), columnFilters);
634
- for (let i = 0; i < checkboxes.length; i++) {
635
- values.push(checkboxes[i]);
636
- }
637
- return kupData.cell.getUnivocalValue({ rows: tmpRows }, column, true);
638
- }
408
+ const dom$3 = document.documentElement;
409
+ const kupObjects = dom$3.ketchup
410
+ ? dom$3.ketchup.objects
411
+ : new KupObjects();
412
+ const kupData = dom$3.ketchup ? dom$3.ketchup.data : new KupData();
413
+ /**
414
+ * Filtering algorithms related to data-table rows.
415
+ * @module FiltersRows
416
+ * @todo Should contain EVERY row-specific filtering method.
417
+ */
418
+ class FiltersRows extends Filters {
419
+ isFilterCompliantForCell(cellValue, filterValue, interval) {
420
+ if (!cellValue) {
421
+ return false;
422
+ }
423
+ return this.isFilterCompliantForSimpleValue(cellValue.value, cellValue.obj, filterValue, interval);
424
+ }
425
+ isFilterCompliantForCellObj(cellValue, filterValue, interval) {
426
+ if (!cellValue) {
427
+ return false;
428
+ }
429
+ if (!cellValue.obj) {
430
+ return false;
431
+ }
432
+ return this.isFilterCompliantForSimpleValue(cellValue.obj.k, cellValue.obj, filterValue, interval);
433
+ }
434
+ isRowCompliant(r, filters = {}, globalFilter = '', isUsingGlobalFilter = false, columns = [], columnFilters) {
435
+ return this.areCellsCompliant(r.cells, filters, globalFilter, isUsingGlobalFilter, columns, columnFilters);
436
+ }
437
+ areCellsCompliant(cells, filters = {}, globalFilter = '', isUsingGlobalFilter = false, columns = [], columnFilters) {
438
+ if (isUsingGlobalFilter) {
439
+ let retValue = true;
440
+ // There are no columns -> display element
441
+ if (columns && columns != null && columns.length > 0) {
442
+ retValue = false;
443
+ let _filterIsNegative = this.filterIsNegative(globalFilter);
444
+ // Search among all visible columns for the global filter
445
+ for (let i = 0; i < columns.length; i++) {
446
+ if (columns[i].visible == false) {
447
+ continue;
448
+ }
449
+ const cell = cells[columns[i].name];
450
+ if (cell == null) {
451
+ continue;
452
+ }
453
+ retValue = this.isFilterCompliantForValue(cell.value, globalFilter);
454
+ let displayedValue = getCellValueForDisplay(columns[i], cell);
455
+ if (displayedValue != cell.value) {
456
+ retValue =
457
+ retValue ||
458
+ this.isFilterCompliantForValue(displayedValue, globalFilter);
459
+ }
460
+ if (retValue == true && !_filterIsNegative) {
461
+ break;
462
+ }
463
+ if (retValue == false && _filterIsNegative) {
464
+ break;
465
+ }
466
+ }
467
+ }
468
+ if (!retValue) {
469
+ return false;
470
+ }
471
+ }
472
+ if (columnFilters == null) {
473
+ columnFilters = new FiltersColumnMenu();
474
+ }
475
+ // There are no filters to check -> the element is valid
476
+ if (!this.hasFilters(filters, columns, columnFilters)) {
477
+ return true;
478
+ }
479
+ let keys = Object.keys(filters);
480
+ // Filters
481
+ for (let i = 0; i < keys.length; i++) {
482
+ let key = keys[i];
483
+ const cell = cells[key];
484
+ if (!cell) {
485
+ return false;
486
+ }
487
+ let filterValue = columnFilters.getTextFilterValue(filters, key);
488
+ let interval = columnFilters.getIntervalTextFieldFilterValues(filters, getColumnByName(columns, key));
489
+ const _filterIsNegative = this.filterIsNegative(filterValue);
490
+ let b1 = this.isFilterCompliantForCell(cell, filterValue, interval);
491
+ let b2 = _filterIsNegative;
492
+ if (!kupObjects.isNumber(cell.obj) &&
493
+ !kupObjects.isDate(cell.obj) &&
494
+ !kupObjects.isTime(cell.obj) &&
495
+ !kupObjects.isTimestamp(cell.obj)) {
496
+ b2 = this.isFilterCompliantForCellObj(cell, filterValue, interval);
497
+ }
498
+ if (_filterIsNegative) {
499
+ if (!b1 || !b2) {
500
+ return false;
501
+ }
502
+ }
503
+ else {
504
+ if (!b1 && !b2) {
505
+ return false;
506
+ }
507
+ }
508
+ let filterValues = columnFilters.getCheckBoxFilterValues(filters, key);
509
+ if (filterValues.length == 0) {
510
+ continue;
511
+ }
512
+ let retValue = false;
513
+ for (let i = 0; i < filterValues.length; i++) {
514
+ let fv = filterValues[i];
515
+ if (fv == null || fv.value == null) {
516
+ continue;
517
+ }
518
+ if (cell.value != null) {
519
+ if (cell.value.toLowerCase().trim() ==
520
+ fv.value.toLowerCase().trim()) {
521
+ retValue = true;
522
+ break;
523
+ }
524
+ }
525
+ if (cell.obj != null) {
526
+ if (cell.obj.k.toLowerCase().trim() ==
527
+ fv.value.toLowerCase().trim()) {
528
+ retValue = true;
529
+ break;
530
+ }
531
+ }
532
+ }
533
+ if (!retValue) {
534
+ return false;
535
+ }
536
+ }
537
+ return true;
538
+ }
539
+ hasFilters(filters = {}, columns, columnFilters) {
540
+ if (filters == null) {
541
+ return false;
542
+ }
543
+ let keys = Object.keys(filters);
544
+ if (keys == null || keys.length < 1) {
545
+ return false;
546
+ }
547
+ if (columnFilters == null) {
548
+ columnFilters = new FiltersColumnMenu();
549
+ }
550
+ for (let i = 0; i < keys.length; i++) {
551
+ let key = keys[i];
552
+ let col = null;
553
+ if (key === treeMainColumnName) {
554
+ col = {
555
+ name: treeMainColumnName,
556
+ title: '',
557
+ };
558
+ }
559
+ else {
560
+ col = getColumnByName(columns, key);
561
+ }
562
+ if (columnFilters.hasFiltersForColumn(filters, col)) {
563
+ return true;
564
+ }
565
+ }
566
+ return false;
567
+ }
568
+ /**
569
+ * Filters the rows data of a data-table component according to the parameters
570
+ *
571
+ * @param rows - The data of the rows to filter.
572
+ * @param filters - The the filters for each column.
573
+ * @param globalFilter - A global filter applied to all columns.
574
+ * @param columns - The colmns on which the filter will take effect.
575
+ * @todo This function can be improved in its speed by a refactor in which from two different cycles of execution for
576
+ * single filters and global filter, all controls on a single column are done in a single cycle.
577
+ */
578
+ filterRows(rows = [], filters = {}, globalFilter = '', columns = [], columnFilters) {
579
+ if (!rows || rows == null) {
580
+ return [];
581
+ }
582
+ // There are rows to filter
583
+ let filteredRows = [];
584
+ const isUsingGlobalFilter = !!(globalFilter && columns);
585
+ if (this.hasFilters(filters, columns, columnFilters) ||
586
+ isUsingGlobalFilter) {
587
+ for (let i = 0; i < rows.length; i++) {
588
+ let r = rows[i];
589
+ if ((r.id && r.id.indexOf('insert_') > -1) ||
590
+ this.isRowCompliant(r, filters, globalFilter, isUsingGlobalFilter, columns, columnFilters)) {
591
+ filteredRows[filteredRows.length] = r;
592
+ }
593
+ }
594
+ }
595
+ else {
596
+ filteredRows = [...rows];
597
+ }
598
+ return filteredRows;
599
+ }
600
+ getColumnValues(comp, column, globalFilterValue, columnFilters) {
601
+ let values = new Array();
602
+ if (columnFilters == null) {
603
+ columnFilters = new FiltersColumnMenu();
604
+ }
605
+ let value = columnFilters.getTextFilterValueTmp(comp.filters, column.name);
606
+ let interval = columnFilters.getIntervalTextFieldFilterValuesTmp(comp.filters, column);
607
+ let checkboxes = columnFilters.getCheckBoxFilterValues(comp.filters, column.name);
608
+ if (column.valuesForFilter != null &&
609
+ column.valuesForFilter.length > 0) {
610
+ column.valuesForFilter.forEach((element) => {
611
+ let v = element;
612
+ if (Filters.valuesArrayContainsValue(checkboxes, v) ||
613
+ value == '' ||
614
+ columnFilters.isFilterCompliantForSimpleValue(v, column.obj, value, interval)) {
615
+ values.push({
616
+ value: v,
617
+ displayedValue: getValueForDisplay(v, column.obj, column.decimals),
618
+ });
619
+ }
620
+ });
621
+ return values;
622
+ }
623
+ /** è necessario estrarre i valori della colonna di tutte le righe
624
+ * filtrate SENZA il filtro della colonna stessa corrente */
625
+ let tmpFilters = Object.assign({}, comp.filters);
626
+ tmpFilters[column.name] = {
627
+ textField: value,
628
+ textFieldTmp: value,
629
+ checkBoxes: [],
630
+ interval: interval,
631
+ intervalTmp: interval,
632
+ };
633
+ let tmpRows = this.filterRows(comp.getRows(), tmpFilters, globalFilterValue, comp.getVisibleColumns(), columnFilters);
634
+ for (let i = 0; i < checkboxes.length; i++) {
635
+ values.push(checkboxes[i]);
636
+ }
637
+ return kupData.cell.getUnivocalValue({ rows: tmpRows }, column, true);
638
+ }
639
639
  }
640
640
 
641
- const dom$2 = document.documentElement;
642
- function sortRows(rows = [], sort = []) {
643
- if (!rows || rows.length === 0) {
644
- return [];
645
- }
646
- // check if row is group
647
- if (rows[0].group) {
648
- return sortGroupRows(rows, sort);
649
- }
650
- // sorting rows
651
- if (!sort || sort.length === 0) {
652
- // no sort -> return rows as they are
653
- return rows;
654
- }
655
- // check multiple sort
656
- const isMultiSort = sort.length > 1;
657
- // sorting rows
658
- return rows.slice(0).sort((r1, r2) => {
659
- if (isMultiSort) {
660
- for (let i = 0; i < sort.length; i++) {
661
- const compare = compareRows(r1, r2, sort[i]);
662
- if (compare !== 0) {
663
- // not same row
664
- return compare;
665
- }
666
- }
667
- // same row
668
- return 0;
669
- }
670
- else {
671
- return compareRows(r1, r2, sort[0]);
672
- }
673
- });
674
- }
675
- function sortGroupRows(rows = [], sort = []) {
676
- if (!rows || rows.length === 0) {
677
- return [];
678
- }
679
- // getting columm group
680
- const groupColumn = rows[0].group.column;
681
- // check if column is in sort
682
- let sortObject = getSortOnColumn(groupColumn, sort);
683
- if (!sortObject) {
684
- sortObject = {
685
- column: groupColumn,
686
- sortMode: SortMode.A,
687
- };
688
- }
689
- // sorting rows
690
- rows.sort((r1, r2) => {
691
- // creating fake cells
692
- const cell1 = {
693
- obj: r1.group.obj,
694
- value: r1.group.id,
695
- };
696
- const cell2 = {
697
- obj: r2.group.obj,
698
- value: r2.group.id,
699
- };
700
- return compareCell(cell1, cell2, sortObject.sortMode);
701
- });
702
- // sorting children
703
- rows.forEach((row) => {
704
- row.group.children = sortRows(row.group.children, sort);
705
- });
706
- return rows;
707
- }
708
- function getSortOnColumn(column = '', sort = []) {
709
- if (!column || !sort || sort.length === 0) {
710
- return null;
711
- }
712
- for (let sortObject of sort) {
713
- if (sortObject.column === column) {
714
- return sortObject;
715
- }
716
- }
717
- return null;
718
- }
719
- function compareRows(r1, r2, sortObj) {
720
- const cell1 = r1.cells[sortObj.column];
721
- const cell2 = r2.cells[sortObj.column];
722
- if (!cell1 && !cell2) {
723
- return 0;
724
- }
725
- if (!cell1) {
726
- return 1;
727
- }
728
- if (!cell2) {
729
- return -1;
730
- }
731
- return compareCell(cell1, cell2, sortObj.sortMode);
732
- }
733
- //-------- FILTER FUNCTIONS --------
734
- /**
735
- * Filters the rows data of a data-table component according to the parameters
736
- *
737
- * @param rows - The data of the rows to filter.
738
- * @param filters - The the filters for each column.
739
- * @param globalFilter - A global filter applied to all columns.
740
- * @param columns - The colmns on which the filter will take effect.
741
- * @todo This function can be improved in its speed by a refactor in which from two different cycles of execution for
742
- * single filters and global filter, all controls on a single column are done in a single cycle.
743
- */
744
- function filterRows(rows = [], filters = {}, globalFilter = '', columns = [], columnFilters, filtersRows) {
745
- if (filtersRows == null) {
746
- filtersRows = new FiltersRows();
747
- }
748
- return filtersRows.filterRows(rows, filters, globalFilter, columns, columnFilters);
749
- }
750
- function groupRows(columns = [], rows = [], groups = [], totals = {}) {
751
- if (!rows) {
752
- return [];
753
- }
754
- if (!groups || groups.length === 0 || !columns || columns.length === 0) {
755
- return rows;
756
- }
757
- // Keeps label of the valid columns
758
- const columnLabels = {};
759
- // remove invalid groups and store column labels
760
- const validGroups = groups.filter(({ column }) => {
761
- for (let { name, title } of columns) {
762
- if (name === column) {
763
- // Store label of the columns
764
- columnLabels[name] = title;
765
- return true;
766
- }
767
- }
768
- return false;
769
- });
770
- if (validGroups.length === 0) {
771
- // no valid groups
772
- return rows;
773
- }
774
- // creating root
775
- const groupRows = [];
776
- // obj used to calculate the group distinct value
777
- let distinctObj = {};
778
- rows.forEach((row) => {
779
- // getting column name from first group
780
- const columnName = validGroups[0].column;
781
- // getting row value
782
- const cell = row.cells[columnName];
783
- if (cell) {
784
- const column = getColumnByName(columns, columnName);
785
- const cellValueForDisplay = getCellValueForDisplay(column, cell);
786
- const cellValue = cell.value;
787
- let groupRow = null;
788
- // check in already in groupedRow
789
- for (let currentGroupRow of groupRows) {
790
- if (currentGroupRow.group.label === cellValueForDisplay) {
791
- groupRow = currentGroupRow;
792
- break;
793
- }
794
- }
795
- if (groupRow === null) {
796
- // create group row
797
- groupRow = {
798
- group: {
799
- id: cellValue,
800
- parent: null,
801
- column: columnName,
802
- columnLabel: columnLabels[columnName],
803
- expanded: false,
804
- label: cellValueForDisplay,
805
- children: [],
806
- obj: cell.obj,
807
- totals: {},
808
- },
809
- cells: {},
810
- };
811
- // add group to list
812
- groupRows.push(groupRow);
813
- }
814
- for (let i = 1; i < validGroups.length; i++) {
815
- const group = validGroups[i];
816
- // getting cell value
817
- const tempCell = row.cells[group.column];
818
- if (tempCell) {
819
- const column = getColumnByName(columns, group.column);
820
- const tempCellValueForDisplay = getCellValueForDisplay(column, tempCell);
821
- const tempCellValue = tempCell.value;
822
- // check if group already exists
823
- let tempGroupingRow = null;
824
- for (let j = 0; j < groupRow.group.children.length; j++) {
825
- const childGroup = groupRow.group.children[j];
826
- const groupLabel = childGroup.group.label;
827
- if (groupLabel === tempCellValueForDisplay) {
828
- tempGroupingRow = childGroup;
829
- break;
830
- }
831
- }
832
- if (!tempGroupingRow) {
833
- tempGroupingRow = {
834
- cells: {},
835
- group: {
836
- id: tempCellValue,
837
- parent: groupRow,
838
- column: group.column,
839
- columnLabel: columnLabels[group.column],
840
- children: [],
841
- expanded: false,
842
- label: tempCellValueForDisplay,
843
- totals: {},
844
- obj: tempCell.obj,
845
- },
846
- };
847
- adjustGroupId(tempGroupingRow);
848
- groupRow.group.children.push(tempGroupingRow);
849
- }
850
- groupRow = tempGroupingRow;
851
- }
852
- }
853
- // adding row
854
- groupRow.group.children.push(row);
855
- updateGroupTotal(groupRow, totals, row, distinctObj);
856
- }
857
- });
858
- adjustGroupsDistinct(groupRows, totals, distinctObj);
859
- adjustGroupsAverageOrFormula(groupRows, TotalMode.AVERAGE, totals);
860
- adjustGroupsAverageOrFormula(groupRows, TotalMode.MATH, totals);
861
- return groupRows;
862
- }
863
- function updateGroupTotal(groupRow, totals, addedRow, distinctObj) {
864
- if (!groupRow || !totals) {
865
- return;
866
- }
867
- const keys = Object.keys(totals);
868
- if (keys.length === 0) {
869
- return;
870
- }
871
- keys.forEach((key) => {
872
- const currentTotalValue = dom$2.ketchup.math.numberify(groupRow.group.totals[key] || 0);
873
- const cell = addedRow.cells[key];
874
- if (cell) {
875
- let _isNumber = dom$2.ketchup.objects.isNumber(cell.obj);
876
- const totalMode = totals[key];
877
- switch (totalMode) {
878
- case TotalMode.COUNT:
879
- groupRow.group.totals[key] = currentTotalValue + 1;
880
- // updating parents
881
- let parent = groupRow.group.parent;
882
- while (parent != null) {
883
- const currentParentCount = parent.group.totals[key] || 0;
884
- parent.group.totals[key] = currentParentCount + 1;
885
- parent = parent.group.parent;
886
- }
887
- break;
888
- case TotalMode.DISTINCT:
889
- let cellValue;
890
- if (_isNumber) {
891
- cellValue = dom$2.ketchup.math.numberify(dom$2.ketchup.math.numberifySafe(cell.value));
892
- }
893
- else {
894
- cellValue = cell.value;
895
- }
896
- let distinctGroup = distinctObj[groupRow.group.id];
897
- if (!distinctGroup) {
898
- distinctObj[groupRow.group.id] = {};
899
- distinctObj[groupRow.group.id][key] = [];
900
- distinctObj[groupRow.group.id][key].push(cellValue);
901
- }
902
- else {
903
- let distinctList = distinctObj[groupRow.group.id][key];
904
- if (!distinctList) {
905
- // first round
906
- distinctObj[groupRow.group.id][key] = [];
907
- distinctObj[groupRow.group.id][key].push(cellValue);
908
- }
909
- else {
910
- // update the list
911
- distinctList.push(cellValue);
912
- }
913
- }
914
- // updating parents
915
- let distinctParent = groupRow.group.parent;
916
- while (distinctParent != null) {
917
- // get parent value
918
- let distinctGroupParent = distinctObj[distinctParent.group.id];
919
- if (!distinctGroupParent) {
920
- distinctObj[distinctParent.group.id] = {};
921
- distinctObj[distinctParent.group.id][key] = [];
922
- distinctObj[distinctParent.group.id][key].push(cellValue);
923
- }
924
- else {
925
- let distinctParentList = distinctObj[distinctParent.group.id][key];
926
- if (!distinctParentList) {
927
- // first round
928
- distinctObj[distinctParent.group.id][key] = [];
929
- distinctObj[distinctParent.group.id][key].push(cellValue);
930
- }
931
- else {
932
- // update the list
933
- distinctParentList.push(cellValue);
934
- }
935
- }
936
- // continue
937
- distinctParent = distinctParent.group.parent;
938
- }
939
- break;
940
- case TotalMode.SUM:
941
- case TotalMode.AVERAGE:
942
- if (_isNumber) {
943
- const cellValue = dom$2.ketchup.math.numberify(dom$2.ketchup.math.numberifySafe(cell.value));
944
- groupRow.group.totals[key] =
945
- cellValue + currentTotalValue;
946
- // updating parents
947
- let parent = groupRow.group.parent;
948
- while (parent != null) {
949
- const currentParentSum = dom$2.ketchup.math.numberify(parent.group.totals[key] || 0);
950
- parent.group.totals[key] =
951
- cellValue + currentParentSum;
952
- parent = parent.group.parent;
953
- }
954
- }
955
- break;
956
- // TODO DRY the MIN and MAX functions
957
- case TotalMode.MIN:
958
- if (_isNumber) {
959
- const currentTotalValue = groupRow.group.totals[key];
960
- const cellValue = dom$2.ketchup.math.numberify(dom$2.ketchup.math.numberifySafe(cell.value));
961
- if (currentTotalValue) {
962
- groupRow.group.totals[key] = Math.min(currentTotalValue, cellValue);
963
- }
964
- else {
965
- // first round
966
- groupRow.group.totals[key] = cellValue;
967
- }
968
- // updating parents
969
- let parent = groupRow.group.parent;
970
- while (parent != null) {
971
- const currentParentMin = parent.group.totals[key];
972
- if (currentParentMin) {
973
- parent.group.totals[key] = Math.min(currentParentMin, cellValue);
974
- }
975
- else {
976
- // first round
977
- parent.group.totals[key] = cellValue;
978
- }
979
- parent = parent.group.parent;
980
- }
981
- }
982
- else if (dom$2.ketchup.objects.isDate(cell.obj)) {
983
- const momentValue = cell.obj
984
- ? dom$2.ketchup.objects.parseDate(cell.obj)
985
- : dom$2.ketchup.dates.toDayjs(cell.value);
986
- if (dom$2.ketchup.dates.isValid(momentValue)) {
987
- const cellValue = dom$2.ketchup.dates.toDate(momentValue);
988
- const currentTotalValue = groupRow.group.totals[key];
989
- if (currentTotalValue) {
990
- let moments = [];
991
- moments.push(cellValue);
992
- moments.push(dom$2.ketchup.dates.format(currentTotalValue));
993
- groupRow.group.totals[key] =
994
- dom$2.ketchup.dates.format(dom$2.ketchup.dates.min(moments));
995
- }
996
- else {
997
- groupRow.group.totals[key] = cellValue;
998
- }
999
- // updating parents
1000
- let parent = groupRow.group.parent;
1001
- while (parent != null) {
1002
- const currentParentMin = parent.group.totals[key];
1003
- if (currentParentMin) {
1004
- let moments = [];
1005
- moments.push(cellValue);
1006
- moments.push(dom$2.ketchup.dates.format(currentParentMin));
1007
- parent.group.totals[key] =
1008
- dom$2.ketchup.dates.format(dom$2.ketchup.dates.min(moments));
1009
- }
1010
- else {
1011
- // first round
1012
- parent.group.totals[key] = cellValue;
1013
- }
1014
- parent = parent.group.parent;
1015
- }
1016
- }
1017
- }
1018
- break;
1019
- // TODO DRY the MIN and MAX functions
1020
- case TotalMode.MAX:
1021
- if (_isNumber) {
1022
- const currentTotalValue = groupRow.group.totals[key];
1023
- const cellValue = dom$2.ketchup.math.numberify(dom$2.ketchup.math.numberifySafe(cell.value));
1024
- if (currentTotalValue) {
1025
- groupRow.group.totals[key] = Math.max(currentTotalValue, cellValue);
1026
- }
1027
- else {
1028
- // first round
1029
- groupRow.group.totals[key] = cellValue;
1030
- }
1031
- // updating parents
1032
- let parent = groupRow.group.parent;
1033
- while (parent != null) {
1034
- const currentParentMax = parent.group.totals[key];
1035
- if (currentParentMax) {
1036
- parent.group.totals[key] = Math.max(currentParentMax, cellValue);
1037
- }
1038
- else {
1039
- // first round
1040
- parent.group.totals[key] = cellValue;
1041
- }
1042
- parent = parent.group.parent;
1043
- }
1044
- }
1045
- else if (dom$2.ketchup.objects.isDate(cell.obj)) {
1046
- const momentValue = cell.obj
1047
- ? dom$2.ketchup.objects.parseDate(cell.obj)
1048
- : dom$2.ketchup.dates.toDayjs(cell.value);
1049
- if (dom$2.ketchup.dates.isValid(momentValue)) {
1050
- const cellValue = dom$2.ketchup.dates.toDate(momentValue);
1051
- const currentTotalValue = groupRow.group.totals[key];
1052
- if (currentTotalValue) {
1053
- let moments = [];
1054
- moments.push(cellValue);
1055
- moments.push(dom$2.ketchup.dates.format(currentTotalValue));
1056
- groupRow.group.totals[key] =
1057
- dom$2.ketchup.dates.format(dom$2.ketchup.dates.max(moments));
1058
- }
1059
- else {
1060
- groupRow.group.totals[key] = cellValue;
1061
- }
1062
- // updating parents
1063
- let parent = groupRow.group.parent;
1064
- while (parent != null) {
1065
- const currentParentMin = parent.group.totals[key];
1066
- if (currentParentMin) {
1067
- let moments = [];
1068
- moments.push(cellValue);
1069
- moments.push(dom$2.ketchup.dates.format(currentParentMin));
1070
- parent.group.totals[key] =
1071
- dom$2.ketchup.dates.format(dom$2.ketchup.dates.max(moments));
1072
- }
1073
- else {
1074
- // first round
1075
- parent.group.totals[key] = cellValue;
1076
- }
1077
- parent = parent.group.parent;
1078
- }
1079
- }
1080
- }
1081
- break;
1082
- default: {
1083
- if (totalMode.indexOf(TotalMode.MATH) != 0) {
1084
- console.warn(`invalid total mode: ${totalMode}`);
1085
- }
1086
- break;
1087
- }
1088
- }
1089
- }
1090
- });
1091
- }
1092
- function adjustGroupsDistinct(groupRows, totals, distinctObj) {
1093
- if (!groupRows || !totals) {
1094
- return;
1095
- }
1096
- const keys = Object.keys(totals);
1097
- if (groupRows.length === 0 || !groupRows[0].group || keys.length === 0) {
1098
- return;
1099
- }
1100
- let toAdjustKeys = keys.filter((key) => TotalMode.DISTINCT === totals[key]);
1101
- if (toAdjustKeys.length > 0) {
1102
- groupRows
1103
- .filter((groupRow) => groupRow.group.children.length > 0)
1104
- .forEach((groupRow) => adjustGroupDistinct(groupRow, toAdjustKeys, distinctObj));
1105
- }
1106
- }
1107
- function adjustGroupsAverageOrFormula(groupRows, type, totals) {
1108
- if (!groupRows || !totals) {
1109
- return;
1110
- }
1111
- const keys = Object.keys(totals);
1112
- if (groupRows.length === 0 || !groupRows[0].group || keys.length === 0) {
1113
- return;
1114
- }
1115
- let toAdjustKeys;
1116
- if (type == TotalMode.AVERAGE) {
1117
- toAdjustKeys = keys.filter((key) => TotalMode.AVERAGE === totals[key]);
1118
- }
1119
- if (type == TotalMode.MATH) {
1120
- toAdjustKeys = keys.filter((key) => totals[key].indexOf(TotalMode.MATH) == 0);
1121
- }
1122
- if (toAdjustKeys.length > 0) {
1123
- groupRows
1124
- .filter((groupRow) => groupRow.group.children.length > 0)
1125
- .forEach((groupRow) => adjustGroupAverageOrFormula(groupRow, type, toAdjustKeys, totals));
1126
- }
1127
- }
1128
- function adjustGroupDistinct(groupRow, toAdjustKeys, distinctObj) {
1129
- const children = groupRow.group.children;
1130
- if (children.length === 0) {
1131
- return;
1132
- }
1133
- if (children[0].group) {
1134
- children.forEach((child) => {
1135
- adjustGroupDistinct(child, toAdjustKeys, distinctObj);
1136
- });
1137
- }
1138
- toAdjustKeys.forEach((key) => {
1139
- const distinctList = distinctObj[groupRow.group.id][key];
1140
- groupRow.group.totals[key] = new Set(distinctList).size;
1141
- });
1142
- }
1143
- /**
1144
- * @returns number of 'leaf' of group
1145
- */
1146
- function adjustGroupAverageOrFormula(row, type, toAdjustKeys, totals) {
1147
- const children = row.group.children;
1148
- if (children.length === 0) {
1149
- return 0;
1150
- }
1151
- let numberOfLeaf = 0;
1152
- // check if child is a grouping row
1153
- if (children[0].group) {
1154
- children.forEach((child) => {
1155
- numberOfLeaf += adjustGroupAverageOrFormula(child, type, toAdjustKeys, totals);
1156
- });
1157
- }
1158
- else {
1159
- numberOfLeaf = children.length;
1160
- }
1161
- // adjust average/formulas
1162
- toAdjustKeys.forEach((key) => {
1163
- if (type == TotalMode.AVERAGE) {
1164
- row.group.totals[key] =
1165
- dom$2.ketchup.math.numberify(row.group.totals[key]) /
1166
- numberOfLeaf;
1167
- }
1168
- if (type == TotalMode.MATH) {
1169
- let formula = totals[key].substring(TotalMode.MATH.length);
1170
- row.group.totals[key] = dom$2.ketchup.math.formulas.custom(formula, row.group.totals);
1171
- }
1172
- });
1173
- return numberOfLeaf;
1174
- }
1175
- function normalizeRows(columns, rows) {
1176
- if (rows) {
1177
- const normalizedrows = Object.assign(rows);
1178
- rows.forEach((row) => {
1179
- columns.forEach((column) => {
1180
- if (row.cells) {
1181
- const cell = row.cells[column.name];
1182
- if (cell && column.obj && !cell.obj) {
1183
- // cell.obj = Object.assign(column.obj);
1184
- cell.obj = {
1185
- t: column.obj.t,
1186
- p: column.obj.p,
1187
- k: cell.value,
1188
- };
1189
- }
1190
- }
1191
- });
1192
- });
1193
- return normalizedrows;
1194
- }
1195
- else {
1196
- return undefined;
1197
- }
1198
- }
1199
- function calcTotals(rows = [], totals = {}) {
1200
- if (dom$2.ketchup.objects.isEmptyJsObject(rows) ||
1201
- dom$2.ketchup.objects.isEmptyJsObject(totals)) {
1202
- return {};
1203
- }
1204
- const keys = Object.keys(totals);
1205
- const footerRow = {};
1206
- const dateColumns = new Array();
1207
- // if there are only COUNT, no need to loop on rows
1208
- let onlyCount = keys.length === 0 ||
1209
- keys.every((key) => totals[key] === TotalMode.COUNT);
1210
- if (onlyCount) {
1211
- keys.forEach((columnName) => (footerRow[columnName] = rows.length));
1212
- }
1213
- else {
1214
- let distinctObj = {};
1215
- rows.forEach((r, index, array) => {
1216
- keys.filter((key) => TotalMode.COUNT !== totals[key] &&
1217
- totals[key].indexOf(TotalMode.MATH) != 0).forEach((key) => {
1218
- // getting cell
1219
- const cell = r.cells[key];
1220
- if (cell) {
1221
- if (totals[key] === TotalMode.DISTINCT) {
1222
- let cellValue;
1223
- if (dom$2.ketchup.objects.isNumber(cell.obj)) {
1224
- cellValue = dom$2.ketchup.math.numberify(dom$2.ketchup.math.numberifySafe(cell.value));
1225
- }
1226
- else {
1227
- cellValue = cell.value;
1228
- }
1229
- let distinctList = distinctObj[key];
1230
- if (!distinctList) {
1231
- // first round
1232
- distinctObj[key] = [];
1233
- distinctObj[key].push(cellValue);
1234
- }
1235
- else {
1236
- // update the list
1237
- distinctList.push(cellValue);
1238
- }
1239
- }
1240
- else if (dom$2.ketchup.objects.isNumber(cell.obj)) {
1241
- const cellValue = dom$2.ketchup.math.numberify(dom$2.ketchup.math.numberifySafe(cell.value));
1242
- let currentFooterValue = footerRow[key];
1243
- switch (true) {
1244
- // TODO DRY the MIN and MAX functions
1245
- case totals[key] === TotalMode.MIN:
1246
- if (currentFooterValue) {
1247
- footerRow[key] = Math.min(currentFooterValue, cellValue);
1248
- }
1249
- else {
1250
- footerRow[key] = cellValue;
1251
- }
1252
- break;
1253
- case totals[key] === TotalMode.MAX:
1254
- if (currentFooterValue) {
1255
- footerRow[key] = Math.max(currentFooterValue, cellValue);
1256
- }
1257
- else {
1258
- footerRow[key] = cellValue;
1259
- }
1260
- break;
1261
- default:
1262
- // SUM
1263
- currentFooterValue = footerRow[key] || 0;
1264
- footerRow[key] =
1265
- cellValue +
1266
- dom$2.ketchup.math.numberify(currentFooterValue);
1267
- }
1268
- // TODO DRY the MIN and MAX functions
1269
- }
1270
- else if (dom$2.ketchup.objects.isDate(cell.obj)) {
1271
- if (dateColumns.indexOf(key) == -1) {
1272
- dateColumns.push(key);
1273
- }
1274
- const momentValue = dom$2.ketchup.dates.toDayjs(cell.value);
1275
- if (dom$2.ketchup.dates.isValid(momentValue)) {
1276
- const cellValue = dom$2.ketchup.dates.toDate(momentValue);
1277
- const currentFooterValue = footerRow[key]
1278
- ? dom$2.ketchup.dates.toDate(dom$2.ketchup.dates.toDayjs(footerRow[key]))
1279
- : null;
1280
- switch (true) {
1281
- case totals[key] === TotalMode.MIN:
1282
- if (currentFooterValue) {
1283
- let moments = [];
1284
- moments.push(cellValue);
1285
- moments.push(currentFooterValue);
1286
- footerRow[key] =
1287
- dom$2.ketchup.dates.format(dom$2.ketchup.dates.min(moments), KupDatesFormats.ISO_DATE);
1288
- }
1289
- else {
1290
- footerRow[key] =
1291
- dom$2.ketchup.dates.format(cellValue, KupDatesFormats.ISO_DATE);
1292
- }
1293
- break;
1294
- case totals[key] === TotalMode.MAX:
1295
- if (currentFooterValue) {
1296
- let moments = [];
1297
- moments.push(cellValue);
1298
- moments.push(currentFooterValue);
1299
- footerRow[key] =
1300
- dom$2.ketchup.dates.format(dom$2.ketchup.dates.max(moments), KupDatesFormats.ISO_DATE);
1301
- }
1302
- else {
1303
- footerRow[key] =
1304
- dom$2.ketchup.dates.format(cellValue, KupDatesFormats.ISO_DATE);
1305
- }
1306
- break;
1307
- }
1308
- }
1309
- }
1310
- }
1311
- if (index === array.length - 1 &&
1312
- totals[key] === TotalMode.DISTINCT) {
1313
- // last round
1314
- footerRow[key] = new Set(distinctObj[key]).size;
1315
- distinctObj[key] = [];
1316
- }
1317
- });
1318
- });
1319
- }
1320
- // fixing MATH, AVERAGE and COUNT
1321
- for (let key of keys) {
1322
- switch (true) {
1323
- case totals[key] === TotalMode.AVERAGE:
1324
- const sum = footerRow[key];
1325
- if (sum && rows.length > 0) {
1326
- footerRow[key] = sum / rows.length;
1327
- }
1328
- break;
1329
- case totals[key] === TotalMode.COUNT:
1330
- footerRow[key] = rows.length;
1331
- break;
1332
- case totals[key].indexOf(TotalMode.MATH) == 0:
1333
- footerRow[key] = dom$2.ketchup.math.formulas.custom(totals[key].substring(TotalMode.MATH.length), footerRow);
1334
- break;
1335
- }
1336
- if (footerRow[key]) {
1337
- if (dateColumns.indexOf(key) != -1) {
1338
- footerRow[key] = dom$2.ketchup.dates.format(footerRow[key]);
1339
- }
1340
- else if (dom$2.ketchup.math.isNumber(footerRow[key])) {
1341
- footerRow[key] = +footerRow[key].toFixed(2);
1342
- }
1343
- }
1344
- }
1345
- return footerRow;
1346
- }
1347
- function adjustGroupId(row) {
1348
- if (!row.group) {
1349
- return;
1350
- }
1351
- let groupID = row.group.id;
1352
- let parentRow = row.group.parent;
1353
- while (parentRow !== null) {
1354
- groupID = `${parentRow.group.id};${groupID}`;
1355
- parentRow = parentRow.group.parent;
1356
- }
1357
- row.group.id = groupID;
1358
- }
1359
- function paginateRows(rows, currentPage, rowsPerPage, areGrouped) {
1360
- const start = currentPage * rowsPerPage - rowsPerPage;
1361
- const end = start + Number(rowsPerPage);
1362
- if (areGrouped == false) {
1363
- return rows.slice(start, end);
1364
- }
1365
- let pagRows = [];
1366
- _paginateRows(rows, pagRows, start, Number(rowsPerPage), 0);
1367
- return pagRows;
1368
- }
1369
- function _paginateRows(rows, pagRows, start, rowsPerPage, ci) {
1370
- let added = false;
1371
- for (let i = 0; i < rows.length; i++) {
1372
- let originalRow = rows[i];
1373
- let row = cloneRow(rows[i]);
1374
- if (originalRow.group != null &&
1375
- originalRow.group.children != null &&
1376
- originalRow.group.children.length > 0) {
1377
- row.group.children = [];
1378
- let retValue = _paginateRows(originalRow.group.children, row.group.children, start, rowsPerPage, ci);
1379
- ci = retValue.ci;
1380
- added = retValue.added;
1381
- if (added == true) {
1382
- pagRows[pagRows.length] = row;
1383
- }
1384
- }
1385
- else {
1386
- if (ci >= start) {
1387
- pagRows[pagRows.length] = row;
1388
- added = true;
1389
- }
1390
- ci++;
1391
- }
1392
- if (ci >= start + rowsPerPage) {
1393
- break;
1394
- }
1395
- }
1396
- return { ci: ci, added: added };
1397
- }
1398
- function cloneRow(row) {
1399
- if (row == null) {
1400
- return null;
1401
- }
1402
- else {
1403
- return {
1404
- id: row.id,
1405
- cells: Object.assign({}, row.cells),
1406
- actions: row.actions ? [...row.actions] : null,
1407
- group: cloneRowGroup(row.group),
1408
- clonedFrom: row,
1409
- readOnly: row.readOnly,
1410
- cssClass: row.cssClass,
1411
- };
1412
- }
1413
- }
1414
- function cloneRows(rows) {
1415
- if (rows == null) {
1416
- return null;
1417
- }
1418
- let cloned = [];
1419
- for (let i = 0; i < rows.length; i++) {
1420
- cloned[cloned.length] = cloneRow(rows[i]);
1421
- }
1422
- return cloned;
1423
- }
1424
- function cloneRowGroup(group) {
1425
- if (group == null) {
1426
- return null;
1427
- }
1428
- let cloned = {
1429
- id: group.id,
1430
- parent: Object.assign({}, group.parent),
1431
- column: group.column,
1432
- columnLabel: group.columnLabel,
1433
- expanded: group.expanded,
1434
- label: group.label,
1435
- children: cloneRows(group.children),
1436
- obj: Object.assign({}, group.obj),
1437
- totals: Object.assign({}, group.totals),
1438
- };
1439
- return cloned;
641
+ const dom$2 = document.documentElement;
642
+ function sortRows(rows = [], sort = []) {
643
+ if (!rows || rows.length === 0) {
644
+ return [];
645
+ }
646
+ // check if row is group
647
+ if (rows[0].group) {
648
+ return sortGroupRows(rows, sort);
649
+ }
650
+ // sorting rows
651
+ if (!sort || sort.length === 0) {
652
+ // no sort -> return rows as they are
653
+ return rows;
654
+ }
655
+ // check multiple sort
656
+ const isMultiSort = sort.length > 1;
657
+ // sorting rows
658
+ return rows.slice(0).sort((r1, r2) => {
659
+ if (isMultiSort) {
660
+ for (let i = 0; i < sort.length; i++) {
661
+ const compare = compareRows(r1, r2, sort[i]);
662
+ if (compare !== 0) {
663
+ // not same row
664
+ return compare;
665
+ }
666
+ }
667
+ // same row
668
+ return 0;
669
+ }
670
+ else {
671
+ return compareRows(r1, r2, sort[0]);
672
+ }
673
+ });
674
+ }
675
+ function sortGroupRows(rows = [], sort = []) {
676
+ if (!rows || rows.length === 0) {
677
+ return [];
678
+ }
679
+ // getting columm group
680
+ const groupColumn = rows[0].group.column;
681
+ // check if column is in sort
682
+ let sortObject = getSortOnColumn(groupColumn, sort);
683
+ if (!sortObject) {
684
+ sortObject = {
685
+ column: groupColumn,
686
+ sortMode: SortMode.A,
687
+ };
688
+ }
689
+ // sorting rows
690
+ rows.sort((r1, r2) => {
691
+ // creating fake cells
692
+ const cell1 = {
693
+ obj: r1.group.obj,
694
+ value: r1.group.id,
695
+ };
696
+ const cell2 = {
697
+ obj: r2.group.obj,
698
+ value: r2.group.id,
699
+ };
700
+ return compareCell(cell1, cell2, sortObject.sortMode);
701
+ });
702
+ // sorting children
703
+ rows.forEach((row) => {
704
+ row.group.children = sortRows(row.group.children, sort);
705
+ });
706
+ return rows;
707
+ }
708
+ function getSortOnColumn(column = '', sort = []) {
709
+ if (!column || !sort || sort.length === 0) {
710
+ return null;
711
+ }
712
+ for (let sortObject of sort) {
713
+ if (sortObject.column === column) {
714
+ return sortObject;
715
+ }
716
+ }
717
+ return null;
718
+ }
719
+ function compareRows(r1, r2, sortObj) {
720
+ const cell1 = r1.cells[sortObj.column];
721
+ const cell2 = r2.cells[sortObj.column];
722
+ if (!cell1 && !cell2) {
723
+ return 0;
724
+ }
725
+ if (!cell1) {
726
+ return 1;
727
+ }
728
+ if (!cell2) {
729
+ return -1;
730
+ }
731
+ return compareCell(cell1, cell2, sortObj.sortMode);
732
+ }
733
+ //-------- FILTER FUNCTIONS --------
734
+ /**
735
+ * Filters the rows data of a data-table component according to the parameters
736
+ *
737
+ * @param rows - The data of the rows to filter.
738
+ * @param filters - The the filters for each column.
739
+ * @param globalFilter - A global filter applied to all columns.
740
+ * @param columns - The colmns on which the filter will take effect.
741
+ * @todo This function can be improved in its speed by a refactor in which from two different cycles of execution for
742
+ * single filters and global filter, all controls on a single column are done in a single cycle.
743
+ */
744
+ function filterRows(rows = [], filters = {}, globalFilter = '', columns = [], columnFilters, filtersRows) {
745
+ if (filtersRows == null) {
746
+ filtersRows = new FiltersRows();
747
+ }
748
+ return filtersRows.filterRows(rows, filters, globalFilter, columns, columnFilters);
749
+ }
750
+ function groupRows(columns = [], rows = [], groups = [], totals = {}) {
751
+ if (!rows) {
752
+ return [];
753
+ }
754
+ if (!groups || groups.length === 0 || !columns || columns.length === 0) {
755
+ return rows;
756
+ }
757
+ // Keeps label of the valid columns
758
+ const columnLabels = {};
759
+ // remove invalid groups and store column labels
760
+ const validGroups = groups.filter(({ column }) => {
761
+ for (let { name, title } of columns) {
762
+ if (name === column) {
763
+ // Store label of the columns
764
+ columnLabels[name] = title;
765
+ return true;
766
+ }
767
+ }
768
+ return false;
769
+ });
770
+ if (validGroups.length === 0) {
771
+ // no valid groups
772
+ return rows;
773
+ }
774
+ // creating root
775
+ const groupRows = [];
776
+ // obj used to calculate the group distinct value
777
+ let distinctObj = {};
778
+ rows.forEach((row) => {
779
+ // getting column name from first group
780
+ const columnName = validGroups[0].column;
781
+ // getting row value
782
+ const cell = row.cells[columnName];
783
+ if (cell) {
784
+ const column = getColumnByName(columns, columnName);
785
+ const cellValueForDisplay = getCellValueForDisplay(column, cell);
786
+ const cellValue = cell.value;
787
+ let groupRow = null;
788
+ // check in already in groupedRow
789
+ for (let currentGroupRow of groupRows) {
790
+ if (currentGroupRow.group.label === cellValueForDisplay) {
791
+ groupRow = currentGroupRow;
792
+ break;
793
+ }
794
+ }
795
+ if (groupRow === null) {
796
+ // create group row
797
+ groupRow = {
798
+ group: {
799
+ id: cellValue,
800
+ parent: null,
801
+ column: columnName,
802
+ columnLabel: columnLabels[columnName],
803
+ expanded: false,
804
+ label: cellValueForDisplay,
805
+ children: [],
806
+ obj: cell.obj,
807
+ totals: {},
808
+ },
809
+ cells: {},
810
+ };
811
+ // add group to list
812
+ groupRows.push(groupRow);
813
+ }
814
+ for (let i = 1; i < validGroups.length; i++) {
815
+ const group = validGroups[i];
816
+ // getting cell value
817
+ const tempCell = row.cells[group.column];
818
+ if (tempCell) {
819
+ const column = getColumnByName(columns, group.column);
820
+ const tempCellValueForDisplay = getCellValueForDisplay(column, tempCell);
821
+ const tempCellValue = tempCell.value;
822
+ // check if group already exists
823
+ let tempGroupingRow = null;
824
+ for (let j = 0; j < groupRow.group.children.length; j++) {
825
+ const childGroup = groupRow.group.children[j];
826
+ const groupLabel = childGroup.group.label;
827
+ if (groupLabel === tempCellValueForDisplay) {
828
+ tempGroupingRow = childGroup;
829
+ break;
830
+ }
831
+ }
832
+ if (!tempGroupingRow) {
833
+ tempGroupingRow = {
834
+ cells: {},
835
+ group: {
836
+ id: tempCellValue,
837
+ parent: groupRow,
838
+ column: group.column,
839
+ columnLabel: columnLabels[group.column],
840
+ children: [],
841
+ expanded: false,
842
+ label: tempCellValueForDisplay,
843
+ totals: {},
844
+ obj: tempCell.obj,
845
+ },
846
+ };
847
+ adjustGroupId(tempGroupingRow);
848
+ groupRow.group.children.push(tempGroupingRow);
849
+ }
850
+ groupRow = tempGroupingRow;
851
+ }
852
+ }
853
+ // adding row
854
+ groupRow.group.children.push(row);
855
+ updateGroupTotal(groupRow, totals, row, distinctObj);
856
+ }
857
+ });
858
+ adjustGroupsDistinct(groupRows, totals, distinctObj);
859
+ adjustGroupsAverageOrFormula(groupRows, TotalMode.AVERAGE, totals);
860
+ adjustGroupsAverageOrFormula(groupRows, TotalMode.MATH, totals);
861
+ return groupRows;
862
+ }
863
+ function updateGroupTotal(groupRow, totals, addedRow, distinctObj) {
864
+ if (!groupRow || !totals) {
865
+ return;
866
+ }
867
+ const keys = Object.keys(totals);
868
+ if (keys.length === 0) {
869
+ return;
870
+ }
871
+ keys.forEach((key) => {
872
+ const currentTotalValue = dom$2.ketchup.math.numberify(groupRow.group.totals[key] || 0);
873
+ const cell = addedRow.cells[key];
874
+ if (cell) {
875
+ let _isNumber = dom$2.ketchup.objects.isNumber(cell.obj);
876
+ const totalMode = totals[key];
877
+ switch (totalMode) {
878
+ case TotalMode.COUNT:
879
+ groupRow.group.totals[key] = currentTotalValue + 1;
880
+ // updating parents
881
+ let parent = groupRow.group.parent;
882
+ while (parent != null) {
883
+ const currentParentCount = parent.group.totals[key] || 0;
884
+ parent.group.totals[key] = currentParentCount + 1;
885
+ parent = parent.group.parent;
886
+ }
887
+ break;
888
+ case TotalMode.DISTINCT:
889
+ let cellValue;
890
+ if (_isNumber) {
891
+ cellValue = dom$2.ketchup.math.numberify(dom$2.ketchup.math.numberifySafe(cell.value));
892
+ }
893
+ else {
894
+ cellValue = cell.value;
895
+ }
896
+ let distinctGroup = distinctObj[groupRow.group.id];
897
+ if (!distinctGroup) {
898
+ distinctObj[groupRow.group.id] = {};
899
+ distinctObj[groupRow.group.id][key] = [];
900
+ distinctObj[groupRow.group.id][key].push(cellValue);
901
+ }
902
+ else {
903
+ let distinctList = distinctObj[groupRow.group.id][key];
904
+ if (!distinctList) {
905
+ // first round
906
+ distinctObj[groupRow.group.id][key] = [];
907
+ distinctObj[groupRow.group.id][key].push(cellValue);
908
+ }
909
+ else {
910
+ // update the list
911
+ distinctList.push(cellValue);
912
+ }
913
+ }
914
+ // updating parents
915
+ let distinctParent = groupRow.group.parent;
916
+ while (distinctParent != null) {
917
+ // get parent value
918
+ let distinctGroupParent = distinctObj[distinctParent.group.id];
919
+ if (!distinctGroupParent) {
920
+ distinctObj[distinctParent.group.id] = {};
921
+ distinctObj[distinctParent.group.id][key] = [];
922
+ distinctObj[distinctParent.group.id][key].push(cellValue);
923
+ }
924
+ else {
925
+ let distinctParentList = distinctObj[distinctParent.group.id][key];
926
+ if (!distinctParentList) {
927
+ // first round
928
+ distinctObj[distinctParent.group.id][key] = [];
929
+ distinctObj[distinctParent.group.id][key].push(cellValue);
930
+ }
931
+ else {
932
+ // update the list
933
+ distinctParentList.push(cellValue);
934
+ }
935
+ }
936
+ // continue
937
+ distinctParent = distinctParent.group.parent;
938
+ }
939
+ break;
940
+ case TotalMode.SUM:
941
+ case TotalMode.AVERAGE:
942
+ if (_isNumber) {
943
+ const cellValue = dom$2.ketchup.math.numberify(dom$2.ketchup.math.numberifySafe(cell.value));
944
+ groupRow.group.totals[key] =
945
+ cellValue + currentTotalValue;
946
+ // updating parents
947
+ let parent = groupRow.group.parent;
948
+ while (parent != null) {
949
+ const currentParentSum = dom$2.ketchup.math.numberify(parent.group.totals[key] || 0);
950
+ parent.group.totals[key] =
951
+ cellValue + currentParentSum;
952
+ parent = parent.group.parent;
953
+ }
954
+ }
955
+ break;
956
+ // TODO DRY the MIN and MAX functions
957
+ case TotalMode.MIN:
958
+ if (_isNumber) {
959
+ const currentTotalValue = groupRow.group.totals[key];
960
+ const cellValue = dom$2.ketchup.math.numberify(dom$2.ketchup.math.numberifySafe(cell.value));
961
+ if (currentTotalValue) {
962
+ groupRow.group.totals[key] = Math.min(currentTotalValue, cellValue);
963
+ }
964
+ else {
965
+ // first round
966
+ groupRow.group.totals[key] = cellValue;
967
+ }
968
+ // updating parents
969
+ let parent = groupRow.group.parent;
970
+ while (parent != null) {
971
+ const currentParentMin = parent.group.totals[key];
972
+ if (currentParentMin) {
973
+ parent.group.totals[key] = Math.min(currentParentMin, cellValue);
974
+ }
975
+ else {
976
+ // first round
977
+ parent.group.totals[key] = cellValue;
978
+ }
979
+ parent = parent.group.parent;
980
+ }
981
+ }
982
+ else if (dom$2.ketchup.objects.isDate(cell.obj)) {
983
+ const momentValue = cell.obj
984
+ ? dom$2.ketchup.objects.parseDate(cell.obj)
985
+ : dom$2.ketchup.dates.toDayjs(cell.value);
986
+ if (dom$2.ketchup.dates.isValid(momentValue)) {
987
+ const cellValue = dom$2.ketchup.dates.toDate(momentValue);
988
+ const currentTotalValue = groupRow.group.totals[key];
989
+ if (currentTotalValue) {
990
+ let moments = [];
991
+ moments.push(cellValue);
992
+ moments.push(dom$2.ketchup.dates.format(currentTotalValue));
993
+ groupRow.group.totals[key] =
994
+ dom$2.ketchup.dates.format(dom$2.ketchup.dates.min(moments));
995
+ }
996
+ else {
997
+ groupRow.group.totals[key] = cellValue;
998
+ }
999
+ // updating parents
1000
+ let parent = groupRow.group.parent;
1001
+ while (parent != null) {
1002
+ const currentParentMin = parent.group.totals[key];
1003
+ if (currentParentMin) {
1004
+ let moments = [];
1005
+ moments.push(cellValue);
1006
+ moments.push(dom$2.ketchup.dates.format(currentParentMin));
1007
+ parent.group.totals[key] =
1008
+ dom$2.ketchup.dates.format(dom$2.ketchup.dates.min(moments));
1009
+ }
1010
+ else {
1011
+ // first round
1012
+ parent.group.totals[key] = cellValue;
1013
+ }
1014
+ parent = parent.group.parent;
1015
+ }
1016
+ }
1017
+ }
1018
+ break;
1019
+ // TODO DRY the MIN and MAX functions
1020
+ case TotalMode.MAX:
1021
+ if (_isNumber) {
1022
+ const currentTotalValue = groupRow.group.totals[key];
1023
+ const cellValue = dom$2.ketchup.math.numberify(dom$2.ketchup.math.numberifySafe(cell.value));
1024
+ if (currentTotalValue) {
1025
+ groupRow.group.totals[key] = Math.max(currentTotalValue, cellValue);
1026
+ }
1027
+ else {
1028
+ // first round
1029
+ groupRow.group.totals[key] = cellValue;
1030
+ }
1031
+ // updating parents
1032
+ let parent = groupRow.group.parent;
1033
+ while (parent != null) {
1034
+ const currentParentMax = parent.group.totals[key];
1035
+ if (currentParentMax) {
1036
+ parent.group.totals[key] = Math.max(currentParentMax, cellValue);
1037
+ }
1038
+ else {
1039
+ // first round
1040
+ parent.group.totals[key] = cellValue;
1041
+ }
1042
+ parent = parent.group.parent;
1043
+ }
1044
+ }
1045
+ else if (dom$2.ketchup.objects.isDate(cell.obj)) {
1046
+ const momentValue = cell.obj
1047
+ ? dom$2.ketchup.objects.parseDate(cell.obj)
1048
+ : dom$2.ketchup.dates.toDayjs(cell.value);
1049
+ if (dom$2.ketchup.dates.isValid(momentValue)) {
1050
+ const cellValue = dom$2.ketchup.dates.toDate(momentValue);
1051
+ const currentTotalValue = groupRow.group.totals[key];
1052
+ if (currentTotalValue) {
1053
+ let moments = [];
1054
+ moments.push(cellValue);
1055
+ moments.push(dom$2.ketchup.dates.format(currentTotalValue));
1056
+ groupRow.group.totals[key] =
1057
+ dom$2.ketchup.dates.format(dom$2.ketchup.dates.max(moments));
1058
+ }
1059
+ else {
1060
+ groupRow.group.totals[key] = cellValue;
1061
+ }
1062
+ // updating parents
1063
+ let parent = groupRow.group.parent;
1064
+ while (parent != null) {
1065
+ const currentParentMin = parent.group.totals[key];
1066
+ if (currentParentMin) {
1067
+ let moments = [];
1068
+ moments.push(cellValue);
1069
+ moments.push(dom$2.ketchup.dates.format(currentParentMin));
1070
+ parent.group.totals[key] =
1071
+ dom$2.ketchup.dates.format(dom$2.ketchup.dates.max(moments));
1072
+ }
1073
+ else {
1074
+ // first round
1075
+ parent.group.totals[key] = cellValue;
1076
+ }
1077
+ parent = parent.group.parent;
1078
+ }
1079
+ }
1080
+ }
1081
+ break;
1082
+ default: {
1083
+ if (totalMode.indexOf(TotalMode.MATH) != 0) {
1084
+ console.warn(`invalid total mode: ${totalMode}`);
1085
+ }
1086
+ break;
1087
+ }
1088
+ }
1089
+ }
1090
+ });
1091
+ }
1092
+ function adjustGroupsDistinct(groupRows, totals, distinctObj) {
1093
+ if (!groupRows || !totals) {
1094
+ return;
1095
+ }
1096
+ const keys = Object.keys(totals);
1097
+ if (groupRows.length === 0 || !groupRows[0].group || keys.length === 0) {
1098
+ return;
1099
+ }
1100
+ let toAdjustKeys = keys.filter((key) => TotalMode.DISTINCT === totals[key]);
1101
+ if (toAdjustKeys.length > 0) {
1102
+ groupRows
1103
+ .filter((groupRow) => groupRow.group.children.length > 0)
1104
+ .forEach((groupRow) => adjustGroupDistinct(groupRow, toAdjustKeys, distinctObj));
1105
+ }
1106
+ }
1107
+ function adjustGroupsAverageOrFormula(groupRows, type, totals) {
1108
+ if (!groupRows || !totals) {
1109
+ return;
1110
+ }
1111
+ const keys = Object.keys(totals);
1112
+ if (groupRows.length === 0 || !groupRows[0].group || keys.length === 0) {
1113
+ return;
1114
+ }
1115
+ let toAdjustKeys;
1116
+ if (type == TotalMode.AVERAGE) {
1117
+ toAdjustKeys = keys.filter((key) => TotalMode.AVERAGE === totals[key]);
1118
+ }
1119
+ if (type == TotalMode.MATH) {
1120
+ toAdjustKeys = keys.filter((key) => totals[key].indexOf(TotalMode.MATH) == 0);
1121
+ }
1122
+ if (toAdjustKeys.length > 0) {
1123
+ groupRows
1124
+ .filter((groupRow) => groupRow.group.children.length > 0)
1125
+ .forEach((groupRow) => adjustGroupAverageOrFormula(groupRow, type, toAdjustKeys, totals));
1126
+ }
1127
+ }
1128
+ function adjustGroupDistinct(groupRow, toAdjustKeys, distinctObj) {
1129
+ const children = groupRow.group.children;
1130
+ if (children.length === 0) {
1131
+ return;
1132
+ }
1133
+ if (children[0].group) {
1134
+ children.forEach((child) => {
1135
+ adjustGroupDistinct(child, toAdjustKeys, distinctObj);
1136
+ });
1137
+ }
1138
+ toAdjustKeys.forEach((key) => {
1139
+ const distinctList = distinctObj[groupRow.group.id][key];
1140
+ groupRow.group.totals[key] = new Set(distinctList).size;
1141
+ });
1142
+ }
1143
+ /**
1144
+ * @returns number of 'leaf' of group
1145
+ */
1146
+ function adjustGroupAverageOrFormula(row, type, toAdjustKeys, totals) {
1147
+ const children = row.group.children;
1148
+ if (children.length === 0) {
1149
+ return 0;
1150
+ }
1151
+ let numberOfLeaf = 0;
1152
+ // check if child is a grouping row
1153
+ if (children[0].group) {
1154
+ children.forEach((child) => {
1155
+ numberOfLeaf += adjustGroupAverageOrFormula(child, type, toAdjustKeys, totals);
1156
+ });
1157
+ }
1158
+ else {
1159
+ numberOfLeaf = children.length;
1160
+ }
1161
+ // adjust average/formulas
1162
+ toAdjustKeys.forEach((key) => {
1163
+ if (type == TotalMode.AVERAGE) {
1164
+ row.group.totals[key] =
1165
+ dom$2.ketchup.math.numberify(row.group.totals[key]) /
1166
+ numberOfLeaf;
1167
+ }
1168
+ if (type == TotalMode.MATH) {
1169
+ let formula = totals[key].substring(TotalMode.MATH.length);
1170
+ row.group.totals[key] = dom$2.ketchup.math.formulas.custom(formula, row.group.totals);
1171
+ }
1172
+ });
1173
+ return numberOfLeaf;
1174
+ }
1175
+ function normalizeRows(columns, rows) {
1176
+ if (rows) {
1177
+ const normalizedrows = Object.assign(rows);
1178
+ rows.forEach((row) => {
1179
+ columns.forEach((column) => {
1180
+ if (row.cells) {
1181
+ const cell = row.cells[column.name];
1182
+ if (cell && column.obj && !cell.obj) {
1183
+ // cell.obj = Object.assign(column.obj);
1184
+ cell.obj = {
1185
+ t: column.obj.t,
1186
+ p: column.obj.p,
1187
+ k: cell.value,
1188
+ };
1189
+ }
1190
+ }
1191
+ });
1192
+ });
1193
+ return normalizedrows;
1194
+ }
1195
+ else {
1196
+ return undefined;
1197
+ }
1198
+ }
1199
+ function calcTotals(rows = [], totals = {}) {
1200
+ if (dom$2.ketchup.objects.isEmptyJsObject(rows) ||
1201
+ dom$2.ketchup.objects.isEmptyJsObject(totals)) {
1202
+ return {};
1203
+ }
1204
+ const keys = Object.keys(totals);
1205
+ const footerRow = {};
1206
+ const dateColumns = new Array();
1207
+ // if there are only COUNT, no need to loop on rows
1208
+ let onlyCount = keys.length === 0 ||
1209
+ keys.every((key) => totals[key] === TotalMode.COUNT);
1210
+ if (onlyCount) {
1211
+ keys.forEach((columnName) => (footerRow[columnName] = rows.length));
1212
+ }
1213
+ else {
1214
+ let distinctObj = {};
1215
+ rows.forEach((r, index, array) => {
1216
+ keys.filter((key) => TotalMode.COUNT !== totals[key] &&
1217
+ totals[key].indexOf(TotalMode.MATH) != 0).forEach((key) => {
1218
+ // getting cell
1219
+ const cell = r.cells[key];
1220
+ if (cell) {
1221
+ if (totals[key] === TotalMode.DISTINCT) {
1222
+ let cellValue;
1223
+ if (dom$2.ketchup.objects.isNumber(cell.obj)) {
1224
+ cellValue = dom$2.ketchup.math.numberify(dom$2.ketchup.math.numberifySafe(cell.value));
1225
+ }
1226
+ else {
1227
+ cellValue = cell.value;
1228
+ }
1229
+ let distinctList = distinctObj[key];
1230
+ if (!distinctList) {
1231
+ // first round
1232
+ distinctObj[key] = [];
1233
+ distinctObj[key].push(cellValue);
1234
+ }
1235
+ else {
1236
+ // update the list
1237
+ distinctList.push(cellValue);
1238
+ }
1239
+ }
1240
+ else if (dom$2.ketchup.objects.isNumber(cell.obj)) {
1241
+ const cellValue = dom$2.ketchup.math.numberify(dom$2.ketchup.math.numberifySafe(cell.value));
1242
+ let currentFooterValue = footerRow[key];
1243
+ switch (true) {
1244
+ // TODO DRY the MIN and MAX functions
1245
+ case totals[key] === TotalMode.MIN:
1246
+ if (currentFooterValue) {
1247
+ footerRow[key] = Math.min(currentFooterValue, cellValue);
1248
+ }
1249
+ else {
1250
+ footerRow[key] = cellValue;
1251
+ }
1252
+ break;
1253
+ case totals[key] === TotalMode.MAX:
1254
+ if (currentFooterValue) {
1255
+ footerRow[key] = Math.max(currentFooterValue, cellValue);
1256
+ }
1257
+ else {
1258
+ footerRow[key] = cellValue;
1259
+ }
1260
+ break;
1261
+ default:
1262
+ // SUM
1263
+ currentFooterValue = footerRow[key] || 0;
1264
+ footerRow[key] =
1265
+ cellValue +
1266
+ dom$2.ketchup.math.numberify(currentFooterValue);
1267
+ }
1268
+ // TODO DRY the MIN and MAX functions
1269
+ }
1270
+ else if (dom$2.ketchup.objects.isDate(cell.obj)) {
1271
+ if (dateColumns.indexOf(key) == -1) {
1272
+ dateColumns.push(key);
1273
+ }
1274
+ const momentValue = dom$2.ketchup.dates.toDayjs(cell.value);
1275
+ if (dom$2.ketchup.dates.isValid(momentValue)) {
1276
+ const cellValue = dom$2.ketchup.dates.toDate(momentValue);
1277
+ const currentFooterValue = footerRow[key]
1278
+ ? dom$2.ketchup.dates.toDate(dom$2.ketchup.dates.toDayjs(footerRow[key]))
1279
+ : null;
1280
+ switch (true) {
1281
+ case totals[key] === TotalMode.MIN:
1282
+ if (currentFooterValue) {
1283
+ let moments = [];
1284
+ moments.push(cellValue);
1285
+ moments.push(currentFooterValue);
1286
+ footerRow[key] =
1287
+ dom$2.ketchup.dates.format(dom$2.ketchup.dates.min(moments), KupDatesFormats.ISO_DATE);
1288
+ }
1289
+ else {
1290
+ footerRow[key] =
1291
+ dom$2.ketchup.dates.format(cellValue, KupDatesFormats.ISO_DATE);
1292
+ }
1293
+ break;
1294
+ case totals[key] === TotalMode.MAX:
1295
+ if (currentFooterValue) {
1296
+ let moments = [];
1297
+ moments.push(cellValue);
1298
+ moments.push(currentFooterValue);
1299
+ footerRow[key] =
1300
+ dom$2.ketchup.dates.format(dom$2.ketchup.dates.max(moments), KupDatesFormats.ISO_DATE);
1301
+ }
1302
+ else {
1303
+ footerRow[key] =
1304
+ dom$2.ketchup.dates.format(cellValue, KupDatesFormats.ISO_DATE);
1305
+ }
1306
+ break;
1307
+ }
1308
+ }
1309
+ }
1310
+ }
1311
+ if (index === array.length - 1 &&
1312
+ totals[key] === TotalMode.DISTINCT) {
1313
+ // last round
1314
+ footerRow[key] = new Set(distinctObj[key]).size;
1315
+ distinctObj[key] = [];
1316
+ }
1317
+ });
1318
+ });
1319
+ }
1320
+ // fixing MATH, AVERAGE and COUNT
1321
+ for (let key of keys) {
1322
+ switch (true) {
1323
+ case totals[key] === TotalMode.AVERAGE:
1324
+ const sum = footerRow[key];
1325
+ if (sum && rows.length > 0) {
1326
+ footerRow[key] = sum / rows.length;
1327
+ }
1328
+ break;
1329
+ case totals[key] === TotalMode.COUNT:
1330
+ footerRow[key] = rows.length;
1331
+ break;
1332
+ case totals[key].indexOf(TotalMode.MATH) == 0:
1333
+ footerRow[key] = dom$2.ketchup.math.formulas.custom(totals[key].substring(TotalMode.MATH.length), footerRow);
1334
+ break;
1335
+ }
1336
+ if (footerRow[key]) {
1337
+ if (dateColumns.indexOf(key) != -1) {
1338
+ footerRow[key] = dom$2.ketchup.dates.format(footerRow[key]);
1339
+ }
1340
+ else if (dom$2.ketchup.math.isNumber(footerRow[key])) {
1341
+ footerRow[key] = +footerRow[key].toFixed(2);
1342
+ }
1343
+ }
1344
+ }
1345
+ return footerRow;
1346
+ }
1347
+ function adjustGroupId(row) {
1348
+ if (!row.group) {
1349
+ return;
1350
+ }
1351
+ let groupID = row.group.id;
1352
+ let parentRow = row.group.parent;
1353
+ while (parentRow !== null) {
1354
+ groupID = `${parentRow.group.id};${groupID}`;
1355
+ parentRow = parentRow.group.parent;
1356
+ }
1357
+ row.group.id = groupID;
1358
+ }
1359
+ function paginateRows(rows, currentPage, rowsPerPage, areGrouped) {
1360
+ const start = currentPage * rowsPerPage - rowsPerPage;
1361
+ const end = start + Number(rowsPerPage);
1362
+ if (areGrouped == false) {
1363
+ return rows.slice(start, end);
1364
+ }
1365
+ let pagRows = [];
1366
+ _paginateRows(rows, pagRows, start, Number(rowsPerPage), 0);
1367
+ return pagRows;
1368
+ }
1369
+ function _paginateRows(rows, pagRows, start, rowsPerPage, ci) {
1370
+ let added = false;
1371
+ for (let i = 0; i < rows.length; i++) {
1372
+ let originalRow = rows[i];
1373
+ let row = cloneRow(rows[i]);
1374
+ if (originalRow.group != null &&
1375
+ originalRow.group.children != null &&
1376
+ originalRow.group.children.length > 0) {
1377
+ row.group.children = [];
1378
+ let retValue = _paginateRows(originalRow.group.children, row.group.children, start, rowsPerPage, ci);
1379
+ ci = retValue.ci;
1380
+ added = retValue.added;
1381
+ if (added == true) {
1382
+ pagRows[pagRows.length] = row;
1383
+ }
1384
+ }
1385
+ else {
1386
+ if (ci >= start) {
1387
+ pagRows[pagRows.length] = row;
1388
+ added = true;
1389
+ }
1390
+ ci++;
1391
+ }
1392
+ if (ci >= start + rowsPerPage) {
1393
+ break;
1394
+ }
1395
+ }
1396
+ return { ci: ci, added: added };
1397
+ }
1398
+ function cloneRow(row) {
1399
+ if (row == null) {
1400
+ return null;
1401
+ }
1402
+ else {
1403
+ return {
1404
+ id: row.id,
1405
+ cells: Object.assign({}, row.cells),
1406
+ actions: row.actions ? [...row.actions] : null,
1407
+ group: cloneRowGroup(row.group),
1408
+ clonedFrom: row,
1409
+ readOnly: row.readOnly,
1410
+ cssClass: row.cssClass,
1411
+ };
1412
+ }
1413
+ }
1414
+ function cloneRows(rows) {
1415
+ if (rows == null) {
1416
+ return null;
1417
+ }
1418
+ let cloned = [];
1419
+ for (let i = 0; i < rows.length; i++) {
1420
+ cloned[cloned.length] = cloneRow(rows[i]);
1421
+ }
1422
+ return cloned;
1423
+ }
1424
+ function cloneRowGroup(group) {
1425
+ if (group == null) {
1426
+ return null;
1427
+ }
1428
+ let cloned = {
1429
+ id: group.id,
1430
+ parent: Object.assign({}, group.parent),
1431
+ column: group.column,
1432
+ columnLabel: group.columnLabel,
1433
+ expanded: group.expanded,
1434
+ label: group.label,
1435
+ children: cloneRows(group.children),
1436
+ obj: Object.assign({}, group.obj),
1437
+ totals: Object.assign({}, group.totals),
1438
+ };
1439
+ return cloned;
1440
1440
  }
1441
1441
 
1442
- var FPaginatorMode;
1443
- (function (FPaginatorMode) {
1444
- FPaginatorMode["SIMPLE"] = "simple";
1445
- FPaginatorMode["FULL"] = "full";
1442
+ var FPaginatorMode;
1443
+ (function (FPaginatorMode) {
1444
+ FPaginatorMode["SIMPLE"] = "simple";
1445
+ FPaginatorMode["FULL"] = "full";
1446
1446
  })(FPaginatorMode || (FPaginatorMode = {}));
1447
1447
 
1448
- const dom$1 = document.documentElement;
1449
- /*-------------------------------------------------*/
1450
- /* C o m p o n e n t */
1451
- /*-------------------------------------------------*/
1452
- const FPaginator = (props) => {
1453
- const maxNumberOfPage = Math.ceil(props.max / props.perPage);
1454
- const pageItems = getPageItems(props, maxNumberOfPage);
1455
- const rowsPerPageItems = getRowsItems(props);
1456
- const dataPageSelector = {
1457
- 'kup-list': {
1458
- data: pageItems,
1459
- },
1460
- 'kup-text-field': {
1461
- label: dom$1.ketchup.language.translate(KupLanguagePage.PAGE),
1462
- helper: dom$1.ketchup.language.translate(KupLanguagePage.TOTAL) +
1463
- `: ${maxNumberOfPage}`,
1464
- helperWhenFocused: true,
1465
- inputType: 'number',
1466
- max: maxNumberOfPage,
1467
- min: 1,
1468
- },
1469
- };
1470
- const dataRowsSelector = {
1471
- 'kup-list': {
1472
- data: rowsPerPageItems,
1473
- },
1474
- 'kup-text-field': {
1475
- label: dom$1.ketchup.language.translate(KupLanguageRow.ROWS) +
1476
- ' / ' +
1477
- dom$1.ketchup.language.translate(KupLanguagePage.PAGE),
1478
- helper: dom$1.ketchup.language.translate(KupLanguageRow.TOTAL) +
1479
- `: ${props.max}`,
1480
- helperWhenFocused: true,
1481
- inputType: 'number',
1482
- max: props.max,
1483
- min: 1,
1484
- },
1485
- };
1486
- return (h("div", Object.assign({ class: `f-paginator ${props.mode ? props.mode : ''} ${props.wrapperClass ? props.wrapperClass : ''}` }, props.dataSet, { id: props.id, title: props.title }),
1487
- props.mode !== FPaginatorMode.SIMPLE ? (h(FButton, { icon: "chevron_left", disabled: isPrevPageDisabled(props), onClick: props.onPrevPage, wrapperClass: "prev-page" })) : null,
1488
- h("kup-combobox", { class: "page-selector", data: dataPageSelector, initialValue: props.currentPage.toString(), "onkup-combobox-change": props.onPageChange }),
1489
- props.mode !== FPaginatorMode.SIMPLE ? (h(FButton, { icon: "chevron_right", disabled: isNextPageDisabled(props), onClick: props.onNextPage, wrapperClass: "next-page" })) : null,
1490
- h("kup-combobox", { class: "rows-selector", data: dataRowsSelector, initialValue: props.perPage.toString(), "onkup-combobox-change": props.onRowsChange }),
1491
- props.onLoadMore ? (h(FButton, { icon: "plus", onClick: props.onLoadMore, label: dom$1.ketchup.language.translate(KupLanguageGeneric.LOAD_MORE), styling: FButtonStyling.FLAT, wrapperClass: "load-more-button" })) : null));
1492
- };
1493
- function getPageItems(props, maxNumberOfPage) {
1494
- const pageItems = [];
1495
- for (let i = 1; i <= maxNumberOfPage; i++) {
1496
- const selected = i == props.currentPage;
1497
- pageItems.push({
1498
- id: i.toString(),
1499
- selected: selected,
1500
- value: i.toString(),
1501
- });
1502
- }
1503
- return pageItems;
1504
- }
1505
- function getRowsItems(props) {
1506
- const rowsPerPageItems = [];
1507
- let i = props.perPage;
1508
- if (i === 0) {
1509
- return rowsPerPageItems;
1510
- }
1511
- while (i < props.max) {
1512
- const selected = i == props.perPage;
1513
- rowsPerPageItems.push({
1514
- id: i.toString(),
1515
- selected: selected,
1516
- value: i.toString(),
1517
- });
1518
- i = i * 2;
1519
- }
1520
- const selected = props.max == props.perPage;
1521
- rowsPerPageItems.push({
1522
- id: props.max.toString(),
1523
- selected: selected,
1524
- value: props.max.toString(),
1525
- });
1526
- return rowsPerPageItems;
1527
- }
1528
- function isNextPageDisabled(props) {
1529
- return props.currentPage * props.perPage >= props.max;
1530
- }
1531
- function isPrevPageDisabled(props) {
1532
- return props.currentPage == 1;
1448
+ const dom$1 = document.documentElement;
1449
+ /*-------------------------------------------------*/
1450
+ /* C o m p o n e n t */
1451
+ /*-------------------------------------------------*/
1452
+ const FPaginator = (props) => {
1453
+ const maxNumberOfPage = Math.ceil(props.max / props.perPage);
1454
+ const pageItems = getPageItems(props, maxNumberOfPage);
1455
+ const rowsPerPageItems = getRowsItems(props);
1456
+ const dataPageSelector = {
1457
+ 'kup-list': {
1458
+ data: pageItems,
1459
+ },
1460
+ 'kup-text-field': {
1461
+ label: dom$1.ketchup.language.translate(KupLanguagePage.PAGE),
1462
+ helper: dom$1.ketchup.language.translate(KupLanguagePage.TOTAL) +
1463
+ `: ${maxNumberOfPage}`,
1464
+ helperWhenFocused: true,
1465
+ inputType: 'number',
1466
+ max: maxNumberOfPage,
1467
+ min: 1,
1468
+ },
1469
+ };
1470
+ const dataRowsSelector = {
1471
+ 'kup-list': {
1472
+ data: rowsPerPageItems,
1473
+ },
1474
+ 'kup-text-field': {
1475
+ label: dom$1.ketchup.language.translate(KupLanguageRow.ROWS) +
1476
+ ' / ' +
1477
+ dom$1.ketchup.language.translate(KupLanguagePage.PAGE),
1478
+ helper: dom$1.ketchup.language.translate(KupLanguageRow.TOTAL) +
1479
+ `: ${props.max}`,
1480
+ helperWhenFocused: true,
1481
+ inputType: 'number',
1482
+ max: props.max,
1483
+ min: 1,
1484
+ },
1485
+ };
1486
+ return (h("div", Object.assign({ class: `f-paginator ${props.mode ? props.mode : ''} ${props.wrapperClass ? props.wrapperClass : ''}` }, props.dataSet, { id: props.id, title: props.title }),
1487
+ props.mode !== FPaginatorMode.SIMPLE ? (h(FButton, { icon: "chevron_left", disabled: isPrevPageDisabled(props), onClick: props.onPrevPage, wrapperClass: "prev-page" })) : null,
1488
+ h("kup-combobox", { class: "page-selector", data: dataPageSelector, initialValue: props.currentPage.toString(), "onkup-combobox-change": props.onPageChange }),
1489
+ props.mode !== FPaginatorMode.SIMPLE ? (h(FButton, { icon: "chevron_right", disabled: isNextPageDisabled(props), onClick: props.onNextPage, wrapperClass: "next-page" })) : null,
1490
+ h("kup-combobox", { class: "rows-selector", data: dataRowsSelector, initialValue: props.perPage.toString(), "onkup-combobox-change": props.onRowsChange }),
1491
+ props.onLoadMore ? (h(FButton, { icon: "plus", onClick: props.onLoadMore, label: dom$1.ketchup.language.translate(KupLanguageGeneric.LOAD_MORE), styling: FButtonStyling.FLAT, wrapperClass: "load-more-button" })) : null));
1492
+ };
1493
+ function getPageItems(props, maxNumberOfPage) {
1494
+ const pageItems = [];
1495
+ for (let i = 1; i <= maxNumberOfPage; i++) {
1496
+ const selected = i == props.currentPage;
1497
+ pageItems.push({
1498
+ id: i.toString(),
1499
+ selected: selected,
1500
+ value: i.toString(),
1501
+ });
1502
+ }
1503
+ return pageItems;
1504
+ }
1505
+ function getRowsItems(props) {
1506
+ const rowsPerPageItems = [];
1507
+ let i = props.perPage;
1508
+ if (i === 0) {
1509
+ return rowsPerPageItems;
1510
+ }
1511
+ while (i < props.max) {
1512
+ const selected = i == props.perPage;
1513
+ rowsPerPageItems.push({
1514
+ id: i.toString(),
1515
+ selected: selected,
1516
+ value: i.toString(),
1517
+ });
1518
+ i = i * 2;
1519
+ }
1520
+ const selected = props.max == props.perPage;
1521
+ rowsPerPageItems.push({
1522
+ id: props.max.toString(),
1523
+ selected: selected,
1524
+ value: props.max.toString(),
1525
+ });
1526
+ return rowsPerPageItems;
1527
+ }
1528
+ function isNextPageDisabled(props) {
1529
+ return props.currentPage * props.perPage >= props.max;
1530
+ }
1531
+ function isPrevPageDisabled(props) {
1532
+ return props.currentPage == 1;
1533
1533
  }
1534
1534
 
1535
- const dom = document.documentElement;
1536
- function pageChange(pageNumber, max, perPage) {
1537
- if (dom.ketchup.math.isNumber(pageNumber)) {
1538
- const numberOfPages = Math.ceil(max / perPage);
1539
- let tmpNewPage = pageNumber;
1540
- if (tmpNewPage > numberOfPages) {
1541
- tmpNewPage = numberOfPages;
1542
- }
1543
- if (tmpNewPage < 1) {
1544
- tmpNewPage = 1;
1545
- }
1546
- return tmpNewPage;
1547
- }
1548
- return null;
1549
- }
1550
- function rowsPerPageChange(rowsNumber, max) {
1551
- if (dom.ketchup.math.isNumber(rowsNumber)) {
1552
- let tmpRowsPerPage = rowsNumber;
1553
- if (tmpRowsPerPage > max) {
1554
- tmpRowsPerPage = max;
1555
- }
1556
- if (tmpRowsPerPage < 1) {
1557
- tmpRowsPerPage = 1;
1558
- }
1559
- return tmpRowsPerPage;
1560
- }
1561
- return null;
1535
+ const dom = document.documentElement;
1536
+ function pageChange(pageNumber, max, perPage) {
1537
+ if (dom.ketchup.math.isNumber(pageNumber)) {
1538
+ const numberOfPages = Math.ceil(max / perPage);
1539
+ let tmpNewPage = pageNumber;
1540
+ if (tmpNewPage > numberOfPages) {
1541
+ tmpNewPage = numberOfPages;
1542
+ }
1543
+ if (tmpNewPage < 1) {
1544
+ tmpNewPage = 1;
1545
+ }
1546
+ return tmpNewPage;
1547
+ }
1548
+ return null;
1549
+ }
1550
+ function rowsPerPageChange(rowsNumber, max) {
1551
+ if (dom.ketchup.math.isNumber(rowsNumber)) {
1552
+ let tmpRowsPerPage = rowsNumber;
1553
+ if (tmpRowsPerPage > max) {
1554
+ tmpRowsPerPage = max;
1555
+ }
1556
+ if (tmpRowsPerPage < 1) {
1557
+ tmpRowsPerPage = 1;
1558
+ }
1559
+ return tmpRowsPerPage;
1560
+ }
1561
+ return null;
1562
1562
  }
1563
1563
 
1564
1564
  export { FiltersColumnMenu as F, KupTreeExpansionMode as K, FiltersRows as a, FPaginator as b, calcTotals as c, pageChange as d, KupTreeProps as e, filterRows as f, groupRows as g, FPaginatorMode as h, normalizeRows as n, paginateRows as p, rowsPerPageChange as r, sortRows as s, treeMainColumnName as t };