@guiexpert/table 1.1.17 → 1.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +16 -0
- package/dist/README.md +101 -0
- package/dist/css/main.css +350 -0
- package/dist/css/table-classes.css +42 -0
- package/dist/css/table-color-classes.css +98 -0
- package/dist/css/table-color-vars.css +158 -0
- package/dist/css/table-tree.css +53 -0
- package/dist/index.cjs +351 -0
- package/{index.d.ts → dist/index.d.ts} +3 -0
- package/{index.js → dist/index.js} +902 -831
- package/dist/lib/common/decorator/avoid-double-execution.decorator.d.ts +7 -0
- package/{lib → dist/lib}/table/event-listener.if.d.ts +3 -1
- package/dist/lib/table/focus/event-focus-changed-listener.if.d.ts +4 -0
- package/{lib → dist/lib}/table/focus/focus-model.d.ts +6 -0
- package/dist/lib/table/focus/focus-model.if.d.ts +12 -0
- package/dist/lib/table/renderer/positive-and-negative-number-renderer.d.ts +8 -0
- package/dist/lib/table/selection/event-selection-changed-listener.if.d.ts +4 -0
- package/{lib → dist/lib}/table/selection/multi-rows-selection-model.d.ts +9 -0
- package/{lib → dist/lib}/table/selection/selection-model.d.ts +7 -0
- package/{lib → dist/lib}/table/selection/selection-model.if.d.ts +4 -0
- package/{lib → dist/lib}/table/table-scope.d.ts +6 -2
- package/dist/package.json +51 -0
- package/doc.css +1565 -0
- package/package.json +27 -8
- package/patch.js +16 -0
- package/src/index.ts +176 -0
- package/src/lib/common/decorator/avoid-double-execution.decorator.ts +21 -0
- package/src/lib/table/action/action-id.type.ts +36 -0
- package/src/lib/table/action/on-action-triggered.if.ts +14 -0
- package/src/lib/table/action/osx-shortcut-actionId-mapping.ts +39 -0
- package/src/lib/table/action/shortcut-actionid-mapping.type.ts +7 -0
- package/src/lib/table/action/shortcut.service.ts +162 -0
- package/src/lib/table/action/windows-shortcut-actionId-mapping.ts +35 -0
- package/src/lib/table/checkbox/checkbox-model.if.ts +16 -0
- package/src/lib/table/checkbox/checkbox-model.ts +62 -0
- package/src/lib/table/checkbox/tree-checkbox-model.ts +123 -0
- package/src/lib/table/color/color-rgb.if.ts +12 -0
- package/src/lib/table/color/color-rgb.ts +10 -0
- package/src/lib/table/color/ge-css-color-util.ts +43 -0
- package/src/lib/table/color/three-color-gradient-arg.if.ts +15 -0
- package/src/lib/table/color/three-color-gradient-arg.ts +14 -0
- package/src/lib/table/color/two-color-gradient-arg.if.ts +12 -0
- package/src/lib/table/color/two-color-gradient-arg.ts +12 -0
- package/src/lib/table/css-vars.ts +243 -0
- package/src/lib/table/data/chunk/chunk.data-event.if.ts +8 -0
- package/src/lib/table/data/chunk/chunk.data-event.ts +27 -0
- package/src/lib/table/data/chunk/request-chunk.if.ts +9 -0
- package/src/lib/table/data/chunk/request-chunk.ts +15 -0
- package/src/lib/table/data/common/aligns.ts +42 -0
- package/src/lib/table/data/common/area-map-factory.ts +20 -0
- package/src/lib/table/data/common/area-map.ts +18 -0
- package/src/lib/table/data/common/area-map.type.ts +5 -0
- package/src/lib/table/data/common/args-adjust-columns-to-row-parent-params.ts +21 -0
- package/src/lib/table/data/common/args-render-cell-div.ts +34 -0
- package/src/lib/table/data/common/boolean-function.ts +16 -0
- package/src/lib/table/data/common/cell-range.ts +66 -0
- package/src/lib/table/data/common/checkbox-column-def.ts +31 -0
- package/src/lib/table/data/common/checked-type.ts +6 -0
- package/src/lib/table/data/common/event/ge-cell-indices.ts +12 -0
- package/src/lib/table/data/common/event/ge-key-event.ts +15 -0
- package/src/lib/table/data/common/event/ge-model-change-event.ts +16 -0
- package/src/lib/table/data/common/event/ge-mouse-event.ts +41 -0
- package/src/lib/table/data/common/event/input/table-cell-update-event.if.ts +58 -0
- package/src/lib/table/data/common/event/input/table-cell-update-event.ts +27 -0
- package/src/lib/table/data/common/filter-function.ts +9 -0
- package/src/lib/table/data/common/get-t.ts +7 -0
- package/src/lib/table/data/common/index-and-px.ts +12 -0
- package/src/lib/table/data/common/size.if.ts +8 -0
- package/src/lib/table/data/common/size.ts +9 -0
- package/src/lib/table/data/common/sizes.ts +35 -0
- package/src/lib/table/data/common/sort-item.ts +14 -0
- package/src/lib/table/data/common/sort-state.type.ts +7 -0
- package/src/lib/table/data/common/tree-arrow.type.ts +8 -0
- package/src/lib/table/data/common/tree-row-if.ts +15 -0
- package/src/lib/table/data/common/tree-row.ts +22 -0
- package/src/lib/table/data/common/value-label.if.ts +6 -0
- package/src/lib/table/data/common/value-label.ts +13 -0
- package/src/lib/table/data/div-scope.type.ts +14 -0
- package/src/lib/table/data/event/mouse-target-data.ts +48 -0
- package/src/lib/table/data/geo-data.ts +16 -0
- package/src/lib/table/data/options/auto-restore-options.if.ts +21 -0
- package/src/lib/table/data/options/auto-restore-options.ts +50 -0
- package/src/lib/table/data/options/default-row-heights.if.ts +5 -0
- package/src/lib/table/data/options/default-row-heights.ts +10 -0
- package/src/lib/table/data/options/header-group-options.if.ts +9 -0
- package/src/lib/table/data/options/header-group-options.ts +23 -0
- package/src/lib/table/data/options/icon.if.ts +20 -0
- package/src/lib/table/data/options/icon.ts +10 -0
- package/src/lib/table/data/options/sorted-options.if.ts +13 -0
- package/src/lib/table/data/options/sorted-options.ts +15 -0
- package/src/lib/table/data/options/table-options.if.ts +240 -0
- package/src/lib/table/data/options/table-options.ts +68 -0
- package/src/lib/table/data/options/tree-options.if.ts +10 -0
- package/src/lib/table/data/options/tree-options.ts +32 -0
- package/src/lib/table/data/side-ident.type.ts +4 -0
- package/src/lib/table/data/table-model-and-options.if.ts +11 -0
- package/src/lib/table/data/table-model-and-options.ts +16 -0
- package/src/lib/table/data/tablemodel/area-ident.type.ts +18 -0
- package/src/lib/table/data/tablemodel/areamodel/abstract-area-model.ts +184 -0
- package/src/lib/table/data/tablemodel/areamodel/area-model-array-of-arrays.ts +63 -0
- package/src/lib/table/data/tablemodel/areamodel/area-model-cell-groups.ts +236 -0
- package/src/lib/table/data/tablemodel/areamodel/area-model-hidden.ts +126 -0
- package/src/lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.ts +28 -0
- package/src/lib/table/data/tablemodel/areamodel/area-model-object-array.ts +120 -0
- package/src/lib/table/data/tablemodel/areamodel/area-model-tree.ts +224 -0
- package/src/lib/table/data/tablemodel/areamodel/area-model.if.ts +192 -0
- package/src/lib/table/data/tablemodel/areamodel/area-model.ts +117 -0
- package/src/lib/table/data/tablemodel/areamodel/async-area-model-object-array.ts +110 -0
- package/src/lib/table/data/tablemodel/areamodel/col-and-rowspan-model.ts +64 -0
- package/src/lib/table/data/tablemodel/areamodel/has-default-row-height-if.ts +3 -0
- package/src/lib/table/data/tablemodel/areamodel/object-array-holder.if.ts +8 -0
- package/src/lib/table/data/tablemodel/cellgroup/cell-group-ext.ts +172 -0
- package/src/lib/table/data/tablemodel/cellgroup/cell-group.if.ts +12 -0
- package/src/lib/table/data/tablemodel/cellgroup/cell-group.ts +18 -0
- package/src/lib/table/data/tablemodel/cellgroup/cellgroup-factory.ts +148 -0
- package/src/lib/table/data/tablemodel/column/column-def.if.ts +141 -0
- package/src/lib/table/data/tablemodel/column/column-def.ts +108 -0
- package/src/lib/table/data/tablemodel/padding.ts +12 -0
- package/src/lib/table/data/tablemodel/table-model.if.ts +256 -0
- package/src/lib/table/data/tablemodel/table-model.ts +542 -0
- package/src/lib/table/ele-scope.ts +309 -0
- package/src/lib/table/event-adapter.ts +43 -0
- package/src/lib/table/event-listener.if.ts +32 -0
- package/src/lib/table/factory/table-factory.ts +379 -0
- package/src/lib/table/factory/tree-factory.ts +52 -0
- package/src/lib/table/focus/event-focus-changed-listener.if.ts +8 -0
- package/src/lib/table/focus/focus-model.if.ts +20 -0
- package/src/lib/table/focus/focus-model.ts +76 -0
- package/src/lib/table/focus/focus.type.ts +4 -0
- package/src/lib/table/input-handler.ts +48 -0
- package/src/lib/table/instanceof-workaround.ts +41 -0
- package/src/lib/table/license-manager.ts +47 -0
- package/src/lib/table/mouse-handler.ts +307 -0
- package/src/lib/table/render-scope.ts +1440 -0
- package/src/lib/table/renderer/cell-group-ext-cell-renderer.ts +123 -0
- package/src/lib/table/renderer/cell-render.if.ts +16 -0
- package/src/lib/table/renderer/checkbox-boolean-property-cell-renderer.ts +63 -0
- package/src/lib/table/renderer/checkbox-cell-renderer.ts +39 -0
- package/src/lib/table/renderer/date-to-int-date-cell-renderer.ts +39 -0
- package/src/lib/table/renderer/date-to-iso-cell-renderer.ts +25 -0
- package/src/lib/table/renderer/date-to-locale-date-cell-renderer.ts +24 -0
- package/src/lib/table/renderer/date-to-tec-cell-renderer.ts +28 -0
- package/src/lib/table/renderer/edit/edit-cell-renderer.type.ts +3 -0
- package/src/lib/table/renderer/edit/edit-input-pipe-for-number.ts +6 -0
- package/src/lib/table/renderer/edit/edit-input-pipe.if.ts +15 -0
- package/src/lib/table/renderer/edit/input-cell-renderer.ts +41 -0
- package/src/lib/table/renderer/edit/select-cell-renderer.ts +60 -0
- package/src/lib/table/renderer/male-female-to-icon-cell-renderer.ts +26 -0
- package/src/lib/table/renderer/number-cell-progress-bar-cell-renderer.ts +57 -0
- package/src/lib/table/renderer/number-cell-renderer.ts +38 -0
- package/src/lib/table/renderer/positive-and-negative-number-renderer.ts +45 -0
- package/src/lib/table/renderer/progress-bar-cell-renderer.ts +60 -0
- package/src/lib/table/renderer/renderer-cleanup-fn.type.ts +1 -0
- package/src/lib/table/renderer/renderer.ts +11 -0
- package/src/lib/table/renderer/star-rating-cell-renderer.ts +45 -0
- package/src/lib/table/renderer/true-false-cell-renderer.ts +28 -0
- package/src/lib/table/selection/event-selection-changed-listener.if.ts +8 -0
- package/src/lib/table/selection/multi-rows-selection-model.ts +118 -0
- package/src/lib/table/selection/selection-model.if.ts +56 -0
- package/src/lib/table/selection/selection-model.ts +182 -0
- package/src/lib/table/selection/selection-service.ts +129 -0
- package/src/lib/table/selection/selection.type.ts +6 -0
- package/src/lib/table/service/abstract-store-state.service.ts +105 -0
- package/src/lib/table/service/convenience-dom.service.ts +574 -0
- package/src/lib/table/service/copy-service.if.ts +45 -0
- package/src/lib/table/service/copy-service.ts +130 -0
- package/src/lib/table/service/data/collapsed-expanded.data.ts +11 -0
- package/src/lib/table/service/data/html-style.type.ts +1 -0
- package/src/lib/table/service/dom-service.if.ts +18 -0
- package/src/lib/table/service/ge-filter.service.ts +123 -0
- package/src/lib/table/service/simple-dom-service.ts +55 -0
- package/src/lib/table/service/sorter.service.ts +30 -0
- package/src/lib/table/service/store-state-collapsed-expand.service.ts +76 -0
- package/src/lib/table/service/store-state-scroll-pos.service.ts +40 -0
- package/src/lib/table/service/store-state-sorting.service.ts +41 -0
- package/src/lib/table/service/tree-row.service.ts +32 -0
- package/src/lib/table/table-api.ts +234 -0
- package/src/lib/table/table-scope.ts +770 -0
- package/tsconfig.json +21 -0
- package/tsconfig.lib.json +10 -0
- package/tsconfig.spec.json +25 -0
- package/vite.config.ts +56 -0
- package/index.cjs +0 -351
- package/lib/table/focus/focus-model.if.d.ts +0 -8
- package/lib/table/renderer/positive-and-negative-number-renderer.d.ts +0 -4
- /package/{lib → dist/lib}/table/action/action-id.type.d.ts +0 -0
- /package/{lib → dist/lib}/table/action/on-action-triggered.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/action/osx-shortcut-actionId-mapping.d.ts +0 -0
- /package/{lib → dist/lib}/table/action/shortcut-actionid-mapping.type.d.ts +0 -0
- /package/{lib → dist/lib}/table/action/shortcut.service.d.ts +0 -0
- /package/{lib → dist/lib}/table/action/windows-shortcut-actionId-mapping.d.ts +0 -0
- /package/{lib → dist/lib}/table/checkbox/checkbox-model.d.ts +0 -0
- /package/{lib → dist/lib}/table/checkbox/checkbox-model.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/checkbox/tree-checkbox-model.d.ts +0 -0
- /package/{lib → dist/lib}/table/color/color-rgb.d.ts +0 -0
- /package/{lib → dist/lib}/table/color/color-rgb.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/color/ge-css-color-util.d.ts +0 -0
- /package/{lib → dist/lib}/table/color/three-color-gradient-arg.d.ts +0 -0
- /package/{lib → dist/lib}/table/color/three-color-gradient-arg.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/color/two-color-gradient-arg.d.ts +0 -0
- /package/{lib → dist/lib}/table/color/two-color-gradient-arg.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/css-vars.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/chunk/chunk.data-event.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/chunk/chunk.data-event.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/chunk/request-chunk.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/chunk/request-chunk.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/aligns.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/area-map-factory.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/area-map.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/area-map.type.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/args-adjust-columns-to-row-parent-params.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/args-render-cell-div.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/boolean-function.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/cell-range.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/checkbox-column-def.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/checked-type.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/event/ge-cell-indices.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/event/ge-key-event.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/event/ge-model-change-event.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/event/ge-mouse-event.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/event/input/table-cell-update-event.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/event/input/table-cell-update-event.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/filter-function.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/get-t.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/index-and-px.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/size.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/size.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/sizes.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/sort-item.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/sort-state.type.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/tree-arrow.type.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/tree-row-if.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/tree-row.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/value-label.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/common/value-label.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/div-scope.type.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/event/mouse-target-data.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/geo-data.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/options/auto-restore-options.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/options/auto-restore-options.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/options/default-row-heights.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/options/default-row-heights.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/options/header-group-options.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/options/header-group-options.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/options/icon.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/options/icon.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/options/sorted-options.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/options/sorted-options.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/options/table-options.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/options/table-options.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/options/tree-options.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/options/tree-options.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/side-ident.type.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/table-model-and-options.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/table-model-and-options.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/area-ident.type.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/areamodel/abstract-area-model.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/areamodel/area-model-array-of-arrays.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/areamodel/area-model-cell-groups.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/areamodel/area-model-hidden.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/areamodel/area-model-object-array.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/areamodel/area-model-tree.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/areamodel/area-model.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/areamodel/area-model.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/areamodel/async-area-model-object-array.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/areamodel/col-and-rowspan-model.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/areamodel/has-default-row-height-if.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/areamodel/object-array-holder.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/cellgroup/cell-group-ext.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/cellgroup/cell-group.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/cellgroup/cell-group.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/cellgroup/cellgroup-factory.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/column/column-def.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/column/column-def.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/padding.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/table-model.d.ts +0 -0
- /package/{lib → dist/lib}/table/data/tablemodel/table-model.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/ele-scope.d.ts +0 -0
- /package/{lib → dist/lib}/table/event-adapter.d.ts +0 -0
- /package/{lib → dist/lib}/table/factory/table-factory.d.ts +0 -0
- /package/{lib → dist/lib}/table/factory/tree-factory.d.ts +0 -0
- /package/{lib → dist/lib}/table/focus/focus.type.d.ts +0 -0
- /package/{lib → dist/lib}/table/input-handler.d.ts +0 -0
- /package/{lib → dist/lib}/table/instanceof-workaround.d.ts +0 -0
- /package/{lib → dist/lib}/table/license-manager.d.ts +0 -0
- /package/{lib → dist/lib}/table/mouse-handler.d.ts +0 -0
- /package/{lib → dist/lib}/table/render-scope.d.ts +0 -0
- /package/{lib → dist/lib}/table/renderer/cell-group-ext-cell-renderer.d.ts +0 -0
- /package/{lib → dist/lib}/table/renderer/cell-render.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/renderer/checkbox-boolean-property-cell-renderer.d.ts +0 -0
- /package/{lib → dist/lib}/table/renderer/checkbox-cell-renderer.d.ts +0 -0
- /package/{lib → dist/lib}/table/renderer/date-to-int-date-cell-renderer.d.ts +0 -0
- /package/{lib → dist/lib}/table/renderer/date-to-iso-cell-renderer.d.ts +0 -0
- /package/{lib → dist/lib}/table/renderer/date-to-locale-date-cell-renderer.d.ts +0 -0
- /package/{lib → dist/lib}/table/renderer/date-to-tec-cell-renderer.d.ts +0 -0
- /package/{lib → dist/lib}/table/renderer/edit/edit-cell-renderer.type.d.ts +0 -0
- /package/{lib → dist/lib}/table/renderer/edit/edit-input-pipe-for-number.d.ts +0 -0
- /package/{lib → dist/lib}/table/renderer/edit/edit-input-pipe.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/renderer/edit/input-cell-renderer.d.ts +0 -0
- /package/{lib → dist/lib}/table/renderer/edit/select-cell-renderer.d.ts +0 -0
- /package/{lib → dist/lib}/table/renderer/male-female-to-icon-cell-renderer.d.ts +0 -0
- /package/{lib → dist/lib}/table/renderer/number-cell-progress-bar-cell-renderer.d.ts +0 -0
- /package/{lib → dist/lib}/table/renderer/number-cell-renderer.d.ts +0 -0
- /package/{lib → dist/lib}/table/renderer/progress-bar-cell-renderer.d.ts +0 -0
- /package/{lib → dist/lib}/table/renderer/renderer-cleanup-fn.type.d.ts +0 -0
- /package/{lib → dist/lib}/table/renderer/renderer.d.ts +0 -0
- /package/{lib → dist/lib}/table/renderer/star-rating-cell-renderer.d.ts +0 -0
- /package/{lib → dist/lib}/table/renderer/true-false-cell-renderer.d.ts +0 -0
- /package/{lib → dist/lib}/table/selection/selection-service.d.ts +0 -0
- /package/{lib → dist/lib}/table/selection/selection.type.d.ts +0 -0
- /package/{lib → dist/lib}/table/service/abstract-store-state.service.d.ts +0 -0
- /package/{lib → dist/lib}/table/service/convenience-dom.service.d.ts +0 -0
- /package/{lib → dist/lib}/table/service/copy-service.d.ts +0 -0
- /package/{lib → dist/lib}/table/service/copy-service.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/service/data/collapsed-expanded.data.d.ts +0 -0
- /package/{lib → dist/lib}/table/service/data/html-style.type.d.ts +0 -0
- /package/{lib → dist/lib}/table/service/dom-service.if.d.ts +0 -0
- /package/{lib → dist/lib}/table/service/ge-filter.service.d.ts +0 -0
- /package/{lib → dist/lib}/table/service/simple-dom-service.d.ts +0 -0
- /package/{lib → dist/lib}/table/service/sorter.service.d.ts +0 -0
- /package/{lib → dist/lib}/table/service/store-state-collapsed-expand.service.d.ts +0 -0
- /package/{lib → dist/lib}/table/service/store-state-scroll-pos.service.d.ts +0 -0
- /package/{lib → dist/lib}/table/service/store-state-sorting.service.d.ts +0 -0
- /package/{lib → dist/lib}/table/service/tree-row.service.d.ts +0 -0
- /package/{lib → dist/lib}/table/table-api.d.ts +0 -0
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
import { AreaModelIf } from "../data/tablemodel/areamodel/area-model.if";
|
|
2
|
+
import { DefaultRowHeightsIf } from "../data/options/default-row-heights.if";
|
|
3
|
+
import { ColumnDefIf } from "../data/tablemodel/column/column-def.if";
|
|
4
|
+
import { GetT } from "../data/common/get-t";
|
|
5
|
+
import { TableOptionsIf } from "../data/options/table-options.if";
|
|
6
|
+
import { TableModelIf } from "../data/tablemodel/table-model.if";
|
|
7
|
+
import { DefaultRowHeights } from "../data/options/default-row-heights";
|
|
8
|
+
import { ColumnDef } from "../data/tablemodel/column/column-def";
|
|
9
|
+
import { px200 } from "../data/common/sizes";
|
|
10
|
+
import { AreaModelArrayOfArrays } from "../data/tablemodel/areamodel/area-model-array-of-arrays";
|
|
11
|
+
import { AreaModelHidden } from "../data/tablemodel/areamodel/area-model-hidden";
|
|
12
|
+
import { TreeRow } from "../data/common/tree-row";
|
|
13
|
+
import { AreaModelTree } from "../data/tablemodel/areamodel/area-model-tree";
|
|
14
|
+
import { TreeCheckboxModel } from "../checkbox/tree-checkbox-model";
|
|
15
|
+
import { TableModel } from "../data/tablemodel/table-model";
|
|
16
|
+
import { SelectionModelIf } from "../selection/selection-model.if";
|
|
17
|
+
import {
|
|
18
|
+
AreaModelObjectArrayWithColumndefs
|
|
19
|
+
} from "../data/tablemodel/areamodel/area-model-object-array-with-columndefs";
|
|
20
|
+
import { TableOptions } from "../data/options/table-options";
|
|
21
|
+
import {isTreeRow} from "../instanceof-workaround";
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
export class TableFactory {
|
|
25
|
+
|
|
26
|
+
public static createTableModel(p: Partial<{
|
|
27
|
+
headerAreaModel: AreaModelIf,
|
|
28
|
+
bodyAreaModel: AreaModelIf,
|
|
29
|
+
footerAreaModel: AreaModelIf,
|
|
30
|
+
fixedLeftColumnCount: number,
|
|
31
|
+
fixedRightColumnCount: number,
|
|
32
|
+
rowCheckboxVisible: boolean,
|
|
33
|
+
defaultRowHeights: DefaultRowHeightsIf,
|
|
34
|
+
columnDefs: ColumnDefIf[],
|
|
35
|
+
columnSizes: number[],
|
|
36
|
+
overridingColumnWidth: number,
|
|
37
|
+
columnCount: number,
|
|
38
|
+
parentSize: number,
|
|
39
|
+
getSelectionModel: GetT<SelectionModelIf>,
|
|
40
|
+
rows: any[],
|
|
41
|
+
properties: string[],
|
|
42
|
+
bodyData: any[][],
|
|
43
|
+
headerData: string[][], // multi-line header
|
|
44
|
+
footerData: string[][], // multi-line footerData
|
|
45
|
+
tableOptions: TableOptionsIf
|
|
46
|
+
|
|
47
|
+
}>): TableModelIf {
|
|
48
|
+
|
|
49
|
+
if (p.defaultRowHeights === undefined) {
|
|
50
|
+
if (p.tableOptions?.defaultRowHeights) {
|
|
51
|
+
p.defaultRowHeights = p.tableOptions.defaultRowHeights;
|
|
52
|
+
} else {
|
|
53
|
+
p.defaultRowHeights = new DefaultRowHeights();
|
|
54
|
+
|
|
55
|
+
if (p.headerAreaModel && "defaultRowHeight" in p.headerAreaModel) {
|
|
56
|
+
const dh = p.headerAreaModel.defaultRowHeight as number;
|
|
57
|
+
if (dh > -1) {
|
|
58
|
+
p.defaultRowHeights.header = dh;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (p.bodyAreaModel && "defaultRowHeight" in p.bodyAreaModel) {
|
|
63
|
+
const dh = p.bodyAreaModel.defaultRowHeight as number;
|
|
64
|
+
if (dh > -1) {
|
|
65
|
+
p.defaultRowHeights.body = dh;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (p.footerAreaModel && "defaultRowHeight" in p.footerAreaModel) {
|
|
70
|
+
const dh = p.footerAreaModel.defaultRowHeight as number;
|
|
71
|
+
if (dh > -1) {
|
|
72
|
+
p.defaultRowHeights.footer = dh;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (p.columnDefs === undefined) {
|
|
79
|
+
if (p.properties?.length) {
|
|
80
|
+
p.columnDefs = p.properties.map(p => new ColumnDef(p, p.toUpperCase(), px200));
|
|
81
|
+
} else if (p.rows?.length) {
|
|
82
|
+
p.columnDefs = Object.keys(p.rows[0]).map(p => new ColumnDef(p, p.toUpperCase(), px200));
|
|
83
|
+
} else {
|
|
84
|
+
p.columnDefs = [];
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (p.columnCount === undefined) {
|
|
89
|
+
if (p.columnDefs?.length) {
|
|
90
|
+
p.columnCount = p.columnDefs.length;
|
|
91
|
+
} else if (p.headerData?.length) {
|
|
92
|
+
p.columnCount = p.headerData[0].length;
|
|
93
|
+
} else if (p.columnSizes?.length) {
|
|
94
|
+
p.columnCount = p.columnSizes?.length;
|
|
95
|
+
} else {
|
|
96
|
+
console.warn("Property \"columnCount\" is missing and cannot be derived from other properties.");
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
if (!p.headerAreaModel) {
|
|
102
|
+
if (p.headerData?.length) {
|
|
103
|
+
p.headerAreaModel = new AreaModelArrayOfArrays<string>(
|
|
104
|
+
"header",
|
|
105
|
+
p.headerData,
|
|
106
|
+
p.defaultRowHeights.header,
|
|
107
|
+
p.columnDefs
|
|
108
|
+
);
|
|
109
|
+
} else if (p.columnDefs?.length) {
|
|
110
|
+
p.headerAreaModel = new AreaModelArrayOfArrays<string>(
|
|
111
|
+
"header",
|
|
112
|
+
[p.columnDefs.map(def => def.headerLabel)],
|
|
113
|
+
p.defaultRowHeights.header,
|
|
114
|
+
p.columnDefs
|
|
115
|
+
);
|
|
116
|
+
} else {
|
|
117
|
+
p.headerAreaModel = new AreaModelHidden("header");
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
if (!p.footerAreaModel) {
|
|
121
|
+
if (p.footerData?.length) {
|
|
122
|
+
p.footerAreaModel = new AreaModelArrayOfArrays<string>(
|
|
123
|
+
"footer",
|
|
124
|
+
p.footerData,
|
|
125
|
+
p.defaultRowHeights.footer,
|
|
126
|
+
p.columnDefs
|
|
127
|
+
);
|
|
128
|
+
} else {
|
|
129
|
+
p.footerAreaModel = new AreaModelHidden("footer");
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
if (!p.bodyAreaModel) {
|
|
133
|
+
if (p.rows) {
|
|
134
|
+
|
|
135
|
+
if (p.rows?.length && isTreeRow(p.rows[0])) {
|
|
136
|
+
// Tree:
|
|
137
|
+
const treeRows = p.rows as TreeRow<any>[];
|
|
138
|
+
p.bodyAreaModel = new AreaModelTree(
|
|
139
|
+
"body",
|
|
140
|
+
treeRows,
|
|
141
|
+
p.defaultRowHeights.body,
|
|
142
|
+
p.columnDefs
|
|
143
|
+
);
|
|
144
|
+
const checkboxExtraColumnVisible = p.columnDefs[0].property === "CheckboxColumn";
|
|
145
|
+
if (checkboxExtraColumnVisible || p.tableOptions?.showCheckboxWihoutExtraColumn) {
|
|
146
|
+
p.bodyAreaModel.rowSelectionModel = new TreeCheckboxModel(treeRows);
|
|
147
|
+
}
|
|
148
|
+
} else {
|
|
149
|
+
p.bodyAreaModel = new AreaModelObjectArrayWithColumndefs<any>(
|
|
150
|
+
"body", p.rows, p.columnDefs, p.defaultRowHeights.body
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
} else if (p.bodyData) {
|
|
155
|
+
p.bodyAreaModel = new AreaModelArrayOfArrays<any>(
|
|
156
|
+
"body", p.bodyData, p.defaultRowHeights.body
|
|
157
|
+
);
|
|
158
|
+
} else {
|
|
159
|
+
p.bodyAreaModel = new AreaModelHidden("body");
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
if (p.fixedLeftColumnCount === undefined) {
|
|
164
|
+
p.fixedLeftColumnCount = 0;
|
|
165
|
+
}
|
|
166
|
+
if (p.fixedRightColumnCount === undefined) {
|
|
167
|
+
p.fixedRightColumnCount = 0;
|
|
168
|
+
}
|
|
169
|
+
if (p.rowCheckboxVisible === undefined) {
|
|
170
|
+
p.rowCheckboxVisible = false;
|
|
171
|
+
}
|
|
172
|
+
if (p.overridingColumnWidth === undefined) {
|
|
173
|
+
p.overridingColumnWidth = -1;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (!p.getSelectionModel && p.tableOptions?.getSelectionModel) {
|
|
177
|
+
p.getSelectionModel = p.tableOptions?.getSelectionModel;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// Flat table:
|
|
181
|
+
return new TableModel(
|
|
182
|
+
p.headerAreaModel,
|
|
183
|
+
p.bodyAreaModel,
|
|
184
|
+
p.footerAreaModel,
|
|
185
|
+
p.fixedLeftColumnCount,
|
|
186
|
+
p.fixedRightColumnCount,
|
|
187
|
+
p.rowCheckboxVisible,
|
|
188
|
+
p.defaultRowHeights,
|
|
189
|
+
p.columnDefs,
|
|
190
|
+
p.columnSizes,
|
|
191
|
+
p.overridingColumnWidth,
|
|
192
|
+
p.columnCount,
|
|
193
|
+
p.parentSize,
|
|
194
|
+
p.getSelectionModel
|
|
195
|
+
);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
static buildByTypedRowsParam<T>(param: {
|
|
199
|
+
rows: T[],
|
|
200
|
+
columnDefs: ColumnDefIf[],
|
|
201
|
+
tableOptions?: TableOptionsIf,
|
|
202
|
+
fixedLeftColumnCount?: number,
|
|
203
|
+
fixedRightColumnCount?: number
|
|
204
|
+
}): TableModelIf {
|
|
205
|
+
|
|
206
|
+
return TableFactory.buildByTypedRows<T>(
|
|
207
|
+
param.rows ?? [],
|
|
208
|
+
param.columnDefs,
|
|
209
|
+
param.tableOptions ?? new TableOptions(),
|
|
210
|
+
param.fixedLeftColumnCount ?? 0,
|
|
211
|
+
param.fixedRightColumnCount ?? 0
|
|
212
|
+
);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
static buildByTypedRows<T>(
|
|
216
|
+
rows: T[],
|
|
217
|
+
columnDefs: ColumnDefIf[],
|
|
218
|
+
tableOptions: TableOptionsIf = new TableOptions(),
|
|
219
|
+
fixedLeftColumnCount: number = 0,
|
|
220
|
+
fixedRightColumnCount: number = 0
|
|
221
|
+
): TableModelIf {
|
|
222
|
+
|
|
223
|
+
const defaultRowHeights = tableOptions.defaultRowHeights;
|
|
224
|
+
const checkboxExtraColumnVisible = columnDefs[0].property === "CheckboxColumn";
|
|
225
|
+
|
|
226
|
+
if (rows?.length && isTreeRow(rows[0])) {
|
|
227
|
+
// Tree:
|
|
228
|
+
const treeRows = rows as TreeRow<T>[];
|
|
229
|
+
const bodyareaModel = new AreaModelTree(
|
|
230
|
+
"body",
|
|
231
|
+
treeRows,
|
|
232
|
+
defaultRowHeights.body,
|
|
233
|
+
columnDefs
|
|
234
|
+
);
|
|
235
|
+
if (checkboxExtraColumnVisible || tableOptions.showCheckboxWihoutExtraColumn) {
|
|
236
|
+
bodyareaModel.rowSelectionModel = new TreeCheckboxModel(treeRows);
|
|
237
|
+
}
|
|
238
|
+
return TableFactory.createByAreaModelsParam({
|
|
239
|
+
headerAreaModel: new AreaModelArrayOfArrays<string>("header", [columnDefs.map(def => def.headerLabel)], defaultRowHeights.header),
|
|
240
|
+
bodyAreaModel: bodyareaModel,
|
|
241
|
+
footerAreaModel: new AreaModelArrayOfArrays<string>("footer", [], defaultRowHeights.footer),
|
|
242
|
+
columnDefs,
|
|
243
|
+
fixedLeftColumnCount,
|
|
244
|
+
fixedRightColumnCount,
|
|
245
|
+
defaultRowHeights: tableOptions.defaultRowHeights,
|
|
246
|
+
rowCheckboxVisible: false,
|
|
247
|
+
columnSizes: [],
|
|
248
|
+
columnCount: columnDefs.length,
|
|
249
|
+
overridingColumnWidth: -1
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// Flat table:
|
|
254
|
+
return TableFactory.createByObjectArrayParam({
|
|
255
|
+
rows,
|
|
256
|
+
columnDefs,
|
|
257
|
+
fixedLeftColumnCount,
|
|
258
|
+
fixedRightColumnCount,
|
|
259
|
+
defaultRowHeights: tableOptions.defaultRowHeights
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
public static createByObjectArrayParam<T>(param: {
|
|
265
|
+
rows: T[],
|
|
266
|
+
header?: string[][],
|
|
267
|
+
footer?: string[][],
|
|
268
|
+
fixedLeftColumnCount?: number,
|
|
269
|
+
fixedRightColumnCount?: number,
|
|
270
|
+
rowCheckboxVisible?: boolean,
|
|
271
|
+
defaultRowHeights?: DefaultRowHeightsIf,
|
|
272
|
+
columnDefs?: ColumnDefIf[],
|
|
273
|
+
columnSizes?: number[]
|
|
274
|
+
}) {
|
|
275
|
+
const rowCheckboxVisible = param.rowCheckboxVisible !== undefined ? param.rowCheckboxVisible : false;
|
|
276
|
+
return TableFactory.createByObjectArray<T>(
|
|
277
|
+
param.rows,
|
|
278
|
+
param.header ?? [],
|
|
279
|
+
param.footer ?? [],
|
|
280
|
+
param.fixedLeftColumnCount ?? 0,
|
|
281
|
+
param.fixedRightColumnCount ?? 0,
|
|
282
|
+
rowCheckboxVisible,
|
|
283
|
+
param.defaultRowHeights ?? new DefaultRowHeights(),
|
|
284
|
+
param.columnDefs ?? [],
|
|
285
|
+
param.columnSizes ?? []
|
|
286
|
+
);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
public static createByAreaModels(
|
|
290
|
+
headerAreaModel: AreaModelIf = new AreaModelHidden(),
|
|
291
|
+
bodyAreaModel: AreaModelIf,
|
|
292
|
+
footerAreaModel: AreaModelIf = new AreaModelHidden(),
|
|
293
|
+
fixedLeftColumnCount: number = 0,
|
|
294
|
+
fixedRightColumnCount: number = 0,
|
|
295
|
+
rowCheckboxVisible: boolean = false,
|
|
296
|
+
defaultRowHeights: DefaultRowHeightsIf = new DefaultRowHeights(),
|
|
297
|
+
columnDefs: ColumnDefIf[],
|
|
298
|
+
columnSizes: number[] = [],
|
|
299
|
+
overridingColumnWidth: number = -1,
|
|
300
|
+
columnCount: number
|
|
301
|
+
) {
|
|
302
|
+
return new TableModel(
|
|
303
|
+
headerAreaModel,
|
|
304
|
+
bodyAreaModel,
|
|
305
|
+
footerAreaModel,
|
|
306
|
+
fixedLeftColumnCount,
|
|
307
|
+
fixedRightColumnCount,
|
|
308
|
+
rowCheckboxVisible,
|
|
309
|
+
defaultRowHeights,
|
|
310
|
+
columnDefs,
|
|
311
|
+
columnSizes,
|
|
312
|
+
overridingColumnWidth,
|
|
313
|
+
columnCount
|
|
314
|
+
);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
public static createByAreaModelsParam(param: {
|
|
318
|
+
headerAreaModel?: AreaModelIf,
|
|
319
|
+
bodyAreaModel: AreaModelIf,
|
|
320
|
+
footerAreaModel?: AreaModelIf,
|
|
321
|
+
fixedLeftColumnCount?: number,
|
|
322
|
+
fixedRightColumnCount?: number,
|
|
323
|
+
rowCheckboxVisible?: boolean,
|
|
324
|
+
defaultRowHeights?: DefaultRowHeightsIf,
|
|
325
|
+
columnDefs?: ColumnDefIf[],
|
|
326
|
+
columnSizes?: number[],
|
|
327
|
+
overridingColumnWidth?: number,
|
|
328
|
+
columnCount?: number
|
|
329
|
+
}) {
|
|
330
|
+
return TableFactory.createByAreaModels(
|
|
331
|
+
param.headerAreaModel ?? new AreaModelHidden(),
|
|
332
|
+
param.bodyAreaModel,
|
|
333
|
+
param.footerAreaModel ?? new AreaModelHidden(),
|
|
334
|
+
param.fixedLeftColumnCount ?? 0,
|
|
335
|
+
param.fixedRightColumnCount ?? 0,
|
|
336
|
+
param.rowCheckboxVisible === undefined ? false : param.rowCheckboxVisible,
|
|
337
|
+
param.defaultRowHeights,
|
|
338
|
+
param.columnDefs ?? [],
|
|
339
|
+
param.columnSizes ?? [],
|
|
340
|
+
param.overridingColumnWidth ?? -1,
|
|
341
|
+
param.columnCount ?? 0
|
|
342
|
+
);
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
public static createByObjectArray<T>(
|
|
346
|
+
rows: T[],
|
|
347
|
+
header: string[][] = [],
|
|
348
|
+
footer: string[][] = [],
|
|
349
|
+
fixedLeftColumnCount: number = 0,
|
|
350
|
+
fixedRightColumnCount: number = 0,
|
|
351
|
+
rowCheckboxVisible: boolean = false,
|
|
352
|
+
defaultRowHeights: DefaultRowHeightsIf = new DefaultRowHeights(),
|
|
353
|
+
columnDefs: ColumnDefIf[],
|
|
354
|
+
columnSizes: number[] = []
|
|
355
|
+
) {
|
|
356
|
+
let headerAreaModel: AreaModelIf;
|
|
357
|
+
if (header?.length) {
|
|
358
|
+
headerAreaModel = new AreaModelArrayOfArrays<string>("header", header, defaultRowHeights.header, columnDefs);
|
|
359
|
+
} else if (columnDefs?.length) {
|
|
360
|
+
headerAreaModel = new AreaModelArrayOfArrays<string>("header", [columnDefs.map(def => def.headerLabel)], defaultRowHeights.header, columnDefs);
|
|
361
|
+
} else {
|
|
362
|
+
headerAreaModel = new AreaModelHidden();
|
|
363
|
+
}
|
|
364
|
+
const footerAreaModel = footer ? new AreaModelArrayOfArrays<string>("footer", footer, defaultRowHeights.footer, columnDefs) : new AreaModelHidden();
|
|
365
|
+
const bodyAreaModel = new AreaModelObjectArrayWithColumndefs<T>("body", rows, columnDefs, defaultRowHeights.body);
|
|
366
|
+
|
|
367
|
+
return new TableModel(
|
|
368
|
+
headerAreaModel,
|
|
369
|
+
bodyAreaModel,
|
|
370
|
+
footerAreaModel,
|
|
371
|
+
fixedLeftColumnCount,
|
|
372
|
+
fixedRightColumnCount,
|
|
373
|
+
rowCheckboxVisible,
|
|
374
|
+
defaultRowHeights,
|
|
375
|
+
columnDefs,
|
|
376
|
+
columnSizes
|
|
377
|
+
);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { TreeRow } from "../data/common/tree-row";
|
|
2
|
+
import {TreeRowIf} from "../data/common/tree-row-if";
|
|
3
|
+
|
|
4
|
+
export class TreeFactory {
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
static buildTreeRows<T>(
|
|
8
|
+
data: T[],
|
|
9
|
+
childrenProperty: string = "children",
|
|
10
|
+
deepMaxLimit: number = 12): TreeRowIf<T>[] {
|
|
11
|
+
|
|
12
|
+
const ret: TreeRowIf<T>[] = [];
|
|
13
|
+
for (const r of data) {
|
|
14
|
+
ret.push(TreeFactory.buildTreeRow<T>(r, childrenProperty, undefined, 0, deepMaxLimit));
|
|
15
|
+
}
|
|
16
|
+
return ret;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
static buildTreeRow<T>(
|
|
21
|
+
data: T,
|
|
22
|
+
childrenProperty: string = "children",
|
|
23
|
+
parent: TreeRowIf<T> = new TreeRow<T>(data, true, [], undefined, 0), //, false , '0', '0'),
|
|
24
|
+
deep: number = 0,
|
|
25
|
+
deepMaxLimit: number = 12): TreeRowIf<T> {
|
|
26
|
+
|
|
27
|
+
if (deep > deepMaxLimit) {
|
|
28
|
+
console.warn("Max deep limit reached: ", deep);
|
|
29
|
+
return parent;
|
|
30
|
+
}
|
|
31
|
+
// @ts-ignore
|
|
32
|
+
const children: T[] | undefined = data[childrenProperty];
|
|
33
|
+
if (children) {
|
|
34
|
+
for (const r of children) {
|
|
35
|
+
const tr = new TreeRow<T>(r, true, [], parent, deep + 1);
|
|
36
|
+
parent.children?.push(tr);
|
|
37
|
+
TreeFactory.buildTreeRow(
|
|
38
|
+
r,
|
|
39
|
+
childrenProperty,
|
|
40
|
+
tr,
|
|
41
|
+
deep + 1
|
|
42
|
+
);
|
|
43
|
+
if (deep > deepMaxLimit) {
|
|
44
|
+
console.warn("Max deep limit reached: ", deep);
|
|
45
|
+
return parent;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return parent;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { EventFocusChangedListenerIf } from './event-focus-changed-listener.if';
|
|
2
|
+
|
|
3
|
+
export interface FocusModelIf {
|
|
4
|
+
|
|
5
|
+
getEventFocusChangedListeners(): EventFocusChangedListenerIf[];
|
|
6
|
+
addEventFocusChangedListener(listener: EventFocusChangedListenerIf): void;
|
|
7
|
+
removeEventFocusChangedListener(listener: EventFocusChangedListenerIf): void;
|
|
8
|
+
|
|
9
|
+
clear(): void;
|
|
10
|
+
|
|
11
|
+
setFocus(rowIndex: number, columnIndex: number): void;
|
|
12
|
+
|
|
13
|
+
hasFocus(rowIndex: number, columnIndex: number): boolean;
|
|
14
|
+
|
|
15
|
+
getFocus(): [number, number];
|
|
16
|
+
|
|
17
|
+
hasChanged(): boolean;
|
|
18
|
+
|
|
19
|
+
clearChanged(): void;
|
|
20
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { FocusType } from "./focus.type";
|
|
2
|
+
import { FocusModelIf } from "./focus-model.if";
|
|
3
|
+
import { EventFocusChangedListenerIf } from './event-focus-changed-listener.if';
|
|
4
|
+
import { AvoidDoubleExecution } from '../../common/decorator/avoid-double-execution.decorator';
|
|
5
|
+
|
|
6
|
+
export class FocusModel implements FocusModelIf {
|
|
7
|
+
|
|
8
|
+
protected rowIndex: number = -1;
|
|
9
|
+
protected columnIndex: number = -1;
|
|
10
|
+
protected changed = false;
|
|
11
|
+
|
|
12
|
+
private listenerArr: EventFocusChangedListenerIf[] = [];
|
|
13
|
+
|
|
14
|
+
constructor(
|
|
15
|
+
public selectionType: FocusType = "none"
|
|
16
|
+
) {
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
getEventFocusChangedListeners(): EventFocusChangedListenerIf[]{
|
|
20
|
+
return this.listenerArr;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
addEventFocusChangedListener(listener: EventFocusChangedListenerIf): void {
|
|
24
|
+
if (!this.listenerArr.includes(listener)) {
|
|
25
|
+
this.listenerArr.push(listener);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
removeEventFocusChangedListener(listener: EventFocusChangedListenerIf): void {
|
|
30
|
+
const index = this.listenerArr.indexOf(listener, 0);
|
|
31
|
+
if (index > -1) {
|
|
32
|
+
this.listenerArr.splice(index, 1);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
//@AvoidDoubleExecution(100)
|
|
37
|
+
fireChangeEvent() {
|
|
38
|
+
this.listenerArr.forEach(l => l.onFocusChanged(this));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
clearChanged(): void {
|
|
42
|
+
this.changed = false;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
hasChanged(): boolean {
|
|
46
|
+
return this.changed;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
clear(): void {
|
|
50
|
+
this.rowIndex = -1;
|
|
51
|
+
this.columnIndex = -1;
|
|
52
|
+
this.fireChangeEvent();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
setFocus(
|
|
57
|
+
rowIndex: number,
|
|
58
|
+
columnIndex: number
|
|
59
|
+
): void {
|
|
60
|
+
if (this.rowIndex !== rowIndex || this.columnIndex !== columnIndex) {
|
|
61
|
+
this.rowIndex = rowIndex;
|
|
62
|
+
this.columnIndex = columnIndex;
|
|
63
|
+
this.changed = true;
|
|
64
|
+
this.fireChangeEvent();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
hasFocus(rowIndex: number, columnIndex: number): boolean {
|
|
69
|
+
return this.rowIndex === rowIndex && this.columnIndex === columnIndex;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
getFocus(): [number, number] {
|
|
73
|
+
return [this.rowIndex, this.columnIndex];
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { TableScope } from "./table-scope";
|
|
2
|
+
import { AreaIdent, getAreaIdentByString } from "./data/tablemodel/area-ident.type";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Class representing an input handler for table input fields (HTMLSelectElement, HTMLTextAreaElement, HTMLInputElement).
|
|
6
|
+
*
|
|
7
|
+
* @class
|
|
8
|
+
* @memberOf module:input
|
|
9
|
+
*/
|
|
10
|
+
export class InputHandler {
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
constructor(
|
|
14
|
+
protected tableScope: TableScope
|
|
15
|
+
) {
|
|
16
|
+
this.tableScope.hostElement.addEventListener("change", this.onHostElementChanged.bind(this));
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Handles the onHostElementChanged event.
|
|
22
|
+
* In case that the element is an input field, the tableScope.updateModelValueAfterEdit() method is triggered.
|
|
23
|
+
*
|
|
24
|
+
* @param {Event} event - The event object.
|
|
25
|
+
*
|
|
26
|
+
* @return {void}
|
|
27
|
+
*/
|
|
28
|
+
private onHostElementChanged(event: Event) {
|
|
29
|
+
if (event.target instanceof HTMLInputElement
|
|
30
|
+
|| event.target instanceof HTMLSelectElement
|
|
31
|
+
|| event.target instanceof HTMLTextAreaElement
|
|
32
|
+
) {
|
|
33
|
+
const htmpInputEle = event.target;
|
|
34
|
+
const areaIdentStr = htmpInputEle.getAttribute("data-area");
|
|
35
|
+
const rowIndexStr = htmpInputEle.getAttribute("data-row-index");
|
|
36
|
+
const columnIndexStr = htmpInputEle.getAttribute("data-col-index");
|
|
37
|
+
|
|
38
|
+
if (areaIdentStr && rowIndexStr && columnIndexStr) {
|
|
39
|
+
const area: AreaIdent = getAreaIdentByString(areaIdentStr);
|
|
40
|
+
const rowIndex = Number(rowIndexStr);
|
|
41
|
+
const columnIndex = Number(columnIndexStr);
|
|
42
|
+
this.tableScope.updateModelValueAfterEdit(area, rowIndex, columnIndex, htmpInputEle.value);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* necessary because of es5 (Svelte, Astro,...)
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Checks if the given row is a tree row.
|
|
9
|
+
*
|
|
10
|
+
* @param {any} row - The row to be checked.
|
|
11
|
+
*
|
|
12
|
+
* @return {boolean} - true if the row is a tree row, false otherwise.
|
|
13
|
+
*/
|
|
14
|
+
export function isTreeRow(row: any): boolean {
|
|
15
|
+
return row && row['type'] === 'TreeRow';
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Determines if the given model is an AreaModelTree.
|
|
22
|
+
*
|
|
23
|
+
* @param {any} model - The model object to check.
|
|
24
|
+
* @return {boolean} - True if the model is an AreaModelTree, false otherwise.
|
|
25
|
+
*/
|
|
26
|
+
export function isAreaModelTree(model: any): boolean {
|
|
27
|
+
return model && model['type'] === 'AreaModelTree';
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Checks if the given object is a CheckboxColumnDef.
|
|
33
|
+
*
|
|
34
|
+
* @param {any} o - The object to be checked.
|
|
35
|
+
* @returns {boolean} - True if the object is a CheckboxColumnDef, false otherwise.
|
|
36
|
+
*/
|
|
37
|
+
export function isCheckboxColumnDef(o: any): boolean {
|
|
38
|
+
return o && o['type'] === 'CheckboxColumnDef';
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LicenseManager class responsible for managing license keys.
|
|
3
|
+
* As it's a singleton class, it only allows one instance of itself to exist.
|
|
4
|
+
*
|
|
5
|
+
* Usage: LicenseManager.getInstance().setLicenseKey('Your API key');
|
|
6
|
+
*/
|
|
7
|
+
export class LicenseManager {
|
|
8
|
+
|
|
9
|
+
private static instance: LicenseManager;
|
|
10
|
+
private alreadySet = false;
|
|
11
|
+
|
|
12
|
+
// The constructor is private to prevent direct construction calls
|
|
13
|
+
// with the `new` operator
|
|
14
|
+
private constructor() {
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
public static getInstance(): LicenseManager {
|
|
19
|
+
if (!LicenseManager.instance) {
|
|
20
|
+
LicenseManager.instance = new LicenseManager();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return LicenseManager.instance;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Method to set the license key for the application.
|
|
28
|
+
* A 'meta' element is created with content as 'guiexperttable=<license key>'
|
|
29
|
+
* and appended into the head section of the document
|
|
30
|
+
*
|
|
31
|
+
* @param {string} key - The license key to set for the application.
|
|
32
|
+
*
|
|
33
|
+
* @return {void} - This method does not return anything
|
|
34
|
+
*/
|
|
35
|
+
public setLicenseKey(key: string | undefined) {
|
|
36
|
+
if (key && !this.alreadySet) {
|
|
37
|
+
|
|
38
|
+
const meta = document.createElement('meta');
|
|
39
|
+
meta.content = 'license=' + key;
|
|
40
|
+
meta.name = 'guiexperttable';
|
|
41
|
+
document.getElementsByTagName('head')[0].appendChild(meta);
|
|
42
|
+
|
|
43
|
+
this.alreadySet = true;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
}
|