@dflat-core/web 1.0.0-beta
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/LICENSE +21 -0
- package/README.md +94 -0
- package/assets/bootswatch.scss +100 -0
- package/assets/buttons.scss +70 -0
- package/assets/components/datagrid.scss +138 -0
- package/assets/components/fonts.scss +24 -0
- package/assets/components/login.scss +59 -0
- package/assets/components/menu.scss +0 -0
- package/assets/components/modals.scss +62 -0
- package/assets/components/select.scss +387 -0
- package/assets/fonts/ErasITC-Bold/ErasITC-Bold.eot +0 -0
- package/assets/fonts/ErasITC-Bold/ErasITC-Bold.svg +748 -0
- package/assets/fonts/ErasITC-Bold/ErasITC-Bold.ttf +0 -0
- package/assets/fonts/ErasITC-Bold/ErasITC-Bold.woff +0 -0
- package/assets/fonts/SegoeUI/SegoeUI.eot +0 -0
- package/assets/fonts/SegoeUI/SegoeUI.svg +15203 -0
- package/assets/fonts/SegoeUI/SegoeUI.ttf +0 -0
- package/assets/fonts/SegoeUI/SegoeUI.woff +0 -0
- package/assets/fonts/SegoeUI/preview.html +132 -0
- package/assets/fonts/SegoeUI/styles.css +7 -0
- package/assets/fonts/SegoeUI-Light/SegoeUI-Light.eot +0 -0
- package/assets/fonts/SegoeUI-Light/SegoeUI-Light.svg +27429 -0
- package/assets/fonts/SegoeUI-Light/SegoeUI-Light.ttf +0 -0
- package/assets/fonts/SegoeUI-Light/SegoeUI-Light.woff +0 -0
- package/assets/fonts/SegoeUI-Light/preview.html +132 -0
- package/assets/fonts/SegoeUI-Light/styles.css +7 -0
- package/assets/forms.scss +342 -0
- package/assets/images/Algerie.png +0 -0
- package/assets/images/Burkina Faso.png +0 -0
- package/assets/images/Cameroun.png +0 -0
- package/assets/images/Cara/303/257bes.png +0 -0
- package/assets/images/Congo.png +0 -0
- package/assets/images/C/303/264te d'Ivoire.png +0 -0
- package/assets/images/France.png +0 -0
- package/assets/images/Gabon.png +0 -0
- package/assets/images/Ile Maurice.png +0 -0
- package/assets/images/LogoMarsow.svg +1 -0
- package/assets/images/Maroc.png +0 -0
- package/assets/images/Menu.svg +3 -0
- package/assets/images/R/303/251union.png +0 -0
- package/assets/images/S/303/251n/303/251gal.png +0 -0
- package/assets/images/Tunisie.png +0 -0
- package/assets/images/Unchecked.svg +25 -0
- package/assets/images/account.svg +3 -0
- package/assets/images/adresslabel1.svg +3 -0
- package/assets/images/adresslabel2.svg +3 -0
- package/assets/images/allergen.svg +3 -0
- package/assets/images/arrow-up-1-9.svg +1 -0
- package/assets/images/attention.svg +3 -0
- package/assets/images/backward.svg +1 -0
- package/assets/images/ban.svg +1 -0
- package/assets/images/book-open.svg +1 -0
- package/assets/images/book-solid.svg +2 -0
- package/assets/images/border-all.svg +1 -0
- package/assets/images/boxes-packing-solid.svg +2 -0
- package/assets/images/calculator-solid.svg +1 -0
- package/assets/images/calendar.svg +3 -0
- package/assets/images/chatting.svg +3 -0
- package/assets/images/check.svg +3 -0
- package/assets/images/checkmark.png +0 -0
- package/assets/images/circle-check-solid.svg +2 -0
- package/assets/images/circle-info.svg +1 -0
- package/assets/images/circle-radiation-solid.svg +2 -0
- package/assets/images/circle-solid.svg +1 -0
- package/assets/images/circlecheck.svg +3 -0
- package/assets/images/circlecross.svg +3 -0
- package/assets/images/circleminus.svg +3 -0
- package/assets/images/circleplus.svg +3 -0
- package/assets/images/circularoption.svg +1 -0
- package/assets/images/circularoptionselected.svg +1 -0
- package/assets/images/classification-tool.svg +3 -0
- package/assets/images/click-collect.svg +1 -0
- package/assets/images/clientlocation.svg +9 -0
- package/assets/images/cloud-arrow-down-solid.svg +1 -0
- package/assets/images/cloud-arrow-up-solid.svg +1 -0
- package/assets/images/contact.svg +3 -0
- package/assets/images/cross.svg +3 -0
- package/assets/images/delivery-square.svg +32 -0
- package/assets/images/delivery.svg +3 -0
- package/assets/images/deliverymanlocation.svg +28 -0
- package/assets/images/dolly-solid.svg +1 -0
- package/assets/images/down.svg +3 -0
- package/assets/images/download.svg +1 -0
- package/assets/images/edition.svg +3 -0
- package/assets/images/email.svg +3 -0
- package/assets/images/emptyheart.svg +3 -0
- package/assets/images/emptystar.svg +3 -0
- package/assets/images/erase.svg +1 -0
- package/assets/images/error.png +0 -0
- package/assets/images/error.svg +1 -0
- package/assets/images/favicon.ico +0 -0
- package/assets/images/file-arrow-down-solid.svg +2 -0
- package/assets/images/file-arrow-up-solid.svg +1 -0
- package/assets/images/file-csv-solid.svg +2 -0
- package/assets/images/file-excel-solid.svg +2 -0
- package/assets/images/file-export-solid.svg +1 -0
- package/assets/images/file-image-solid.svg +2 -0
- package/assets/images/file-invoice-solid.svg +2 -0
- package/assets/images/file-lines-solid.svg +2 -0
- package/assets/images/file-pdf-solid.svg +2 -0
- package/assets/images/file-solid.svg +2 -0
- package/assets/images/file-word-solid.svg +2 -0
- package/assets/images/file-zipper-solid.svg +2 -0
- package/assets/images/files-o.svg +1 -0
- package/assets/images/filter-circle-xmark-solid.svg +1 -0
- package/assets/images/filter-solid.svg +2 -0
- package/assets/images/filter.svg +3 -0
- package/assets/images/filter1.svg +3 -0
- package/assets/images/filter2.svg +3 -0
- package/assets/images/filterdelete.svg +3 -0
- package/assets/images/folder.svg +3 -0
- package/assets/images/forward.svg +1 -0
- package/assets/images/fullheart.svg +3 -0
- package/assets/images/fullstar.svg +3 -0
- package/assets/images/halfstar.svg +3 -0
- package/assets/images/hand-point-down.svg +1 -0
- package/assets/images/hand-point-left.svg +1 -0
- package/assets/images/hand-point-right.svg +1 -0
- package/assets/images/hand-point-up.svg +1 -0
- package/assets/images/history.svg +4 -0
- package/assets/images/home.svg +3 -0
- package/assets/images/info-circle.svg +1 -0
- package/assets/images/information.png +0 -0
- package/assets/images/ingredient.svg +3 -0
- package/assets/images/left.svg +3 -0
- package/assets/images/location.svg +3 -0
- package/assets/images/map-marker.svg +6 -0
- package/assets/images/map.svg +3 -0
- package/assets/images/minus.svg +3 -0
- package/assets/images/neworder.svg +3 -0
- package/assets/images/notification.svg +3 -0
- package/assets/images/ordercollected.svg +3 -0
- package/assets/images/orderconfirmed.svg +8 -0
- package/assets/images/orderdelivered.svg +3 -0
- package/assets/images/orderindelivering.svg +3 -0
- package/assets/images/orderinpreparation.svg +3 -0
- package/assets/images/orderprepared.svg +3 -0
- package/assets/images/orderrefused.svg +8 -0
- package/assets/images/pencil.svg +1 -0
- package/assets/images/picture-editor-V3.svg +11 -0
- package/assets/images/picture-export-v3.svg +5 -0
- package/assets/images/picture-import-v3.svg +5 -0
- package/assets/images/plus-square.svg +1 -0
- package/assets/images/plus.svg +3 -0
- package/assets/images/power-off.svg +1 -0
- package/assets/images/print.svg +3 -0
- package/assets/images/refresh.svg +1 -0
- package/assets/images/return.svg +40 -0
- package/assets/images/right.svg +3 -0
- package/assets/images/sale.svg +3 -0
- package/assets/images/save.svg +2 -0
- package/assets/images/schedule.svg +3 -0
- package/assets/images/search-sprite.png +0 -0
- package/assets/images/search.svg +3 -0
- package/assets/images/selection.svg +3 -0
- package/assets/images/separator_back.png +0 -0
- package/assets/images/setting.svg +3 -0
- package/assets/images/ship-solid.svg +1 -0
- package/assets/images/shoppingbag.svg +3 -0
- package/assets/images/squareoption.svg +1 -0
- package/assets/images/squareoptionselected.svg +1 -0
- package/assets/images/star-of-life-solid.svg +2 -0
- package/assets/images/step-backward.svg +7 -0
- package/assets/images/step-forward.svg +7 -0
- package/assets/images/store-square.svg +19 -0
- package/assets/images/store.png +0 -0
- package/assets/images/store.svg +3 -0
- package/assets/images/storelocation.svg +6 -0
- package/assets/images/table-columns.svg +1 -0
- package/assets/images/tag.svg +22 -0
- package/assets/images/times-circle-solid.svg +1 -0
- package/assets/images/trash-o.svg +3 -0
- package/assets/images/triangle-down.svg +3 -0
- package/assets/images/triangle-up.svg +3 -0
- package/assets/images/truck-solid.svg +1 -0
- package/assets/images/up.svg +3 -0
- package/assets/images/upload.svg +1 -0
- package/assets/images/user-square.svg +10 -0
- package/assets/images/user.svg +13 -0
- package/assets/images/warning.png +0 -0
- package/assets/images/warning.svg +5 -0
- package/assets/images/watch.svg +3 -0
- package/assets/modals.scss +104 -0
- package/assets/property.scss +113 -0
- package/assets/shared.scss +157 -0
- package/assets/site.scss +374 -0
- package/assets/text.scss +162 -0
- package/assets/variables.scss +91 -0
- package/core/index.d.ts +6 -0
- package/core/lib/array.function.d.ts +8 -0
- package/core/lib/core.module.d.ts +9 -0
- package/core/lib/global/EnvironmentBase.d.ts +7 -0
- package/core/lib/nameof.function.d.ts +4 -0
- package/core/lib/services/ensuremoduleloadedonceguard.d.ts +3 -0
- package/core/lib/services/utilities.service.d.ts +87 -0
- package/core-data/index.d.ts +3 -0
- package/core-data/lib/core-data.module.d.ts +7 -0
- package/core-data/lib/services/data-service.d.ts +68 -0
- package/core-data/lib/services/entity-data-service.d.ts +37 -0
- package/core-model/index.d.ts +4 -0
- package/core-model/lib/core-model.module.d.ts +7 -0
- package/core-model/lib/interface.d.ts +140 -0
- package/core-model/lib/model/interface.generated.d.ts +286 -0
- package/core-model/lib/model/model.d.ts +38 -0
- package/core-services/index.d.ts +23 -0
- package/core-services/lib/core-services.module.d.ts +10 -0
- package/core-services/lib/model/model.d.ts +25 -0
- package/core-services/lib/services/app-keys.d.ts +15 -0
- package/core-services/lib/services/appConfig.service.d.ts +8 -0
- package/core-services/lib/services/auth-guard.service.d.ts +18 -0
- package/core-services/lib/services/auth.interceptor.d.ts +15 -0
- package/core-services/lib/services/auth.service.d.ts +67 -0
- package/core-services/lib/services/breadcrumb.service.d.ts +14 -0
- package/core-services/lib/services/busmessage.service.d.ts +19 -0
- package/core-services/lib/services/can-activate-guard.service.d.ts +12 -0
- package/core-services/lib/services/filter.service.d.ts +15 -0
- package/core-services/lib/services/geolocation.service.d.ts +29 -0
- package/core-services/lib/services/headers.service.d.ts +15 -0
- package/core-services/lib/services/hub.service.d.ts +33 -0
- package/core-services/lib/services/local-store-manager.service.d.ts +50 -0
- package/core-services/lib/services/menu.service.d.ts +27 -0
- package/core-services/lib/services/message.service.d.ts +14 -0
- package/core-services/lib/services/notifications.service.d.ts +14 -0
- package/core-services/lib/services/permission.service.d.ts +12 -0
- package/core-services/lib/services/screen.service.d.ts +14 -0
- package/core-services/lib/services/server-url.d.ts +12 -0
- package/core-services/lib/services/string.function.d.ts +1 -0
- package/core-services/lib/services/user.service.d.ts +22 -0
- package/core-ux/index.d.ts +144 -0
- package/core-ux/lib/components/actions/actions-content.component.d.ts +10 -0
- package/core-ux/lib/components/actions/actions.component.d.ts +57 -0
- package/core-ux/lib/components/actions/extended-action/extended-action.component.d.ts +34 -0
- package/core-ux/lib/components/base-editor/base-editor.component.d.ts +93 -0
- package/core-ux/lib/components/base-item-list/base-item-list.component.d.ts +21 -0
- package/core-ux/lib/components/basefilter/basefilter.component.d.ts +275 -0
- package/core-ux/lib/components/breadcrumb/breadcrumb.component.d.ts +12 -0
- package/core-ux/lib/components/datagrid-custom/datagrid-cell/datagrid-cell.component.d.ts +32 -0
- package/core-ux/lib/components/datagrid-custom/datagrid-custom.component.d.ts +159 -0
- package/core-ux/lib/components/datagrid-custom/datagrid-sorter.component.d.ts +15 -0
- package/core-ux/lib/components/datapage/layout-page/page-layout.component.d.ts +13 -0
- package/core-ux/lib/components/datapage/old/old.datapage.component.d.ts +10 -0
- package/core-ux/lib/components/datapage/old-layout-handler.directive.d.ts +31 -0
- package/core-ux/lib/components/dynamic-components/dynamic-field/dynamic-field.component.d.ts +41 -0
- package/core-ux/lib/components/dynamic-components/dynamic-filter/dynamic-filter-extra.component.d.ts +27 -0
- package/core-ux/lib/components/dynamic-components/dynamic-filter/dynamic-filter-panel.component.d.ts +8 -0
- package/core-ux/lib/components/dynamic-components/dynamic-filter/dynamic-filter.component.d.ts +54 -0
- package/core-ux/lib/components/dynamic-components/dynamic-form/dynamic-form.component.d.ts +122 -0
- package/core-ux/lib/components/filtersummary/filtersummary.component.d.ts +27 -0
- package/core-ux/lib/components/form-password/form-password.component.d.ts +9 -0
- package/core-ux/lib/components/grid-row/grid-row.component.d.ts +12 -0
- package/core-ux/lib/components/image-display/image.component.d.ts +20 -0
- package/core-ux/lib/components/input-selector/input-selector.component.d.ts +50 -0
- package/core-ux/lib/components/input-tree-selector/input-tree-selector.component.d.ts +25 -0
- package/core-ux/lib/components/logs/logs.component.d.ts +32 -0
- package/core-ux/lib/components/menu/menu.component.d.ts +39 -0
- package/core-ux/lib/components/menu-dashboard/menu-dashboard.component.d.ts +15 -0
- package/core-ux/lib/components/paginator/paginator.component.d.ts +17 -0
- package/core-ux/lib/components/parameter-field/parameter-field.component.d.ts +13 -0
- package/core-ux/lib/components/parameter-field/parameter-types/base-array-parameter-type.component.d.ts +16 -0
- package/core-ux/lib/components/parameter-field/parameter-types/base-parameter-type.component.d.ts +21 -0
- package/core-ux/lib/components/parameter-field/parameter-types/parameter-type-bool/parameter-type-bool.component.d.ts +9 -0
- package/core-ux/lib/components/parameter-field/parameter-types/parameter-type-bool-array/parameter-type-bool-array.component.d.ts +12 -0
- package/core-ux/lib/components/parameter-field/parameter-types/parameter-type-date/parameter-type-date.component.d.ts +16 -0
- package/core-ux/lib/components/parameter-field/parameter-types/parameter-type-date-array/parameter-type-date-array.component.d.ts +17 -0
- package/core-ux/lib/components/parameter-field/parameter-types/parameter-type-number/parameter-type-number.component.d.ts +6 -0
- package/core-ux/lib/components/parameter-field/parameter-types/parameter-type-number-array/parameter-type-number-array.component.d.ts +6 -0
- package/core-ux/lib/components/parameter-field/parameter-types/parameter-type-password/parameter-type-password.component.d.ts +9 -0
- package/core-ux/lib/components/parameter-field/parameter-types/parameter-type-text/parameter-type-text.component.d.ts +7 -0
- package/core-ux/lib/components/parameter-field/parameter-types/parameter-type-text-array/parameter-type-text-array.component.d.ts +6 -0
- package/core-ux/lib/components/property-grid/property-grid.component.d.ts +125 -0
- package/core-ux/lib/components/search-results/search-results.component.d.ts +7 -0
- package/core-ux/lib/components/tab/tab.component.d.ts +14 -0
- package/core-ux/lib/components/tabset/tabset.component.d.ts +15 -0
- package/core-ux/lib/components/text-viewer/text-viewer.component.d.ts +21 -0
- package/core-ux/lib/components/time-picker/time-picker.component.d.ts +27 -0
- package/core-ux/lib/components/tree/tree.component.d.ts +39 -0
- package/core-ux/lib/components/validation-error/validation-error.component.d.ts +8 -0
- package/core-ux/lib/components/wizard/wizard-step/wizard-step.component.d.ts +26 -0
- package/core-ux/lib/components/wizard/wizard.component.d.ts +29 -0
- package/core-ux/lib/core-ux.module.d.ts +102 -0
- package/core-ux/lib/directives/addclass.directive.d.ts +11 -0
- package/core-ux/lib/directives/collapse.directive.d.ts +34 -0
- package/core-ux/lib/directives/draggable.directive.d.ts +39 -0
- package/core-ux/lib/directives/droppable.directive.d.ts +55 -0
- package/core-ux/lib/directives/editMode.directive.d.ts +8 -0
- package/core-ux/lib/directives/focusable.directive.d.ts +16 -0
- package/core-ux/lib/directives/insertion.directive.d.ts +8 -0
- package/core-ux/lib/directives/onEnter.directive.d.ts +11 -0
- package/core-ux/lib/directives/tab-heading.d.ts +8 -0
- package/core-ux/lib/directives/tab-transclude.d.ts +11 -0
- package/core-ux/lib/directives/tooltip.directive.d.ts +16 -0
- package/core-ux/lib/directives/validate-on-enter.directive.d.ts +10 -0
- package/core-ux/lib/directives/viewMode.directive.d.ts +8 -0
- package/core-ux/lib/layout/default/default-layout.d.ts +36 -0
- package/core-ux/lib/layout/login/login-layout.d.ts +9 -0
- package/core-ux/lib/log.service.d.ts +8 -0
- package/core-ux/lib/modals/confirm-modal/confirm-modal.component.d.ts +17 -0
- package/core-ux/lib/modals/dialog/dialog.component.d.ts +57 -0
- package/core-ux/lib/modals/dialog-component.tokens.d.ts +3 -0
- package/core-ux/lib/modals/export-data-modal/export-data-modal.component.d.ts +11 -0
- package/core-ux/lib/modals/track-record-modal/track-record-modal.component.d.ts +21 -0
- package/core-ux/lib/modals/validation-modal/validation-modal.component.d.ts +24 -0
- package/core-ux/lib/model/datagrid.d.ts +194 -0
- package/core-ux/lib/model/model.d.ts +222 -0
- package/core-ux/lib/model/tree.d.ts +12 -0
- package/core-ux/lib/pipes/euro.pipe.d.ts +9 -0
- package/core-ux/lib/pipes/todefine.pipe.d.ts +8 -0
- package/core-ux/lib/pipes/tofixedsizeinteger.pipe.d.ts +8 -0
- package/core-ux/lib/services/action.service.d.ts +42 -0
- package/core-ux/lib/services/alert.service.d.ts +51 -0
- package/core-ux/lib/services/application.service.d.ts +73 -0
- package/core-ux/lib/services/can-deactivate-guard.d.ts +12 -0
- package/core-ux/lib/services/drag.service.d.ts +54 -0
- package/core-ux/lib/services/fire-authentication.service.d.ts +13 -0
- package/core-ux/lib/services/image.service.d.ts +15 -0
- package/core-ux/lib/services/modal-state.service.d.ts +26 -0
- package/core-ux/lib/services/modal.service.d.ts +30 -0
- package/core-ux/lib/services/presentation-profile.token.d.ts +40 -0
- package/core-ux/lib/services/selectorMapperBase.service.d.ts +36 -0
- package/core-ux/lib/v2/components/actions-panel/action-panel.component.d.ts +48 -0
- package/core-ux/lib/v2/components/base-component/base-component.d.ts +80 -0
- package/core-ux/lib/v2/components/cell-renderer/cell-renderer.component.d.ts +11 -0
- package/core-ux/lib/v2/components/data-grid/data-grid.component.d.ts +104 -0
- package/core-ux/lib/v2/components/data-grid/grid-field-descriptor/grid-field.component.d.ts +55 -0
- package/core-ux/lib/v2/components/data-list/data-list.component.d.ts +29 -0
- package/core-ux/lib/v2/components/editor-tab/editor-tab.component.d.ts +15 -0
- package/core-ux/lib/v2/components/editor-tabset/editor-tabset.component.d.ts +18 -0
- package/core-ux/lib/v2/components/field-descriptor/field.component.d.ts +61 -0
- package/core-ux/lib/v2/components/filter-form/filter-form.component.d.ts +12 -0
- package/core-ux/lib/v2/components/filter-summary/filter-summary.component.d.ts +34 -0
- package/core-ux/lib/v2/components/new-editor/new-editor.component.d.ts +66 -0
- package/core-ux/lib/v2/components/new-paginator/new-paginator.component.d.ts +31 -0
- package/core-ux/lib/v2/components/orderable/orderable-modal.component.d.ts +36 -0
- package/core-ux/lib/v2/components/orderable/orderable-modal.service.d.ts +11 -0
- package/core-ux/lib/v2/components/orderable/orderable.interface.d.ts +52 -0
- package/core-ux/lib/v2/components/property-editor/property-editor-component.d.ts +89 -0
- package/core-ux/lib/v2/components/selector/selector-registry.service.d.ts +9 -0
- package/core-ux/lib/v2/components/selector/selector.component.d.ts +33 -0
- package/core-ux/lib/v2/components/selector/selector.model.d.ts +19 -0
- package/core-ux/lib/v2/components/standard-page-layout/standard-page-layout.component.d.ts +29 -0
- package/core-ux/lib/v2/directives/base-shortcut.directive.d.ts +15 -0
- package/core-ux/lib/v2/directives/hide-on-threshold.directive.d.ts +20 -0
- package/core-ux/lib/v2/directives/layout-handler.directive.d.ts +54 -0
- package/core-ux/lib/v2/directives/row-ref.directive.d.ts +21 -0
- package/core-ux/lib/v2/models/aggregation-model.d.ts +8 -0
- package/core-ux/lib/v2/models/contexts/action-context.d.ts +66 -0
- package/core-ux/lib/v2/models/contexts/action-handler-context.d.ts +49 -0
- package/core-ux/lib/v2/models/contexts/base-form-context.d.ts +42 -0
- package/core-ux/lib/v2/models/contexts/change-detection-context.d.ts +41 -0
- package/core-ux/lib/v2/models/contexts/data-context.d.ts +25 -0
- package/core-ux/lib/v2/models/contexts/data-grid-style-context.d.ts +36 -0
- package/core-ux/lib/v2/models/contexts/editor-context.d.ts +30 -0
- package/core-ux/lib/v2/models/contexts/entity-config-context.d.ts +49 -0
- package/core-ux/lib/v2/models/contexts/filter-context.d.ts +49 -0
- package/core-ux/lib/v2/models/contexts/layout-context.d.ts +57 -0
- package/core-ux/lib/v2/models/contexts/logger-context.d.ts +5 -0
- package/core-ux/lib/v2/models/contexts/section-context.d.ts +73 -0
- package/core-ux/lib/v2/models/contexts/selection-context.d.ts +45 -0
- package/core-ux/lib/v2/models/entity-facade.d.ts +35 -0
- package/core-ux/lib/v2/models/guards/facade-load-guard.d.ts +35 -0
- package/core-ux/lib/v2/models/guards/filter-lifecycle-guard.d.ts +29 -0
- package/core-ux/lib/v2/models/states/sorting-state.d.ts +14 -0
- package/core-ux/lib/v2/models/utilities/action-definition.d.ts +38 -0
- package/core-ux/lib/v2/models/utilities/change-utilities.d.ts +11 -0
- package/core-ux/lib/v2/models/utilities/entity-updater.d.ts +11 -0
- package/core-ux/lib/v2/models/utilities/form-wrapper.d.ts +30 -0
- package/core-ux/lib/v2/models/utilities/row-registry.d.ts +15 -0
- package/core-ux/lib/v2/models/utilities/selection-styler.d.ts +15 -0
- package/core-ux/lib/v2/pipes/gridstyle.pipe.d.ts +15 -0
- package/core-ux/lib/v2/services/app-config.service.d.ts +22 -0
- package/core-ux/lib/v2/services/entity-facade-registry.service.d.ts +28 -0
- package/core-ux/lib/v2/services/facade-modal.service.d.ts +21 -0
- package/core-ux/lib/v2/services/layout.service.d.ts +93 -0
- package/core-ux/lib/v2/services/property-change-bus.service.d.ts +9 -0
- package/core-ux/lib/v2/services/selection.service.d.ts +23 -0
- package/core-ux/lib/v2/services/test.service.d.ts +7 -0
- package/core-ux/lib/v2/services/validation.service.d.ts +10 -0
- package/core-ux/lib/v2/services/view-model-loader.service.d.ts +13 -0
- package/fesm2022/dflat-core-web-core-data.mjs +431 -0
- package/fesm2022/dflat-core-web-core-data.mjs.map +1 -0
- package/fesm2022/dflat-core-web-core-model.mjs +245 -0
- package/fesm2022/dflat-core-web-core-model.mjs.map +1 -0
- package/fesm2022/dflat-core-web-core-services.mjs +1568 -0
- package/fesm2022/dflat-core-web-core-services.mjs.map +1 -0
- package/fesm2022/dflat-core-web-core-ux.mjs +16294 -0
- package/fesm2022/dflat-core-web-core-ux.mjs.map +1 -0
- package/fesm2022/dflat-core-web-core.mjs +743 -0
- package/fesm2022/dflat-core-web-core.mjs.map +1 -0
- package/fesm2022/dflat-core-web-system-data.mjs +1031 -0
- package/fesm2022/dflat-core-web-system-data.mjs.map +1 -0
- package/fesm2022/dflat-core-web-system-model.mjs +283 -0
- package/fesm2022/dflat-core-web-system-model.mjs.map +1 -0
- package/fesm2022/dflat-core-web-system-root.mjs +289 -0
- package/fesm2022/dflat-core-web-system-root.mjs.map +1 -0
- package/fesm2022/dflat-core-web-system-ux.mjs +5677 -0
- package/fesm2022/dflat-core-web-system-ux.mjs.map +1 -0
- package/fesm2022/dflat-core-web.mjs +18 -0
- package/fesm2022/dflat-core-web.mjs.map +1 -0
- package/index.d.ts +1 -0
- package/package.json +82 -0
- package/scss/core-ux.scss +5 -0
- package/scss/images/circle-info.svg +1 -0
- package/scss/images/circlecross.svg +3 -0
- package/scss/images/circularoptionselected.svg +1 -0
- package/scss/images/error.png +0 -0
- package/scss/images/filter.svg +2 -0
- package/scss/images/information.png +0 -0
- package/scss/images/pen-solid.svg +1 -0
- package/scss/images/search-sprite.png +0 -0
- package/scss/images/search.svg +3 -0
- package/scss/images/warning.png +0 -0
- package/scss/layout/default/default-layout.scss +270 -0
- package/scss/layout/login/login-layout.scss +204 -0
- package/scss/styles/drag-and-drop.scss +36 -0
- package/scss/styles/forms.scss +94 -0
- package/scss/styles/shared.scss +222 -0
- package/system-data/index.d.ts +50 -0
- package/system-data/lib/data-services/account-service.generated.d.ts +20 -0
- package/system-data/lib/data-services/action-service.generated.d.ts +15 -0
- package/system-data/lib/data-services/address-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/checkout-service.generated.d.ts +13 -0
- package/system-data/lib/data-services/company-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/config-service.generated.d.ts +18 -0
- package/system-data/lib/data-services/country-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/currency-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/custom-field-group-entity-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/custom-field-group-item-service.generated.d.ts +13 -0
- package/system-data/lib/data-services/custom-field-group-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/custom-field-options-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/custom-field-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/error-category-service.generated.d.ts +12 -0
- package/system-data/lib/data-services/exchange-rate-detail-service.generated.d.ts +35 -0
- package/system-data/lib/data-services/exchange-rate-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/file-service.generated.d.ts +26 -0
- package/system-data/lib/data-services/keyword-service.generated.d.ts +12 -0
- package/system-data/lib/data-services/meta-entity-field-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/meta-entity-keyword-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/meta-entity-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/news-service.generated.d.ts +13 -0
- package/system-data/lib/data-services/parameter-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/parameter-value-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/permission-service.generated.d.ts +12 -0
- package/system-data/lib/data-services/permission-view-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/plugin-parameter-value-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/presentation-profile-item-service.generated.d.ts +14 -0
- package/system-data/lib/data-services/presentation-profile-service.generated.d.ts +13 -0
- package/system-data/lib/data-services/rating-service.generated.d.ts +14 -0
- package/system-data/lib/data-services/rating-summary-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/rating-view-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/request-result-service.generated.d.ts +12 -0
- package/system-data/lib/data-services/request-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/resource-key-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/resource-language-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/resource-translation-view-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/role-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/subcompany-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/supplier-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/synchronized-company-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/tva-rate-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/user-account-company-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/user-account-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/user-favorite-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/user-group-definition-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/user-group-service.generated.d.ts +10 -0
- package/system-data/lib/data-services/user-role-service.generated.d.ts +10 -0
- package/system-data/lib/system-data.module.d.ts +9 -0
- package/system-model/index.d.ts +3 -0
- package/system-model/lib/model/interface.generated.d.ts +1162 -0
- package/system-model/lib/model/model.d.ts +11 -0
- package/system-model/lib/system-model.module.d.ts +7 -0
- package/system-root/index.d.ts +5 -0
- package/system-root/lib/system-entity-keys.d.ts +36 -0
- package/system-root/lib/system-menu-item-provider.d.ts +28 -0
- package/system-root/lib/system-menu-service.d.ts +13 -0
- package/system-root/lib/system-permissions.generated.d.ts +128 -0
- package/system-root/lib/system-root.module.d.ts +7 -0
- package/system-ux/index.d.ts +76 -0
- package/system-ux/lib/activate/activate.component.d.ts +36 -0
- package/system-ux/lib/address/address-editor.component.d.ts +12 -0
- package/system-ux/lib/address/address.component.d.ts +15 -0
- package/system-ux/lib/company/company-editor.component.d.ts +12 -0
- package/system-ux/lib/company/company.component.d.ts +19 -0
- package/system-ux/lib/components/image-upload/image-upload.component.d.ts +99 -0
- package/system-ux/lib/config/config-component.d.ts +22 -0
- package/system-ux/lib/config/datawarehouse-supply/dw-supply.component.d.ts +14 -0
- package/system-ux/lib/country/country-editor.component.d.ts +12 -0
- package/system-ux/lib/country/country.component.d.ts +14 -0
- package/system-ux/lib/currency/currency-editor.component.d.ts +12 -0
- package/system-ux/lib/currency/currency.component.d.ts +14 -0
- package/system-ux/lib/custom-field/custom-field-editor.component.d.ts +13 -0
- package/system-ux/lib/custom-field/custom-field.component.d.ts +19 -0
- package/system-ux/lib/custom-field-group/custom-field-group-editor.component.d.ts +14 -0
- package/system-ux/lib/custom-field-group/custom-field-group-entity/custom-field-group-entity-editor.component.d.ts +13 -0
- package/system-ux/lib/custom-field-group/custom-field-group-entity/custom-field-group-entity.component.d.ts +19 -0
- package/system-ux/lib/custom-field-group/custom-field-group-item/custom-field-group-item-editor.component.d.ts +12 -0
- package/system-ux/lib/custom-field-group/custom-field-group-item/custom-field-group-item.component.d.ts +27 -0
- package/system-ux/lib/custom-field-group/custom-field-group.component.d.ts +23 -0
- package/system-ux/lib/custom-field-options/custom-field-options-editor.component.d.ts +17 -0
- package/system-ux/lib/custom-field-options/custom-field-options.component.d.ts +22 -0
- package/system-ux/lib/entity-files/entity-files.component.d.ts +37 -0
- package/system-ux/lib/exchange-rate/exchange-rate-detail.component.d.ts +17 -0
- package/system-ux/lib/exchange-rate/exchange-rate-editor.component.d.ts +25 -0
- package/system-ux/lib/exchange-rate/exchange-rate.component.d.ts +18 -0
- package/system-ux/lib/global-parameter/global-parameter.component.d.ts +15 -0
- package/system-ux/lib/login/login.component.d.ts +37 -0
- package/system-ux/lib/meta-entity/meta-entity.component.d.ts +22 -0
- package/system-ux/lib/meta-entity-field/meta-entity-field-editor.component.d.ts +12 -0
- package/system-ux/lib/meta-entity-field/meta-entity-field.component.d.ts +20 -0
- package/system-ux/lib/news/news-component.d.ts +16 -0
- package/system-ux/lib/news/news-editor.component.d.ts +28 -0
- package/system-ux/lib/permission/permission-component.d.ts +16 -0
- package/system-ux/lib/permission/permission-editor.component.d.ts +12 -0
- package/system-ux/lib/presentation-profile/pp-facade.service.d.ts +39 -0
- package/system-ux/lib/presentation-profile/presentation-profile-action-service.d.ts +16 -0
- package/system-ux/lib/presentation-profile/presentation-profile-column-grid/presentation-profile-column.component.d.ts +73 -0
- package/system-ux/lib/presentation-profile/presentation-profile-column-grid/presentation-profile-items.component.d.ts +50 -0
- package/system-ux/lib/presentation-profile/presentation-profile-resolver.service.d.ts +34 -0
- package/system-ux/lib/presentation-profile/presentation-profile-transformer.d.ts +48 -0
- package/system-ux/lib/presentation-profile/presentation-profile.component.d.ts +16 -0
- package/system-ux/lib/presentation-profile/presentation-profile.service.d.ts +58 -0
- package/system-ux/lib/request/request-editor.component.d.ts +12 -0
- package/system-ux/lib/request/request.component.d.ts +20 -0
- package/system-ux/lib/request-results/request-results.component.d.ts +15 -0
- package/system-ux/lib/reset-password/reset-password.component.d.ts +32 -0
- package/system-ux/lib/resource-key/resource-key.component.d.ts +18 -0
- package/system-ux/lib/resource-language/resource-language.component.d.ts +16 -0
- package/system-ux/lib/resource-language/resourcelanguage-editor.component.d.ts +12 -0
- package/system-ux/lib/resource-translation/resource-translation-editor.component.d.ts +12 -0
- package/system-ux/lib/resource-translation/resource-translation.component.d.ts +16 -0
- package/system-ux/lib/role/role-component.d.ts +14 -0
- package/system-ux/lib/role/role-editor.component.d.ts +27 -0
- package/system-ux/lib/services/custom-field-action-service.d.ts +25 -0
- package/system-ux/lib/services/custom-field-service.d.ts +21 -0
- package/system-ux/lib/services/rates-action-service.d.ts +28 -0
- package/system-ux/lib/services/select-user-company-action-service.d.ts +23 -0
- package/system-ux/lib/services/system-section.service.d.ts +12 -0
- package/system-ux/lib/services/system-selector-mapper.service.d.ts +24 -0
- package/system-ux/lib/services/user-action-service.d.ts +20 -0
- package/system-ux/lib/sub-company/sub-company.component.d.ts +15 -0
- package/system-ux/lib/supplier/supplier-editor.component.d.ts +12 -0
- package/system-ux/lib/supplier/supplier.component.d.ts +16 -0
- package/system-ux/lib/synchronised-company/synchronised-company.component.d.ts +16 -0
- package/system-ux/lib/system-ux.module.d.ts +88 -0
- package/system-ux/lib/tva-rate/tva-rate-detail.component.d.ts +17 -0
- package/system-ux/lib/tva-rate/tva-rate-editor.component.d.ts +25 -0
- package/system-ux/lib/tva-rate/tva-rate.component.d.ts +17 -0
- package/system-ux/lib/user-account/user-account-component.d.ts +18 -0
- package/system-ux/lib/user-account/user-account-editor.component.d.ts +12 -0
- package/system-ux/lib/user-account-profile/user-account-profile.component.d.ts +31 -0
- package/system-ux/lib/user-company/user-company-component.d.ts +21 -0
- package/system-ux/lib/user-group/user-group-definition.component.d.ts +18 -0
- package/system-ux/lib/user-group/user-group-editor.component.d.ts +12 -0
- package/system-ux/lib/user-group/user-group.component.d.ts +16 -0
- package/system-ux/lib/user-permission/user-permission-component.d.ts +14 -0
- package/system-ux/lib/user-role/user-role-component.d.ts +20 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dflat-core-web-core-ux.mjs","sources":["../../core-ux/src/lib/directives/viewMode.directive.ts","../../core-ux/src/lib/components/actions/actions-content.component.ts","../../core-ux/src/lib/v2/models/utilities/action-definition.ts","../../core-ux/src/lib/modals/dialog-component.tokens.ts","../../core-ux/src/lib/directives/insertion.directive.ts","../../core-ux/src/lib/modals/dialog/dialog.component.ts","../../core-ux/src/lib/modals/dialog/dialog.component.html","../../core-ux/src/lib/modals/confirm-modal/confirm-modal.component.ts","../../core-ux/src/lib/modals/confirm-modal/confirm-modal.component.html","../../core-ux/src/lib/services/modal-state.service.ts","../../core-ux/src/lib/services/modal.service.ts","../../core-ux/src/lib/services/alert.service.ts","../../core-ux/src/lib/modals/export-data-modal/export-data-modal.component.ts","../../core-ux/src/lib/modals/export-data-modal/export-data-modal.component.html","../../core-ux/src/lib/v2/models/contexts/action-handler-context.ts","../../core-ux/src/lib/v2/models/contexts/action-context.ts","../../core-ux/src/lib/v2/models/utilities/change-utilities.ts","../../core-ux/src/lib/v2/models/contexts/change-detection-context.ts","../../core-ux/src/lib/v2/models/contexts/data-context.ts","../../core-ux/src/lib/v2/models/contexts/data-grid-style-context.ts","../../core-ux/src/lib/v2/models/contexts/editor-context.ts","../../core-ux/src/lib/v2/models/contexts/entity-config-context.ts","../../core-ux/src/lib/v2/models/contexts/filter-context.ts","../../core-ux/src/lib/v2/models/contexts/layout-context.ts","../../core-ux/src/lib/v2/models/contexts/logger-context.ts","../../core-ux/src/lib/v2/models/contexts/section-context.ts","../../core-ux/src/lib/v2/models/contexts/selection-context.ts","../../core-ux/src/lib/v2/models/guards/facade-load-guard.ts","../../core-ux/src/lib/v2/models/guards/filter-lifecycle-guard.ts","../../core-ux/src/lib/v2/models/entity-facade.ts","../../core-ux/src/lib/v2/services/entity-facade-registry.service.ts","../../core-ux/src/lib/services/application.service.ts","../../core-ux/src/lib/model/model.ts","../../core-ux/src/lib/log.service.ts","../../core-ux/src/lib/services/action.service.ts","../../core-ux/src/lib/v2/services/layout.service.ts","../../core-ux/src/lib/services/selectorMapperBase.service.ts","../../core-ux/src/lib/v2/services/facade-modal.service.ts","../../core-ux/src/lib/components/input-selector/input-selector.component.ts","../../core-ux/src/lib/components/input-selector/input-selector.component.html","../../core-ux/src/lib/components/input-tree-selector/input-tree-selector.component.ts","../../core-ux/src/lib/components/input-tree-selector/input-tree-selector.component.html","../../core-ux/src/lib/components/dynamic-components/dynamic-field/dynamic-field.component.ts","../../core-ux/src/lib/components/dynamic-components/dynamic-field/dynamic-field.component.html","../../core-ux/src/lib/services/image.service.ts","../../core-ux/src/lib/components/image-display/image.component.ts","../../core-ux/src/lib/components/image-display/image.component.html","../../core-ux/src/lib/components/actions/actions.component.ts","../../core-ux/src/lib/components/actions/actions.component.html","../../core-ux/src/lib/components/base-item-list/base-item-list.component.ts","../../core-ux/src/lib/components/base-item-list/base-item-list.component.html","../../core-ux/src/lib/components/breadcrumb/breadcrumb.component.ts","../../core-ux/src/lib/components/breadcrumb/breadcrumb.component.html","../../core-ux/src/lib/directives/editMode.directive.ts","../../core-ux/src/lib/directives/focusable.directive.ts","../../core-ux/src/lib/components/datagrid-custom/datagrid-cell/datagrid-cell.component.ts","../../core-ux/src/lib/components/datagrid-custom/datagrid-cell/datagrid-cell.component.html","../../core-ux/src/lib/v2/services/selection.service.ts","../../core-ux/src/lib/directives/onEnter.directive.ts","../../core-ux/src/lib/pipes/todefine.pipe.ts","../../core-ux/src/lib/pipes/tofixedsizeinteger.pipe.ts","../../core-ux/src/lib/components/datagrid-custom/datagrid-custom.component.ts","../../core-ux/src/lib/components/datagrid-custom/datagrid-custom.component.html","../../core-ux/src/lib/components/dynamic-components/dynamic-filter/dynamic-filter.component.ts","../../core-ux/src/lib/components/dynamic-components/dynamic-filter/dynamic-filter.component.html","../../core-ux/src/lib/components/dynamic-components/dynamic-filter/dynamic-filter-extra.component.ts","../../core-ux/src/lib/components/dynamic-components/dynamic-filter/dynamic-filter-extra.component.html","../../core-ux/src/lib/components/dynamic-components/dynamic-filter/dynamic-filter-panel.component.ts","../../core-ux/src/lib/components/dynamic-components/dynamic-filter/dynamic-filter-panel.component.html","../../core-ux/src/lib/directives/tab-heading.ts","../../core-ux/src/lib/components/tab/tab.component.ts","../../core-ux/src/lib/components/tab/tab.component.html","../../core-ux/src/lib/directives/tab-transclude.ts","../../core-ux/src/lib/components/tabset/tabset.component.ts","../../core-ux/src/lib/components/tabset/tabset.component.html","../../core-ux/src/lib/components/dynamic-components/dynamic-form/dynamic-form.component.ts","../../core-ux/src/lib/components/dynamic-components/dynamic-form/dynamic-form.component.html","../../core-ux/src/lib/components/filtersummary/filtersummary.component.ts","../../core-ux/src/lib/components/filtersummary/filtersummary.component.html","../../core-ux/src/lib/components/grid-row/grid-row.component.ts","../../core-ux/src/lib/components/grid-row/grid-row.component.html","../../core-ux/src/lib/components/logs/logs.component.ts","../../core-ux/src/lib/components/logs/logs.component.html","../../core-ux/src/lib/components/menu/menu.component.ts","../../core-ux/src/lib/components/menu/menu.component.html","../../core-ux/src/lib/components/validation-error/validation-error.component.ts","../../core-ux/src/lib/components/validation-error/validation-error.component.html","../../core-ux/src/lib/modals/track-record-modal/track-record-modal.component.ts","../../core-ux/src/lib/modals/track-record-modal/track-record-modal.component.html","../../core-ux/src/lib/components/datapage/old-layout-handler.directive.ts","../../core-ux/src/lib/v2/directives/hide-on-threshold.directive.ts","../../core-ux/src/lib/components/datapage/layout-page/page-layout.component.ts","../../core-ux/src/lib/components/datapage/layout-page/page-layout.component.html","../../core-ux/src/lib/components/basefilter/basefilter.component.ts","../../core-ux/src/lib/components/paginator/paginator.component.ts","../../core-ux/src/lib/components/paginator/paginator.component.html","../../core-ux/src/lib/components/parameter-field/parameter-types/base-parameter-type.component.ts","../../core-ux/src/lib/components/parameter-field/parameter-types/parameter-type-text/parameter-type-text.component.ts","../../core-ux/src/lib/components/parameter-field/parameter-types/parameter-type-text/parameter-type-text.component.html","../../core-ux/src/lib/components/parameter-field/parameter-types/parameter-type-number/parameter-type-number.component.ts","../../core-ux/src/lib/components/parameter-field/parameter-types/parameter-type-number/parameter-type-number.component.html","../../core-ux/src/lib/components/parameter-field/parameter-types/parameter-type-bool/parameter-type-bool.component.ts","../../core-ux/src/lib/components/parameter-field/parameter-types/parameter-type-bool/parameter-type-bool.component.html","../../core-ux/src/lib/components/parameter-field/parameter-types/parameter-type-date/parameter-type-date.component.ts","../../core-ux/src/lib/components/parameter-field/parameter-types/parameter-type-date/parameter-type-date.component.html","../../core-ux/src/lib/components/parameter-field/parameter-types/parameter-type-password/parameter-type-password.component.ts","../../core-ux/src/lib/components/parameter-field/parameter-types/parameter-type-password/parameter-type-password.component.html","../../core-ux/src/lib/components/parameter-field/parameter-types/base-array-parameter-type.component.ts","../../core-ux/src/lib/components/parameter-field/parameter-types/parameter-type-text-array/parameter-type-text-array.component.ts","../../core-ux/src/lib/components/parameter-field/parameter-types/parameter-type-text-array/parameter-type-text-array.component.html","../../core-ux/src/lib/components/parameter-field/parameter-types/parameter-type-number-array/parameter-type-number-array.component.ts","../../core-ux/src/lib/components/parameter-field/parameter-types/parameter-type-number-array/parameter-type-number-array.component.html","../../core-ux/src/lib/components/parameter-field/parameter-types/parameter-type-date-array/parameter-type-date-array.component.ts","../../core-ux/src/lib/components/parameter-field/parameter-types/parameter-type-date-array/parameter-type-date-array.component.html","../../core-ux/src/lib/components/parameter-field/parameter-types/parameter-type-bool-array/parameter-type-bool-array.component.ts","../../core-ux/src/lib/components/parameter-field/parameter-types/parameter-type-bool-array/parameter-type-bool-array.component.html","../../core-ux/src/lib/components/parameter-field/parameter-field.component.ts","../../core-ux/src/lib/components/parameter-field/parameter-field.component.html","../../core-ux/src/lib/directives/validate-on-enter.directive.ts","../../core-ux/src/lib/components/form-password/form-password.component.ts","../../core-ux/src/lib/components/form-password/form-password.component.html","../../core-ux/src/lib/components/property-grid/property-grid.component.ts","../../core-ux/src/lib/components/property-grid/property-grid.component.html","../../core-ux/src/lib/components/datapage/old/old.datapage.component.ts","../../core-ux/src/lib/components/datapage/old/old.datapage.component.html","../../core-ux/src/lib/components/text-viewer/text-viewer.component.ts","../../core-ux/src/lib/components/text-viewer/text-viewer.component.html","../../core-ux/src/lib/components/time-picker/time-picker.component.ts","../../core-ux/src/lib/components/time-picker/time-picker.component.html","../../core-ux/src/lib/components/wizard/wizard-step/wizard-step.component.ts","../../core-ux/src/lib/components/wizard/wizard-step/wizard-step.component.html","../../core-ux/src/lib/components/wizard/wizard.component.ts","../../core-ux/src/lib/components/wizard/wizard.component.html","../../core-ux/src/lib/directives/addclass.directive.ts","../../core-ux/src/lib/directives/collapse.directive.ts","../../core-ux/src/lib/services/drag.service.ts","../../core-ux/src/lib/directives/draggable.directive.ts","../../core-ux/src/lib/directives/droppable.directive.ts","../../core-ux/src/lib/directives/tooltip.directive.ts","../../core-ux/src/lib/layout/default/default-layout.ts","../../core-ux/src/lib/layout/default/default-layout.html","../../core-ux/src/lib/layout/login/login-layout.ts","../../core-ux/src/lib/layout/login/login-layout.html","../../core-ux/src/lib/modals/validation-modal/validation-modal.component.ts","../../core-ux/src/lib/modals/validation-modal/validation-modal.component.html","../../core-ux/src/lib/pipes/euro.pipe.ts","../../core-ux/src/lib/services/can-deactivate-guard.ts","../../core-ux/src/lib/services/fire-authentication.service.ts","../../core-ux/src/lib/v2/services/property-change-bus.service.ts","../../core-ux/src/lib/v2/services/validation.service.ts","../../core-ux/src/lib/v2/models/utilities/form-wrapper.ts","../../core-ux/src/lib/v2/components/selector/selector.component.ts","../../core-ux/src/lib/v2/components/selector/selector.component.html","../../core-ux/src/lib/v2/components/field-descriptor/field.component.ts","../../core-ux/src/lib/v2/components/field-descriptor/field.component.html","../../core-ux/src/lib/components/actions/extended-action/extended-action.component.ts","../../core-ux/src/lib/components/actions/extended-action/extended-action.component.html","../../core-ux/src/lib/components/menu-dashboard/menu-dashboard.component.ts","../../core-ux/src/lib/components/menu-dashboard/menu-dashboard.component.html","../../core-ux/src/lib/components/search-results/search-results.component.ts","../../core-ux/src/lib/components/search-results/search-results.component.html","../../core-ux/src/lib/v2/directives/layout-handler.directive.ts","../../core-ux/src/lib/v2/components/filter-form/filter-form.component.ts","../../core-ux/src/lib/v2/components/filter-form/filter-form.component.html","../../core-ux/src/lib/v2/components/actions-panel/action-panel.component.ts","../../core-ux/src/lib/v2/components/actions-panel/action-panel.component.html","../../core-ux/src/lib/v2/components/cell-renderer/cell-renderer.component.ts","../../core-ux/src/lib/v2/components/cell-renderer/cell-renderer.component.html","../../core-ux/src/lib/v2/models/utilities/entity-updater.ts","../../core-ux/src/lib/v2/models/utilities/row-registry.ts","../../core-ux/src/lib/v2/models/utilities/selection-styler.ts","../../core-ux/src/lib/v2/directives/row-ref.directive.ts","../../core-ux/src/lib/v2/pipes/gridstyle.pipe.ts","../../core-ux/src/lib/v2/components/data-grid/data-grid.component.ts","../../core-ux/src/lib/v2/components/data-grid/data-grid.component.html","../../core-ux/src/lib/v2/components/data-list/data-list.component.ts","../../core-ux/src/lib/v2/components/data-list/data-list.component.html","../../core-ux/src/lib/v2/components/editor-tab/editor-tab.component.ts","../../core-ux/src/lib/v2/components/editor-tabset/editor-tabset.component.ts","../../core-ux/src/lib/v2/components/editor-tabset/editor-tabset.component.html","../../core-ux/src/lib/v2/components/filter-summary/filter-summary.component.ts","../../core-ux/src/lib/v2/components/filter-summary/filter-summary.component.html","../../core-ux/src/lib/v2/services/view-model-loader.service.ts","../../core-ux/src/lib/v2/components/property-editor/property-editor-component.ts","../../core-ux/src/lib/v2/components/property-editor/property-editor.component.html","../../core-ux/src/lib/v2/components/new-editor/new-editor.component.ts","../../core-ux/src/lib/v2/components/new-editor/new-editor.component.html","../../core-ux/src/lib/v2/components/new-paginator/new-paginator.component.ts","../../core-ux/src/lib/v2/components/new-paginator/new-paginator.component.html","../../core-ux/src/lib/v2/directives/base-shortcut.directive.ts","../../core-ux/src/lib/v2/components/standard-page-layout/standard-page-layout.component.ts","../../core-ux/src/lib/v2/components/standard-page-layout/standard-page-layout.component.html","../../core-ux/src/lib/v2/services/test.service.ts","../../core-ux/src/lib/v2/components/data-grid/grid-field-descriptor/grid-field.component.ts","../../core-ux/src/lib/v2/components/data-grid/grid-field-descriptor/grid-field.component.html","../../core-ux/src/lib/v2/components/orderable/orderable.interface.ts","../../core-ux/src/lib/v2/components/orderable/orderable-modal.component.ts","../../core-ux/src/lib/v2/components/orderable/orderable-modal.component.html","../../core-ux/src/lib/v2/components/orderable/orderable-modal.service.ts","../../core-ux/src/lib/core-ux.module.ts","../../core-ux/src/lib/services/presentation-profile.token.ts","../../core-ux/src/lib/components/base-editor/base-editor.component.ts","../../core-ux/src/lib/components/datagrid-custom/datagrid-sorter.component.ts","../../core-ux/src/lib/components/tree/tree.component.ts","../../core-ux/src/lib/v2/components/base-component/base-component.ts","../../core-ux/src/lib/v2/components/selector/selector-registry.service.ts","../../core-ux/src/lib/v2/components/selector/selector.model.ts","../../core-ux/src/lib/v2/services/app-config.service.ts","../../core-ux/src/lib/v2/models/contexts/base-form-context.ts","../../core-ux/src/lib/v2/models/states/sorting-state.ts","../../core-ux/src/dflat-core-web-core-ux.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[alg-viewMode]',\r\n standalone: false\r\n})\r\nexport class ViewModeDirective {\r\n\r\n constructor(public tpl: TemplateRef<any>) { }\r\n}\r\n","import { Component, ContentChild, TemplateRef } from '@angular/core';\r\nimport { ViewModeDirective } from '../../directives/viewMode.directive';\r\n\r\n@Component({\r\n selector: 'actions-content',\r\n template: `<ng-content></ng-content>`,\r\n standalone: false\r\n})\r\nexport class ActionsContentComponent {\r\n\r\n @ContentChild(ViewModeDirective)\r\n view: ViewModeDirective;\r\n \r\n constructor() {}\r\n\r\n get template(): TemplateRef<any> {\r\n return this.view ? this.view.tpl : null;\r\n };\r\n}\r\n","import type { ActionResult } from \"../contexts/action-context\";\r\nimport { BehaviorSubject, Observable } from \"rxjs\";\r\n\r\nexport type FacadeAction = \r\n | ((param?: any) => void)\r\n | ((param?: any) => Observable<ActionResult<any>>);\r\n\r\nexport class ActionDefinition {\r\n readonly name: string;\r\n readonly title: string;\r\n readonly showTitle: boolean;\r\n readonly selectionNeeded: boolean;\r\n readonly multiSelection: boolean;\r\n readonly icon: string;\r\n readonly cssClass: string;\r\n \r\n // action: (parameter: any) => void = () => {};\r\n action: FacadeAction = () => {};\r\n isActive: () => boolean = () => true;\r\n getParameter?: () => any;\r\n\r\n permission?: string;\r\n\r\n isVisible = true;\r\n disabled = false;\r\n\r\n private readonly enabledSubject = new BehaviorSubject<boolean>(true);\r\n readonly enabled$ = this.enabledSubject.asObservable();\r\n\r\n constructor(init: {\r\n name: string;\r\n title: string;\r\n showTitle: boolean;\r\n selectionNeeded: boolean;\r\n multiSelection: boolean;\r\n icon: string;\r\n cssClass: string;\r\n action?: FacadeAction;\r\n permission?: string;\r\n isActive?: () => boolean;\r\n isVisible : boolean;\r\n getParameter?: () => any\r\n }) {\r\n Object.assign(this, init);\r\n if (init.action) this.action = init.action;\r\n if (init.isActive) this.isActive = init.isActive;\r\n if (init.getParameter) this.getParameter = init.getParameter;\r\n }\r\n\r\n updateEnabled(enabled: boolean) {\r\n this.disabled = !enabled;\r\n this.enabledSubject.next(enabled);\r\n }\r\n\r\n execute() {\r\n if (!this.disabled) {\r\n\r\n let param : any = null;\r\n if ( this.getParameter )\r\n param = this.getParameter();\r\n\r\n this.action(param);\r\n }\r\n }\r\n\r\n hide() { this.isVisible = false; }\r\n show() { this.isVisible = true; }\r\n}\r\n","import { InjectionToken, Type } from '@angular/core';\r\n\r\n/*\r\n * Types de composants ouverts en modale par des services/contextes dont le composant dépend lui-même\r\n * (via son template). Les injecter plutôt que les importer évite des cycles d'imports, non supportés\r\n * en compilation partielle (librairie). Fournis par CoreUxModule.\r\n */\r\nexport const EXTENDED_ACTION_COMPONENT = new InjectionToken<Type<unknown>>('EXTENDED_ACTION_COMPONENT');\r\nexport const TRACK_RECORD_MODAL_COMPONENT = new InjectionToken<Type<unknown>>('TRACK_RECORD_MODAL_COMPONENT');\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[algInsertion]',\r\n standalone: false\r\n})\r\nexport class InsertionDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) {}\r\n}\r\n","import { Utilities } from '@dflat-core/web/core';\nimport type { BaseComponent } from '../../v2/components/base-component/base-component';\nimport { AfterViewInit, ChangeDetectorRef, Component, ComponentRef, Inject, OnDestroy, OnInit, Type, ViewChild } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\nimport type { ExtendedActionComponent } from '../../components/actions/extended-action/extended-action.component';\nimport { EXTENDED_ACTION_COMPONENT } from '../dialog-component.tokens';\nimport { InsertionDirective } from '../../directives/insertion.directive';\nimport { IDialogOptions, IIsCancel, DflatBaseComponent, MessageSeverity } from '../../model/model';\n\nexport interface IDialogComponentPameter {\n componentRef: ComponentRef<any>;\n dialogOptions: IDialogOptions;\n showButtons: boolean;\n isLoading: boolean;\n text: string;\n defaultOkLabel: string;\n defaultCancelLabel: string;\n}\n\nexport class DialogComponentParameter implements IDialogComponentPameter {\n componentRef: ComponentRef<any>;\n dialogOptions: IDialogOptions = { enableDirtyCheck : true };\n showButtons: boolean = true;\n canClose: boolean = true;\n isLoading: boolean = true;\n text: string = \"\";\n defaultOkLabel: string = \"Valider\";\n defaultCancelLabel: string = \"Annuler\";\n constructor() { }\n\n}\n\n@Component({\n selector: 'alg-dialog-component',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n standalone: false\n})\n\nexport class DialogComponent implements AfterViewInit, OnDestroy, IDialogComponentPameter, IIsCancel, OnInit {\n\n @ViewChild(InsertionDirective, { static: false }) insertionPoint: InsertionDirective;\n\n componentRef: ComponentRef<any>;\n dialogOptions: IDialogOptions = {};\n showButtons: boolean = true;\n isLoading: boolean = true;\n text: string = \"\";\n defaultOkLabel: string = \"Valider\";\n defaultCancelLabel: string = \"Annuler\";\n\n isCancel?: boolean;\n canClose: boolean = true;\n callBackAction: (isCancel: IIsCancel) => void = () => { };\n \n severity: MessageSeverity = MessageSeverity.Warn;\n severityClass: string = 'warning';\n\n private readonly _onClose = new Subject<any>();\n public onClose = this._onClose.asObservable();\n isInvalid: boolean = false;\n\n constructor(\n public bsModalRef: BsModalRef,\n private cd: ChangeDetectorRef,\n @Inject(EXTENDED_ACTION_COMPONENT) private extendedActionComponentType: Type<ExtendedActionComponent>) {\n this.isLoading = true;\n }\n ngOnInit(): void {\n switch(this.severity) {\n case MessageSeverity.Warn:\n this.severityClass = 'warning';\n break;\n case MessageSeverity.Info:\n this.severityClass = 'information';\n break;\n case MessageSeverity.Error:\n this.severityClass = 'error';\n break;\n }\n }\n\n //#region Hooks\n\n ngAfterViewInit() {\n if (this.dialogOptions.childComponentType) {\n this.loadChildComponent(this.dialogOptions.childComponentType);\n this.cd.detectChanges();\n }\n else {\n this.isLoading = false;\n }\n }\n\n ngOnDestroy() {\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n }\n\n //#endregion\n\n validate() {\n \n if (!this.dialogOptions.childComponentType || !this.componentRef) {\n this.close();\n if (this.dialogOptions.callBackAction) {\n this.dialogOptions.callBackAction({ isCancel: false });\n }\n return;\n }\n\n const instance = this.componentRef.instance;\n\n if (this.dialogOptions.enableDirtyCheck && instance instanceof DflatBaseComponent && instance.isDirty()) {\n instance.loadData();\n return;\n }\n\n if (instance instanceof this.extendedActionComponentType && instance.wrapper?.form?.invalid) {\n instance.wrapper.form.markAllAsTouched();\n this.isInvalid = true;\n this.cd.detectChanges();\n return;\n }\n\n let result: any = null;\n // Test sur DflatBaseComponent plutôt que BaseComponent : un import en valeur de BaseComponent crée un cycle\n // qui place BaseComponent avant sa classe parente dans le bundle de la librairie.\n if (instance instanceof DflatBaseComponent && (instance as BaseComponent<any, any>).facade) {\n result = (instance as BaseComponent<any, any>).facade.selection.getSelected();\n } \n else if (this.dialogOptions.propertyCallback) {\n result = (instance as any)[this.dialogOptions.propertyCallback];\n }\n\n instance.isCancel = false;\n\n if (this.canClose) {\n this.close(result);\n }\n\n if (this.dialogOptions.callBackAction) {\n this.dialogOptions.callBackAction(instance);\n }\n }\n\n\n cancel() {\n if (this.dialogOptions.childComponentType \n && this.componentRef.instance instanceof DflatBaseComponent \n && (<DflatBaseComponent>this.componentRef.instance).isDirty() === true \n && this.dialogOptions.enableDirtyCheck == true) {\n (<DflatBaseComponent>this.componentRef.instance).loadData();\n return;\n }\n\n if (!Utilities.IsUndefined(this.componentRef) && !Utilities.IsUndefined(this.componentRef.instance)) {\n this.componentRef.instance.isCancel = true;\n \n this.close();\n \n if ( this.dialogOptions.callBackAction)\n this.dialogOptions.callBackAction(this.componentRef.instance);\n }\n else {\n \n this.close();\n\n if ( this.dialogOptions.callBackAction)\n this.dialogOptions.callBackAction({ isCancel: true });\n }\n }\n\n\n loadChildComponent(componentType: Type<any>) { \n let viewContainerRef = this.insertionPoint.viewContainerRef;\n viewContainerRef.clear();\n this.componentRef = viewContainerRef.createComponent(componentType);\n Object.assign(this.componentRef.instance, this.dialogOptions.initialViewModel);\n\n const child = this.componentRef.instance;\n // ExtendedActionComponent\n if (child instanceof this.extendedActionComponentType && child.wrapper?.form) {\n child.isFormValid$.subscribe((res)=> {\n this.isInvalid = !res;\n })\n }\n\n if(this.dialogOptions.initFn){\n this.dialogOptions.initFn(this.componentRef.instance);\n }\n\n // hide loader\n this.isLoading = false;\n }\n\n close(result?: any) {\n this._onClose.next(result);\n this.bsModalRef.hide();\n }\n}\n","<div [class]=\"'modal-header ' + this.severityClass\">\r\n <h1 class=\"modal-title pull-left\">\r\n {{ dialogOptions?.title }}\r\n </h1>\r\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"cancel()\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n</div>\r\n\r\n<div class=\"dialog-content\">\r\n <!-- <ng-container *ngIf=\"this.isInvalid\">\r\n <div class=\"validation-message\">\r\n Veuillez remplir correctement tous les champs obligatoires avant de valider.\r\n </div>\r\n </ng-container> -->\r\n <div *ngIf=\"isLoading\" id=\"Loader\" class=\"center-block\">\r\n <i class=\"fa fa-circle-o-notch fa-5x fa-spin\"></i>\r\n </div>\r\n <ng-container *ngIf=\"!dialogOptions.childComponentType\">\r\n <div class=\"dialog-content-inner\">\r\n <div class=\"popup-left-panel\">\r\n <div [class]=\"this.severityClass\"></div>\r\n </div>\r\n <div class=\"popup-right-panel\">\r\n <ng-container #modalbody *ngIf=\"dialogOptions && dialogOptions.message\">\r\n <div class=\"text-zone\" id=\"text-zone-in-popup\">\r\n <div class=\"subtitle\" *ngIf=\"dialogOptions && dialogOptions.subtitle\">\r\n {{dialogOptions.subtitle}}\r\n </div>\r\n <p class=\"messageText\">\r\n {{dialogOptions.message}}\r\n </p>\r\n {{ text }}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"dialogOptions.childComponentType\">\r\n <div class=\"algInsertion-container\">\r\n <ng-template algInsertion>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n\r\n</div>\r\n<!-- \r\n<div class=\"warning-popup\" *ngIf=\"severity == MessageSeverity.Warn\">\r\n <div *ngIf=\"isLoading\" id=\"Loader\" class=\"center-block\">\r\n <i class=\"fa fa-circle-o-notch fa-5x fa-spin\"></i>\r\n </div>\r\n\r\n <div class=\"popup-left-panel\">\r\n <div [class]=\"this.iconClass\"></div>\r\n </div>\r\n\r\n <div class=\"popup-right-panel\">\r\n <ng-container #modalbody *ngIf=\"dialogOptions && dialogOptions.message\">\r\n <div class=\"text-zone\" id=\"text-zone-in-popup\">\r\n <p class=\"subtitle\" *ngIf=\"dialogOptions && dialogOptions.subtitle\">\r\n {{dialogOptions.subtitle}}\r\n </p>\r\n <p class=\"messageText\">\r\n {{dialogOptions.message}}\r\n </p>\r\n {{ text }}\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n</div> -->\r\n\r\n<ng-container *ngIf=\"showButtons\">\r\n <div [class]=\"'modal-footer ' + this.severityClass\">\r\n \r\n <button *ngIf=\"!! dialogOptions.cancelLabel\" type=\"button\" class=\"btn btn-secondary btn-flat\" \r\n (click)=\"cancel()\">\r\n {{ dialogOptions.cancelLabel || defaultCancelLabel }}\r\n </button>\r\n\r\n <button type=\"button\" class=\"btn btn-primary btn-flat\" (click)=\"validate()\" \r\n [disabled]=\"this.isInvalid\">\r\n {{ dialogOptions.okLabel || defaultOkLabel }}\r\n </button>\r\n </div>\r\n</ng-container>","import { BsModalRef } from 'ngx-bootstrap/modal';\r\n\r\n\r\nimport { Component } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { ConfirmOptions } from '../../model/model';\r\n\r\n@Component({\r\n selector: 'alg-confirm-modal',\r\n templateUrl: './confirm-modal.component.html',\r\n styleUrls: ['./confirm-modal.component.scss'],\r\n standalone: false\r\n})\r\nexport class ConfirmModalComponent {\r\n severityClass: string = 'warning';\r\n subject: Subject<ConfirmOptions>;\r\n text: string = \"\";\r\n callBackAction: ((value: ConfirmOptions) => void) = () => { };\r\n isCancelVisible: boolean = true;\r\n ConfirmOptions: ConfirmOptions;\r\n constructor(public bsModalRef: BsModalRef) { }\r\n\r\n action(value: ConfirmOptions) {\r\n // this.bsModalRef.hide();\r\n\r\n if(this.callBackAction && value === ConfirmOptions.SAVE_LEAVE) {\r\n this.callBackAction(value);\r\n }\r\n\r\n this.subject.next(value);\r\n this.subject.complete();\r\n\r\n this.bsModalRef.hide();\r\n }\r\n}\r\n","<div [class]=\"'modal-header ' + this.severityClass\">\r\n <h1 class=\"modal-title pull-left\">\r\n Êtes vous sûr de vouloir quitter cette page ?\r\n </h1>\r\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"action(1)\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n</div>\r\n\r\n<div class=\"dialog-content\"> \r\n <div class=\"dialog-content-inner\">\r\n <div class=\"popup-left-panel\">\r\n <div [class]=\"this.severityClass\"></div>\r\n </div>\r\n <div class=\"popup-right-panel\">\r\n <ng-container #modalbody>\r\n <div class=\"text-zone\" id=\"text-zone-in-popup\">\r\n <div class=\"subtitle\">\r\n Sauvegarder les changements ?\r\n </div>\r\n {{ text }}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n \r\n \r\n\r\n</div>\r\n\r\n<ng-container>\r\n <div [class]=\"'modal-footer ' + this.severityClass\">\r\n <ng-container *ngIf=\"isCancelVisible\">\r\n <button class=\"btn btn-success btn-flat\" (click)=\"action(1)\">Continuer</button>\r\n </ng-container>\r\n <button class=\"btn btn-primary btn-flat\" *ngIf=\"callBackAction\" (click)=\"action(2)\">Enregistrer</button>\r\n <button class=\"btn btn-danger btn-flat\" (click)=\"action(0)\">Annuler</button>\r\n </div>\r\n</ng-container>\r\n<!-- \r\n<div class=\"warning-popup\" *ngIf=\"severity == MessageSeverity.Warn\">\r\n <div *ngIf=\"isLoading\" id=\"Loader\" class=\"center-block\">\r\n <i class=\"fa fa-circle-o-notch fa-5x fa-spin\"></i>\r\n </div>\r\n\r\n <div class=\"popup-left-panel\">\r\n <div [class]=\"this.iconClass\"></div>\r\n </div>\r\n\r\n <div class=\"popup-right-panel\">\r\n <ng-container #modalbody *ngIf=\"dialogOptions && dialogOptions.message\">\r\n <div class=\"text-zone\" id=\"text-zone-in-popup\">\r\n <p class=\"subtitle\" *ngIf=\"dialogOptions && dialogOptions.subtitle\">\r\n {{dialogOptions.subtitle}}\r\n </p>\r\n <p class=\"messageText\">\r\n {{dialogOptions.message}}\r\n </p>\r\n {{ text }}\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n</div> -->\r\n\r\n<!-- \r\n\r\n\r\n<div class=\"modal-header modal-block-primary\">\r\n <h4 class=\"modal-title\">Êtes vous sûr de vouloir quitter cette page ?</h4>\r\n <button type=\"button\" class=\"close\" (click)=\"bsModalRef.hide()\">\r\n <span aria-hidden=\"true\">×</span><span class=\"sr-only\">Close</span>\r\n </button> \r\n</div>\r\n<div class=\"modal-body clearfix\">\r\n <div class=\"modal-text\">\r\n <p>\r\n {{text}}\r\n </p>\r\n </div>\r\n</div>\r\n<div class=\"modal-footer\">\r\n <ng-container *ngIf=\"isCancelVisible\">\r\n <button class=\"btn btn-danger btn-flat\" (click)=\"action(1)\">Annuler</button>\r\n </ng-container>\r\n <button class=\"btn btn-warning btn-flat right\" (click)=\"action(0)\">Annuler les modifications</button>\r\n <button class=\"btn btn-primary btn-flat right\" *ngIf=\"callBackAction\" (click)=\"action(2)\">Sauvegarder les modifications</button>\r\n</div> -->","import { BsModalRef } from 'ngx-bootstrap/modal';\r\n\r\nimport { ComponentRef, Injectable, TemplateRef, Type } from '@angular/core';\r\n\r\nimport { IModalOptions } from '../model/model';\r\n\r\n/**\r\n * An internal service allowing to access, from the confirm modal component, the options and the modal reference.\r\n * It also allows registering the TemplateRef containing the confirm modal component.\r\n *\r\n * It must be declared in the providers of the NgModule, but is not supposed to be used in application code\r\n */\r\n@Injectable()\r\nexport class ModalStateService {\r\n /**\r\n * The last options passed ConfirmService.confirm()\r\n */\r\n options: IModalOptions;\r\n\r\n /**\r\n * The last opened confirmation modal\r\n */\r\n modal: BsModalRef;;\r\n\r\n /**\r\n * The template containing the confirmation modal component\r\n */\r\n template: Type<any> | TemplateRef<any> | ComponentRef<any> | any;\r\n}\r\n","import { BsModalRef, BsModalService, ModalOptions } from 'ngx-bootstrap/modal';\nimport { merge, Observable, Subject } from 'rxjs';\n\nimport { Utilities } from '@dflat-core/web/core';\nimport { Injectable, Injector } from '@angular/core';\n\nimport { ConfirmModalComponent } from '../modals/confirm-modal/confirm-modal.component';\nimport { DialogComponent, DialogComponentParameter } from '../modals/dialog/dialog.component';\nimport { ConfirmOptions, IDialogOptions, IModalOptions } from '../model/model';\nimport { ModalStateService } from './modal-state.service';\nimport { map } from 'rxjs/operators';\n\n@Injectable()\nexport class ModalService {\n\n modalConfig =\n {\n class: 'modal-lg',\n animated: true, // some animations\n keyboard: false, // ignore esc click\n ignoreBackdropClick: true\n };\n\n constructor(\n public modalService: BsModalService,\n private state: ModalStateService,\n public injector: Injector) { }\n\n openTemplate(options: IModalOptions): Promise<any> {\n this.state.options = options;\n this.state.modal = this.modalService.show(this.state.template);\n\n return new Promise<string>((resolve) => this.modalService.onHide.subscribe(\n (reason: string) => {\n resolve(reason);\n console.log(`reason # ${reason}`);\n }\n ));\n }\n\n openComponent<TComponent>(component: any, modalConfig?: any): TComponent {\n const modal = this.modalService.show(component, modalConfig || this.modalConfig);\n const result = (<TComponent>modal.content);\n return result;\n }\n\n openComponentWithState(component: any, modalConfig?: any, initialState?: any): any {\n const modal = this.modalService.show(component, {initialState, ...modalConfig});\n return modal;\n }\n openComponentCustomModal(modalConfig?: ModalOptions<DialogComponentParameter>, dialogOptions?: IDialogOptions, \n showButtons?:boolean, canClose:boolean = true): BsModalRef {\n\n // Initialisation du paramètre du composant intégré dans la modale\n let initialState : DialogComponentParameter = new DialogComponentParameter();\n initialState.dialogOptions = dialogOptions;\n initialState.showButtons = showButtons;\n initialState.canClose = canClose;\n modalConfig.initialState = initialState;\n\n // Affichage de la modale\n const modal = this.modalService.show(DialogComponent, modalConfig);\n return modal;\n }\n\n openComponentCustom(modalConfig?: ModalOptions, dialogOptions?: IDialogOptions, \n showButtons?:boolean, canClose:boolean = true): Observable<any> {\n\n let modal = this.openComponentCustomModal(modalConfig, dialogOptions, showButtons, canClose);\n return modal.content.onClose;\n\n }\n\n // returns BsModalRef\n openComponentModal(modalConfig?: ModalOptions, dialogOptions?: IDialogOptions, \n showButtons?:boolean, canClose:boolean = true): BsModalRef {\n\n let modal = this.openComponentCustomModal(modalConfig, dialogOptions, showButtons, canClose);\n return modal;\n\n }\n\n openComponentSimple(modalConfig?: any, dialogOptions?: IDialogOptions, showButtons?:boolean): BsModalRef {\n let initialState = {dialogOptions: dialogOptions, showButtons: showButtons};\n let modalContext ={...{initialState: initialState},... modalConfig};\n const modal = this.modalService.show(DialogComponent, modalContext);\n\n return modal;\n }\n\n confirmModal(text?: string, actionCallback?: () => any, isCancelVisible?: boolean): Observable<ConfirmOptions> {\n try {\n const subject = new Subject<ConfirmOptions>();\n const modalConfig =\n {\n// class: 'modal-lg',\n animated: true // some animations\n };\n const modal = this.modalService.show(ConfirmModalComponent,modalConfig);\n modal.content.subject = subject;\n modal.content.text = text ? text : 'Modifications en cours';\n\n if (!Utilities.IsNil(isCancelVisible)) {\n modal.content.isCancelVisible = isCancelVisible;\n }\n\n if (actionCallback)\n modal.content.callBackAction = actionCallback;\n\n const onHideObservable = this.modalService.onHide.pipe(map(() => ConfirmOptions.STAY));\n return merge(\n subject.asObservable(),\n onHideObservable\n );\n } finally {\n console.log('leaving confirmation modal from modal service !');\n }\n }\n\n close(modal?: any) {\n if (modal) {\n (<BsModalRef>modal).hide();\n }\n else\n this.state.modal.hide();\n }\n\n}\n\n\n","import { Utilities } from '@dflat-core/web/core';\nimport { ApiErrorTypes, SaveResult } from '@dflat-core/web/core-model';\nimport { HttpResponseBase } from '@angular/common/http';\nimport { Injectable, Type } from '@angular/core';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { ActiveToast, IndividualConfig, ToastrService } from 'ngx-toastr';\nimport { Observable } from 'rxjs';\nimport { DialogComponent } from '../modals/dialog/dialog.component';\nimport { IIsCancel, MessageSeverity } from '../model/model';\nimport { ModalService } from './modal.service';\n\n\n\n@Injectable()\nexport class AlertService {\n private lastInserted: number[] = [];\n\n \n\n constructor(\n private modalService: ModalService,\n private toastrService: ToastrService\n ) {\n\n }\n\n success(message: string, override?: Partial<IndividualConfig>) {\n this.showMessage('Succès', message, MessageSeverity.Success, override ); \n }\n\n error(message: string, override?: Partial<IndividualConfig>) {\n this.showMessage('Erreur', message, MessageSeverity.Error, override ); \n }\n\n warn(message: string, override?: Partial<IndividualConfig>) {\n this.showMessage('Attention', message, MessageSeverity.Warn, override ); \n }\n showInformation(title: string, subtitle:string, message: string, componentType: Type<any>) {\n this.showDialog(message, DialogType.Confirm, (val)=>{}, ()=>{}, 'Ok', undefined, subtitle, title, MessageSeverity.Info, componentType);\n }\n showDialog(message: string, \n type: DialogType = DialogType.Alert, \n okCallback?: (val?: any) => any, \n cancelCallback?: () => any, \n okLabel?: string, \n cancelLabel?: string,\n subtitle:string = '',\n title?: string,\n severity?: MessageSeverity,\n componentType?: Type<any>) : Observable<any> {\n\n if ( Utilities.IsNil(type) ) \n type = DialogType.Alert;\n\n if ( Utilities.IsNil(severity) ) \n severity = MessageSeverity.Warn;\n\n if(type === DialogType.Alert){\n cancelLabel = undefined;\n okLabel=\"Ok\";\n }\n\n\n\n if ( Utilities.IsNil(title) ) {\n\n switch(severity) {\n case MessageSeverity.Info:\n title='Information';\n break;\n case MessageSeverity.Warn:\n title = 'Attention';\n break;\n case MessageSeverity.Error:\n title = 'Erreur';\n break;\n default:\n break;\n }\n }\n \n let initialState : any = {\n severity: severity\n };\n\n initialState.dialogOptions = {\n message: message, \n title: title,\n okLabel: okLabel,\n cancelLabel: cancelLabel, \n subtitle: subtitle,\n componentType : componentType\n };\n\n if(Utilities.IsNil(okCallback))\n okCallback = ()=>{};\n \n if(Utilities.IsNil(cancelCallback))\n cancelCallback = ()=>{};\n \n initialState.dialogOptions.callBackAction = (component:IIsCancel) => { \n this.modalService.close(modal);\n\n if(!component.isCancel){\n okCallback();\n }\n else{\n cancelCallback();\n }\n }; \n \n \n let options: ModalOptions = {\n animated: false,\n backdrop: false,\n ignoreBackdropClick: true\n\n }\n\n let modal = this.modalService.openComponentWithState(DialogComponent, options, initialState);\n return modal.content.onClose;\n }\n\n showMessage(summary: string, detail: string, severity: MessageSeverity, override?: Partial<IndividualConfig>)\n showMessage(data: any, separatorOrDetail?: string, severity?: MessageSeverity, override?: Partial<IndividualConfig>) {\n\n if (!severity)\n severity = MessageSeverity.Default;\n\n if (data instanceof HttpResponseBase) {\n data = Utilities.getHttpResponseMessage(data);\n separatorOrDetail = Utilities.captionAndMessageSeparator;\n }\n\n if (data instanceof Array) {\n for (let message of data) {\n let msgObject = Utilities.splitInTwo(message, separatorOrDetail);\n\n this.showMessageHelper(msgObject.firstPart, msgObject.secondPart, severity, false, override);\n }\n }\n else {\n this.showMessageHelper(data, separatorOrDetail, severity, false, override);\n }\n }\n\n private showMessageHelper(summary: string, detail: string, severity: MessageSeverity, isSticky: boolean, override: Partial<IndividualConfig>) {\n this.showToast({ severity: severity, summary: summary, detail: detail }, override);\n }\n\n showToast(message: AlertMessage, override: Partial<IndividualConfig>): ActiveToast<{}> {\n let activeToast = {} as ActiveToast<{}>;\n switch (message.severity) {\n case MessageSeverity.Default:\n case MessageSeverity.Info:\n activeToast = this.toastrService.info(message.detail, message.summary, override);\n break;\n case MessageSeverity.Success:\n activeToast = this.toastrService.success(message.detail, message.summary, override);\n break;\n case MessageSeverity.Error:\n activeToast = this.toastrService.error(message.detail, message.summary, override);\n break;\n case MessageSeverity.Warn:\n activeToast = this.toastrService.warning(message.detail, message.summary, override);\n break;\n }\n \n if (activeToast) {\n this.lastInserted.push(activeToast.toastId);\n }\n return activeToast;\n }\n\n\n //#region logging \n\n logDebug(msg) {\n console.debug(msg);\n }\n\n logError(msg) {\n console.error(msg);\n }\n\n logInfo(msg) {\n console.info(msg);\n }\n\n logMessage(msg) {\n console.log(msg);\n }\n\n logTrace(msg) {\n console.trace(msg);\n }\n\n logWarning(msg) {\n console.warn(msg);\n }\n //#endregion\n\n handleSaveError(s: SaveResult) {\n if ( ! s.Success ) {\n if (s.DisplayMessage) {\n if (! Utilities.IsNil( s.Error) ) {\n\n if ( s.Error.ApiErrorType == ApiErrorTypes.UserError) {\n this.showMessage('Erreur', s.Error.Message, MessageSeverity.Error);\n }\n else if ( s.Error.ApiErrorType == ApiErrorTypes.DatabaseError) {\n this.showMessage('Erreur', s.Error.Message, MessageSeverity.Error);\n }\n else \n {\n this.showMessage('Erreur', 'Une erreur est survenue pendant le sauvegarde', MessageSeverity.Error);\n console.log(s.Error.Message)\n }\n\n }\n else {\n this.showMessage('Erreur', s.ErrorMessage, MessageSeverity.Error);\n }\n }\n else {\n this.showMessage('Erreur', 'Une erreur est survenue pendant le sauvegarde', MessageSeverity.Error);\n console.log(s.ErrorMessage)\n }\n }\n }\n}\n\n//#region Dialogs\nexport class AlertDialog {\n constructor(public message: string, public type: DialogType, public okCallback: (val?: any) => any, public cancelCallback: () => any,\n public defaultValue: string, public okLabel: string, public cancelLabel: string) {\n\n }\n}\n\nexport enum DialogType {\n Alert,\n Confirm,\n Prompt\n}\n//#endregion Dialogs\n\n//#region Growls\nexport class AlertMessage {\n constructor(public severity: MessageSeverity, public summary: string, public detail: string) { }\n}\n\n//#endregion Growls\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'alg-export-data-modal',\r\n templateUrl: './export-data-modal.component.html',\r\n styleUrls: ['./export-data-modal.component.scss'],\r\n standalone: false\r\n})\r\nexport class ExportDataModalComponent {\r\n model = {\r\n options: null as number | null\r\n };\r\n\r\n callBackAction: ((options: any) => void) = () => { };\r\n constructor() {}\r\n getImageUrl(extension: string) {\r\n let icon: string = 'file-solid';\r\n switch (extension.toLowerCase()) {\r\n case 'txt':\r\n icon = 'file-lines-solid';\r\n break;\r\n case 'csv':\r\n icon = 'file-csv-solid';\r\n break;\r\n case 'xls':\r\n case 'xlsx':\r\n icon = 'file-excel-solid';\r\n break;\r\n case 'doc':\r\n case 'docx':\r\n icon = 'file-word-solid';\r\n break;\r\n case 'pdf':\r\n icon = 'file-pdf-solid';\r\n break;\r\n case 'svg':\r\n case 'jpg':\r\n case 'gif':\r\n case 'png':\r\n case 'bmp':\r\n icon = 'file-image-solid';\r\n break;\r\n case 'log':\r\n icon = 'file-invoice-solid';\r\n break;\r\n case 'zip':\r\n icon = 'file-zipper-solid';\r\n break;\r\n default:\r\n break;\r\n }\r\n return `/assets/images/${icon}.svg`;\r\n }\r\n}\r\n","<div class=\"modal-header\">\r\n <!-- <h4 class=\"modal-title\">\r\n Export des données\r\n </h4> -->\r\n <button type=\"button\" class=\"close close-small pull-right\" aria-label=\"Close\" (click)=\"this.callBackAction(null)\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n</div>\r\n\r\n<div class=\"modal-body row\">\r\n \r\n <div class=\"main-container-modal\">\r\n <div class=\"petit-titre\">Export des données</div>\r\n <div class=\"paragraph\">\r\n Veuillez sélectionner le format du fichier d'export :\r\n </div>\r\n </div>\r\n <div class=\"export-data-container\">\r\n \r\n <div\r\n class=\"export-option\"\r\n [class.selected]=\"model.options === 0\"\r\n (click)=\"model.options = 0\"\r\n >\r\n <img class=\"export-img\" [src]=\"getImageUrl('xlsx')\" />\r\n <span class=\"export-label\">Format Excel (*.xlsx)</span>\r\n </div>\r\n\r\n <div\r\n class=\"export-option\"\r\n [class.selected]=\"model.options === 1\"\r\n (click)=\"model.options = 1\"\r\n >\r\n <img class=\"export-img\" [src]=\"getImageUrl('csv')\" />\r\n <span class=\"export-label\">Format CSV (*.csv)</span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal-footer\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-secondary btn-flat\"\r\n (click)=\"callBackAction(null)\"\r\n >\r\n Annuler\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-primary btn-flat\"\r\n [disabled]=\"model.options === null || model.options === undefined\"\r\n (click)=\"callBackAction(model.options)\"\r\n >\r\n Exporter\r\n </button>\r\n</div>\r\n","import { Utilities } from \"@dflat-core/web/core\";\nimport { EntityViewModel, SaveResults } from \"@dflat-core/web/core-model\";\nimport { ActionResult } from \"./action-context\";\nimport { ChangeDetectionContext } from \"./change-detection-context\";\nimport { DialogType } from \"../../../services/alert.service\";\nimport { downloadFile, IDialogOptions } from \"../../../model/model\";\nimport { EditorContext } from \"./editor-context\";\nimport { ExportDataModalComponent } from \"../../../modals/export-data-modal/export-data-modal.component\";\nimport { FacadeDeps } from \"../../services/entity-facade-registry.service\";\nimport { FilterContext } from \"./filter-context\";\nimport { SectionContext } from \"./section-context\";\nimport { SelectionContext } from \"./selection-context\";\nimport type { TrackRecordModalComponent } from \"../../../modals/track-record-modal/track-record-modal.component\";\nimport { TRACK_RECORD_MODAL_COMPONENT } from \"../../../modals/dialog-component.tokens\";\nimport { catchError, combineLatest, map, Observable, of, Subject, tap } from \"rxjs\";\n\nexport class ActionHandlerContext<TData extends EntityViewModel> {\n \n private destroy$ = new Subject<void>();\n readonly state$: Observable<{ sel: TData[]; dirty: boolean;valid : boolean }>;\n \n constructor(\n public deps: FacadeDeps,\n public entityKey: string,\n public permissionKey : string,\n public selection: SelectionContext<TData>,\n public change: ChangeDetectionContext<TData>,\n public filter: FilterContext<TData, any>,\n public section: SectionContext<TData>,\n public editor: EditorContext\n ) {\n this.state$ = combineLatest([\n this.selection.selected$,\n this.editor.isDirty$,\n this.editor.isValid$\n ]).pipe(\n map(([sel, dirty,valid]) => ({ sel, dirty,valid })),\n // shareReplay(1)\n );\n }\n\n path: string = '';\n\n oldAdd() {\n\n // let newVM : TData;\n // this.selection.select([newVM]);\n\n // if(this.path === '') {\n // console.log('current URL:', this.path);\n // }\n // this.path = this.deps.router.url;\n this.editor.setStandaloneMode(true);\n this.deps.router.navigate([this.path, 0]);\n }\n\n add(initValue: Partial<TData>) {\n this.selection.createNewEntity(initValue);\n }\n\n canShowHistory() {\n return true;\n }\n\n public showHistory() {\n const selected = this.selection.Selected[0];\n if(Utilities.IsNil(selected) || Utilities.IsNil(selected.Id))\n return;\n let options: IDialogOptions = {\n childComponentType: this.deps.modal.injector.get(TRACK_RECORD_MODAL_COMPONENT),\n initialViewModel: {\n entityKey: this.entityKey,\n entityId: selected.Id,\n },\n title: 'Historique',\n loadFunction: undefined,\n callBackAction: (component: TrackRecordModalComponent) => {},\n };\n let modal = this.deps.modal.openComponentCustom({}, options, false);\n return modal;\n }\n\n // 2. update in a single point\n // 3. consume clearly\n canSave() : boolean{\n let _canSave = this.change.isDirty && this.change.valid \n // && (!this.change.isInvalid);\n return _canSave \n }\n\n canAdd() {\n return true;\n }\n\n canDelete() {\n return this.selection.hasSelection();\n }\n\n getActionPermissionKey(action: string) {\n return `${this.permissionKey}_${action.toUpperCase()}`;\n }\n\n export() {\n const initialState = {\n EntityKey: this.entityKey,\n isModal: true,\n callBackAction: (options: any) => {\n if (!Utilities.IsNil(options)) {\n if (options == 0) this.exportXLSX();\n else this.exportCSV();\n }\n this.deps.modal.close(modal);\n },\n };\n\n let modal = this.deps.modal.openComponentWithState(\n ExportDataModalComponent,\n {},\n initialState\n );\n\n // this.initExportModal.bind(this);\n }\n\n exportXLSX() {\n console.log('export xlsx action ');\n const Filter = this.filter.filter$.value;\n Filter.IsCsvExport = false;\n this.deps.data\n .exportAll<TData>(this.entityKey, Filter)\n .subscribe(downloadFile);\n }\n\n exportCSV() {\n console.log('export csv action ');\n const Filter = this.filter.filter$.value;\n Filter.IsCsvExport = true;\n this.deps.data\n .exportAll<TData>(this.entityKey, Filter)\n .subscribe(downloadFile);\n }\n\n onSaveCompleted() {\n }\n\n edit() {\n \n const id = this.selection.getSelected()[0].Id;\n this.deps.router.navigate([this.path, id]);\n }\n\n delete(deleteMessage: string = 'Souhaitez-vous confirmer la suppression ?') {\n return new Observable<ActionResult<TData>>((subscriber) => {\n this.deps.alert.showDialog(\n deleteMessage,\n DialogType.Confirm,\n () => {\n this.innerDelete().subscribe({\n next: (val) => subscriber.next(val),\n error: (err) => subscriber.error(err),\n complete: () => subscriber.complete()\n });\n },\n () => {\n subscriber.next({ success: false });\n subscriber.complete();\n },\n 'Oui',\n 'Non'\n );\n })\n // .pipe(\n // switchMap(confirmed => confirmed ? this.innerDelete() : of({ success: false }))\n // );\n }\n\n\n removeFromResults<TData extends EntityViewModel>(d: TData) {\n //need to patch data-context directly\n // let i: number = this.Results.Values.lastIndexOf(d);\n // this.Results.Values.splice(i, 1);\n // this.Results.TotalRowCount--;\n }\n\n performLoadData() {\n //here goes the call to data to reload \n this.section.setSectionDirty(); \n this.filter.triggerSearch();\n }\n\n handleDeleteFail(res: SaveResults<TData>) {\n this.deps.alert.error(res.ErrorMessage);\n }\n\n save(): Observable<ActionResult<TData>> {\n \n if (!this.change.isDirty) {\n return of({success: true });\n }\n\n let modified = this.change.Modified;\n if(!modified)\n return;\n let call = this.deps.data.saveEntities(this.entityKey, modified);\n // if(modified.length == 1)\n // call = this.deps.data.saveEntity(this.entityKey,modified)\n return call.pipe(map(result => {\n if (result.Success) {\n // limit on data mutation\n // specify in context if it need to reload\n this.change.reset();\n this.performLoadData();\n this.onSaveCompleted();\n this.editor.setIsDirty(false);\n this.deps.alert.success('Les modifications ont été enregistrées avec succès');\n } \n \n else \n this.deps.alert.handleSaveError(result);\n\n return {\n success: result.Success,\n affectedEntities: modified\n };\n }),\n catchError(err => {\n this.deps.alert.handleSaveError(err);\n return of({success: false });\n }));\n }\n\n\n afterDelete() {\n this.deps.alert.success('La suppression est effectuée avec succès');\n }\n\n refresh() {\n this.section.setSectionDirty();\n this.filter.triggerSearch();\n }\n\n // public afterLoadData() {\n // this.isLoading = false;\n\n // this.raiseFilterPropertyChanged = true;\n\n // // Mise à jour des actions dans le menu\n // this.refreshActions();\n\n // // A surcharger\n // this.onSearch.emit(this);\n\n // // Redimensionnement automatique des colonnes\n // this.updateLayout();\n\n // // Sélection de la dernière ligne sélectionnée.\n // // this.selectLastRow();\n // }\n\n // innerDelete() {\n // const selected = this.selection.getSelected();\n // let notInBase: TData[] = selected.filter((s) => s.Id <= 0);\n // if (notInBase.length > 0) {\n // notInBase.forEach((d) => {\n // this.removeFromResults(d);\n // });\n // }\n\n // let inBase: TData[] = selected.filter((s) => s.Id > 0);\n // if (inBase.length > 0) {\n // this.deps.data\n // .deleteEntities<TData>(this.entityKey, inBase)\n // .subscribe(\n // (deleteResult) => {\n // if (deleteResult.Success) {\n // this.change.reset();\n // this.selection.clear();\n // this.performLoadData();\n // this.afterDelete();\n // } else {\n // this.handleDeleteFail(deleteResult);\n // }\n // },\n // (err) => {\n // if (!Utilities.IsNil(err.error))\n // console.log(err.error);\n\n // this.deps.alert.error(\n // 'Une erreur est survenue pendant la suppression.'\n // );\n // }\n // );\n // } else {\n // // this.resetModified();\n // // this.unselectAll();\n // this.change.reset();\n // this.selection.clear();\n // }\n // }\n\n innerDelete(): Observable<ActionResult<TData>> {\n\n const selected = this.selection.getSelected();\n const notInBase = selected.filter(s => s.Id <= 0);\n const inBase = selected.filter(s => s.Id > 0);\n notInBase.forEach(d => this.removeFromResults(d));\n\n if (inBase.length === 0) {\n this.change.reset();\n this.selection.clear();\n return of({success: true,affectedEntities: notInBase});\n }\n\n return this.deps.data.deleteEntities<TData>(this.entityKey, inBase).pipe(\n tap(result => {\n if (result.Success) {\n this.change.reset();\n this.selection.clear();\n this.performLoadData();\n this.afterDelete();\n }\n else {\n this.handleDeleteFail(result);\n }\n }),\n map(result => ({\n success: result.Success,\n affectedEntities: inBase\n })),\n catchError(err => {\n console.log(err);\n this.deps.alert.error('Une erreur est survenue pendant la suppression.');\n return of({success: false });\n }));\n }\n\n reset() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n // actionsCard: Array<Action> = [\n // new Action(\n // 'showCard',\n // '',\n // false,\n // false,\n // false,\n // 'address-card',\n // 'bg-yellow',\n // this.showPanelDataGrid.bind(this),\n // this.getActionPermissionKey('export')\n // ),\n // new Action(\n // 'showDataGrid',\n // '',\n // false,\n // false,\n // false,\n // 'list',\n // 'bg-yellow',\n // this.showPanelCard.bind(this),\n // this.getActionPermissionKey('export')\n // ),\n // ];\n\n // public showPanelCard() {\n // this.IsCardVisible = false;\n // }\n\n // public showPanelDataGrid() {\n // this.IsCardVisible = true;\n // }\n}\n","import { Utilities } from '@dflat-core/web/core';\nimport { EntityViewModel } from '@dflat-core/web/core-model';\nimport { Action, ExtendedAction } from '../../../model/model';\nimport { ActionDefinition } from '../utilities/action-definition';\nimport { ActionHandlerContext } from './action-handler-context';\nimport { ChangeDetectionContext } from './change-detection-context';\nimport { EditorContext } from './editor-context';\nimport { EntityConfigContext } from './entity-config-context';\nimport { FacadeDeps } from '../../services/entity-facade-registry.service';\nimport { FilterContext } from './filter-context';\nimport { SectionContext } from './section-context';\nimport { SelectionContext } from './selection-context';\nimport { BehaviorSubject, catchError, EMPTY, map, Observable, share, Subject, tap, throwError } from 'rxjs';\n// import { FacadeDeps } from '../../services/entity-facade-registry.service';\n// import { ActionDefinition } from '../utilities/action-definition';\n// import { ActionHandlerContext } from './action-handler-context';\n// import { ChangeDetectionContext } from './change-detection-context';\n// import { EditorContext } from './editor-context';\n// import { EntityConfigContext } from './entity-config-context';\n// import { FilterContext } from './filter-context';\n// import { SectionContext } from './section-context';\n// import { SelectionContext } from './selection-context';\n\nexport interface ActionResult<TData> {\n actionName?: string;\n success: boolean;\n affectedEntities?: TData[];\n sectionName?: string;\n}\n\nexport interface ActionExecutionContext {\n sectionName?: string;\n entityKey?: string;\n source?: 'parent' | 'child';\n isDefault?: boolean;\n getParam?: () => any;\n}\n\nexport class ActionContext<TData extends EntityViewModel> {\n private readonly actionsMap = new Map<string, Action>();\n private readonly actionsSubject = new BehaviorSubject<Action[]>([]);\n readonly actions$ = this.actionsSubject.asObservable();\n readonly handler: ActionHandlerContext<TData>;\n\n constructor(\n public deps: FacadeDeps,\n public entityKey: string,\n public selection: SelectionContext<TData>,\n public change: ChangeDetectionContext<TData>,\n public filter: FilterContext<TData, any>,\n public section: SectionContext<TData>,\n public editor: EditorContext,\n public config : EntityConfigContext<TData,any>\n ) {\n this.handler = new ActionHandlerContext<TData>(deps, entityKey, \n this.permissionKey ?? entityKey, selection, change, filter, section, editor);\n \n this.registerActions();\n \n this.config.actions$.subscribe((res) => { \n if(!Utilities.IsNil(res) && res.length > 0){\n this.addActions(res.map(x=> new ExtendedAction(this.entityKey, x) as Action));\n }\n });\n\n this.setExecutionContext({\n source: 'parent',\n });\n }\n\n private registerActions() {\n\n const f = this.handler;\n\n const defs: ActionDefinition[] =\n [\n new ActionDefinition({\n name: 'refresh',\n title: \"Actualiser les données\",\n showTitle: false,\n selectionNeeded: false,\n multiSelection: false,\n icon: 'refresh',\n cssClass: 'bg-blue',\n action: (p: any) => f.refresh(),\n permission: f.getActionPermissionKey('export'),\n isActive: () => true,\n isVisible: true,\n getParameter: () => null\n }),\n \n new ActionDefinition({\n name: 'showHistory',\n title: \"Afficher l'historique\",\n showTitle: false,\n selectionNeeded: false,\n multiSelection: false,\n icon: 'history',\n cssClass: 'bg-blue',\n action: (p: any) => f.showHistory(),\n permission: f.getActionPermissionKey('edit'),\n isActive: () => f.canShowHistory(),\n isVisible: true,\n getParameter: () => null\n }),\n new ActionDefinition({\n name: 'save',\n title: 'Enregistrer',\n showTitle: false,\n selectionNeeded: false,\n multiSelection: false,\n icon: 'save',\n cssClass: 'bg-blue',\n action: () => f.save(),\n permission: f.getActionPermissionKey('edit'),\n isActive: () => f.canSave(),\n isVisible: true,\n getParameter: () => null\n }),\n new ActionDefinition({\n name: 'add',\n title: 'Ajouter',\n showTitle: false,\n selectionNeeded: false,\n multiSelection: false,\n icon: 'plus-square',\n cssClass: 'bg-blue',\n action: (initValue: Partial<TData>) => f.add(initValue),\n permission: f.getActionPermissionKey('add'),\n isActive: () => f.canAdd(),\n isVisible: true,\n getParameter: () => null\n }),\n new ActionDefinition({\n name: 'edit',\n title: 'Editer',\n showTitle: false,\n selectionNeeded: false,\n multiSelection: true,\n icon: 'pencil',\n cssClass: 'bg-olive',\n action: () => f.edit(),\n permission: f.getActionPermissionKey('edit'),\n isActive: () => true,\n isVisible: false,\n getParameter: () => null\n }),\n new ActionDefinition({\n name: 'delete',\n title: 'Supprimer',\n showTitle: false,\n selectionNeeded: false,\n multiSelection: true,\n icon: 'trash-o',\n cssClass: 'bg-red',\n action: () => f.delete(),\n permission: f.getActionPermissionKey('delete'),\n isActive: () => f.canDelete(),\n isVisible: true,\n getParameter: () => null\n }),\n new ActionDefinition({\n name: 'export',\n title: 'Exporter',\n showTitle: false,\n selectionNeeded: false,\n multiSelection: false,\n icon: 'file-arrow-down-solid',\n cssClass: 'bg-yellow',\n action: () => f.export(),\n permission: f.getActionPermissionKey('export'),\n isActive: () => true,\n isVisible: true,\n getParameter: () => null\n })\n ];\n\n defs.forEach((d) => { this.actionsMap.set(d.name, this.createAction(d as ActionDefinition)) });\n\n this.bindActions();\n\n this.emit();\n }\n\n private bindActions() {\n this.handler.state$.subscribe(({ sel, dirty,valid }) => {\n for (const action of this.actionsMap.values()) {\n const selectionOk = !action.selectionNeeded ||\n (action.multiSelection ? sel.length >= 1 : sel.length === 1);\n\n const active = action.isActive ? action.isActive() : false;\n\n action.updateDisabled(!(active && selectionOk));\n }\n });\n }\n\n private createAction(def: ActionDefinition): Action {\n return new Action(\n def.name,\n def.title,\n def.showTitle ?? false,\n def.selectionNeeded ?? false,\n def.multiSelection ?? false,\n def.icon ?? '',\n def.cssClass ?? '',\n def.action ?? (() => { }),\n def.permission,\n def.isActive ?? (() => true),\n def.isVisible,\n def.getParameter ?? (() => null),\n );\n }\n\n public emit() {\n this.actionsSubject.next(Array.from(this.actionsMap.values()));\n }\n\n getAction(key: string) {\n return this.actionsMap.get(key);\n }\n\n addAction(def: Action) {\n if (!def)\n throw new Error('addAction: le paramètre ne doit pas être vide !')\n\n this.actionsMap.set(def.name, def);\n this.emit()\n }\n\n addActions(actionsToAdd: Action[]) {\n\n if (!actionsToAdd)\n throw new Error('addActions: le paramètre ne doit pas être vide !')\n\n actionsToAdd.forEach(a => { this.actionsMap.set(a.name, a) });\n this.emit()\n }\n\n patch(name: string, patch: Partial<ActionDefinition>) {\n const act = this.actionsMap.get(name);\n if (!act) return;\n\n Object.assign(act, patch);\n }\n\n setHandlerPath(path: string) {\n this.handler.path = path;\n }\n\n hideAction(actionName: string) {\n const action = this.actionsMap.get(actionName);\n if (action)\n action.isVisible = false;\n this.emit();\n }\n\n hideActions(actionsName: string[] = []) {\n \n const targets = actionsName.length === 0 \n ? ['save', 'delete', 'add'] \n : actionsName;\n\n targets.forEach(a => {\n const action = this.actionsMap.get(a);\n if (action) {\n action.isVisible = false;\n }\n });\n\n this.emit();\n }\n\n clearActions() {\n for (const action of this.actionsMap.values()) {\n action.hide();\n }\n this.emit();\n }\n\n private static readonly READ_ONLY_HIDDEN_ACTIONS = ['save', 'add', 'delete', 'edit'];\n private readOnlyHiddenState: Map<string, boolean> = null;\n setReadOnlyMode(v: boolean) {\n if (v) {\n if (this.readOnlyHiddenState) return;\n this.readOnlyHiddenState = new Map();\n for (const name of ActionContext.READ_ONLY_HIDDEN_ACTIONS) {\n const action = this.actionsMap.get(name);\n if (!action) continue;\n this.readOnlyHiddenState.set(name, action.isVisible);\n action.isVisible = false;\n }\n } else {\n if (!this.readOnlyHiddenState) return;\n this.readOnlyHiddenState.forEach((visible, name) => {\n const action = this.actionsMap.get(name);\n if (action) action.isVisible = visible;\n });\n this.readOnlyHiddenState = null;\n }\n this.emit();\n }\n\n hasAction(key : string) : boolean{\n return this.actionsMap.has(key);\n }\n\n hasActions() : boolean{\n return this.actionsMap.values.length > 0;\n }\n\n executeAction(actionName: string, executeDefaultAction: boolean = false, param: any = null)\n : Observable<ActionResult<TData>> {\n const action = this.actionsMap.get(actionName);\n if (!action) return EMPTY;\n\n if (action.isActive && !action.isActive())\n return EMPTY;\n\n let executionParam = { \n ...this.executionContext, \n getParam: () => param ?? action.getParameter(), \n isDefault: executeDefaultAction \n };\n\n const result = action.execute(executionParam);\n\n if (result && typeof (result as any).subscribe === 'function') {\n const actionObservable = (result as Observable<ActionResult<TData>>).pipe(\n map(res => ({\n ...res,\n actionName,\n sectionName: executionParam.sectionName\n })),\n tap(enriched => this.actionResultSubject.next(enriched)),\n catchError(err => {\n const errorRes = { success: false, actionName, error: err } as ActionResult<TData>;\n this.actionResultSubject.next(errorRes);\n return throwError(() => err);\n }),\n share() // Important : avoid multiple executions if multiple subscriptions\n );\n actionObservable.subscribe();\n\n return actionObservable;\n }\n \n this.actionResultSubject.next({ success: true, actionName } as ActionResult<TData>);\n }\n\n\n\n showAction(actionName: string) {\n const action = this.actionsMap.get(actionName);\n action.isVisible = true;\n }\n\n emitActionResult(result : ActionResult<TData>){\n this.actionResultSubject.next(result);\n }\n\n private readonly actionResultSubject = new Subject<ActionResult<TData>>();\n readonly actionResult$ = this.actionResultSubject.asObservable();\n\n private executionContext?: ActionExecutionContext;\n setExecutionContext(ctx: ActionExecutionContext) {\n this.executionContext = ctx;\n }\n\n private permissionKey?: string;\n setPermissionKey(key: string) {\n this.permissionKey = key;\n }\n\n\n}\n","import { Utilities } from \"@dflat-core/web/core\";\nimport moment from \"moment\";\n\nexport class ChangeUtilities {\n private static excludedKeys = new Set([\n 'isValid',\n 'IsSelected',\n 'IsEditable',\n 'isTheSame',\n 'hasWarning',\n 'hasError',\n ]);\n\n static isComparableProperty(\n key: string,\n additionalExcludedKeys: string[] = []\n ): boolean {\n if (additionalExcludedKeys.length === 0) {\n return !this.excludedKeys.has(key);\n }\n const combinedExcludedKeys = new Set([\n ...this.excludedKeys,\n ...additionalExcludedKeys,\n ]);\n return !combinedExcludedKeys.has(key);\n }\n\n static deepComparer(\n current: any,\n original: any,\n depth: number = 0,\n maxDepth: number = 10\n ): boolean {\n if (depth > maxDepth) {\n return false;\n }\n\n if (!current || !original) return current === original;\n\n for (const key of Object.keys(current)) {\n if (!this.isComparableProperty(key)) {\n continue;\n }\n\n const currentValue = current[key];\n const originalValue = original[key];\n\n if (Array.isArray(currentValue)) {\n if (!this.compareArrays(currentValue, originalValue)) {\n return false;\n }\n } \n \n else if ( this.isDate(currentValue) || this.isDate(originalValue)) \n {\n if (!this.compareDates(currentValue, originalValue)) {\n return false;\n }\n } \n \n else if (\n this.isObject(currentValue) &&\n this.isObject(originalValue)\n ) {\n if (!this.deepComparer(currentValue,originalValue,depth + 1,maxDepth) ) {\n return false;\n }\n } \n \n else if (this.isBoolean(currentValue) || this.isBoolean(originalValue)) {\n let boolCurrent : Boolean = currentValue == null ? false : currentValue;\n let boolOriginal : Boolean = originalValue == null ? false : originalValue;\n if (boolCurrent !== boolOriginal) {\n return false;\n }\n continue;\n }\n\n else if (currentValue !== originalValue) {\n if (Utilities.IsNil(originalValue) && (Utilities.IsNil(currentValue) || currentValue === ''))\n continue;\n return false;\n }\n }\n\n return true;\n }\n\n private static compareArrays(array1: any[], array2: any[]): boolean {\n if (!Array.isArray(array2) || array1.length !== array2.length) {\n return false;\n }\n // Using JSON.stringify\n return JSON.stringify(array1) === JSON.stringify(array2);\n }\n\n private static compareDates(date1: any, date2: any): boolean {\n if (!date1 && !date2) return true;\n if (!date1 || !date2) return false;\n\n const d1 = moment(date1).format('YYYY-MM-DD');\n const d2 = moment(date2).format('YYYY-MM-DD');\n\n return d1 === d2;\n }\n\n private static toMomentDate(value: any): moment.Moment {\n if (value instanceof Date) {\n if (\n typeof value === 'string' &&\n moment.parseZone(value).isValid()\n ) {\n return moment.parseZone(value);\n }\n return moment.utc(value);\n }\n return moment.invalid();\n }\n\n private static isObject(value: any): boolean {\n return (\n value !== null && typeof value === 'object' && !Array.isArray(value)\n );\n }\n\n private static isDate(value: any): boolean {\n const dateFormat = 'YYYY-MM-DD';\n return (\n value instanceof Date ||\n (typeof value === 'string' &&\n moment(value, dateFormat, true).isValid())\n );\n }\n\n private static isBoolean(value: any): boolean {\n return typeof value === 'boolean';\n }\n}\n","import { Utilities } from '@dflat-core/web/core';\nimport { EntityViewModel, ExtendedProperty, FilterType, PropertyEditorEvent } from '@dflat-core/web/core-model';\nimport { FormGroup } from '@angular/forms';\nimport moment from 'moment';\nimport { BehaviorSubject, filter, Observable, skip, Subject } from 'rxjs';\nimport { SelectionContext } from './selection-context';\nimport { ChangeUtilities } from '../utilities/change-utilities';\n\nexport interface PropertyChangeInterceptor<TData extends EntityViewModel> {\n beforeApply?(entity: TData, event: PropertyEditorEvent): TData;\n afterApply?(entity: TData, event: PropertyEditorEvent): TData;\n}\n\n\nexport class ChangeDetectionContext<TData extends EntityViewModel> {\n\n private modifiedEntities: TData[] = [];\n private propertyChangedSubject = new BehaviorSubject<PropertyEditorEvent>(null);\n private buttonClickedSubject = new Subject<PropertyEditorEvent>();\n\n private styleUpdateSubject = new BehaviorSubject<TData[]>(null);\n private pendingChange$ = new Subject<PropertyEditorEvent>();\n readonly buttonClicked$ = this.buttonClickedSubject.asObservable();\n\n private interceptor : PropertyChangeInterceptor<TData>;\n\n constructor(\n private selection: SelectionContext<TData>,\n ) {\n }\n\n setInterceptor(_interceptor : PropertyChangeInterceptor<TData>){\n this.interceptor = _interceptor;\n }\n\n getPropertyChanged$(): Observable<PropertyEditorEvent> {\n return this.propertyChangedSubject.asObservable().pipe(filter(x => !Utilities.IsNil(x)));\n }\n\n getStyleUpdated$(): Observable<TData[]> {\n return this.styleUpdateSubject.asObservable();\n }\n\n private compareToOriginal(updatedEntities: TData[]): TData[] {\n return updatedEntities.map((updated) => {\n const original = this.selection.getOriginal(updated.Id);\n updated['isTheSame'] = ChangeUtilities.deepComparer(updated, original);\n return updated;\n });\n }\n\n updateSelected(event: PropertyEditorEvent) {\n const field = event.field;\n const selected = this.selection.getSelected();\n const isMultiSelect: boolean = this.selection.isMultiSelect();\n\n if (!field || !selected) return;\n\n this.propertyChangedSubject.next(event);\n\n const updatedEntities = selected.map((item) => {\n \n let updated = { ...item };\n \n updated = this.interceptor?.beforeApply?.(updated, event) ?? updated;\n\n this.applyChangedValue(updated, event);\n\n updated = this.interceptor?.afterApply?.(updated, event) ?? updated;\n\n\n if (!isMultiSelect)\n updated['isValid'] = field['isValid'];\n return updated as TData;\n });\n this.emitUpdated(updatedEntities);\n }\n\n updateEntity(entity: TData, evt: PropertyEditorEvent): void {\n\n if (!entity || !evt?.field)\n return;\n\n this.propertyChangedSubject.next(evt);\n\n const base = this.getModified(entity.Id) ?? entity;\n const updated = { ...base };\n this.applyChangedValue(updated, evt);\n this.compareToOriginal([updated]);\n\n this.updateDataset([updated]);\n this.updateModified([updated]);\n\n this.emitUpdated([updated]);\n }\n\n emitUpdated(entities: TData[]) {\n this.compareToOriginal(entities);\n this.updateDataset(entities);\n this.updateModified(entities);\n this.styleUpdateSubject.next(entities);\n }\n\n\n // change applied to selected to prevent extended property changes\n private updateDataset(updated: TData[]) {\n \n let dataset = this.selection.getCurrentData();\n\n updated.forEach(update => {\n const d = dataset.find(x => x.Id === update.Id);\n if (d) Object.assign(d, update);\n });\n }\n\n private updateModified(entities: TData[]) {\n\n for (const updated of entities) {\n const index = this.modifiedEntities.findIndex(e => e.Id === updated.Id);\n if (index >= 0)\n this.modifiedEntities[index] = updated;\n else\n this.modifiedEntities.push(updated);\n }\n }\n\n applyChangedValue(item: TData, evt: PropertyEditorEvent) {\n const field = evt.field;\n const value = evt.value;\n\n if (!field) return;\n\n if (field.IsExtendedProperty) {\n delete item[field.PropertyName];\n // deep copy extended otherwise inside object's reference will still be used\n item.ExtendedProperties = item.ExtendedProperties\n ? item.ExtendedProperties.map(ep => ({ ...ep }))\n : [];\n const serialized = this.serializeExtendedValue(value);\n const ext = item.ExtendedProperties.find(\n (p) => p.PropertyName === field.PropertyName);\n if (ext) {\n ext.Value = serialized;\n } else if (serialized !== null) {\n item.ExtendedProperties.push({\n PropertyName: field.PropertyName,\n Value: serialized,\n } as ExtendedProperty);\n }\n }\n\n else if (field.FilterType === FilterType.Custom) {\n \n if (Utilities.IsNil(evt.value)) {\n item[field.PropertyName] = null;\n item[field.ModalTriggerIdProperty] = null;\n }\n else if (!Utilities.IsNil(field.ModalTriggerIdProperty)) {\n\n if (!Utilities.IsNil(field.ModalTriggerIdPropertyValue))\n item[field.ModalTriggerIdProperty] = evt.value[field.ModalTriggerIdPropertyValue];\n \n else\n item[field.ModalTriggerIdProperty] = evt.value['Id'];\n \n if (!Utilities.IsNil(evt.field.ModalPropertyValue)) \n item[field.PropertyName] = value?.[evt.field.ModalPropertyValue];;\n }\n\n return;\n }\n\n else if (field.FilterType === FilterType.ComboBox) {\n const selectedItem = field.Data.find((i) => i[field.ValueMember] === value || i.Value === value);\n const triggeredProperty = field.ExportPropertyName ?? field.DisplayMember;\n if (selectedItem) {\n item[field.PropertyName] = selectedItem[field.ValueMember];\n item[triggeredProperty] = selectedItem[field.DisplayMember];\n }\n else {\n item[field.PropertyName] = null; \n item[triggeredProperty] = null;\n }\n\n return;\n }\n\n else if (field.FilterType === FilterType.Date) {\n if (Utilities.IsNil(value)) {\n item[field.PropertyName] = null;\n return;\n }\n const d = value instanceof Date ? value : new Date(value as string);\n if (isNaN(d.getTime())) {\n item[field.PropertyName] = null;\n return;\n }\n const formatted = moment(d).format('YYYY-MM-DD');\n // Normalize the stored value for comparison to avoid marking dirty\n // when only the format differs (e.g. \"2024-01-15T00:00:00\" vs \"2024-01-15\").\n const existing = item[field.PropertyName];\n if (existing) {\n const existingD = new Date(existing);\n if (!isNaN(existingD.getTime()) && moment(existingD).format('YYYY-MM-DD') === formatted) {\n return; // Same date — keep original value, no format churn\n }\n }\n item[field.PropertyName] = formatted;\n return;\n }\n\n else if (field.FilterType === FilterType.DateTime) {\n if (Utilities.IsNil(value)) {\n item[field.PropertyName] = null;\n return;\n }\n const d = value instanceof Date ? value : new Date(value as string);\n if (isNaN(d.getTime())) {\n item[field.PropertyName] = null;\n return;\n }\n const formatted = d.toISOString();\n const existing = item[field.PropertyName];\n if (existing) {\n const existingD = new Date(existing);\n if (!isNaN(existingD.getTime()) && Math.abs(existingD.getTime() - d.getTime()) < 60000) {\n return; // Same minute — keep original value\n }\n }\n item[field.PropertyName] = formatted;\n return;\n }\n\n else \n item[evt.field.PropertyName] = evt.value;\n }\n\n private serializeExtendedValue(value: any): string | null {\n if (Utilities.IsNil(value) || value === '') return null;\n if (typeof value === 'boolean') return value ? 'true' : 'false';\n if (value instanceof Date) return moment(value).format('YYYY-MM-DD');\n return String(value);\n }\n\n markPendingChange(evt: PropertyEditorEvent) {\n this.pendingChange$.next(evt);\n }\n\n\n emitButtonClicked(evt: PropertyEditorEvent) {\n this.buttonClickedSubject.next(evt);\n }\n\n private correspondingForm: FormGroup;\n setForm(form: FormGroup) {\n this.correspondingForm = form;\n }\n\n get isDirty(): boolean {\n return this.modifiedEntities.some(x => x['isTheSame'] === false);\n // return this.correspondingForm.dirty;\n }\n\n get isInvalid(): boolean {\n return this.modifiedEntities.some((x) => x['isValid'] === false);\n // return this.correspondingForm?.invalid ?? false;\n }\n\n get valid(): boolean {\n return !this.modifiedEntities.some((x) => x['isValid'] === false);\n // return this.correspondingForm?.valid ?? true;\n }\n\n reset() {\n this.modifiedEntities = [];\n }\n\n get Modified(): TData[] {\n return this.modifiedEntities;\n }\n\n getModified(id: number): TData {\n return this.modifiedEntities.find(m => m.Id === id);\n }\n\n hasPendingChanges(): boolean {\n return (this.modifiedEntities.length > 0);\n }\n}\n","import { EntityViewModel, FilterViewModel, PagedList } from '@dflat-core/web/core-model';\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n map,\n shareReplay,\n switchMap,\n tap\n} from 'rxjs';\nimport { FacadeLoadGuard } from '../guards/facade-load-guard';\nimport { FilterContext } from './filter-context';\nimport { LoggerContext } from './logger-context';\n\nexport class DataContext<TData extends EntityViewModel> {\n private loadDataFn?: (criteria: FilterViewModel) => Observable<PagedList<TData>>;\n data$: Observable<PagedList<TData>>;\n readonly originalDataChange$ = new BehaviorSubject<TData>(null);\n // readonly isLoading$ = new BehaviorSubject<boolean>(false);\n \n private originals: Map<number, TData> = new Map();\n\n constructor(\n private readonly filterContext : FilterContext<TData, any>,\n private logger: LoggerContext,\n private interceptor: FacadeLoadGuard\n ) {\n // this.data$ = this.filterContext.criteria$\n // .pipe(switchMap((filter) => \n // this.loadData(filter) ));\n\n }\n \n loadData(filter: FilterViewModel) : Observable<PagedList<TData>> {\n const start = performance.now();\n // this.logger.debug('[DATA]\\tLoadData');\n // this.isLoading$.next(true);\n return this.loadDataFn(filter).pipe(\n tap((res) => {\n // this.isLoading$.next(false);\n const execTime = ((performance.now() - start) / 1000).toFixed(2) + 's';\n const totalCount = res.TotalRowCount ?? 0;\n const totalPages = Math.ceil(totalCount / filter.Take) || 1;\n\n \n this.filterContext.totalItems$.next(totalCount);\n this.filterContext.totalPages$.next(totalPages);\n this.filterContext.lastExecutionTime$.next(execTime);\n }),\n map((res) => {\n this.logger.debug(`Received: ${res.Values?.length} results`);\n \n this.originals.clear();\n res.Values?.forEach((item) => {\n this.resetResultsFlags(item);\n this.originals.set(item.Id, { ...item });\n });\n this.interceptor.markDataReady();\n return res;\n }));\n }\n\n setCriteriaSource(criteria$: Observable<FilterViewModel>) {\n this.data$ = criteria$.pipe(switchMap(filter => this.loadData(filter)),shareReplay({ bufferSize: 1, refCount: true }));\n }\n\n \n getOriginal(id: number): TData {\n return this.originals.get(id);\n }\n \n setOriginal(newData: TData) {\n if ( this.originals.has(newData.Id)) {\n this.originals.set(newData.Id,newData);\n this.originalDataChange$.next(newData);\n }\n }\n\n\n private readonly mutationsSubject = new Subject<TData>();\n readonly mutations$ = this.mutationsSubject.asObservable();\n\n insertAtStart(entity: TData) {\n this.mutationsSubject.next(entity);\n }\n\n\n hasData(){\n return this.filterContext.totalItems$.value > 0;\n }\n\n setloadDataFn(\n fn: (criteria: FilterViewModel) => Observable<PagedList<TData>>\n ) {\n this.loadDataFn = fn;\n }\n\n private resetResultsFlags(v: TData) {\n // Ajouter dans EntityViewModel : IsValid, \n v['isValid'] = true;\n v['hasWarning'] = false;\n v['hasError'] = false;\n v['isTheSame'] = true;\n }\n}\n","import { ColumnDescriptor, EntityViewModel } from \"@dflat-core/web/core-model\";\n\nexport interface IDataGridStyleContext {\n getAlternatingStyle?: (index: number, maxIndex: number, hasAggregates: boolean, row: EntityViewModel) => string;\n getHeaderStyle?: (column: ColumnDescriptor) => string;\n getColumnStyle?: (row: EntityViewModel, column: ColumnDescriptor) => string;\n getRowStateStyle?: (row: EntityViewModel) => string;\n getCellStyle?: (\n row: EntityViewModel,\n column: ColumnDescriptor,\n index: number,\n maxIndex: number,\n hasAggregates: boolean\n ) => string;\n canEditCell?: (row: EntityViewModel, column: ColumnDescriptor) => boolean;\n showOnToolTip? : (row: EntityViewModel, column: ColumnDescriptor) => any;\n enableLastColumnResize?: boolean;\n displayDetail?: boolean;\n}\n\n\n\nexport class DataGridStyleContext implements IDataGridStyleContext {\n\n private readonly patchContext: Partial<IDataGridStyleContext> = {};\n\n constructor(\n private readonly defaults: IDataGridStyleContext\n ) { }\n\n patch(partial: Partial<IDataGridStyleContext>): void {\n Object.assign(this.patchContext, partial);\n }\n getAlternatingStyle(index: number , maxIndex: number, hasAggregates: boolean, row : EntityViewModel): string {\n const baseResult = this.defaults.getAlternatingStyle(index,maxIndex,hasAggregates,row);\n\n const override = this.patchContext.getAlternatingStyle;\n if (override) {\n return `${baseResult} ${override(index,maxIndex,hasAggregates,row)}`.trim();\n }\n\n return baseResult;\n }\n\n\n getHeaderStyle(column: ColumnDescriptor): string {\n const baseResult = this.defaults.getHeaderStyle(column);\n\n const override = this.patchContext.getHeaderStyle;\n if (override) {\n return `${baseResult} ${override(column)}`.trim();\n }\n\n return baseResult;\n }\n\n getColumnStyle(row: EntityViewModel, column: ColumnDescriptor): string {\n const baseResult = this.defaults.getColumnStyle(row, column);\n\n const override = this.patchContext.getColumnStyle;\n if (override) {\n return `${baseResult} ${override(row, column)}`.trim();\n }\n\n return baseResult;\n }\n\n getRowStateStyle(row: EntityViewModel): string {\n const baseResult = this.defaults.getRowStateStyle(row);\n const override = this.patchContext.getRowStateStyle;\n if (override) {\n return `${baseResult} ${override(row)}`.trim();\n }\n return baseResult;\n }\n\n\n getCellStyle(\n row: EntityViewModel,\n column: ColumnDescriptor,\n index: number,\n maxIndex: number,\n hasAggregates: boolean\n ): string {\n const baseResult = this.defaults.getCellStyle(row, column, index, maxIndex, hasAggregates);\n const override = this.patchContext.getCellStyle;\n if (override) {\n return `${baseResult} ${override(row, column, index, maxIndex, hasAggregates)}`.trim();\n }\n return baseResult;\n }\n\n canEditCell(row: EntityViewModel, column: ColumnDescriptor): boolean {\n return (this.patchContext.canEditCell?.(row, column) ?? true);\n }\n\n showOnToolTip?(row: EntityViewModel, column: ColumnDescriptor) : any{\n return null;\n };\n\n get enableLastColumnResize(): boolean {\n return (this.patchContext.enableLastColumnResize\n ?? this.defaults.enableLastColumnResize ?? true);\n }\n\n get displayDetail(): boolean {\n return (this.patchContext.displayDetail\n ?? this.defaults.displayDetail);\n }\n}\n\n\nexport class DefaultDataGridStyleContext implements IDataGridStyleContext {\n\n getAlternatingStyle(index, maxIndex, hasAggregates) {\n if ( index == 0)\n return 'row-odd first-row';\n let result: string = (index % 2 === 1) ? 'row-even' : 'row-odd';\n if ( index == maxIndex - 1 && hasAggregates)\n result += ' last-row';\n return result;\n }\n getHeaderStyle(column: ColumnDescriptor) {\n return 'header';\n }\n getColumnStyle(row: EntityViewModel, column: ColumnDescriptor){\n return '';\n };\n getRowStateStyle(row) {\n if (row['isValid'] === false || row['hasError'] === true) return 'mw-invalid';\n if (row['isTheSame'] === false) return 'mw-modified';\n if (row['hasWarning'] === true) return 'mw-warning';\n return 'row-state';\n }\n\n getCellStyle(row, column, index, maxIndex, hasAggregates) {\n let base = `${this.getAlternatingStyle(index, maxIndex, hasAggregates)} ${column?.Display?.type ?? ''}`;\n const col = this.getColumnStyle(row, column);\n return `${base} ${col}`.trim();\n }\n\n enableLastColumnResize: true;\n displayDetail: false;\n};","import { Utilities } from '@dflat-core/web/core';\nimport { EntityViewModel, EntityViewModelWithFields, FieldDescriptor } from '@dflat-core/web/core-model';\nimport { BehaviorSubject, Observable, Subject, takeUntil } from 'rxjs';\nimport { ChangeDetectionContext } from './change-detection-context';\nimport { DataGridStyleContext } from './data-grid-style-context';\n\nexport class EditorContext {\n \n\n private ViewModel: EntityViewModelWithFields<EntityViewModel>;\n setViewModel(vm : EntityViewModelWithFields<EntityViewModel>){\n this.ViewModel = vm;\n }\n readonly isValid$ = new BehaviorSubject<boolean>(true);\n readonly isStandaloneMode$ = new BehaviorSubject<boolean>(false);\n private readonly isDirtySubject = new BehaviorSubject<boolean>(false);\n readonly isDirty$: Observable<boolean> = this.isDirtySubject.asObservable();\n\n readonly readOnlyMode$ = new BehaviorSubject<boolean>(false);\n private destroy$ = new Subject<void>();\n constructor(private change?: ChangeDetectionContext<any>) {\n if (change) {\n this.bindChangeContext();\n }\n }\n\n\n private bindChangeContext() {\n this.change.getStyleUpdated$()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n this.setIsDirty(this.change.isDirty);\n this.setIsValid(this.change.valid);\n });\n }\n\n setStandaloneMode(value: boolean) {\n if(this.isStandaloneMode$.value !== value)\n this.isStandaloneMode$.next(value);\n }\n\n setReadOnlyMode(value: boolean) {\n if (this.readOnlyMode$.value !== value)\n this.readOnlyMode$.next(value);\n }\n\n get isReadOnlyMode(): boolean {\n return this.readOnlyMode$.value;\n }\n\n setIsDirty(value : boolean){\n // if (this.isDirtySubject.value !== value)\n this.isDirtySubject.next(value);\n }\n \n setIsValid(value : boolean){\n // if (this.isValid$.value !== value)\n this.isValid$.next(value);\n }\n\n reset() {\n this.setIsDirty(false);\n this.setIsValid(true);\n this.setStandaloneMode(false);\n this.setReadOnlyMode(false);\n\n if (this.change) {\n this.change.reset();\n }\n }\n\n get Fields() {\n if (\n !Utilities.IsNil(this.ViewModel) &&\n !Utilities.IsNil(this.ViewModel.FieldSections)\n ) {\n const fields = this.ViewModel.FieldSections\n .map((vm) => vm.FieldViewModels)\n .reduce((results, plans) => [...results, ...plans], [])\n\n return fields;\n }\n }\n\n getEditableContext(): Partial<DataGridStyleContext> {\n return {\n canEditCell: (row, column) =>\n this.isRowEditable(row) &&\n this.isPropertyEditable(column?.Property),\n };\n }\n\n enableEdit(prop: string, row: EntityViewModel): boolean {\n return this.isRowEditable(row) && this.isPropertyEditable(prop);\n }\n\n isRowEditable(row: EntityViewModel): boolean {\n if (this.isReadOnlyMode) return false;\n if (!Utilities.IsNil(row) && row.IsEditable)\n return true;\n return false;\n }\n\n isPropertyEditable(prop: string): boolean {\n if (this.isReadOnlyMode) return false;\n if (Utilities.IsNil(prop))\n return false;\n\n let field = this.getField(prop);\n if (!Utilities.IsNil(field) && (field.IsHidden || field.ReadOnly)) return false;\n\n return true;\n }\n\n getField(prop?: string) : FieldDescriptor {\n return this.Fields.find((x) => x.PropertyName == prop);\n }\n\n\n destroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n ","import { Utilities } from \"@dflat-core/web/core\";\nimport { DataService } from \"@dflat-core/web/core-data\";\nimport { ColumnDescriptor, EntityViewModel, EntityViewModelWithFields, ExtendedProperty, FieldDescriptor, FilterDescriptor, FilterViewModel, Section } from \"@dflat-core/web/core-model\";\nimport { BehaviorSubject, combineLatest, map, Observable, shareReplay, switchMap } from \"rxjs\";\n\nexport class EntityConfigContext<TData extends EntityViewModel, TFilter extends FilterViewModel> {\n\n //#region Columns\n\n private readonly columnSource$ = new BehaviorSubject<() => Observable<ColumnDescriptor[]>>\n (() => this.dataService.getViewColumns(this.entityKey));\n\n setColumnSource(factory: () => Observable<ColumnDescriptor[]>) {\n this.columnSource$.next(factory);\n }\n\n private readonly alteredColumns$ = new BehaviorSubject<((cols: ColumnDescriptor[]) => ColumnDescriptor[])[]>([]);\n\n readonly columns$ = combineLatest([this.columnSource$.pipe(switchMap(factory => factory())),\n this.alteredColumns$]).pipe(map(([cols, alters]) => {\n let columnsCopy : ColumnDescriptor[] = Utilities.deepCopy(cols);\n let result: ColumnDescriptor[] = columnsCopy.map(c => ({\n ...c,\n Display: c.Display || { type: 'text' }\n }));\n\n for (const alter of alters) {\n result = alter(result) ?? result;\n }\n\n return result;\n }),\n shareReplay({ bufferSize: 1, refCount: true }));\n\n //#endregion Columns\n\n\n //#region Viewmodel\n private readonly viewModelSource$ = new BehaviorSubject<() => Observable<EntityViewModelWithFields<TData>>>\n (() => this.dataService.getEntityViewModel<TData>(this.entityKey, 0));\n\n setviewModelSource(factory: () => Observable<EntityViewModelWithFields<TData>>) {\n this.viewModelSource$.next(factory);\n }\n private readonly alteredViewModel$ = new BehaviorSubject<((vm: EntityViewModelWithFields<TData>)\n => EntityViewModelWithFields<TData>)[]>([]);\n\n readonly viewModel$ = combineLatest([this.viewModelSource$.pipe(switchMap(factory => factory())),\n this.alteredViewModel$]).pipe(map(([vm, alters]) => {\n let result = Utilities.deepCopy(vm);\n for (const alter of alters) {\n result = alter(result) ?? result;\n }\n return result;\n }),\n shareReplay({ bufferSize: 1, refCount: true }));\n\n\n updateFieldSections(newSections: Section[]) {\n const alter = (vm: EntityViewModelWithFields<TData>): EntityViewModelWithFields<TData> => {\n return {\n ...vm,\n FieldSections: newSections\n };\n };\n this.alteredViewModel$.next([alter]);\n }\n //#endregion ViewModel\n\n\n\n readonly alteredDefaultFilter$ = new BehaviorSubject<((filter: TFilter) => TFilter)[]>([]);\n readonly defaultFilter$ = combineLatest([\n this.dataService.getEmptyFilter<TFilter>(this.entityKey).pipe(shareReplay(1)),\n this.alteredDefaultFilter$\n ]).pipe(\n map(([df, alters]) => {\n let result = df;\n for (const alter of alters) {\n result = alter(result) ?? result;\n }\n return result;\n }),\n shareReplay(1)\n );\n\n\n\n\n readonly alteredFilterDescriptors$ =\n new BehaviorSubject<((fds: FilterDescriptor[]) => FilterDescriptor[])[]>([]);\n\n readonly filterDescriptors$: Observable<FieldDescriptor[]> =\n combineLatest([\n this.dataService.getViewFilterDescriptors(this.entityKey),\n this.alteredFilterDescriptors$\n ]).pipe(\n map(([fds, alters]) => {\n fds.forEach(element => {\n if (!element.OriginalData && element.Data)\n element.OriginalData = element.Data\n });\n\n let result = Utilities.deepCopy(fds);\n for (const alter of alters) {\n result = alter(result) ?? result;\n }\n return result;\n\n // for (const alter of alters) {\n // result = alter(result) ?? result;\n // }\n // return result;\n })\n , shareReplay({ bufferSize: 1, refCount: true })\n );\n\n\n\n\n readonly actions$ = this.dataService.getExtendedActions(this.entityKey).pipe(shareReplay(1));\n\n\n readonly config$ = combineLatest({\n columns: this.columns$,\n viewModel: this.viewModel$,\n emptyFilter: this.defaultFilter$,\n filterDescriptors: this.filterDescriptors$,\n actions: this.actions$\n }).pipe(shareReplay(1));\n\n\n\n\n /** Enable cell auto-focus on edit (accounting-data keyboard navigation). Set from the component TS. */\n cellFocus = false;\n\n constructor(private dataService: DataService, private entityKey: string) {\n }\n\n // shareReplay(1) : observable hot = one HTTP call, reused.\n // synchronised snapshot\n getApiViewModel(id: number): Observable<EntityViewModelWithFields<TData>> {\n return this.dataService.getEntityViewModel<TData>(this.entityKey, id)\n .pipe(shareReplay(1));\n }\n\n getExtendedProperties(ids: number[]): Observable<ExtendedProperty[]> {\n return this.dataService.getExtendedProperties(this.entityKey, ids)\n .pipe(shareReplay(1));\n }\n\n addAlterViewModelFunction(alterFunction: ((vm: EntityViewModelWithFields<TData>) => EntityViewModelWithFields<TData>)) {\n // this.alteredViewModel$.next([...this.alteredViewModel$.value,alterFunction])\n this.alteredViewModel$.next([alterFunction])\n }\n\n addAlterColumnsFunction(alterFunction: ((cols: ColumnDescriptor[]) => ColumnDescriptor[])) {\n this.alteredColumns$.next([alterFunction])\n }\n\n /**\n * Replaces the active column set with the given descriptors.\n * This is the primary entry point for Presentation Profile integration:\n * pass the result of PresentationProfileTransformer.buildDescriptors() here.\n */\n replaceColumns(descriptors: ColumnDescriptor[]): void {\n this.alteredColumns$.next([() => descriptors]);\n }\n\n /** Appends columns not already present (matched by Property). */\n addColumns(descriptors: ColumnDescriptor[]): void {\n this.alteredColumns$.next([\n ...this.alteredColumns$.value,\n cols => {\n const existing = new Set(cols.map(c => c.Property));\n return [...cols, ...descriptors.filter(d => !existing.has(d.Property))];\n },\n ]);\n }\n\n /** Removes columns by Property name. */\n removeColumns(propertyNames: string[]): void {\n const toRemove = new Set(propertyNames);\n this.alteredColumns$.next([\n ...this.alteredColumns$.value,\n cols => cols.filter(c => !toRemove.has(c.Property ?? '')),\n ]);\n }\n\n /** Patches a single column matched by Property name. */\n updateColumn(propertyName: string, updates: Partial<ColumnDescriptor>): void {\n this.alteredColumns$.next([\n ...this.alteredColumns$.value,\n cols => cols.map(c => c.Property === propertyName ? { ...c, ...updates } : c),\n ]);\n }\n\n addAlterDefaultFilterFunction<F extends TFilter>(alterFunction: ((filter: TFilter) => TFilter)) {\n this.alteredDefaultFilter$.next([alterFunction])\n }\n\n addAlterFilterDescriptorsFunction(alterFunction: ((cols: FilterDescriptor[]) => FilterDescriptor[])) {\n this.alteredFilterDescriptors$.next([alterFunction])\n }\n\n}\n\n\n\n// ----- NOT TO DO\n// --> get columns(): ColumnDescriptor[] { ... }\n// Reintroduce snapshot thinking and hide timing issues\n// => break reactive guarantees\n\n// --> this.facade.config.columns$.subscribe(...) inside a method\n// Creates transient subscriptions & introduces leaks\n\n// ----- DO\n// create local columnsSnapshot in the child component and subscribe on init\n","import { Utilities } from '@dflat-core/web/core';\nimport { ColumnDescriptor, EntityViewModel, FilterClause, FilterOperator, FilterQuery, FilterRow, FilterViewModel } from '@dflat-core/web/core-model';\n\nimport {\n BehaviorSubject,\n debounceTime,\n distinctUntilChanged,\n map,\n merge,\n Observable,\n ReplaySubject,\n share,\n shareReplay,\n startWith,\n Subject\n} from 'rxjs';\nimport { FacadeLoadGuard } from '../guards/facade-load-guard';\nimport { EntityConfigContext } from './entity-config-context';\n\nexport class FilterContext<\n TData extends EntityViewModel,\n TFilter extends FilterViewModel\n> {\n \n public forceRefresh: boolean = false;\n public defaultFilter: TFilter = { Offset: 0, Take: 25 } as TFilter;\n public filterSnapshot?: TFilter;\n public defaultAdditionalQuery: FilterQuery = { Rows: [] };\n\n readonly filter$ = new BehaviorSubject<TFilter>(this.defaultFilter as TFilter);\n readonly additionalQuery$ = new BehaviorSubject<FilterQuery>(this.defaultAdditionalQuery);\n readonly pageNumber$ = new BehaviorSubject<number>(1);\n readonly rowsPerPage$ = new BehaviorSubject<number>(25);\n readonly totalItems$ = new BehaviorSubject<number>(0);\n readonly totalPages$ = new BehaviorSubject<number>(0);\n readonly lastExecutionTime$ = new BehaviorSubject<string>('0s');\n readonly baseCriteria$: Observable<TFilter>;\n readonly keyword$ = new BehaviorSubject<string>(this.filter$.value.Keywords);\n \n private columns: ColumnDescriptor[];\n \n constructor(\n private config: EntityConfigContext<TData, TFilter>,\n private interceptor : FacadeLoadGuard\n ) {\n this.config.defaultFilter$.subscribe((df) => {\n this.setDefaultFilter(df);\n });\n\n \n this.baseCriteria$ = \n merge( this.filter$,this.refresh$.pipe(\n startWith(),\n debounceTime(250),\n map(() => this.filter$.value)\n )).pipe(shareReplay({ bufferSize: 1, refCount: true }));\n\n this.keyword$.pipe(debounceTime(250), distinctUntilChanged())\n .subscribe((keyword: string) => {\n if (!Utilities.IsNil(keyword))\n this.setFilter({ ...this.filter$.value, Keywords: keyword } as Partial<TFilter>) \n });\n\n\n this.config.columns$.subscribe(cols => {\n this.columns = cols;\n });\n\n }\n\n\n setDefaultFilter(df: TFilter) {\n const previousDefault = this.defaultFilter;\n this.defaultFilter = df as TFilter;\n if (!this.filterSnapshot) {\n this.setFilter(this.defaultFilter);\n }\n else if (JSON.stringify(previousDefault) !== JSON.stringify(df)) {\n this.setFilter(this.defaultFilter);\n }\n this.interceptor.markFilterReady();\n }\n\n private readonly openFilterRequest$ = new Subject<void>();\n readonly openFilter$ = this.openFilterRequest$.pipe(share());\n requestOpenFilter(): void {\n this.openFilterRequest$.next();\n }\n\n private readonly filterReady$ = new ReplaySubject<void>(1);\n\n // resolved (wired by facade) //\n openFilterResolved$!: Observable<void>;\n\n\n markReady(): void {\n this.filterReady$.next();\n }\n\n _filterReady$(): Observable<void> {\n return this.filterReady$.asObservable();\n }\n\n\n\n private applyFilterUrl$ = new BehaviorSubject<boolean>(true);\n readonly applyFilterUrlEnabled$ = this.applyFilterUrl$.asObservable();\n setApplyFilterUrl(enabled: boolean) {\n this.applyFilterUrl$.next(enabled);\n }\n\n private refresh$ = new Subject<void>();\n triggerSearch() {\n this.refresh$.next();\n }\n\n setFilter(filter: Partial<TFilter>, pageNumber: number = 1) {\n\n this.filterSnapshot = { ...this.defaultFilter, ...this.filterSnapshot, ...filter };\n \n // Par défaut, lorsqu'on le filtre change, on remet la page à 1 (Offset = 0)\n if (pageNumber == 1)\n this.filterSnapshot.Offset = 0;\n\n // On met à jour le numéro de page\n this.pageNumber$.next(pageNumber);\n\n if (this.forceRefresh || JSON.stringify(this.filterSnapshot) !== JSON.stringify(this.filter$.value)) {\n this.forceRefresh = false;\n this.filter$.next(this.filterSnapshot);\n }\n }\n\n setKeyword(keyword: string) {\n this.keyword$.next(keyword);\n }\n\n isSorting(property?: string): boolean {\n return this.filter$.value.SortColumn === property;\n }\n\n isAsc(property?: string): boolean {\n return (\n this.isSorting(property) && this.filter$.value.SortDirection === 'asc'\n );\n }\n\n isDesc(property?: string): boolean {\n return (\n this.isSorting(property) && this.filter$.value.SortDirection === 'desc'\n );\n }\n\n setSorting(property: keyof TData, dir: 'asc' | 'desc' = null) {\n const current = this.filter$.value;\n\n let direction: 'asc' | 'desc' = 'asc';\n if (Utilities.IsNil(dir)) {\n if (current.SortColumn === property && current.SortDirection === 'asc') {\n direction = 'desc';\n }\n }\n else {\n direction = dir;\n }\n\n this.setFilter({SortDirection: direction, SortColumn: property as string} as Partial<TFilter>);\n }\n\n setPage(page: number) {\n const take = this.filter$.value.Take ?? 25\n let filter: Partial<TFilter> = { Offset: (page - 1) * take, Take: take } as Partial<TFilter>;\n this.setFilter(filter, page);\n }\n\n setPageSize(ps: number) {\n let filter = { Take: ps } as Partial<TFilter>\n this.rowsPerPage$.next(ps);\n\n // L'affectation du nombre de lignes par page remet le numéro de page à 1 \n this.setFilter(filter, 1);\n }\n\n updateStates(totalCount: number, execMs: number, take: number) {\n this.totalItems$.next(totalCount);\n this.totalPages$.next(Math.max(1, Math.ceil(totalCount / (take || 1))));\n this.lastExecutionTime$.next((execMs / 1000).toFixed(2) + 's');\n }\n\n addNewQuery() {\n let current = this.additionalQuery$.value;\n let clauses: Map<string, FilterClause> = new Map();\n this.columns.forEach(c => {\n clauses.set(c.Property, {\n FilterValue: undefined,\n PropertyName: c.Expression == null? c.TableAlias + '.[' + c.FieldName + ']' :c.Expression,\n Operator: FilterOperator.Contains\n });\n });\n\n\n let filterRow: FilterRow = { ClausesByPropertyName: clauses }\n current.Rows.push(filterRow);\n\n this.additionalQuery$.next(current);\n this.applyAdditionalQuery();\n }\n\n removeQueryAtIndex(index: number) {\n let current = this.additionalQuery$.value;\n if (index >= 0 && index < current.Rows.length) {\n current.Rows.splice(index, 1);\n this.additionalQuery$.next(current);\n }\n this.applyAdditionalQuery();\n }\n\n applyAdditionalQuery() {\n let additionalFilter: string = '';\n let filterQuery: FilterQuery = this.additionalQuery$.value;\n if (filterQuery.Rows.length == 0) {\n const filter = {...this.filter$.value,AdditionalFilter : additionalFilter}\n this.setFilter(filter);\n return;\n }\n\n let currentRowFilter: string = '';\n let prefix: string = '';\n \n filterQuery.Rows.forEach((row: FilterRow) => {\n currentRowFilter = '';\n prefix = '';\n row.ClausesByPropertyName.forEach((element: FilterClause) => {\n if (!Utilities.IsNil(element.FilterValue) && element.FilterValue != '') {\n let filterKeyWord = element.FilterValue.replace(/\\*/g, '%');\n currentRowFilter = currentRowFilter + prefix + '(' + element.PropertyName + ' like \\'' + filterKeyWord + '\\')';\n prefix = ' and ';\n }\n });\n\n if (currentRowFilter != '')\n additionalFilter = additionalFilter == '' ? '(' + currentRowFilter + ')' : additionalFilter + ' OR (' + currentRowFilter + ')'\n \n });\n\n const filter = {...this.filter$.value,AdditionalFilter : additionalFilter}\n this.setFilter(filter);\n return;\n\n\n\n }\n\n // setAggregateClause(aggregateClause : string ) {\n // this.setFilter({AggregateClause : aggregateClause} as Partial<TFilter>)\n // }\n setAggregateClause(aggregationRequest : any ) {\n this.setFilter({AggregateClause : aggregationRequest} as Partial<TFilter>)\n }\n\n}\n","import { LayoutPreferences, LayoutService } from \"../../services/layout.service\";\r\nimport { SelectionContext } from \"./selection-context\";\r\nimport { BehaviorSubject, distinctUntilChanged, map } from \"rxjs\";\r\n\r\nexport class LayoutContext {\r\n\r\n private _propertyPanelState$ = new BehaviorSubject<{enabled: boolean;visible: boolean;}> \r\n ({enabled: true,visible: true});\r\n\r\n propertyPanelVisible$ = this._propertyPanelState$.pipe(\r\n map(s => s.enabled && s.visible),\r\n distinctUntilChanged()\r\n );\r\n\r\n setShowPropertyPanel(visible: boolean) {\r\n const state = this._propertyPanelState$.value;\r\n\r\n if (visible && !state.enabled) return;\r\n\r\n this._propertyPanelState$.next({\r\n ...state,\r\n visible\r\n });\r\n\r\n // this.layoutService.triggerSafeLayoutUpdate();\r\n }\r\n\r\n enablePropertyPanel() {\r\n const state = this._propertyPanelState$.value;\r\n this._propertyPanelState$.next({...state,enabled: true});\r\n // this.layoutService.triggerSafeLayoutUpdate();\r\n }\r\n\r\n disablePropertyPanel() {\r\n // force consistency\r\n this._propertyPanelState$.next({enabled: false,visible: false });\r\n // this.layoutService.triggerSafeLayoutUpdate();\r\n }\r\n\r\n private _showActionTitle$ = new BehaviorSubject<boolean>(true);\r\n showActionTitle$ = this._showActionTitle$.asObservable();\r\n\r\n private _editModeEnabled$ = new BehaviorSubject<boolean>(true);\r\n editModeEnabled$ = this._editModeEnabled$.asObservable();\r\n\r\n // private _lastColumnResizeEnabled$ = new BehaviorSubject<boolean>(true);\r\n // lastColumnResizeEnabled$ = this._lastColumnResizeEnabled$.asObservable();\r\n\r\n private _showFilterButton$ = new BehaviorSubject<boolean>(true);\r\n showFilterButton$ = this._showFilterButton$.asObservable();\r\n\r\n private _showFilterSummary$ = new BehaviorSubject<boolean>(true);\r\n showFilterSummary$ = this._showFilterSummary$.asObservable();\r\n\r\n private _showSearchButton$ = new BehaviorSubject<boolean>(true);\r\n showSearchButton$ = this._showSearchButton$.asObservable();\r\n\r\n private _showPaginator$ = new BehaviorSubject<boolean>(true);\r\n showPaginator$ = this._showPaginator$.asObservable();\r\n\r\n private _showActionBar$ = new BehaviorSubject<boolean>(true);\r\n showActionBar$ = this._showActionBar$.asObservable();\r\n\r\n private _showActionSearchBar$ = new BehaviorSubject<boolean>(true);\r\n showActionSearchBar$ = this._showActionSearchBar$.asObservable();\r\n\r\n private _isMainComponent$ = new BehaviorSubject<boolean>(true);\r\n isMainComponent$ = this._isMainComponent$.asObservable();\r\n\r\n private _applyFilterParams$ = new BehaviorSubject<boolean>(true);\r\n applyFilterParams$ = this._applyFilterParams$.asObservable();\r\n\r\n private _entityKey$ = new BehaviorSubject<string>(this.entityKey);\r\n entityKey$ = this._entityKey$.asObservable();\r\n\r\n private _isSection$ = new BehaviorSubject<boolean>(false);\r\n isSection$ = this._isSection$.asObservable();\r\n\r\n private _defaultPreferences$ = new BehaviorSubject<LayoutPreferences>(null);\r\n defaultPreferences$ = this._defaultPreferences$.asObservable();\r\n\r\n // private _flexGrow$ = new BehaviorSubject<number>(null);\r\n // flexGrow$ = this._flexGrow$.asObservable();\r\n\r\n constructor(\r\n private entityKey: string,\r\n private selection : SelectionContext<any>,\r\n public layoutService: LayoutService\r\n ) { \r\n\r\n // this.selection.cleared$.subscribe(() => {\r\n // this.disablePropertyPanel();\r\n // });\r\n\r\n this.selection.hasSelection$.subscribe((res) => {\r\n if(res)\r\n this.setShowPropertyPanel(true);\r\n else\r\n this.setShowPropertyPanel(false);\r\n })\r\n }\r\n\r\n // Setters\r\n setEditModeEnabled(v: boolean) { this._editModeEnabled$.next(v); }\r\n // setLastColumnResizeEnabled(v: boolean) { this._lastColumnResizeEnabled$.next(v); }\r\n setShowFilterButton(v: boolean) { this._showFilterButton$.next(v); }\r\n setShowFilterSummary(v: boolean) { this._showFilterSummary$.next(v); }\r\n setShowSearchButton(v: boolean) { this._showSearchButton$.next(v); }\r\n setShowPaginator(v: boolean) { this._showPaginator$.next(v); }\r\n setShowActionTitle(v: boolean) { this._showActionTitle$.next(v); }\r\n setShowActionBar(v: boolean) { this._showActionBar$.next(v); }\r\n setShowActionSearchBar(v: boolean) { this._showActionSearchBar$.next(v); }\r\n setIsMainComponent(v: boolean) { this._isMainComponent$.next(v); }\r\n setIsSection(v: boolean) { this._isSection$.next(v); }\r\n setApplyFilterParams(v: boolean) { this._applyFilterParams$.next(v); }\r\n // setFlexGrow(v: number) { this._flexGrow$.next(v); }\r\n\r\n togglePropertyPanel() {\r\n const isVisible = this._propertyPanelState$.value.visible;\r\n this.setShowPropertyPanel(!isVisible);\r\n }\r\n\r\n /**\r\n * Sets fixed layout preferences from component/facade (not persisted to localStorage)\r\n * Priority: Fixed > User > Default\r\n * @param preferences Fixed layout preferences to apply\r\n */\r\n setFixedLayout(preferences: LayoutPreferences) {\r\n this.layoutService.setFixedLayoutPreferences(this.entityKey, preferences);\r\n }\r\n}","import { BehaviorSubject, distinctUntilChanged } from \"rxjs\";\r\n\r\nexport class LoggerContext {\r\n\r\n debugModeEnabled: boolean = true;\r\n\r\n constructor(\r\n \r\n ) {}\r\n\r\n \r\n debug(s: any){\r\n if (this.debugModeEnabled)\r\n console.log('[DEBUG]' + JSON.stringify(s));\r\n }\r\n \r\n \r\n}","import { Utilities } from '@dflat-core/web/core';\nimport {\n EntityViewModel,\n EntityViewModelWithFields,\n ExtendedProperty,\n FilterViewModel\n} from '@dflat-core/web/core-model';\nimport {\n ComponentRef,\n TemplateRef,\n Type,\n ViewContainerRef,\n} from '@angular/core';\nimport { BehaviorSubject, filter, Subject, take, takeUntil } from 'rxjs';\nimport type { BaseComponent } from '../../components/base-component/base-component';\nimport { EditorTabSetComponent } from '../../components/editor-tabset/editor-tabset.component';\nimport { EntityFacade } from '../entity-facade';\nimport { ActionContext } from './action-context';\nimport { EntityConfigContext } from './entity-config-context';\nimport { SelectionContext } from './selection-context';\n\n\nexport interface ISectionComponent<T extends EntityViewModel> {\n isSection?: boolean;\n facade?: EntityFacade<T>;\n}\n\nexport interface ISectionConfig<\n T extends EntityViewModel,\n F extends FilterViewModel,\n P extends EntityViewModel> {\n initOverride?: (component: ISectionComponent<T>) => void;\n layoutOverride?: (component: ISectionComponent<T>) => void;\n filterOverride?: (selected: P[]) => F;\n selectionOverride?: (component: ISectionComponent<T>, selected: P[]) => void;\n show?: (context: any[] | ISectionComponent<T> | any) => boolean;\n afterInitOverride?: (component: ISectionComponent<T>) => void;\n}\n\nexport function filterFromId<TData extends EntityViewModel, F extends FilterViewModel>(key: keyof F):\n (selected: TData[]) => F {\n return (selected: TData[]): F => {\n const id = selected?.length > 0 ? selected[0].Id : -1;\n return { [key]: id } as unknown as F;\n };\n}\n\n\nexport interface ISpecificSectionContext<\n T extends EntityViewModel,\n F extends FilterViewModel,\n P extends EntityViewModel\n> {\n Name?: string;\n IconUrl?: string;\n Template?: Type<any> | TemplateRef<any> | any;\n Config?: ISectionConfig<T, F, P>;\n IsVisible?: boolean;\n}\n\nexport interface ISectionContext {\n sectionName: string\n log: any\n}\n\n\nexport class SectionContext<P extends EntityViewModel> {\n \n constructor(\n private selection: SelectionContext<P>,\n private config: EntityConfigContext<P, any>,\n private actions: ActionContext<P>,\n ) {\n this.selection.selected$.pipe( \n filter(sel => sel && sel.length > 0 && !Utilities.IsNil(sel[0]) && Object.keys(sel[0]).length > 0), \n takeUntil(this.destroy$))\n .subscribe((sel) => this.handleSelectionChanged(sel));\n\n this.actions.actionResult$.pipe(takeUntil(this.destroy$))\n .subscribe(result => {\n if( result.actionName == 'save' && result['affectedEntities'] !== undefined)\n this.updateSectionVisibility(this.selection.Selected);\n });\n }\n \n private componentRefs = new Map<string, ComponentRef<any>>();\n \n // Active tab index\n private activeTabIndex = 0;\n \n private sections: ISpecificSectionContext<any, any, P>[] = [];\n \n private sectionsSubject =\n new BehaviorSubject<ISpecificSectionContext<any, any, P>[]>(Array.from(this.sections.values()));\n \n readonly sections$ = this.sectionsSubject.asObservable();\n \n private destroy$ = new Subject<void>();\n \n private viewModel?: EntityViewModelWithFields<any>;\n \n private tabset?: EditorTabSetComponent;\n registerTabset(tabset: EditorTabSetComponent) {\n this.tabset = tabset;\n }\n \n private dynamicContainers: ViewContainerRef[] = [];\n registerDynamicContainers(containers: ViewContainerRef[]) {\n this.dynamicContainers = containers;\n }\n\n private defaultLayoutOverride = (facade: EntityFacade<any>) => {\n facade.layout.setShowActionTitle(false);\n facade.layout.setShowFilterButton(false);\n }\n\n registerSection<F extends FilterViewModel,T extends EntityViewModel>(\n name: string, template: Type<ISectionComponent<T>>, config?: ISectionConfig<T, F, P>\n ): ISpecificSectionContext<T, F, P> {\n const existing = this.sections.find(s => s.Name === name);\n if (existing) {\n return existing;\n }\n\n const section: ISpecificSectionContext<T, F, P> = {\n Name: name,\n Template: template,\n Config: config,\n IsVisible: true\n };\n\n this.sections.push(section);\n this.sectionsSubject.next(this.sections.slice());\n return section;\n }\n\n getActiveTab(): number {\n return this.activeTabIndex;\n }\n\n // Render the given section into the provided container. \n renderSection(\n section: ISpecificSectionContext<any, any, P>,\n container: ViewContainerRef\n ) {\n if (!section || !container) return;\n let ref = this.componentRefs.get(section.Name);\n if (!ref) {\n ref = container.createComponent<any>(section.Template);\n ref.instance['IsTheMainComponent'] = false;\n this.componentRefs.set(section.Name, ref);\n this.attachComponentOverrides(section, ref);\n }\n else {\n container.insert(ref.hostView, 0);\n }\n\n }\n\n private attachComponentOverrides(\n section: ISpecificSectionContext<any, any, P>,\n ref: ComponentRef<ISectionComponent<any>>\n ) {\n const instance = ref.instance;\n const cfg = section.Config;\n if (!cfg || !instance) return;\n\n // Component init\n if (cfg.initOverride) {\n cfg.initOverride(instance);\n } \n \n this.applyFilterOnSection(instance, section.Config, this.lastSelected,true);\n \n const facade = instance.facade;\n if (!facade)\n return;\n\n // disable apply filter from Url\n facade.filter.setApplyFilterUrl(false);\n\n // component defined layout override\n facade.interceptor.configLoaded$.subscribe(() => {\n this.defaultLayoutOverride(facade);\n \n if (cfg.layoutOverride) {\n cfg.layoutOverride(instance);\n } \n }); \n\n if (facade) {\n facade.actions.setExecutionContext({\n sectionName: section.Name,\n source: 'child'\n });\n }\n\n \n\n \n facade.interceptor.facadeReady$.subscribe(() => {\n \n if (cfg.afterInitOverride) {\n cfg.afterInitOverride(instance);\n }\n\n facade.actions.actionResult$.pipe(takeUntil(this.destroy$))\n .subscribe(result => {\n this.actions.emitActionResult(result);\n });\n });\n\n\n }\n\n setViewModel(vm: EntityViewModelWithFields<any>) {\n this.viewModel = vm;\n }\n\n private renderedSections = new Set<number>();\n lastSelected: P[] = [];\n \n private handleSelectionChanged(selected: P[]) {\n if(this.lastSelected.length > 0 && this.lastSelected[0].Id != selected[0].Id)\n this.sections.forEach(s=> {s.IconUrl = null;});\n\n this.lastSelected = selected;\n\n this.updateSectionVisibility(selected);\n const activeTab = this.getActiveTab();\n if (activeTab == 0) {\n // load extended properties\n this.loadExtendedProperties(selected);\n return;\n }\n\n const section = this.sections[activeTab - 1];\n if (!section)\n return;\n\n const ref = this.componentRefs.get(section.Name);\n const cfg = section.Config;\n if (!ref || !cfg)\n return;\n\n const component = ref.instance as ISectionComponent<any>;\n if (!component)\n return;\n\n this.applyFilterOnSection(component, section.Config, selected);\n }\n\n private updateSectionVisibility(selected: P[]) {\n let hasHiddenSection = false;\n\n const activeTab = this.getActiveTab();\n const activeSection = this.sections[activeTab - 1];\n\n this.sections = this.sections.map((section) => {\n let isVisible: boolean = section.Config.show ? section.Config.show(selected) : true;\n isVisible = isVisible && (!this.selection.isNewEntity());\n\n section.IsVisible = isVisible;\n \n if (!isVisible && activeSection == section) {\n hasHiddenSection = true;\n }\n return section;\n });\n\n if (hasHiddenSection) {\n this.activateTab(0);\n }\n }\n\n applyFilterOnSection<F extends FilterViewModel, T extends EntityViewModel>(\n component: ISectionComponent<T>,\n cfg: ISectionConfig<T, F, P>,\n selected: P[],\n init : boolean = false\n ) {\n\n\n // filter override\n const facade = component.facade;\n if (cfg.filterOverride && facade) {\n const newFilter = cfg.filterOverride(selected);\n if(init)\n facade.interceptor.filterReady$\n .pipe(take(1))\n .subscribe(() => {\n facade.filter.setFilter(newFilter);\n });\n else\n facade.filter.setFilter(newFilter);\n }\n\n // selection \n if (cfg.selectionOverride) {\n cfg.selectionOverride(component, selected);\n }\n\n }\n\n //#region Extended Properties\n \n private extendedPropertiesSubject = new Subject<ExtendedProperty[]>;\n extendedProperties$ = this.extendedPropertiesSubject.asObservable();\n loadExtendedProperties(selected: P[]) {\n if (!Utilities.IsNil(this.viewModel)\n && this.viewModel.FieldSections.some(x => x.IsCustomFieldSection)) {\n var ids: number[] = selected\n .filter(s => s[\"ExtendedProperties\"]?.length == 0)\n .map(s => s.Id);\n\n if (ids.length > 0) {\n this.config.getExtendedProperties(ids).subscribe(res => {\n res.forEach(p => {\n let entity: P = selected.find(s => s.Id === p.EntityId);\n entity[\"ExtendedProperties\"].push(p);\n });\n this.extendedPropertiesSubject.next(res);\n })\n };\n }\n }\n\n //#endregion\n\n reset() {\n this.renderedSections.clear();\n this.activeTabIndex = 0;\n }\n\n destroy() {\n this.destroy$.next();\n this.destroy$.complete();\n this.componentRefs.forEach((r) => { r.destroy(); });\n this.componentRefs.clear();\n this.sections = [];\n this.sectionsSubject.complete();\n }\n\n changeActiveSection(tabIndex: number) {\n\n if (tabIndex == 0) {\n this.activateTab(0);\n return;\n }\n\n const dynamicIndex = tabIndex - 1;\n const section = this.sections[dynamicIndex];\n if (!section) {\n this.activateTab(0);\n }\n\n const container = this.dynamicContainers[dynamicIndex];\n if (!section.IsVisible && !container) {\n const fallback = this.findFirstVisibleSectionIndex();\n this.activateTab(fallback);\n }\n\n this.activateTab(tabIndex);\n if (!this.renderedSections.has(dynamicIndex)) {\n this.renderSection(section, container);\n this.renderedSections.add(dynamicIndex);\n }\n else {\n const componentRef = this.componentRefs.get(section.Name);\n const component = componentRef.instance;\n this.applyFilterOnSection(componentRef.instance, section.Config, this.lastSelected)\n }\n\n // const component = this.getBaseSectionComponent(section.Name);\n // if(component && component.facade)\n // component.facade.layout.layoutService.notifyResize();\n }\n\n setSectionDirty(sectionName?: string) {\n\n if ( Utilities.IsNil(sectionName) )\n {\n const childsections= this.sections;\n this.sections.forEach(s=> this.setSectionDirty(s.Name));\n return;\n }\n \n const componentRef = this.componentRefs.get(sectionName);\n const section = this.sections.find(x => x.Name == sectionName);\n if (!section || !componentRef) return;\n\n this.applyFilterOnSection(componentRef.instance, section.Config, this.lastSelected);\n const component = componentRef.instance as ISectionComponent<any>;\n if(component.facade)\n {\n component.facade.filter.forceRefresh = true;\n\n const childsections= component.facade.sections;\n if(childsections.sections)\n childsections.sections.forEach(s=> childsections.setSectionDirty(s.Name));\n }\n }\n\n refreshSection(sectionName: string) {\n this.setSectionDirty(sectionName);\n const component = this.getBaseSectionComponent(sectionName);\n if(component.facade)\n component.facade.filter.triggerSearch();\n }\n\n private activateTab(index: number) {\n this.activeTabIndex = index;\n this.tabset?.activateByIndex(index);\n }\n\n private readonly FIELD_TAB_COUNT = 1;\n private findFirstVisibleSectionIndex(): number {\n const idx = this.sections.findIndex(s => s.IsVisible);\n return idx >= 0 ? idx + this.FIELD_TAB_COUNT : 0;\n }\n setLog(context: ISectionContext) {\n const componentRef = this.componentRefs.get(context.sectionName);\n const section = this.sections.find(x => x.Name == context.sectionName);\n if (!section || !componentRef) return;\n\n const component = componentRef.instance as BaseComponent<any, any>;\n if (!component)\n return;\n\n component.log = context.log;\n\n }\n\n getBaseSectionComponent< TFilter extends FilterViewModel,\n TData extends EntityViewModel>(sectionName: string) : BaseComponent<TFilter, TData> | null {\n const componentRef = this.componentRefs.get(sectionName);\n const section = this.sections.find(x => x.Name == sectionName);\n if (!section || !componentRef) return;\n\n const component = componentRef.instance as BaseComponent<TFilter, TData>;\n if (!component)\n return null;\n\n return component;\n \n }\n}\n","import { Utilities } from '@dflat-core/web/core';\nimport {\n CustomFieldTypes,\n EntityViewModel,\n EntityViewModelWithFields,\n ExtendedProperty,\n FilterType,\n Section\n} from '@dflat-core/web/core-model';\nimport { DataContext } from './data-context';\nimport { SelectionType } from '@swimlane/ngx-datatable';\nimport moment from 'moment';\nimport {\n distinctUntilChanged,\n filter,\n map,\n Observable,\n ReplaySubject,\n Subject\n} from 'rxjs';\n\nexport class SelectionContext<TData extends EntityViewModel> {\n private selected: TData[] = [];\n // Garde en mémoire la dernière émission pour les futurs abonnés\n private selectedSubject = new ReplaySubject<TData[]>(1);\n \n // Subject to emit when selection is cleared\n private clearedSubject = new Subject<void>();\n cleared$ = this.clearedSubject.asObservable();\n\n readonly selected$ = this.selectedSubject.asObservable().pipe(\n // Sécurité : on n'émet que si le tableau contient des données valides (pas d'objets vides)\n filter(sel => sel && sel.length > 0 && sel.some(item => item && Object.keys(item).length > 0))\n // ,distinctUntilChanged((prev, curr) => {\n // return prev.map(s => s.Id).join(',') === curr.map(s => s.Id).join(',');\n // })\n );\n\n readonly hasSelection$ = this.selectedSubject.asObservable()\n .pipe(map(sel => !!sel && sel.length > 0),distinctUntilChanged());\n\n\n private lastSelected: TData = null;\n private viewModel?: EntityViewModelWithFields<TData>;\n private currrentDatas: TData[] = [];\n private compareFn: (a: TData, b: TData) => boolean = (a, b) =>\n a?.Id === b?.Id;\n private selectionType: SelectionType = SelectionType.multi;\n\n constructor(private data: DataContext<TData>) {\n }\n\n setCurrentData(current: TData[]) {\n this.currrentDatas = current ?? [];\n \n if (this.currrentDatas.length === 0) {\n this.clear();\n return;\n }\n \n this.selectLastRow();\n }\n\n getCurrentData() : TData[] {\n return this.currrentDatas ?? [];\n }\n\n get Selected(): TData[] {\n return this.selected;\n }\n\n getSelected(): TData[] {\n return this.selected;\n }\n\n setViewModel(vm: EntityViewModelWithFields<TData>) {\n this.viewModel = vm;\n }\n\n select(items: TData[]) {\n if (this.viewModel) {\n this.formatForViewModel(items);\n \n }\n\n this.selected = items;\n if (items.length > 0)\n this.lastSelected = items[0];\n\n this.emit();\n }\n\n /**\n * Notify listeners that selection was cleared\n */\n clear() {\n this.selected = [];\n this.emit();\n this.clearedSubject.next();\n }\n\n getOriginal(id: number): TData {\n return this.data.getOriginal(id);\n }\n\n isMultiSelect(): boolean {\n return this.selected.length > 1;\n }\n\n hasSelection(): boolean {\n return this.selected.length > 0;\n }\n\n // to do : define compare fn to identify new entity\n isNewEntity(): boolean {\n return (this.hasSelection() && !(this.selected[0].Id > 0)) ?? false;\n }\n\n getSelectedById$(id: number | string): Observable<TData> {\n return this.selected$.pipe(\n map((list) => list.find((x) => x.Id === id) ?? null)\n );\n }\n // ,distinctUntilChanged((a, b) => this.compareFn(a,b))\n\n adaptSelectionToViewModel(\n selected: TData[],\n fieldSections: Section[]\n ): TData {\n if (!selected?.length) return undefined;\n\n const base = { ...selected[0] };\n\n fieldSections?.forEach((section) =>\n section.FieldViewModels.filter((f) => !f.IsHidden).forEach(\n (field) => {\n const val = selected[0][field.PropertyName];\n const isDistinct = selected.some(\n (item) => item[field.PropertyName] !== val\n );\n base[field.PropertyName] = isDistinct ? null : val;\n }\n )\n );\n\n return base;\n }\n\n private formatForViewModel(items: TData[]) {\n if (!items?.length || !this.viewModel) return;\n\n const fields = this.viewModel.FieldSections.flatMap(\n (s) => s.FieldViewModels\n );\n\n items.forEach((item) => {\n if(!item)\n return;\n fields.forEach((field) => {\n if (\n field.FilterType === FilterType.DateTime ||\n field.FilterType === FilterType.Date\n ) {\n const v = item[field.PropertyName];\n if (typeof v === 'string' && moment(v).isValid()) {\n item[field.PropertyName] = Utilities.getCustomDate(v);\n }\n }\n });\n\n if (item.ExtendedProperties?.length) {\n item.ExtendedProperties.forEach((ext) => {\n item[ext.PropertyName] = this.formatExtended(ext);\n });\n }\n });\n }\n\n private formatExtended(p: ExtendedProperty): any {\n if (p.FieldType === CustomFieldTypes.Checkbox) {\n return p.Value === 'true' || p.Value === '1';\n }\n return p.Value;\n }\n\n private emit() {\n this.selectedSubject.next([...this.selected]);\n }\n\n setSelectionType(type: SelectionType = SelectionType.multi) {\n this.selectionType = type;\n }\n\n setCompareFn(fn: (a: TData, b: TData) => boolean) {\n this.compareFn = fn;\n }\n\n toggle(item: TData) {\n const idx = this.selected.findIndex((s) => this.compareFn!(s, item));\n if (idx >= 0) {\n this.selected.splice(idx, 1);\n } else {\n if (this.selectionType === SelectionType.single) {\n this.selected = [item];\n } else {\n this.selected.push(item);\n }\n this.lastSelected = item;\n }\n this.emit();\n }\n\n selectRange(item: TData) {\n if (!this.currrentDatas.length || !this.lastSelected) {\n return this.select([item]);\n }\n const startIdx = this.currrentDatas.findIndex((s) =>\n this.compareFn!(s, this.lastSelected)\n );\n const endIdx = this.currrentDatas.findIndex((s) =>\n this.compareFn!(s, item)\n );\n\n if (startIdx < 0 || endIdx < 0) return;\n\n const [from, to] =\n startIdx <= endIdx ? [startIdx, endIdx] : [endIdx, startIdx];\n\n const range = this.currrentDatas.slice(from, to + 1);\n\n this.selected = range;\n this.lastSelected = item;\n this.emit();\n }\n\n private selectLastRow() {\n if (this.lastSelected) {\n const found = this.currrentDatas.find((d) => d.Id === this.lastSelected!.Id);\n if (found) {\n this.select([found]);\n return;\n }\n else {\n this.clear();\n }\n }\n\n if (this.currrentDatas.length > 0) {\n this.select([this.currrentDatas[0]]);\n }\n else {\n this.clear();\n }\n }\n static nextUniqueId : number = -1;\n createNewEntity(initValue: Partial<TData>) {\n const vm = this.viewModel;\n if (!vm) return;\n \n let entity = {Id: SelectionContext.nextUniqueId--} as TData;\n // entity['isValid']=false;\n // entity['isTheSame']=false;\n if (! Utilities.IsNil(initValue))\n entity = {...entity, ...initValue} as TData;\n\n // vm.ViewModel = {} as TData;\n \n this.data.insertAtStart(entity);\n this.select([entity]);\n }\n\n // private mergeUnique(current: TData[], addition: TData[]): TData[] {\n // const map = new Map<any, TData>();\n // for (const c of current) map.set((c as any).Id, c);\n // for (const a of addition) map.set((a as any).Id, a);\n // const result: TData[] = [];\n // const ids = new Set<number | string>();\n // for (const a of addition) {\n // result.push(a);\n // ids.add((a as any).Id);\n // }\n // for (const c of current) {\n // if (!ids.has((c as any).Id)) result.push(c);\n // }\n // return result;\n // }\n}\n","import { ReplaySubject, Subject } from \"rxjs\";\r\n\r\nexport class FacadeLoadGuard {\r\n private configLoaded = new ReplaySubject<void>();\r\n private filterReady = new ReplaySubject<void>();\r\n private dataReady = new ReplaySubject<void>();\r\n private selectionReady = new ReplaySubject<void>();\r\n private changeReady = new ReplaySubject<void>();\r\n private actionsReady = new ReplaySubject<void>();\r\n private sectionsReady = new ReplaySubject<void>();\r\n private viewModelLoaded = new ReplaySubject<void>();\r\n private layoutReady = new ReplaySubject<void>();\r\n private facadeReady = new ReplaySubject<void>(); \r\n private componentInitReady = new ReplaySubject<void>(1); \r\n\r\n configLoaded$ = this.configLoaded.asObservable();\r\n filterReady$ = this.filterReady.asObservable();\r\n dataReady$ = this.dataReady.asObservable();\r\n selectionReady$ = this.selectionReady.asObservable();\r\n changeReady$ = this.changeReady.asObservable();\r\n actionsReady$ = this.actionsReady.asObservable();\r\n sectionsReady$ = this.sectionsReady.asObservable();\r\n viewModelLoaded$ = this.viewModelLoaded.asObservable();\r\n layoutReady$ = this.layoutReady.asObservable();\r\n facadeReady$ = this.facadeReady.asObservable();\r\n componentInitReady$ = this.componentInitReady.asObservable();\r\n\r\n markConfigLoaded() { this.configLoaded.next();}\r\n markFilterReady() { this.filterReady.next(); }\r\n markDataReady() { this.dataReady.next(); }\r\n markSelectionReady() { this.selectionReady.next(); }\r\n markChangeReady() { this.changeReady.next(); }\r\n markActionsReady() { this.actionsReady.next(); }\r\n markSectionsReady() { this.sectionsReady.next(); }\r\n markViewModelLoaded() { this.viewModelLoaded.next(); }\r\n markLayoutReady() { this.layoutReady.next(); }\r\n markFacadeReady() { \r\n this.facadeReady.next();\r\n }\r\n markComponentInitReady() {\r\n this.componentInitReady.next(); \r\n }\r\n}\r\n\r\n\r\n\r\n// createComponent()\r\n// ├─ constructor\r\n// ├─ ngOnInit()\r\n// │ └─ markComponentInitReady()\r\n// └─ attachComponentOverrides()\r\n// └─ subscribe() // too late\r\n","import { Utilities } from \"@dflat-core/web/core\";\nimport { FilterDescriptor, FilterViewModel } from \"@dflat-core/web/core-model\";\nimport { ActionContext } from \"../contexts/action-context\";\nimport { ChangeDetectionContext } from \"../contexts/change-detection-context\";\nimport { ConfirmOptions } from \"../../../model/model\";\nimport { FilterContext } from \"../contexts/filter-context\";\nimport { ModalService } from \"../../../services/modal.service\";\nimport { Router } from \"@angular/router\";\nimport { BehaviorSubject, combineLatest, EMPTY, filter, map, Observable, of, ReplaySubject, share, shareReplay, switchMap, tap, withLatestFrom } from \"rxjs\";\n\nexport class FilterLifecycleGuard {\n\n \n constructor(\n private readonly router: Router,\n private readonly change: ChangeDetectionContext<any>,\n private readonly actions: ActionContext<any>,\n private readonly modal: ModalService,\n private readonly filter:FilterContext<any,any>\n ) { }\n\n \n\n private msg: string = ` Vous avez des modifications en cours ! \n Souhaitez-vous Continuer, Enregistrer ou bien Annuler ?`;\n\n\n private readonly suspendFilterApply$ = new BehaviorSubject<boolean>(false);\n resolveOpenFilter$(\n openFilter$: Observable<void>,\n filterReady$: Observable<void>\n ): Observable<void> {\n\n return openFilter$.pipe(\n withLatestFrom(filterReady$),\n switchMap(() => this.confirmModification$()),\n tap(() => this.suspendFilterApply$.next(true)),\n map(() => void 0),\n share()\n );\n }\n\n\n private initialized = false;\n private readonly filterReady$ = new ReplaySubject<void>(1);\n markFilterReady(): void {\n this.filterReady$.next();\n }\n\n\n intercept$(\n baseCriteria$: Observable<FilterViewModel>,\n urlEnabled$: Observable<boolean>,\n filterDescriptors$: Observable<FilterDescriptor[]>\n ): Observable<FilterViewModel> {\n\n const resolved$ = this.resolveInitialCriteria$(\n baseCriteria$,\n urlEnabled$,\n filterDescriptors$\n );\n\n const guarded$ = this.guardCriteria$(resolved$);\n\n return this.syncUrl$(guarded$, urlEnabled$, filterDescriptors$);\n }\n\n private resolveInitialCriteria$(\n baseCriteria$: Observable<FilterViewModel>,\n urlEnabled$: Observable<boolean>,\n filterDescriptors$: Observable<FilterDescriptor[]>\n ): Observable<FilterViewModel> {\n\n return combineLatest([\n baseCriteria$,\n urlEnabled$,\n filterDescriptors$\n ]).pipe(\n map(([criteria, enabled, fields]) => {\n\n if (!this.initialized) {\n this.initialized = true;\n\n if (enabled) {\n const fromUrl = this.readFilterFromUrl(criteria, fields);\n return fromUrl ?? criteria;\n }\n }\n\n return criteria;\n }),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n }\n\n\n guardCriteria$(\n criteria$: Observable<FilterViewModel>\n ): Observable<FilterViewModel> {\n\n return criteria$.pipe(\n withLatestFrom(this.suspendFilterApply$),\n filter(([_, suspended]) => !suspended),\n map(([criteria]) => criteria),\n switchMap(criteria => this.confirmModification$(criteria))\n );\n }\n\n\n private syncUrl$(\n criteria$: Observable<FilterViewModel>,\n urlEnabled$: Observable<boolean>,\n filterDescriptors$: Observable<FilterDescriptor[]>\n ): Observable<FilterViewModel> {\n\n return combineLatest([\n criteria$,\n urlEnabled$,\n filterDescriptors$\n ]).pipe(\n tap(([criteria, enabled, fields]) => {\n this.markFilterReady();\n if (enabled) {\n this.syncUrl(criteria, fields);\n this.filter.filterSnapshot = criteria;\n }\n }),\n map(([criteria]) => criteria),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n }\n\n private confirmModification$(\n criteria?: FilterViewModel\n ): Observable<FilterViewModel> {\n\n // * confirm modal\n // * add multiple new lines save / change : combo box\n // * layout default and fixed application\n \n if (!this.change.isDirty) {\n return of(criteria as any);\n }\n\n return this.modal.confirmModal(\n \"Vous avez des modifications en cours...\"\n ).pipe(\n switchMap(result => {\n if (result === ConfirmOptions.SAVE_LEAVE) {\n return this.actions.executeAction('save', true).pipe(\n tap(() => this.change.reset()),\n map(() => criteria as any)\n );\n }\n else if (result === ConfirmOptions.LEAVE) {\n this.change.reset();\n }\n else if (result === ConfirmOptions.STAY) {\n return EMPTY; \n } \n return of(criteria as any); \n\n \n })\n );\n\n \n // return criteria$.pipe(\n // switchMap(criteria => {\n // if (!this.change.isDirty) {\n // return of(criteria);\n // }\n // return this.modal.confirmModal(this.msg).pipe(\n // // defaultIfEmpty(null),\n // switchMap((result) => {\n // if (result === null) {\n // return of(criteria);\n // }\n // if (result === true) {\n // return (this.actions.executeAction('save',true) as Observable<ActionResult<EntityViewModel>>)\n // .pipe(tap(res => {\n // if (res?.success) {\n // this.change.reset();\n // }\n // }),\n // map(() => criteria)\n // );\n // }\n\n // this.change.reset();\n // return of(criteria);\n // })\n // );\n\n // }));\n }\n\n private readFilterFromUrl(\n filter: FilterViewModel,\n fields: FilterDescriptor[]\n ): FilterViewModel | null {\n\n const url = this.router.parseUrl(this.router.url);\n const params = url.queryParams;\n\n if (!params || Object.keys(params).length === 0)\n return null;\n\n const fieldNames = fields.map(f => f.PropertyName);\n const pagingProperties = ['Offset', 'SortColumn', 'SortDirection', 'Take'];\n\n const applicableParams = Object.fromEntries(\n Object.entries(params).filter(([key]) =>\n fieldNames.includes(key) || pagingProperties.includes(key)\n )\n );\n\n if (Object.keys(applicableParams).length === 0)\n return null;\n\n\n this.CopyFilterProperties(filter, applicableParams)\n return filter;\n // return DataFilterQuery.fromUrlParams(filter, applicableParams);\n }\n\n private CopyFilterProperties(filter: FilterViewModel, applicableParams: any) {\n Object.keys(applicableParams).forEach((key) => {\n let value = applicableParams[key];\n if (typeof value === 'string' && !isNaN(Number(value))) {\n value = Number(value);\n }\n filter[key] = value;\n });\n }\n\n private syncUrl(filter: FilterViewModel, fields: FilterDescriptor[]) {\n const urlAndParams = Utilities.splitInTwo(this.router.url, '?');\n const rawParams = Utilities.getFormattedParams(filter);\n const fieldProperties = fields.map(f => f.PropertyName);\n const pagingProperties = ['Offset', 'SortColumn', 'SortDirection', 'Take'];\n const requestParams = Object.fromEntries(\n Object.entries(rawParams).filter(([key, value]) => {\n const idx = fieldProperties.findIndex(p => p === key);\n const pIdx = pagingProperties.findIndex(p => p === key);\n if (pIdx > 0)\n return true;\n if ((idx < 0)\n || (key === 'IsCsvExport')\n || (key === 'Keywords' && (value == null || value ===''))\n || Utilities.IsNil(value) \n || value === -1 \n || value === '-1' \n || Utilities.isEmptyString(value.toString() as string))\n return false;\n return true;\n })\n );\n\n const computedUrl = this.router\n .createUrlTree([urlAndParams.firstPart], { queryParams: requestParams })\n .toString();\n\n if (computedUrl !== this.router.url) {\n this.router.navigate([urlAndParams.firstPart], {\n queryParams: requestParams\n });\n }\n }\n\n /*\n //old data load guard\n // intercept$(criteria$: Observable<DataFilterQuery>): Observable<DataFilterQuery> {\n// return criteria$.pipe(\n// switchMap(criteria => {\n// this.logger.debug(\"intercept\");\n// this.logger.debug(criteria);\n\n \n// if (!this.change.isDirty) {\n// console.log('-------------no modification detected----------------');\n// return of(criteria);\n// }\n\n// return this.modal.confirmModal(\n// this.msg,\n// () => this.actions.executeAction('save',true),\n// true)\n// .pipe(\n// tap(confirmed => {\n// if (confirmed) {\n// console.log('-------------save confirmed----------------');\n// this.change.reset();\n// }\n// }),\n// filter(confirmed => confirmed),\n// map(() => criteria)\n// );\n// })\n// );\n// }\n*/\n}\n","import { EntityViewModel, FilterViewModel } from '@dflat-core/web/core-model';\nimport { Observable } from 'rxjs';\nimport { FacadeDeps } from '../services/entity-facade-registry.service';\nimport { ActionContext } from './contexts/action-context';\nimport { ChangeDetectionContext } from './contexts/change-detection-context';\nimport { DataContext } from './contexts/data-context';\nimport { DataGridStyleContext, DefaultDataGridStyleContext } from './contexts/data-grid-style-context';\nimport { EditorContext } from './contexts/editor-context';\nimport { EntityConfigContext } from './contexts/entity-config-context';\nimport { FilterContext } from './contexts/filter-context';\nimport { LayoutContext } from './contexts/layout-context';\nimport { LoggerContext } from './contexts/logger-context';\nimport { SectionContext } from './contexts/section-context';\nimport { SelectionContext } from './contexts/selection-context';\nimport { FacadeLoadGuard } from './guards/facade-load-guard';\nimport { FilterLifecycleGuard } from './guards/filter-lifecycle-guard';\n\nexport class EntityFacade<TData extends EntityViewModel> {\n \n readonly filter: FilterContext<TData, any>;\n readonly selection: SelectionContext<TData>;\n readonly data: DataContext<TData>;\n readonly change: ChangeDetectionContext<TData>;\n readonly config: EntityConfigContext<TData, any>;\n readonly editor: EditorContext;\n readonly style: DataGridStyleContext;\n readonly actions: ActionContext<TData>;\n readonly layout: LayoutContext;\n readonly sections: SectionContext<TData>;\n readonly logger: LoggerContext;\n readonly interceptor = new FacadeLoadGuard();\n readonly criteria$ : Observable<FilterViewModel>;\n \n constructor (\n private entityKey: string,\n // private id: Guid,\n public facadeDeps: FacadeDeps\n ) {\n\n // 0. Logger context\n this.logger = new LoggerContext();\n \n\n // initialization ordered\n // 1. config & layout\n this.config = new EntityConfigContext<TData, any>(\n this.facadeDeps.data,\n this.entityKey,\n // this.interceptor\n );\n \n this.interceptor.markConfigLoaded();\n \n \n // 2. FilterContext\n this.filter = new FilterContext<TData, TData>(this.config,this.interceptor);\n \n // 3. DataContext\n this.data = new DataContext<TData>(this.filter, this.logger,this.interceptor);\n \n // 4. Selection initialization\n this.selection = new SelectionContext<TData>(this.data);\n this.layout = new LayoutContext(entityKey,this.selection, this.facadeDeps.layout);\n\n // 5. Change detection initialization\n this.change = new ChangeDetectionContext<TData>(this.selection);\n\n // 6. Editor initialization\n this.editor = new EditorContext(this.change);\n\n // 7. Action handler depends on several contexts\n this.actions = new ActionContext<TData>(\n this.facadeDeps,\n this.entityKey,\n this.selection,\n this.change,\n this.filter,\n this.sections, \n this.editor,\n this.config\n );\n\n // 9. DataLoadGuard safely initialization\n const filterGuard = new FilterLifecycleGuard(\n facadeDeps.router,\n this.change,\n this.actions,\n this.facadeDeps.modal,\n this.filter\n );\n\n \n // this.interceptor.filterReady$.subscribe(\n // () => {\n this.criteria$ = filterGuard.intercept$(\n this.filter.baseCriteria$,\n this.filter.applyFilterUrlEnabled$,\n this.config.filterDescriptors$);\n \n // 10. Connect guarded criteria to DataContext\n this.data.setCriteriaSource(this.criteria$);\n // });\n // 11. Sections initialization\n this.sections = new SectionContext<TData>(this.selection,this.config,this.actions);\n this.actions.section = this.sections;\n this.actions.handler.section = this.sections;\n\n // 12. Reactive initialization\n this.config.viewModel$.subscribe((vm) => {\n this.selection.setViewModel(vm);\n this.editor.setViewModel(vm);\n });\n \n\n\n // 13. Style context at the end\n this.style = new DataGridStyleContext(new DefaultDataGridStyleContext());\n\n this.interceptor.markFacadeReady();\n\n \n \n }\n \n setReadOnlyMode(value: boolean) {\n this.editor.setReadOnlyMode(value);\n this.actions.setReadOnlyMode(value);\n this.layout.setEditModeEnabled(!value);\n }\n\n reset(){\n this.logger.debug(\"RESET FACADE\");\n this.sections.reset();\n }\n}\n","import { Utilities } from '@dflat-core/web/core';\nimport { DataService } from '@dflat-core/web/core-data';\nimport { EntityViewModel } from '@dflat-core/web/core-model';\nimport { Inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Guid } from 'guid-typescript';\nimport type { AlertService } from '../../services/alert.service';\nimport { ROOT_DEPS, RootDeps } from '../../services/application.service';\nimport { ModalService } from '../../services/modal.service';\nimport type { SelectorMapperServiceBase } from '../../services/selectorMapperBase.service';\nimport { EntityFacade } from '../models/entity-facade';\nimport { LayoutService } from './layout.service';\n\nexport interface FacadeDeps {\n alert: AlertService;\n modal: ModalService;\n data: DataService;\n selector: SelectorMapperServiceBase;\n router: Router;\n layout: LayoutService;\n}\n\n@Injectable()\nexport class EntityFacadeRegistryService {\n private facades = new Map<string, EntityFacade<any>>();\n\n constructor(@Inject(ROOT_DEPS) private readonly root: RootDeps) { }\n\n buildFacade<TData extends EntityViewModel>(key: string, id: Guid) {\n return new EntityFacade<TData>(key\n // , id\n , {\n alert: this.root.ui.alert,\n modal: this.root.ui.modal,\n data: this.root.data.data,\n selector: this.root.data.selector,\n router: this.root.nav.router,\n layout: this.root.ui.layout\n } as FacadeDeps\n );\n }\n getFacade<TData extends EntityViewModel>(key: string, id: Guid) {\n\n let _id : string = !Utilities.IsNil(id) ? '-' + id.toString() : '';\n const facadeId: string = `${key.toString()}${_id}`;\n //const facadeId: string = `${key.toString()}`;\n\n if (!this.facades.has(facadeId)) {\n const fac = this.buildFacade(key, id);\n // this.root.test.test(this.root.nav.location.path())\n this.facades.set(facadeId, fac);\n }\n return this.facades.get(facadeId)! as EntityFacade<TData>;\n }\n}\n\n","import { DataService } from '@dflat-core/web/core-data';\nimport { EntityViewModel } from '@dflat-core/web/core-model';\nimport {\n AuthService,\n BreadcrumbService,\n FilterService,\n LocalStoreManager,\n NotificationMqService,\n UserService,\n} from '@dflat-core/web/core-services';\n\nimport { ActionDataService } from '@dflat-core/web/system-data';\nimport { Location } from '@angular/common';\nimport { Inject, Injectable, InjectionToken } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ToastrService } from 'ngx-toastr';\nimport { TestService } from '../v2/services/test.service';\nimport { LayoutService } from '../v2/services/layout.service';\nimport { AlertService } from './alert.service';\nimport { ModalService } from './modal.service';\nimport { SelectorMapperServiceBase } from './selectorMapperBase.service';\nimport { SelectionService } from '../v2/services/selection.service';\nimport { ActionService } from './action.service';\nimport { EntityFacadeRegistryService } from '../v2/services/entity-facade-registry.service';\n\nexport interface NavigationDeps {\n route: ActivatedRoute;\n router: Router;\n location: Location;\n}\n\nexport interface UIDeps {\n layout: LayoutService;\n breadcrumb : BreadcrumbService;\n\n // services to instanciate when needed\n toastr: ToastrService;\n alert: AlertService;\n modal: ModalService;\n}\n\nexport interface DataDeps {\n data: DataService;\n filter: FilterService;\n selector: SelectorMapperServiceBase;\n}\n\nexport interface SecurityDeps {\n auth: AuthService;\n user: UserService;\n}\n\nexport interface RootDeps {\n nav: NavigationDeps;\n ui: UIDeps;\n data: DataDeps;\n security: SecurityDeps;\n selection: SelectionService<EntityViewModel>;\n readonly test : TestService;\n}\n\nexport const ROOT_DEPS = new InjectionToken<RootDeps>('ROOT_DEPS');\n\n@Injectable()\nexport class ApplicationService {\n \n // Core dependencies accessors via the injected ROOT_DEPS\n public get DataService() { return this.deps.data.data; }\n public get ActivatedRoute() { return this.deps.nav.route; }\n public get Router() { return this.deps.nav.router; }\n public get ToastrService() { return this.deps.ui.toastr; }\n public get Location() { return this.deps.nav.location; }\n public get ModalService() { return this.deps.ui.modal; }\n public get AlertService() { return this.deps.ui.alert; }\n public get AuthService() { return this.deps.security.auth; }\n public get FilterService() { return this.deps.data.filter; }\n public get UserService() { return this.deps.security.user; }\n public get LayoutService() { return this.deps.ui.layout; }\n public get SelectionService() { return this.deps.selection; }\n public get selectorMapperService() { return this.deps.data.selector; }\n public get BreadcrumbService() {\n return this.deps.ui.breadcrumb ;\n }\n\n public get TestService() {\n return this.deps.test;\n }\n\n public constructor(\n // Consolidated dependency bundle injection\n @Inject(ROOT_DEPS) public deps: RootDeps,\n\n // Inject services NOT in RootDeps\n public MQService: NotificationMqService,\n public LocalStorageService: LocalStoreManager,\n public ActionDataService: ActionDataService,\n public ExtendedActionService: ActionService,\n public EntityFacadeRegistryService: EntityFacadeRegistryService\n ) {}\n}\n\n","import { BehaviorSubject, Observable } from 'rxjs';\n\nimport { DataService } from '@dflat-core/web/core-data';\nimport { ActionDescriptor, ActionDisplay, EntityViewModel, FieldDescriptor, FilterDescriptor, FilterViewModel } from '@dflat-core/web/core-model';\nimport { AuthService, BreadcrumbService, NotificationMqService } from '@dflat-core/web/core-services';\n\nimport { ActionDataService } from '@dflat-core/web/system-data';\nimport { Location } from '@angular/common';\nimport { ComponentRef, Directive, EventEmitter, HostListener, OnDestroy, TemplateRef, Type } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { SelectionType } from '@swimlane/ngx-datatable';\nimport { ToastrService } from 'ngx-toastr';\nimport type { ActionExecutionContext, ActionResult } from '../v2/models/contexts/action-context';\nimport type { ActionService } from '../services/action.service';\nimport type { AlertService } from '../services/alert.service';\nimport { ApplicationService } from '../services/application.service';\nimport type { BaseComponent } from '../v2/components/base-component/base-component';\nimport type { FacadeAction } from '../v2/models/utilities/action-definition';\nimport { ModalService } from '../services/modal.service';\nimport type { NewEditorComponent } from '../v2/components/new-editor/new-editor.component';\n\nexport interface IBaseContext {\n loadFunction?: (filter: FilterViewModel) => Observable<any[]>;\n propertyCallback?: string;\n}\nexport interface IIsCancel {\n isCancel?: boolean;\n}\nexport interface IDialogOptions extends IBaseContext {\n title?: string;\n message?: string;\n okLabel?: string;\n cancelLabel?: string;\n enableDirtyCheck?: boolean,\n childComponentType?: Type<any>;\n initialViewModel?: any;\n subtitle?: string;\n callBackAction?: ((component?: IIsCancel | BaseComponent<any,any>) => void);\n initFn? : ((component? : BaseComponent<any,any> | NewEditorComponent<any>) => void);\n}\nexport interface IModalOptions {\n title?: string;\n message?: string;\n template?: Type<any> | TemplateRef<any> | ComponentRef<any> | any;\n}\n\nexport interface IMenuItem {\n title?: string;\n link?: string[];\n icon?: string;\n sublinks?: IMenuItem[];\n permissionKey?: string;\n}\n\nexport interface ILoginComponent {\n\n}\n\n@Directive()\nexport abstract class DflatBaseComponent implements OnDestroy {\n\n get authService() : AuthService {\n return this.app.AuthService;\n }\n get breadServ(): BreadcrumbService {\n // return this.app.BreadcrumbService;\n return this.app.BreadcrumbService;\n }\n\n // get route(): ActivatedRoute {\n // return this.app.ActivatedRoute;\n // }\n\n get router(): Router {\n return this.app.Router;\n }\n\n get mqService() : NotificationMqService {\n return this.app.MQService;\n }\n\n get dataService() : DataService {\n return this.app.DataService;\n }\n\n get actionService() : ActionDataService {\n return this.app.ActionDataService;\n }\n get extendedActionService() : ActionService {\n return this.app.ExtendedActionService;\n }\n\n get toastrService() : ToastrService {\n return this.app.ToastrService;\n }\n\n get location() : Location {\n return this.app.Location;\n }\n get modalService() : ModalService {\n return this.app.ModalService;\n }\n\n get alertService() : AlertService {\n return this.app.AlertService;\n }\n // get renderer() : Renderer2 {\n // return this.app.Renderer;\n // }\n\n constructor(\n protected app : ApplicationService\n )\n {\n }\n ngOnDestroy(): void {\n \n }\n\n @HostListener('window:beforeunload', ['$event'])\n unloadNotification($event: any) {\n if (this.isDirty()) {\n $event.returnValue = true;\n }\n this.ngOnDestroy(); \n }\n\n isDirty(): boolean {\n return false;\n }\n\n saveAll() {\n }\n loadData(){}\n\n}\n\nexport const downloadFile = function (fileInfo: { fileBlob: Blob, fileName: string }) {\n var a = document.createElement(\"a\");\n a.href = window.URL.createObjectURL(fileInfo.fileBlob);\n a.download = fileInfo.fileName;\n a.target = \"_self\";\n a.style.display = \"None\";\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n}\n\nexport class Action {\n name: string;\n title: string;\n selectionNeeded: boolean;\n multiSelection: boolean;\n icon: string;\n cssClass: string;\n disabled: boolean;\n isVisible: boolean = true;\n showTitle: boolean = false;\n \n // action: (((p:any) => void)) = () => { };\n action:FacadeAction;\n defaultAction: (((p:any) => void)) = () => { };\n getParameter: () => any = () => null;\n\n isActive: (() => boolean) = () => true;\n\n readonly disabledSubject = new BehaviorSubject<boolean>(true);\n readonly disabled$: Observable<boolean> = this.disabledSubject.asObservable();\n \n isExtendedAction: boolean = false;\n descriptor : ActionDescriptor;\n entityKey : string;\n \n permission?: string;\n \n constructor(\n name: string,\n title: string,\n showTitle : boolean,\n selectionNeeded: boolean,\n multiSelection: boolean,\n icon: string,\n cssClass: string,\n action?: (((p:any) => void)),\n permission?: string,\n isActive?: (() => boolean),\n isVisible: boolean = true,\n getParameter?: (() => any)\n ) {\n this.name = name;\n this.title = title;\n this.selectionNeeded = selectionNeeded;\n this.multiSelection = multiSelection;\n this.icon = icon;\n this.cssClass = cssClass;\n this.action = action || this.action;\n this.isActive = isActive || this.isActive;\n this.getParameter = getParameter || this.getParameter;\n this.permission = permission;\n this.showTitle = showTitle;\n this.isVisible = isVisible;\n this.defaultAction = this.action;\n }\n\n private checkSelection(data: any[]) {\n if (this.selectionNeeded) {\n if (!this.multiSelection) {\n return data.length === 1;\n }\n else {\n return data.length > 0;\n }\n }\n return true;\n }\n\n hide() { this.isVisible = false; }\n show() { this.isVisible = true; }\n canExecute(data: any[]) {\n\n var result = this.checkSelection(data) && this.isActive();\n this.disabled = !result;\n return result;\n }\n\n updateDisabled(val: boolean) {\n if(this.disabled != val ){\n this.disabled = val;\n this.disabledSubject.next(val);\n }\n }\n\n // execute() {\n // let p : any = null;\n \n // if (this.getParameter)\n // p = this.getParameter();\n\n // this.action(p);\n // }\n\n execute(context?: ActionExecutionContext): void | Observable<ActionResult<any>> {\n const param =\n context?.getParam\n ? context.getParam()\n : this.getParameter\n ? this.getParameter()\n : null;\n\n if (context && (context.isDefault ?? false))\n return this.defaultAction(param);\n \n return this.action(param); \n }\n\n\n\n}\n\nexport class ExtendedAction extends Action {\n\n constructor(entityKey : string, descriptor : ActionDescriptor) {\n\n super(descriptor.Name,\n descriptor.Label,\n descriptor.ActionDisplay == ActionDisplay.TextAndButton,\n false,\n false,\n descriptor.Icon,\n null,\n null,null,()=>true);\n\n this.isExtendedAction = true;\n\n this.descriptor = descriptor;\n this.entityKey = entityKey;\n }\n\n \n}\n//#endregion Action\n\nexport interface IActionComponent {\n actions: Array<Action>;\n handleActionSearchKeywords(keyword: string);\n toggleFilterView(): void;\n refresh(): void;\n showHistory():void;\n}\n\nexport interface IBaseFilterComponent extends IActionComponent{\n isModal: boolean;\n isFilterVisible: boolean;\n HasFilter: boolean;\n\n clearbreadcrumbOnDispose: boolean;\n isPropertyPanelVisible: boolean;\n selectionType: SelectionType;\n filter: FilterViewModel;\n forceFilter: boolean;\n showFilterButton: boolean;\n\n isFilterPanelVisible: boolean;\n applyFilterParameters: boolean;\n}\n\n//#region IFilterComponent\nexport interface IFilterComponent extends IBaseFilterComponent {\n \n FilterDescriptors: FilterDescriptor[];\n DefaultFilter: FilterViewModel;\n FilterForm: UntypedFormGroup;\n \n \n onSearch: EventEmitter<any>;\n \n onSelect: EventEmitter<any>;\n \n \n Search(filter: any);\n actionsCard: Array<Action>;\n loadData();\n pageValueChanged(data: any): void;\n nextPage(data: any): void;\n lastPage(data: any): void;\n previousPage(data: any): void;\n firstPage(data: any): void;\n \n getStyle(data: any): string;\n getColumnStyle(data: any, propertyName : string): string;\n getCellStyle(row:EntityViewModel,column:string):string;\n getRowStateStyle(index,row):string;\n getHeaderStyle(colProperty : string):string;\n /**\n * return field corresponding to property (colunmName)\n * @param property : field descriptor propertyName\n */\n getField(property:string):FieldDescriptor;\n showOnToolTip(row:EntityViewModel,prop:string):any;\n isPropertyEditable(prop : string):boolean;\n isRowEditable(row: EntityViewModel):boolean;\n enableEdit(prop: string, row: EntityViewModel):boolean\n getEntityKey(): string;\n}\n\n\nexport interface IInputSelectorContext extends IBaseContext {\n selectionComponentType?: Type<any>;\n selectionViewModel?: any;\n selectionModalTitle?: string;\n creationComponentType?: Type<any>;\n creationViewModel?: any;\n creationModalTitle?: string;\n}\n\nexport class InputSelectorOptions {\n showSelectButton: boolean = true;\n clearable: boolean = true;\n disableBorder: boolean = false;\n disableArrow: boolean = false;\n\n}//\n\nexport enum ContextChoice {\n SELECT,\n ADD\n}\n\n\nexport class DefaultFilterComponent implements IBaseFilterComponent {\n isModal: boolean;\n clearbreadcrumbOnDispose: boolean;\n isFilterVisible: boolean;\n HasFilter: boolean;\n\n isPropertyPanelVisible: boolean;\n selectionType: SelectionType;\n filter: FilterViewModel;\n forceFilter: boolean;\n showFilterButton: boolean;\n actions: Action[];\n isFilterPanelVisible: boolean;\n applyFilterParameters: boolean;\n\n constructor() {\n this.clearbreadcrumbOnDispose = false;\n this.isModal = true;\n this.isPropertyPanelVisible = true;\n this.isFilterVisible = false;\n this.selectionType = SelectionType.single;\n this.forceFilter = true;\n this.showFilterButton = false;\n this.actions = null;\n this.isFilterPanelVisible = false;\n this.applyFilterParameters = false;\n\n }\n\n handleActionSearchKeywords(keyword: string) {}\n refresh(){}\n toggleFilterView(): void {};\n showHistory(): void {};\n}\n\nexport interface FieldDescriptorWithValue {\n field: FilterDescriptor;\n value: any;\n}\n\nexport interface IEntityViewModelKeys {\n IsValid : boolean,\n IsSelected : boolean,\n IsEditable: boolean,\n IsTheSame: boolean,\n HasWarning: boolean,\n HasError : boolean\n}\n\nexport enum MessageSeverity {\n Default,\n Info,\n Success,\n Error,\n Warn,\n Wait\n}\n\nexport enum ConfirmOptions\n{\n LEAVE = 0, // Annuler les modificatione nn cours\n STAY = 1, // Continuer à modifier (on fait rien)\n SAVE_LEAVE = 2 // On sauvegarde les modification en cours\n}","import { Utilities } from \"@dflat-core/web/core\";\nimport type { LogsComponent } from \"./components/logs/logs.component\";\nimport { Injectable } from \"@angular/core\";\n\n\n@Injectable()\nexport class LogService {\n\n \n constructor(){\n\n }\n \n splitData(item: any, logs : any [], logComponent: LogsComponent = null): void {\n\n let logSplit = [' ',' ',' ',' ']; \n let currentLog: any = {content:'', class:''};\n if (item.indexOf(\"\\t\"+'INFO'+\"\\t\") > -1 || item.indexOf(\"\\t\"+'DATA'+\"\\t\") > -1 || item.indexOf(\"\\t\"+'ERROR'+\"\\t\") > -1 || item.indexOf(\"\\t\"+'WARNING'+\"\\t\") > -1) {\n\n logSplit[0] = item.split(\"\\t\")[0];\n logSplit[1] = item.split(\"\\t\")[1];\n logSplit[2] = item.split(\"\\t\")[2];\n\n if (item.indexOf(\"[\") > -1 ) {\n logSplit[3] = item.split(\"\\t\")[3]; \n }\n else {\n logSplit[3] = item.split(\"\\t\")[3]; \n }\n \n currentLog = {content: logSplit, class: Utilities.getLogClass(logSplit.toString())};\n logs.push(currentLog);\n\n } else {\n logs[logs.length-1].content[3] += \"\\n\" + item.trimLeft();\n \n }\n\n if (! Utilities.IsNil(logComponent) && logComponent.hasFilter)\n logComponent.updateFilter(currentLog);\n\n }\n \n}","import { Utilities } from '@dflat-core/web/core';\nimport { ActionDescriptor, Notification, RunActionContext } from '@dflat-core/web/core-model';\nimport { NotificationMqService } from '@dflat-core/web/core-services';\nimport { downloadFile, IDialogOptions } from '../model/model';\nimport type { LogsComponent } from '../components/logs/logs.component';\nimport { ModalService } from './modal.service';\nimport { ActionDataService, FileDataService } from '@dflat-core/web/system-data';\nimport { SystemEntityKeys } from '@dflat-core/web/system-root';\nimport { Inject, Injectable, Type } from '@angular/core';\nimport { Guid } from 'guid-typescript';\nimport { BsModalRef, ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { LogService } from '../log.service';\nimport type { ExtendedActionComponent } from '../components/actions/extended-action/extended-action.component';\nimport { EXTENDED_ACTION_COMPONENT } from '../modals/dialog-component.tokens';\n\n\n\n@Injectable()\nexport class ActionService {\n\n public isLoadingChanged : BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n _isLoading = this.isLoadingChanged.asObservable();\n logsComponent?: LogsComponent;\n\n constructor(\n private modalService: ModalService,\n private actionDataService: ActionDataService,\n private mqService: NotificationMqService,\n private fileService : FileDataService,\n private logService: LogService,\n @Inject(EXTENDED_ACTION_COMPONENT) private extendedActionComponentType: Type<ExtendedActionComponent>\n ) {\n \n this.guid = undefined;\n\n }\n\n guid: Guid;\n fileId : number = -1;\n firstModalRef: BsModalRef | undefined; \n entityNotificationSubscription: Subscription | undefined;\n requestNotificationSubscription: Subscription | undefined;\n logmodal : BsModalRef | undefined;\n \n \n public setIsLoading(value: boolean) { \n this.isLoadingChanged.next(value);\n\n }\n \n executeExtendedAction( actionDescriptor: ActionDescriptor, entityKey: string, entityIds: number[] )\n {\n this.guid = Guid.create();\n let context: RunActionContext = {};\n context.Action = actionDescriptor;\n context.EntityKey = entityKey;\n context.EntityIds = entityIds;\n context.FormValue = <any>{};\n context.CorrelationId = this.guid.toString()\n\n let dialogOptions: IDialogOptions = {\n childComponentType: this.extendedActionComponentType,\n initialViewModel: { RunContext: context },\n callBackAction: (component: ExtendedActionComponent) => {\n if (!component.isCancel) {\n this.executeExtendedActionCallBack(component);\n }\n },\n title: `Execution de : ${actionDescriptor.Label}`,\n loadFunction: undefined,\n okLabel: 'Executer',\n cancelLabel: 'Annuler',\n };\n\n this.firstModalRef = this.modalService.openComponentCustomModal( {}, dialogOptions, true );\n }\n executeExtendedActionCallBack( component: ExtendedActionComponent )\n {\n // Si le RunContext n'est pas défini, on ne fait rien.\n if ( Utilities.IsNil(component.RunContext) )\n return;\n\n // Dans le cas où on a un fichier posté dans le formulaire, on l'upload au controller pour récupérér un FileId.\n // puis on lance l'action \n if (!Utilities.IsNil(component.RunContext.File))\n {\n this.actionDataService\n .uploadFile(component.RunContext.File, this.guid.toString(), component.RunContext.EntityKey,component.RunContext.EntityIds[0])\n .subscribe((res) => {\n this.actionDataService.run(component.RunContext)\n .subscribe({\n next: (res) => {\n \n if ( ! Utilities.IsNil(res.FileId))\n this.fileId = res.FileId;\n\n component.RunContext = res;\n this.subscribeRequestNotification(component);\n this.subscribeEntityNotification(component);\n this.openLogModal(component);\n },\n error: () => {},\n complete: () => {\n },\n });\n });\n }\n else {\n \n this.fileId = undefined;\n this.actionDataService.run(component.RunContext)\n .subscribe({\n next: (res) => {\n component.RunContext = res;\n this.subscribeRequestNotification(component);\n this.subscribeEntityNotification(component);\n this.openLogModal(component);\n },\n error: () => {},\n complete: () => {\n },\n });\n }\n }\n\n\n logs : any[] = [];\n openLogModal(component : ExtendedActionComponent) {\n this.logs = [];\n let options: ModalOptions = new ModalOptions() ;\n options.class = 'modal-xlg'\n let dialogOptions: IDialogOptions = {\n childComponentType: this.extendedActionComponentType,\n initialViewModel: {displayLogTab : true, logs : this.logs},\n callBackAction: (component: ExtendedActionComponent) => {\n if(!component.isCancel)\n this.unsubscribeNotificationSubscriptions()\n },\n title: `Traitement de la demande ${component.RunContext.RequestId}`\n\n };\n\n this.logmodal = this.modalService.openComponentCustomModal( options, dialogOptions, false);\n }\n\n\n\n handleNotification( notif: Notification, component: ExtendedActionComponent ) {\n// this.logs.push({content: notif.content,class: Utilities.getLogClass(notif.content)});\n \n this.logService.splitData(notif.content, this.logs, this.logsComponent); \n component.scrollToBottom();\n }\n\n subscribeEntityNotification(component: ExtendedActionComponent) {\n\n this.entityNotificationSubscription = this.mqService\n .of(this.guid.toString())\n .subscribe((notif) => {\n this.handleNotification(notif, component);\n });\n }\n subscribeRequestNotification(component: ExtendedActionComponent) {\n\n this.requestNotificationSubscription =\n this.mqService.of(`${Utilities.GetChannel(SystemEntityKeys.Request)}-${component.RunContext.RequestId}`).subscribe(notif => {\n\n let splits : string[] = notif.id.split(\" \",3);\n if( splits.length >= 2 ) {\n let requestId: string = splits[1];\n let state: string = splits[2];\n\n\n if ( state === '2' || state === '3') {\n\n if ( Utilities.IsNil(this.fileId))\n return;\n\n this.fileService.getFile(this.fileId).subscribe({\n next:(res) => {downloadFile(res)},\n error:() => {},\n complete:() => {\n // this.modalService.close(this.logmodal);\n },\n });\n }\n }\n\n });\n }\n\n\n unsubscribeNotificationSubscriptions() {\n if (this.entityNotificationSubscription)\n this.entityNotificationSubscription.unsubscribe();\n if (this.requestNotificationSubscription)\n this.requestNotificationSubscription.unsubscribe();\n }\n\n onDispose() {\n this.unsubscribeNotificationSubscriptions();\n }\n\n}\n","import { Injectable } from '@angular/core';\r\nimport {\r\n BehaviorSubject,\r\n filter,\r\n map,\r\n Observable,\r\n startWith,\r\n Subject\r\n} from 'rxjs';\r\n\r\nexport interface LayoutEntityPreferences {\r\n Preferences: LayoutPreferences,\r\n EntityKey: string,\r\n EnableHandling: boolean\r\n}\r\n\r\n/**\r\n * Interface defining the structure of layout preferences\r\n */\r\nexport interface LayoutPreferences {\r\n IsVerticalLayout: boolean;\r\n PropertyFlexGrow?: number;\r\n isFixed?: boolean;\r\n source?: 'default' | 'user' | 'fixed';\r\n}\r\n\r\nexport interface LayoutKey {\r\n entityKey: string;\r\n sectionKey?: string;\r\n}\r\n\r\nexport function layoutKeyToString(k: LayoutKey): string {\r\n return k.sectionKey\r\n ? `${k.entityKey}::${k.sectionKey}`\r\n : k.entityKey;\r\n}\r\n\r\n// Service responsible for managing layout preferences and panel resizing\r\n@Injectable()\r\nexport class LayoutService {\r\n // Key used for storing layout preferences in localStorage\r\n private readonly LAYOUT_PREFERENCES_KEY = '_layoutPreferences';\r\n\r\n // BehaviorSubject to handle layout preference updates\r\n private layoutPreferences$ = new BehaviorSubject<{ entityKey: string; preferences: LayoutPreferences; } | null>(null);\r\n\r\n // Map to store preferences for different entities\r\n private preferencesMap: Map<string, LayoutPreferences> = new Map();\r\n\r\n // Map to store fixed layout preferences (defined by facade/code)\r\n private fixedLayoutMap: Map<string, LayoutPreferences> = new Map();\r\n\r\n // Subject to notify subscribers of resize events\r\n private resizeSubject = new Subject<void>();\r\n resize$ = this.resizeSubject.asObservable();\r\n\r\n // Default layout preferences\r\n private _defaultPreferences: LayoutPreferences = { PropertyFlexGrow: 25, IsVerticalLayout: false };\r\n\r\n constructor() {\r\n this.loadPreferencesOnInit();\r\n }\r\n\r\n // Loads saved preferences from localStorage during initialization\r\n private loadPreferencesOnInit() {\r\n const storedData = localStorage.getItem(this.LAYOUT_PREFERENCES_KEY);\r\n if (storedData) {\r\n const parsedArray: [string, LayoutPreferences][] = JSON.parse(storedData);\r\n const parsedMap = new Map(parsedArray);\r\n this.preferencesMap = parsedMap;\r\n } else {\r\n this.preferencesMap = new Map();\r\n }\r\n }\r\n\r\n /**\r\n * Gets preferences for a specific entity with resolution logic:\r\n * Priority: Fixed Layout (facade defined) > User Layout (persisted) > Default Layout\r\n * @param entityKey Unique identifier for the entity\r\n * @returns Observable of LayoutPreferences\r\n */\r\n getPreferencesByEntityKey(id: string): Observable<LayoutPreferences> {\r\n return this.layoutPreferences$.pipe(\r\n filter((update) => !!update && update.entityKey === id),\r\n map((update) => update.preferences),\r\n startWith(this.resolveLayout(id))\r\n );\r\n }\r\n\r\n /**\r\n * Resolves layout preferences with priority: Fixed > User > Default\r\n * @param entityKey Unique identifier for the entity\r\n * @returns Resolved LayoutPreferences\r\n */\r\n private resolveLayout(entityKey: string): LayoutPreferences {\r\n const fixedLayout = this.fixedLayoutMap.get(entityKey);\r\n const userLayout = this.preferencesMap.get(entityKey);\r\n const defaultLayout = this.getDefaultPreferences();\r\n\r\n const resolved: LayoutPreferences = {\r\n IsVerticalLayout: fixedLayout?.IsVerticalLayout\r\n ?? userLayout?.IsVerticalLayout\r\n ?? defaultLayout.IsVerticalLayout,\r\n PropertyFlexGrow: fixedLayout?.PropertyFlexGrow\r\n ?? userLayout?.PropertyFlexGrow\r\n ?? defaultLayout.PropertyFlexGrow,\r\n isFixed: !!fixedLayout,\r\n source: fixedLayout ? 'fixed' : userLayout ? 'user' : 'default'\r\n };\r\n\r\n return resolved;\r\n }\r\n\r\n // Persists current preferences to localStorage\r\n saveLayoutPreferences() {\r\n localStorage.setItem(this.LAYOUT_PREFERENCES_KEY, JSON.stringify(Array.from(this.preferencesMap.entries())));\r\n }\r\n\r\n /**\r\n * Saves preferences for a specific entity\r\n * @param entityKey Unique identifier for the entity\r\n * @param preferences Layout preferences to save\r\n */\r\n savePreferences(id: string, preferences: LayoutPreferences) {\r\n this.preferencesMap.set(id, preferences);\r\n }\r\n\r\n /**\r\n * Sets fixed layout preferences (defined by facade/code, not persisted)\r\n * @param entityKey Unique identifier for the entity\r\n * @param preferences Fixed layout preferences\r\n */\r\n setFixedLayoutPreferences(entityKey: string, preferences: LayoutPreferences) {\r\n const fixedPrefs = { ...preferences, isFixed: true, source: 'fixed' as const };\r\n this.fixedLayoutMap.set(entityKey, fixedPrefs);\r\n // Notify subscribers of the change\r\n this.layoutPreferences$.next({ entityKey, preferences: fixedPrefs });\r\n }\r\n\r\n /**\r\n * Clears fixed layout preferences for an entity\r\n * @param entityKey Unique identifier for the entity\r\n */\r\n clearFixedLayoutPreference(entityKey: string) {\r\n this.fixedLayoutMap.delete(entityKey);\r\n // Re-resolve and notify with user or default preferences\r\n const resolved = this.resolveLayout(entityKey);\r\n this.layoutPreferences$.next({ entityKey, preferences: resolved });\r\n }\r\n\r\n /**\r\n * Gets the fixed layout preferences for an entity\r\n * @param entityKey Unique identifier for the entity\r\n * @returns Fixed layout preferences or undefined if not set\r\n */\r\n getFixedLayoutPreferences(entityKey: string): LayoutPreferences | undefined {\r\n return this.fixedLayoutMap.get(entityKey);\r\n }\r\n\r\n /**\r\n * Updates the vertical layout setting for an entity\r\n * @param entityKey Unique identifier for the entity\r\n * @param value New vertical layout value\r\n */\r\n setIsVerticalLayout(layoutKey: string, value: boolean) {\r\n const currentPreferences = this.preferencesMap.get(layoutKey) || this.getDefaultPreferences();\r\n const updatedPreferences = { ...currentPreferences, IsVerticalLayout: value };\r\n this.savePreferences(layoutKey, updatedPreferences);\r\n this.layoutPreferences$.next({ entityKey: layoutKey, preferences: updatedPreferences });\r\n }\r\n\r\n // /**\r\n // * Updates the property panel's flex grow value\r\n // * @param entityKey Unique identifier for the entity\r\n // * @param value New flex grow value\r\n // */\r\n // setPropertyEditorFlexGrow(id: string, value: number) {\r\n\r\n // }\r\n\r\n\r\n expandPropertyflexGrow(key : string,flexGrow : number) {\r\n const currentPreferences = this.preferencesMap.get(key) || this.getDefaultPreferences();\r\n const updatedPreferences = { ...currentPreferences, PropertyFlexGrow: flexGrow };\r\n \r\n this.savePreferences(key, updatedPreferences);\r\n this.layoutPreferences$.next({ entityKey: key, preferences: updatedPreferences });\r\n }\r\n\r\n /**\r\n * @returns default layout preferences\r\n */\r\n getDefaultPreferences(): LayoutPreferences {\r\n return this._defaultPreferences;\r\n }\r\n\r\n /**\r\n * Set default layout preferences\r\n * @param value Layout preferences to set as default\r\n */\r\n setDefaultPreferences(value: LayoutPreferences) {\r\n this._defaultPreferences = value;\r\n }\r\n\r\n /**\r\n * Stops the resizing operation and saves preferences\r\n * @param layoutKey Entity identifier\r\n * @param flexGrowValue Flex grow value to save\r\n */\r\n stopResizing(layoutKey: string, flexGrowValue?: number) {\r\n // If a flexGrow value is provided, save it to preferences\r\n if (flexGrowValue !== undefined) {\r\n const currentPreferences = this.preferencesMap.get(layoutKey) || this.getDefaultPreferences();\r\n const updatedPreferences = { ...currentPreferences, PropertyFlexGrow: flexGrowValue };\r\n this.preferencesMap.set(layoutKey, updatedPreferences);\r\n this.layoutPreferences$.next({ entityKey: layoutKey, preferences: updatedPreferences });\r\n }\r\n this.saveLayoutPreferences();\r\n }\r\n\r\n}\r\n","import { Observable } from 'rxjs';\n\nimport { nameof, Utilities } from '@dflat-core/web/core';\nimport { Type } from '@angular/core';\nimport { SelectionType } from '@swimlane/ngx-datatable';\n\nimport { EntityViewModel, FilterViewModel } from '@dflat-core/web/core-model';\nimport { BsModalRef, ModalOptions } from 'ngx-bootstrap/modal';\nimport type { BaseEditorComponent } from '../components/base-editor/base-editor.component';\nimport type { DflatBaseFilterComponent } from '../components/basefilter/basefilter.component';\nimport { DialogComponent, DialogComponentParameter } from '../modals/dialog/dialog.component';\nimport { ContextChoice, IDialogOptions, IInputSelectorContext, IIsCancel } from '../model/model';\nimport { BaseComponent } from '../v2/components/base-component/base-component';\nimport type { NewEditorComponent } from '../v2/components/new-editor/new-editor.component';\nimport { ModalService } from './modal.service';\n\nexport interface ModalConfig {\n showButtons? : boolean,\n canClose?: boolean,\n cancelLabel?: string,\n okLabel?: string,\n}\n\n\nexport abstract class SelectorMapperServiceBase {\n\n constructor(\n protected modalService: ModalService\n \n ) {\n\n }\n\n getInputSelectorContext(key: string, title: string, filter: FilterViewModel = null, params: any = null): IInputSelectorContext {\n let initialViewModel = {};\n\n initialViewModel[nameof((component: DflatBaseFilterComponent<any, any>) => component.actions)] = [];\n initialViewModel[nameof((component: DflatBaseFilterComponent<any, any>) => component.clearbreadcrumbOnDispose)] = false;\n initialViewModel[nameof((component: DflatBaseFilterComponent<any, any>) => component.isModal)] = true;\n initialViewModel[nameof((component: DflatBaseFilterComponent<any, any>) => component.ShowPropertyPanel)] = false;\n initialViewModel[nameof((component: DflatBaseFilterComponent<any, any>) => component.selectionType)] = SelectionType.single;\n initialViewModel[nameof((component: DflatBaseFilterComponent<any, any>) => component.applyFilterParameters)] = false;\n\n if(!Utilities.IsNil(filter))\n initialViewModel[nameof((component: DflatBaseFilterComponent<any, any>) => component.Filter)] = filter;\n\n const componentParams = this.getComponentParams(key, params);\n if(Utilities.IsNil(componentParams))\n return;\n const context: IInputSelectorContext = {\n selectionComponentType: componentParams.selectionCompType,\n selectionViewModel: initialViewModel,\n selectionModalTitle: componentParams.selectionModalTitle,\n creationComponentType: componentParams.creationComType,\n creationModalTitle: componentParams.creationModalTitle,\n loadFunction: componentParams.loadFunction,\n propertyCallback: nameof((component: DflatBaseFilterComponent<any, any>) => component.selected)\n }\n\n if ( ! Utilities.IsNil(title))\n context.selectionModalTitle= title;\n\n return context;\n }\n\n abstract getComponentParams(key: string, params?: any)\n : { selectionCompType: Type<any>, selectionModalTitle?: string, creationComType: Type<any>, creationModalTitle?: string, loadFunction: (filter: FilterViewModel) => Observable<any[]> } ;\n\n public getDialogOptions(context: IInputSelectorContext, choice: ContextChoice): IDialogOptions {\n\n let creationViewModel = {};\n creationViewModel[nameof((component: BaseEditorComponent<any>) => component.isModal)] = true;\n\n let componentoptions: IDialogOptions = {\n childComponentType: choice === ContextChoice.SELECT ? context.selectionComponentType : context.creationComponentType,\n initialViewModel: choice === ContextChoice.SELECT ? context.selectionViewModel : creationViewModel,\n title: choice === ContextChoice.SELECT ? context.selectionModalTitle : context.creationModalTitle,\n loadFunction: context.loadFunction,\n propertyCallback: context.propertyCallback,\n callBackAction: (component: BaseEditorComponent<any>) => {\n if ( component.handleDialogButtonClick !== undefined)\n component.handleDialogButtonClick(component.isCancel);\n }\n }\n\n return componentoptions;\n }\n\n\n openSelectionModal(modalEntityKey: string, modalTitle: string, filter: FilterViewModel) : Observable<any> {\n let context= this.getInputSelectorContext(modalEntityKey.toLowerCase(), modalTitle, filter);\n let options = this.getDialogOptions(context, ContextChoice.SELECT);\n return this.modalService.openComponentCustom({ class: 'modal-xlg' }, options, true);\n }\n\n openEditionModal<TData extends EntityViewModel>(modalEntityKey: string, modalTitle: string, dataInit: TData = undefined,\n callBackAction: ((component?: BaseEditorComponent<TData>) => void) = undefined,\n forceDataInit : boolean = false,\n modalConfig : ModalOptions = {}\n )\n : Observable<BaseEditorComponent<TData>>\n {\n let context= this.getInputSelectorContext(modalEntityKey.toLowerCase(), modalTitle);\n let options = this.getDialogOptions(context, ContextChoice.ADD);\n options.title = modalTitle;\n options.cancelLabel = \"Annuler\";\n options.okLabel = \"Sauvegarder\";\n options.initialViewModel[nameof((component: BaseEditorComponent<TData>) => component.isModal)] = true;\n options.initialViewModel[nameof((component: BaseEditorComponent<TData>) => component.showButtons)] = false;\n\n if ( dataInit !== undefined && dataInit.Id > 0 ) {\n options.title = options.title ?? 'Edition';\n if(forceDataInit){\n\n options.initialViewModel[nameof((component: BaseEditorComponent<TData>) => component.entityViewModel)] = {ViewModel : dataInit };\n options.initialViewModel[nameof((component: BaseEditorComponent<TData>) => component.loadEntityViewModelOnInit)] = false;\n }\n else\n options.initialViewModel[nameof((component: BaseEditorComponent<TData>) => component.id)] = dataInit.Id;\n\n }\n else if (dataInit !== undefined) {\n options.initialViewModel[nameof((component: BaseEditorComponent<TData>) => component.loadEntityViewModelOnInit)] = false;\n options.initialViewModel[nameof((component: BaseEditorComponent<TData>) => component.entityViewModel)] = { ViewModel : dataInit };\n }\n if (callBackAction !== undefined ) {\n options.callBackAction = callBackAction;\n }\n\n let modale: BsModalRef = this.modalService.openComponentCustomModal(modalConfig, options, true);\n let editor : BaseEditorComponent<TData> = modale.content.componentRef.instance;\n return editor.onClosedDialog;\n\n\n }\n\n openSelectorModal<TData,TFilter>(\n modalEntityKey: string,\n modalTitle: string,\n filter: FilterViewModel,\n initFn? : (component: BaseComponent<TData, TFilter>) => void,\n modalOptions: ModalOptions = {},\n modalConfig: ModalConfig = {}\n ) : Observable<TData[]> {\n let context= this.getInputSelectorContext(modalEntityKey.toLowerCase(), modalTitle, filter);\n const earlyDefaultInit = (component: BaseComponent<TData, any>) => {\n component.IsTheMainComponent = false;\n component.facade?.filter.setApplyFilterUrl(false);\n };\n\n const defaultInit = (component: BaseComponent<TData, any>) => {\n component.facade.layout.setIsMainComponent(false);\n component.facade.actions.clearActions();\n component.facade.layout.disablePropertyPanel();\n component.facade.filter.setApplyFilterUrl(false);\n\n if ( ! Utilities.IsNil(filter) )\n component.facade.config.addAlterDefaultFilterFunction((f) => {return filter;});\n };\n\n const initComponentFn = (component : BaseComponent<any,any>) => {\n earlyDefaultInit(component);\n\n Promise.resolve().then(() => {\n defaultInit(component);\n if(initFn)\n initFn(component);\n });\n }\n\n const dialogOptions: IDialogOptions = {\n childComponentType: context.selectionComponentType,\n title: context.selectionModalTitle,\n initFn: initComponentFn,\n // callBackAction : callback\n };\n\n let _modalOptions : ModalOptions = { class: 'modal-xlg',...modalOptions };\n let _modalConfig : ModalConfig = { canClose: true,showButtons : true,...modalConfig };\n\n\n let modal = this.getSelectorModal(_modalOptions, dialogOptions, _modalConfig);\n return modal.content.onClose;\n\n }\n\n openComponentModal<TData, TFilter>(\n selectionTitle?: string,\n selectionComponent?: Type<any>,// BaseComponent<any,any>,\n initFn? : (component: BaseComponent<TData, TFilter>) => void,\n callback?: (component: IIsCancel | BaseComponent<TData, TFilter>) => void,\n modalOptions: ModalOptions = {},\n modalConfig: ModalConfig = {}\n ): Observable<any> {\n\n const earlyDefaultInit = (component: BaseComponent<TData, any>) => {\n component.IsTheMainComponent = false;\n component.facade?.filter.setApplyFilterUrl(false);\n };\n\n const defaultInit = (component: BaseComponent<TData, any>) => {\n component.facade.layout.setIsMainComponent(false);\n component.facade.actions.clearActions();\n component.facade.layout.disablePropertyPanel();\n component.facade.filter.setApplyFilterUrl(false);\n };\n\n const initComponentFn = (component : BaseComponent<any,any>) => {\n earlyDefaultInit(component);\n\n Promise.resolve().then(() => {\n defaultInit(component);\n if (initFn)\n initFn(component);\n });\n }\n\n const dialogOptions: IDialogOptions = {\n childComponentType: selectionComponent,\n title: selectionTitle,\n initFn: initComponentFn,\n callBackAction : callback,\n okLabel : modalConfig.okLabel ?? 'Valider',\n cancelLabel : modalConfig.cancelLabel ?? 'Annuler'\n };\n\n let _modalOptions : ModalOptions = { class: 'modal-xlg',...modalOptions };\n let _modalConfig : ModalConfig = { canClose: true,showButtons : true,...modalConfig };\n\n\n let modal = this.getSelectorModal(_modalOptions, dialogOptions, _modalConfig);\n return modal.content.onClose;\n\n }\n\n openEditorModal<TData extends EntityViewModel>(\n creationTitle?: string,\n creationComponent?: Type<any>,\n initFn?: (comp: NewEditorComponent<TData>) => void,\n // callback?: (comp: NewEditorComponent<TData>) => void,\n modalConfig: ModalOptions = {}\n ): Observable<NewEditorComponent<TData>> {\n\n\n const defaultInit = (component: NewEditorComponent<any>) => {\n component.facade.layout.setIsMainComponent(false);\n component.facade.actions.clearActions();\n };\n\n const initComponentFn = (component : NewEditorComponent<any>) => {\n component.IsTheMainComponent = false;\n\n Promise.resolve().then(() => {\n defaultInit(component);\n if (initFn)\n initFn(component);\n });\n }\n\n const dialogOptions: IDialogOptions = {\n title: creationTitle,\n childComponentType: creationComponent,\n initFn : initComponentFn,\n cancelLabel : \"Annuler\",\n okLabel : \"Sauvegarder\"\n };\n\n\n let modale: BsModalRef = this.getSelectorModal(modalConfig,dialogOptions,{showButtons : true});\n let editor : NewEditorComponent<TData> = modale.content.componentRef.instance;\n return editor.onClosedDialog;\n }\n\n\n getSelectorModal(\n modalOptions?: ModalOptions<DialogComponentParameter>, \n dialogOptions?: IDialogOptions,\n modalConfig? : ModalConfig\n ): BsModalRef{\n\n // Initialisation du paramètre du composant intégré dans la modale\n let initialState : DialogComponentParameter = new DialogComponentParameter();\n initialState.dialogOptions = dialogOptions;\n initialState.showButtons = modalConfig.showButtons;\n initialState.canClose = modalConfig.canClose;\n modalOptions.initialState = initialState;\n\n // Affichage de la modale\n const modal = this.modalService.modalService.show(DialogComponent, modalOptions);\n return modal;\n }\n\n}\n","import { EntityViewModel } from '@dflat-core/web/core-model';\n\nimport { Injectable, Type } from '@angular/core';\nimport { BsModalRef, BsModalService, ModalOptions } from 'ngx-bootstrap/modal';\nimport { Observable } from 'rxjs';\nimport { DialogComponentParameter, DialogComponent } from '../../modals/dialog/dialog.component';\nimport { IDialogOptions, IIsCancel } from '../../model/model';\nimport { ModalConfig } from '../../services/selectorMapperBase.service';\nimport { BaseComponent } from '../components/base-component/base-component';\nimport type { NewEditorComponent } from '../components/new-editor/new-editor.component';\n\n@Injectable()\nexport class FacadeModalService {\n constructor(\n private modalService: BsModalService,\n ) {}\n\n openSelectorModal<TData, TFilter>(\n selectionTitle?: string,\n selectionComponent?: Type<any>,\n initFn? : (component: BaseComponent<TData, TFilter> | NewEditorComponent<TData>) => void,\n modalOptions: ModalOptions = {},\n modalConfig: ModalConfig = {}\n ): Observable<TData[]> {\n\n\n const defaultInit = (component: BaseComponent<TData, TFilter> | NewEditorComponent<TData> ) => {\n component.facade.layout.setIsMainComponent(false);\n component.facade.actions.clearActions();\n component.facade.layout.setFixedLayout({IsVerticalLayout : false})\n component.facade.layout.disablePropertyPanel();\n component.facade.filter.setApplyFilterUrl(false);\n };\n\n const initComponentFn = (component: BaseComponent<TData,TFilter> | NewEditorComponent<TData>) => {\n Promise.resolve().then(() => {\n defaultInit(component);\n if (initFn) {\n initFn(component);\n }\n });\n }\n\n const dialogOptions: IDialogOptions = {\n childComponentType: selectionComponent,\n title: selectionTitle,\n initFn: initComponentFn,\n };\n\n let _modalOptions : ModalOptions = { class: 'modal-xlg',...modalOptions };\n let _modalConfig : ModalConfig = { canClose: true,showButtons : true,...modalConfig };\n\n\n let modal = this.getSelectorModal(_modalOptions, dialogOptions, _modalConfig);\n return modal.content.onClose;\n\n }\n\n openComponentModal<TData, TFilter>(\n selectionTitle?: string,\n selectionComponent?: Type<any>,// BaseComponent<any,any>,\n initFn? : (component: BaseComponent<TData, TFilter> | NewEditorComponent<TData>) => void,\n callback?: (component: IIsCancel | BaseComponent<TData, TFilter>) => void,\n modalOptions: ModalOptions = {},\n modalConfig: ModalConfig = {}\n ): Observable<any> {\n\n const earlyDefaultInit = (component: BaseComponent<TData, any> | NewEditorComponent<TData>) => {\n component.IsTheMainComponent = false;\n component.facade?.filter.setApplyFilterUrl(false);\n };\n\n const defaultInit = (component: BaseComponent<TData, any> | NewEditorComponent<TData>) => {\n component.facade.layout.setIsMainComponent(false);\n component.facade.actions.clearActions();\n component.facade.filter.setApplyFilterUrl(false);\n };\n\n const initComponentFn = (component : BaseComponent<any,any>| NewEditorComponent<TData>) => {\n earlyDefaultInit(component);\n\n Promise.resolve().then(() => {\n defaultInit(component);\n if (initFn) {\n initFn(component);\n }\n });\n }\n\n const dialogOptions: IDialogOptions = {\n childComponentType: selectionComponent,\n title: selectionTitle,\n initFn: initComponentFn,\n callBackAction : callback,\n okLabel : modalConfig.okLabel ?? 'Valider',\n cancelLabel : modalConfig.cancelLabel ?? 'Annuler'\n };\n\n let _modalOptions : ModalOptions = { class: 'modal-xlg',...modalOptions };\n let _modalConfig : ModalConfig = { canClose: true,showButtons : true,...modalConfig };\n\n\n let modal = this.getSelectorModal(_modalOptions, dialogOptions, _modalConfig);\n return modal.content.onClose;\n\n }\n\n openEditorModal<TData extends EntityViewModel>(\n creationTitle?: string,\n creationComponent?: Type<any>,\n initFn?: (comp: NewEditorComponent<TData>) => void,\n // callback?: (comp: NewEditorComponent<TData>) => void,\n modalConfig: ModalOptions = {}\n ): Observable<NewEditorComponent<TData>> {\n\n\n const defaultInit = (component: NewEditorComponent<any>) => {\n component.facade.layout.setIsMainComponent(false);\n component.facade.actions.clearActions();\n };\n\n const initComponentFn = (component : NewEditorComponent<any>) => {\n component.IsTheMainComponent = false;\n\n Promise.resolve().then(() => {\n defaultInit(component);\n if (initFn) {\n initFn(component);\n }\n });\n }\n\n const dialogOptions: IDialogOptions = {\n title: creationTitle,\n childComponentType: creationComponent,\n initFn : initComponentFn,\n cancelLabel : \"Annuler\",\n okLabel : \"Sauvegarder\"\n };\n\n\n let modale: BsModalRef = this.getSelectorModal(modalConfig,dialogOptions,{showButtons : true});\n let editor : NewEditorComponent<TData> = modale.content.componentRef.instance;\n return editor.onClosedDialog;\n }\n\n\n getSelectorModal(\n modalOptions?: ModalOptions<DialogComponentParameter>, \n dialogOptions?: IDialogOptions,\n modalConfig? : ModalConfig\n ): BsModalRef{\n\n // Initialisation du paramètre du composant intégré dans la modale\n let initialState : DialogComponentParameter = new DialogComponentParameter();\n initialState.dialogOptions = dialogOptions;\n initialState.showButtons = modalConfig.showButtons;\n initialState.canClose = modalConfig.canClose;\n modalOptions.initialState = initialState;\n\n // Affichage de la modale\n const modal = this.modalService.show(DialogComponent, modalOptions);\n return modal;\n }\n}\n","import { Subscription } from 'rxjs';\nimport { debounceTime, switchMap } from 'rxjs/operators';\n\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { EntityViewModel, FilterViewModel } from '@dflat-core/web/core-model';\nimport { ContextChoice, IDialogOptions, IInputSelectorContext, InputSelectorOptions } from '../../model/model';\nimport { ModalService } from '../../services/modal.service';\nimport { SelectorMapperServiceBase } from '../../services/selectorMapperBase.service';\nimport type { BaseEditorComponent } from '../base-editor/base-editor.component';\nimport { FacadeModalService } from '../../v2/services/facade-modal.service';\n\n@Component({\n selector: 'alg-input-selector',\n templateUrl: \"./input-selector.component.html\",\n styleUrls: ['./input-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputSelectorComponent),\n multi: true\n }\n ],\n standalone: false\n})\n\n\nexport class InputSelectorComponent implements ControlValueAccessor, AfterViewInit {\n\n // @ViewChild(NgSelectComponent, { static: true }) selectInput: NgSelectComponent;\n\n @Input(\"modalTitle\") modalTitle: string = \"\";\n @Input(\"modalPropertyValue\") modalPropertyValue: string = \"\";\n @Input(\"modalPropertyName\") modalPropertyName: string = \"\";\n @Input(\"modalEntityKey\") modalEntityKey: string = \"\";\n @Input(\"params\") params: any = {};\n @Input() supplierId: number = null;\n @Input(\"options\") options: InputSelectorOptions = new InputSelectorOptions();\n @Output() componentCallback: EventEmitter<any> = new EventEmitter();\n @Output() change: EventEmitter<any> = new EventEmitter();\n\n onChange: any = () => { };\n onTouched: any = () => { };\n productId:number;\n\n subscription: Subscription;\n items = [];\n typeahead = new EventEmitter<string>();\n _options: IDialogOptions = {};\n _context: IInputSelectorContext = {};\n\n constructor(private modalService: ModalService, private cd: ChangeDetectorRef, \n private selectorMapperService: SelectorMapperServiceBase,\n private selector: FacadeModalService) { \n }\n\n\n \n ngAfterViewInit(): void {\n this._context = this.selectorMapperService.getInputSelectorContext(this.modalEntityKey.toLowerCase(), this.modalTitle, this.params);\n\n this.typeahead\n .pipe(\n debounceTime(200),\n switchMap(keywords => {\n let parameter: FilterViewModel = {};\n parameter.Keywords = keywords;\n return this._context.loadFunction(parameter);\n }\n )\n )\n .subscribe(items => { \n this.items = items;\n this.cd.markForCheck();\n }, (err) => {\n console.log('error', err);\n this.items = [];\n });\n }\n disabled: boolean = false;\n private _readonly: boolean = false;\n get readonly() {\n return this._readonly;\n }\n @Input(\"readonly\")\n set readonly(val) {\n this._readonly = val;\n\n \n this.disabled = this._readonly;\n }\n\n private _value: string;\n get value() {\n return this._value;\n }\n @Input(\"value\")\n set value(val) {\n if (this._value !== val) {\n this._value = val\n this.onChange(val)\n this.onTouched(val)\n }\n }\n\n writeValue(obj: any): void {\n this._value = obj;\n this.cd.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n // TODO\n this.cd.markForCheck();\n }\n\n openSelectionModal() {\n this._options = this.selectorMapperService.getDialogOptions(this._context, ContextChoice.SELECT);\n let modal = this.selector.openSelectorModal<EntityViewModel,FilterViewModel>(\n this._context.selectionModalTitle,\n this._options.childComponentType,\n (component) => {\n component.facade.config.addAlterDefaultFilterFunction((_)=>{\n let filter: any = {\n supplierId :this.supplierId\n };\n return filter;\n });\n }\n \n );\n let subscription = modal.subscribe(res => {\n if (res && res.length > 0) {\n this.value = res[0][this.modalPropertyValue];\n this.onChanged(res[0]);\n } \n \n subscription.unsubscribe();\n })\n }\n\n createNewItem(searchTerm: string) {\n this._options = this.selectorMapperService.getDialogOptions(this._context, ContextChoice.ADD);\n if (this._options.childComponentType) {\n this._options.initialViewModel.loadEntityViewModelOnInit = false;\n this._options.initialViewModel.entityViewModel = {};\n this._options.initialViewModel.entityViewModel.ViewModel = {};\n this._options.initialViewModel.entityViewModel.ViewModel[this.modalPropertyName] = searchTerm;\n this._options.initialViewModel.callBackAction = (isCancel) => {\n if (!isCancel) {\n \n let result = (<BaseEditorComponent<any>>modal.content.componentRef.instance).entityViewModel.ViewModel;\n this.value = result[this.modalPropertyName];\n this.onChanged(result);\n }\n this.modalService.close(modal);\n };\n let modal = this.modalService.openComponentSimple({}, this._options, false); \n }\n else\n {\n alert(\"Cette fonctionnalité n'a pas été implémentée !\");\n }\n }\n\n onChanged(event: any) {\n this.change.emit(event);\n }\n onClear(event: any) {\n console.log(event);\n }\n}\n","\r\n <div class=\"pull-left input-select-default\" [class.with-button]=\"this.options.showSelectButton\" >\r\n <ng-select \r\n search-enabled=\"true\"\r\n [class.disable-arrow] = \"this.options.disableArrow\"\r\n [class.disable-border] = \"this.options.disableBorder\"\r\n (change)=\"this.onChanged($event)\" \r\n appendTo=\"body\"\r\n [multiple]=\"false\" \r\n [items]=\"items\" \r\n bindValue=\"{{modalPropertyValue}}\" \r\n bindLabel=\"{{modalPropertyName}}\" \r\n [(ngModel)]=\"value\" \r\n [typeahead]=\"typeahead\" \r\n [clearable]=\"true\"\r\n (clear)=\"this.onClear($event)\" \r\n [selectOnTab]=\"true\"\r\n [disabled]=\"disabled\"\r\n >\r\n\r\n <!-- <ng-template let-searchTerm=\"searchTerm\" #notFoundTmp>\r\n <button type=\"button\" class=\"btn action-btn btn-create-input-select\" data-toggle=\"tooltip\" title=\"Créer un nouvel élément\" (click)=\"createNewItem(searchTerm)\">\r\n <div class=\"pull-left action-icon\"><i class=\"fa fa-plus-square fa-lg\"></i></div>\r\n <div class=\"pull-left action-label\"><span>Créer</span></div>\r\n </button>\r\n </ng-template> -->\r\n <ng-template ng-footer-tmp let-searchTerm=\"searchTerm\">\r\n <button type=\"button\" class=\"btn action-btn btn-create-input-select\" data-toggle=\"tooltip\" title=\"Créer un nouvel élément\" (click)=\"createNewItem(searchTerm)\">\r\n <div class=\"pull-left action-icon\"><i class=\"fa fa-plus-square fa-lg\"></i></div>\r\n <div class=\"pull-left action-label\"><span>Créer</span></div>\r\n </button>\r\n <ng-container *ngIf=\"! this.options.showSelectButton\">\r\n <button type=\"button\" class=\"btn action-btn btn-create-input-select\" data-toggle=\"tooltip\" title=\"Rechercher un élément\" (click)=\"openSelectionModal()\">\r\n <div class=\"pull-left action-icon\"><i class=\"fa fa-search fa-lg\"></i></div>\r\n <div class=\"pull-left action-label\"><span>Rechercher</span></div>\r\n </button>\r\n </ng-container>\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n <ng-container *ngIf=\"this.options.showSelectButton\">\r\n <div class=\"input-group-btn pull-left\">\r\n <button class=\"btn btn-secondary btn-32 btn-input-select\" (click)=\"openSelectionModal()\" [disabled]=\"disabled\">\r\n <span class=\"fa fa-ellipsis-h\"></span>\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n","import { Component, Input, Output, EventEmitter, OnChanges } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\n\r\ninterface TreeNode {\r\n [key: string]: any;\r\n}\r\n\r\n@Component({\r\n selector: 'alg-input-tree-selector',\r\n templateUrl: './input-tree-selector.component.html',\r\n styleUrls: ['./input-tree-selector.component.css'],\r\n standalone: false\r\n})\r\nexport class InputTreeSelectorComponent implements OnChanges {\r\n @Input() items: TreeNode[] = [];\r\n @Input() bindLabel = 'label';\r\n @Input() bindValue = 'id';\r\n @Input() childrenKey = 'children';\r\n @Input() countKey = 'count';\r\n @Input() placeholder = 'Sélectionner';\r\n @Output() change = new EventEmitter<any>();\r\n onTouched: any = () => { };\r\n private _value: any;\r\n get value() {\r\n return this._value;\r\n }\r\n @Input(\"value\")\r\n set value(val) {\r\n if (this._value !== val){\r\n this._value = val\r\n this.onChange(val)\r\n }\r\n }\r\n flattened: any[] = [];\r\n\r\n ngOnChanges() {\r\n this.flattened = this.flattenTree(this.items);\r\n }\r\n\r\n flattenTree(nodes: TreeNode[], indent: number = 0): any[] {\r\n let flat: any[] = [];\r\n\r\n nodes.forEach(node => {\r\n flat.push({\r\n ...node,\r\n label: node[this.bindLabel],\r\n id: node[this.bindValue],\r\n indent,\r\n count: node[this.countKey] ?? 0\r\n });\r\n\r\n if (node[this.childrenKey]) {\r\n flat = flat.concat(this.flattenTree(node[this.childrenKey], indent + 1));\r\n }\r\n });\r\n\r\n return flat;\r\n }\r\n\r\n onChange(val: any) {\r\n this.change.emit(val);\r\n }\r\n\r\n}\r\n","<ng-select \r\n [items]=\"flattened\"\r\n bindLabel=\"label\"\r\n bindValue=\"id\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div [style.padding-left.px]=\"item.indent * 15\">\r\n {{ item.label }}\r\n <ng-container *ngIf=\"item.count > 0\">\r\n ({{ item.count }})\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n</ng-select>","import { Utilities } from '@dflat-core/web/core';\nimport { FieldEvent, FilterDescriptor, FilterType, TextZoneButtonEvent } from '@dflat-core/web/core-model';\n\nimport { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport moment from 'moment';\nimport { defineLocale } from 'ngx-bootstrap/chronos';\nimport { BsDatepickerConfig, BsLocaleService } from 'ngx-bootstrap/datepicker';\nimport { frLocale } from 'ngx-bootstrap/locale';\n\n@Component({\n selector: 'alg-dynamic-field',\n templateUrl: './dynamic-field.component.html',\n styleUrls: ['./dynamic-field.component.scss'],\n standalone: false\n})\nexport class DynamicFieldComponent implements OnChanges {\n @Input() field: FilterDescriptor;\n @Input() form: UntypedFormGroup;\n @Input() submitted: boolean = false;\n @Input() horizontal: boolean = false;\n @Input() showLabel: boolean = true;\n @Input() inputClass: string = 'form-control dynamic-field';\n @Output() propertyChanged: EventEmitter<FieldEvent> = new EventEmitter();\n @Output() textZoneButtonClicked: EventEmitter<TextZoneButtonEvent> = new EventEmitter();\n @Output() dropZone: EventEmitter<any> = new EventEmitter();\n \n @Output() radioButtonChanged: EventEmitter<any> = new EventEmitter();\n @ViewChild('horizSelect', {static: false}) horizSelect : any\n @Input() value: any;\n filterType = FilterType;\n bsConfig: Partial<BsDatepickerConfig> = new BsDatepickerConfig();\n //bsValue = new Date();\n locale = 'fr';\n\n uploadForm = new UntypedFormGroup({ file1: new UntypedFormControl() });\n get isValid() { return this.form.controls[this.field.DisplayMember].valid; }\n\n notlog: boolean = true;\n log(propname : string) : string{\n let str:string ='toto';\n if(this.notlog) {\n console.log(this.form.get(propname).errors);\n this.notlog = false;\n }\n return str;\n }\n constructor(private localeService: BsLocaleService) {\n\n //Setting DatePicker Configuration\n defineLocale('fr', frLocale);\n this.localeService.use('fr');\n this.bsConfig.containerClass = 'theme-blue';\n this.bsConfig.dateInputFormat = 'L';\n this.bsConfig.showWeekNumbers = true;\n }\n\n onValueChanged(event: Event) {\n let fieldEvent: FieldEvent = {\n Field : this.field,\n Event : event\n }\n this.propertyChanged.emit(fieldEvent);\n \n setTimeout(() => {\n this.form.markAsTouched();\n });\n }\n\n\n onBsValueChanged(event) {\n let fieldEvent: FieldEvent = {\n Field : this.field,\n Event : event\n }\n if(event)\n {\n this.form.get(this.field.PropertyName).setValue(event);\n }\n this.propertyChanged.emit(fieldEvent);\n }\n\n filedata: any = null;\n\nfileEvent(e) {\n this.filedata = e.target.files[0];\n let event: FieldEvent = {\n Field : this.field,\n Event : this.filedata\n }\n this.dropZone.emit(event??0);\n}\n\n\n /*\n DIRTY FIX Regarding timezone issues\n This method is used to override the value of Date inputs with a moment-format UTC value.\n This DOES NOT modify the value in the FormGroup, that already HAS THE CORRECT VALUE since the Date object is already representing a UTC value\n However, since the Date object is ALWAYS formatting the date to the current browser culture, the datepicker displays the local value instead of an UTC one.\n */\n getDateFormat(date: UntypedFormControl, format) {\n return moment.utc(date.value).format(format)\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // this.radioButtonChanged.emit();\n if (changes['field']) {\n if (this.field) {\n if (this.field.FilterType === FilterType.ComboBox ||this.field.FilterType === FilterType.Custom ||this.field.FilterType === FilterType.Date) {\n if (this.field.ReadOnly) {\n let control = this.form.get(this.field.PropertyName);\n control.disable();\n }\n }\n }\n }\n }\n\n isImgPathDefined(field: FilterDescriptor, val: any) {\n return field.DisplayImage && this.isDefined(val?.ImagePath)\n }\n\n isDefined(val: any) {\n return !Utilities.IsNil(val)\n }\n\n getRadioButtonId(propName : string, indexOfData : number)\n {\n return propName + \"-\" +indexOfData.toString();\n }\n\n onClick(field: FilterDescriptor)\n {\n let event: TextZoneButtonEvent = {\n Field : field,\n Value : this.form.get(field.PropertyName).value\n }\n this.textZoneButtonClicked.emit(event);\n }\n getRequiredIcon() {\n return `../../assets/images/star-of-life-solid.svg`;\n }\n\n}\n","<div [formGroup]=\"form\" class=\"field-container\">\r\n <ng-container *ngIf=\"field\">\r\n <div [hidden]=\"!!field.IsHidden\" [ngSwitch]=\"field.FilterType\">\r\n\r\n <div class=\"label-group\" *ngIf=\"showLabel\">\r\n <label *ngIf=\"(field.FilterType != filterType.CheckBox) && (field.FilterType != filterType.HorizComboBox)\" [htmlFor]=\"field.PropertyName\">{{ field.Label\r\n }}</label>\r\n <img *ngIf=\"field.Required\" class=\"required-icon\" [src]=\"this.getRequiredIcon()\" alt=\"obligatoire\">\r\n </div>\r\n <!--String Input-->\r\n <div *ngSwitchCase=\"filterType.String\" class=\"form-group\">\r\n\r\n <div>\r\n <input [class]=\"this.inputClass\" [formControlName]=\"field.PropertyName\" [id]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\" (change)=\"onValueChanged($event)\" [type]=\"field.InputType\" />\r\n </div>\r\n\r\n </div>\r\n\r\n <!--Number Input-->\r\n <div *ngSwitchCase=\"filterType.Integer\" class=\"form-group\">\r\n <div>\r\n <input [class]=\"this.inputClass\" [formControlName]=\"field.PropertyName\" [id]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\" (change)=\"onValueChanged($event)\" type=\"number\" />\r\n </div>\r\n </div>\r\n\r\n <!--ComboBox Input-->\r\n <div *ngSwitchCase=\"filterType.ComboBox\" class=\"form-group\">\r\n <div>\r\n <ng-select appendTo=\"body\" placeholder=\"Sélectionner {{ field.Label}}\"\r\n [formControlName]=\"field.PropertyName\" [id]=\"field.PropertyName\" [items]=\"field.Data\"\r\n [multiple]=\"field.MultipleSelection\" [hideSelected]=\"field.HideSelected\"\r\n bindValue=\"{{field.ValueMember}}\" [clearable]=\"field.IsClearable\"\r\n bindLabel=\"{{field.DisplayMember}}\" [selectOnTab]=\"true\" (change)=\"onValueChanged($event)\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- InputSelect -->\r\n <div *ngSwitchCase=\"this.filterType.Custom\" class=\"form-group input\">\r\n <alg-input-selector #inputSelector type=\"text\" (change)=\"onValueChanged($event)\"\r\n [id]=\"this.field.PropertyName\" [formControlName]=\"field.PropertyName\"\r\n [modalPropertyValue]=\"this.field.ModalPropertyValue\"\r\n [modalPropertyName]=\"this.field.ModalPropertyName\" [modalEntityKey]=\"this.field.ModalEntityKey\"\r\n [modalTitle]=\"this.field.ModalTitle\" [readonly]=\"this.field.ReadOnly\">\r\n </alg-input-selector>\r\n </div>\r\n <!-- TreeSelector -->\r\n <div *ngSwitchCase=\"this.filterType.TreeSelector\">\r\n <alg-input-tree-selector [items]=\"field.Data\" [id]=\"this.field.PropertyName\"\r\n [bindValue]=\"field.ValueMember\" [bindLabel]=\"field.DisplayMember\" [value]=\"value\"\r\n childrenKey=\"children\" countKey=\"childrenCount\"\r\n placeholder=\"{{field.Label}}\" (change)=\"onValueChanged($event)\">\r\n </alg-input-tree-selector>\r\n </div>\r\n \r\n <!-- TextWithbutton -->\r\n <ng-container *ngSwitchCase=\"this.filterType.TextWithButton\" class=\"form-group\">\r\n <div class=\"d-flex\">\r\n <div class=\"w-100 ml-15px\">\r\n <input type=\"text\" #textarea [name]=\"this.field.PropertyName\" class=\"form-control w-\"\r\n (change)=\"onValueChanged($event)\" [id]=\"this.field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\" [readonly]=\"this.field.ReadOnly\">\r\n </div>\r\n <div>\r\n <button class=\"btn btn-secondary btn-32 btn-input-select textButton\" (click)=\"onClick(field)\">\r\n <span class=\"fa fa-ellipsis-h\"></span>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--HorizComboBox Input-->\r\n <div *ngSwitchCase=\"filterType.HorizComboBox\" class=\"form-group\">\r\n <div>\r\n <ng-select appendTo=\"body\" class=\"horiz-combox-box\" placeholder=\"{{field.Label}}\"\r\n [formControlName]=\"field.PropertyName\" [id]=\"field.PropertyName\" [items]=\"field.Data\"\r\n [multiple]=\"field.MultipleSelection\" [hideSelected]=\"field.HideSelected\"\r\n bindValue=\"{{field.ValueMember}}\" bindLabel=\"{{field.DisplayMember}}\"\r\n (change)=\"onValueChanged($event)\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n\r\n <!--Boolean Input-->\r\n <div *ngSwitchCase=\"filterType.CheckBox\" class=\"form-group\">\r\n <label class=\"col-md-12\" [htmlFor]=\"field.PropertyName\">\r\n\r\n <input [formControlName]=\"field.PropertyName\" [id]=\"field.PropertyName\" [readonly]=\"field.ReadOnly\"\r\n type=\"checkbox\" (change)=\"onValueChanged($event)\">\r\n <span class=\"checkbox-label\">{{ field.Label }}</span>\r\n </label>\r\n </div>\r\n\r\n <!--Enum Input-->\r\n <div *ngSwitchCase=\"filterType.RadioButton\" class=\"form-group\">\r\n <div class=\"radio-button-container\">\r\n <form [formGroup]=\"form\" class=\"radio-buttons\">\r\n <div *ngFor=\"let data of field.Data; let indexOfData = index\" class=\"radio-button\">\r\n <input type=\"radio\" [formControlName]=\"field.PropertyName\"\r\n [id]=\"getRadioButtonId(field.PropertyName, indexOfData)\" [value]=\"indexOfData\"\r\n (change)=\"onValueChanged($event)\">\r\n <label class=\"radio-button-label\">{{data}}</label>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <!-- Text zone with button -->\r\n <div *ngSwitchCase=\"filterType.TextZoneWithButton\" class=\"form-group\">\r\n <div class=\"radio-button-container\">\r\n <div class=\"radio-button-container-title\">{{field.Label}}</div>\r\n <hr class=\"under-line\">\r\n\r\n <div class=\"text-zone-and-button\">\r\n <div class=\"text-zone-container\">\r\n <textarea type=\"text\" class=\"text-area\" spellcheck=\"false\"\r\n [formControlName]=\"field.ValueMember\" [id]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\" (change)=\"onValueChanged($event)\">\r\n </textarea>\r\n </div>\r\n <div class=\"feedback-and-button\">\r\n <div class=\"feedback\">\r\n <div class=\"feedback-green\" *ngIf=\"field.TextWithStyle.GreenText.length > 0\">\r\n {{field.TextWithStyle.GreenText}}\r\n </div>\r\n <div class=\"feedback-yellow\" *ngIf=\"field.TextWithStyle.YellowText.length > 0\">\r\n {{field.TextWithStyle.YellowText}}\r\n </div>\r\n <div class=\"feedback-red\" *ngIf=\"field.TextWithStyle.RedText.length > 0\">\r\n {{field.TextWithStyle.RedText}}\r\n </div>\r\n </div>\r\n <button type=\"button\" id=\"botton-compile\" class=\"btn btn-primary btn-flat pull-right button\"\r\n (click)=\"onClick(field)\">{{field.ButtonLabel}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--Date [bsValue]=\"bsValue\" -->\r\n <div *ngSwitchCase=\"filterType.Date\" class=\"form-group\">\r\n <div>\r\n\r\n <input type=\"text\" [class]=\"this.inputClass\" placeholder=\"Sélectionner une date\"\r\n [formControlName]=\"field.PropertyName\" [id]=\"field.PropertyName\" [bsConfig]=\"bsConfig\"\r\n bsDatepicker (bsValueChange)=\"onBsValueChanged($event)\" />\r\n </div>\r\n </div>\r\n\r\n <!-- Text input -->\r\n <div *ngSwitchCase=\"filterType.Text\" class=\"form-group\">\r\n <div>\r\n <textarea type=\"text\" rows=\"5\" [class]=\"this.inputClass\" [formControlName]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\" (change)=\"onValueChanged($event)\" [id]=\"field.PropertyName\">\r\n </textarea>\r\n </div>\r\n </div>\r\n\r\n <!-- DropFileZone -->\r\n <div *ngSwitchCase=\"filterType.DropFileZone\" class=\"form-group ml-4\">\r\n <fieldset>\r\n <input [id]=\"field.PropertyName\" (change)=\"onValueChanged($event)\" type=\"file\" class=\"ml--3\"\r\n (change)=\"fileEvent($event)\" />\r\n </fieldset>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!horizontal && !this.form.controls[field.PropertyName]?.valid\">\r\n <div class=\"validation-message\">\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('required')\">\r\n Ce champ est obligatoire\r\n </ng-container>\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('min')\">\r\n Minimum: {{field.FieldValidators.MinValue}}\r\n </ng-container>\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('max')\">\r\n Maximum: {{field.FieldValidators.MaxValue}}\r\n </ng-container>\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('maxLength')\">\r\n Longueur maximale: {{field.FieldValidators.MaxLength}} caractères\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </ng-container>\r\n</div>\r\n","import { EnvironmentBase } from '@dflat-core/web/core';\nimport { ColumnDescriptor } from '@dflat-core/web/core-model';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport {Location} from '@angular/common';\n\n@Injectable()\nexport class ImageService {\n [x: string]: any;\n\n \n\n constructor(public env : EnvironmentBase, private router: Router){\n }\n\n getEnumImageUrl(obj : object, enumValue : any) : string {\n let url: string;\n obj[enumValue]\n return this.getImageUrl(url);\n }\n\n getImageUrl(imageUrl : string) : string\n {\n if (imageUrl.startsWith('http',0) || imageUrl.startsWith('https',0))\n return imageUrl;\n\n let baseUrl = window.location.origin + '/fs';\n if( baseUrl.startsWith('http://localhost') )\n baseUrl = 'http://localhost/fs';\n \n if(imageUrl != \"\" && imageUrl !== undefined) {\n if(!imageUrl.startsWith('/',0)) \n imageUrl = '/'+imageUrl;\n return baseUrl + imageUrl; \n }\n }\n\n getEnumImageUrlForGrid(row : any, column : ColumnDescriptor) : string\n {\n let imagePathResult : string;\n var value = row[column.Property];\n var imagePathFirstHalf = column.Display.imagePath;\n imagePathResult = imagePathFirstHalf + \"/\" + column.Display.enumMap[value] + \".svg\";\n\n return imagePathResult;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { SafeUrl } from '@angular/platform-browser';\r\nimport { ImageService } from '../../services/image.service';\r\n\r\n\r\n@Component({\r\n selector: 'alg-image',\r\n templateUrl: \"./image.component.html\",\r\n styleUrls: ['./image.component.css'],\r\n standalone: false\r\n})\r\n\r\nexport class ImageComponent implements OnInit{\r\n\r\n @Input(\"wide\") wide : boolean = false;\r\n \r\n _imageUrl: string = \"\";\r\n @Input(\"imageUrl\") \r\n public get imageUrl() : string \r\n {\r\n return this._imageUrl;\r\n } \r\n public set imageUrl(url: string){\r\n this._imageUrl = url;\r\n this.computedImageUrl = this.imageService.getImageUrl(this.imageUrl);\r\n }\r\n \r\n //Nom de fichier png\r\n @Input(\"imageHeight\") imageHeight = 0;\r\n @Input(\"imageWidth\") imageWidth = 0;\r\n @Input(\"imageAlt\") imageAlt;\r\n computedImageUrl: SafeUrl;\r\n computedImageStyle: string = null;\r\n\r\n constructor(private imageService : ImageService)\r\n {\r\n \r\n\r\n }\r\n ngOnInit(): void {\r\n this.computedImageUrl = this.imageService.getImageUrl(this.imageUrl);\r\n \r\n if(this.imageHeight != 0 && this.imageWidth != 0)\r\n this.computedImageStyle = `height: ${this.imageHeight}px; width: ${this.imageWidth}px`;\r\n else if(this.imageHeight != 0 )\r\n this.computedImageStyle = `height: ${this.imageHeight}px; width:auto`;\r\n else if(this.imageWidth != 0 )\r\n this.computedImageStyle = `width: ${this.imageWidth}px; height:auto`;\r\n\r\n if (this.imageAlt?.length>0)\r\n this.computedImageStyle = \"cursor: pointer;\" + this.computedImageStyle \r\n }\r\n \r\n}\r\n","<img class=\"algImage\" [class.wide]=\"this.wide\" [style]=\"computedImageStyle\" [src]=\"computedImageUrl\" [title]=\"imageAlt\" alt=\"image-alg\">\r\n","import { Utilities } from '@dflat-core/web/core';\nimport { FieldEvent } from '@dflat-core/web/core-model';\nimport { AuthService } from '@dflat-core/web/core-services';\nimport { Component, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { Action, IActionComponent } from '../../model/model';\nimport { ActionService } from '../../services/action.service';\nimport { LayoutService } from '../../v2/services/layout.service';\n\n\n@Component({\n // changeDetection: ChangeDetectionStrategy.OnPush,\n selector: \"alg-actions\",\n templateUrl: \"./actions.component.html\",\n styleUrls: ['./actions.component.scss'],\n standalone: false\n})\nexport class ActionsComponent implements OnInit, OnDestroy {\n @Input() searchText : string = \"Rechercher...\"\n @Input() actions: Action[] = [];\n @Input() selectedData: any[] = [];\n @Input() proxy: IActionComponent;\n @Input() showTitle: boolean = false;\n @Input() title: string = '';\n @Input() showFilterButton: boolean = true;\n @Input() showSearchButton: boolean = true;\n @Input() showPaginator: boolean = false;\n @Input() showSpecificFilter: boolean = false;\n @Input() showSearchBar: boolean = false;\n \n @Input() entityKey: string = '';\n _specificFilters : Array<FieldEvent>\n @Input() set specificFilters (filters: Array<FieldEvent>)\n { \n this._specificFilters=filters;\n if(filters){\n this.form = new UntypedFormGroup({});\n filters.forEach(filter => {\n this.form.addControl(filter.Field.PropertyName,new UntypedFormControl(null));});\n }\n }\n get specificFilters() : Array<FieldEvent>\n {\n return this._specificFilters;\n }\n @Input() showStatus: boolean=false;\n @Input() statusMessageColor: string;\n @Input() statusMessage: string;\n @Input() statusImageUrl: string;\n\n @Output() specificFilterChanged = new EventEmitter<any>();\n callSpecificFilterChanged(event: any) {\n this.specificFilterChanged.emit(event);\n }\n form: UntypedFormGroup;\n keyword: string;\n private keywordChanged: Subject<string> = new Subject<string>();\n private subscription: Subscription;\n private isLoadingSubscription: Subscription;\n private debounceTime = 400;\n handleKeywordsChanged(event: any) {\n this.keywordChanged.next(event);\n }\n \n constructor(\n private authSevice: AuthService,\n private zone: NgZone,\n private actionService: ActionService,\n private layoutHandlerService : LayoutService\n ) {\n \n \n }\n \n toggleLayout() {\n this.layoutHandlerService.setIsVerticalLayout(this.entityKey,!this.isVerticalLayout); \n }\n \n \n \n enableActions() {\n \n return true;\n }\n \n isVerticalLayout: boolean;\n private _layoutSubscription: Subscription | null = null;\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n this.isLoadingSubscription.unsubscribe();\n this._layoutSubscription.unsubscribe();\n }\n\n ngAfterViewInit() : void {\n \n }\n ngOnInit(): void {\n \n \n this.isLoadingSubscription = this.actionService._isLoading.subscribe( \n // (tt)=> console.log(\"ActionComponent : \" + tt)\n );\n\n this.subscription = this.keywordChanged\n .pipe(\n debounceTime(this.debounceTime),\n )\n .subscribe((p) => {\n this.zone.run(() => {\n this.proxy.handleActionSearchKeywords(this.keyword);\n });\n });\n\n this._layoutSubscription = this.layoutHandlerService.getPreferencesByEntityKey(this.entityKey)\n .subscribe((preferences) => { \n this.isVerticalLayout = preferences.IsVerticalLayout;\n // console.log(`Action.EntityKey = ${this.entityKey}`)\n });\n \n }\n\n hasPermission(permission: string) {\n return Utilities.IsNil(permission) ? true : (this.authSevice.hasPermission(permission));\n }\n\n canExecute(a: Action) {\n\n let notIsLoading= true;\n \n let hasPermission = this.hasPermission(a.permission);\n\n let isEnabled = notIsLoading && a.canExecute(this.selectedData) && hasPermission;\n\n a.disabled = !isEnabled;\n\n return isEnabled;\n }\n\n refreshActions() {\n if (!Utilities.IsNil(this.actions) && this.actions.length > 0)\n this.actions.forEach(a => this.canExecute(a));\n else if (!Utilities.IsNil(this.proxy) && !Utilities.IsNil(this.proxy.actions) && this.proxy.actions.length > 0)\n this.proxy.actions.forEach(a => this.canExecute(a));\n }\n\n getImageUrl(icon: string) {\n return `/assets/images/${icon}.svg`;\n }\n\n executeAction(a: Action) {\n if ( a.isExtendedAction )\n {\n if ( this.canExecute(a))\n this.actionService.executeExtendedAction(a.descriptor,a.entityKey,this.selectedData.map(x=>x.Id))\n \n \n }\n else {\n if ( this.canExecute(a))\n a.execute();\n }\n }\n}\n","<div class=\"action-panel\">\r\n <div class=\"action-panel-container\">\r\n <ng-container *ngIf=\"this.showStatus\">\r\n <div *ngIf=\"statusImageUrl\" class=\"action-status\">\r\n <alg-image [imageUrl]=\"statusImageUrl\" [imageHeight]=\"19\" [imageWidth]=\"19\" [imageAlt]=\"statusMessage\">\r\n </alg-image>\r\n <!-- <h1 [style.color]=\"statusMessageColor\">{{statusMessage}}</h1>-->\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"this.showTitle\">\r\n <div class=\"action-title\">\r\n <h1>{{ this.title }}</h1>\r\n <span>|</span>\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"this.showFilterButton\">\r\n <div class=\"button-container img\">\r\n <button\r\n type=\"button\"\r\n id=\"toggleFilter\"\r\n class=\"btn btn-svg action-btn\"\r\n data-toggle=\"tooltip\"\r\n title=\"Afficher/Masquer les filtres\"\r\n (click)=\"proxy.toggleFilterView()\"\r\n >\r\n <!-- <div class=\"pull-left action-icon\"><i class=\"fa fa-filter fa-lg\"></i></div> -->\r\n <img\r\n class=\"action-icon\"\r\n [src]=\"getImageUrl('filter-solid')\"\r\n alt=\"Afficher/Masquer les filtres\"\r\n />\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"this.showSpecificFilter\">\r\n <div *ngFor=\"let fieldevent of specificFilters\" style=\"min-width: 250px;\">\r\n <alg-dynamic-field [field]=\"fieldevent.Field\" [form]=\"form\" [showLabel]=\"false\"\r\n (propertyChanged)=\"callSpecificFilterChanged($event)\" [value]=\"fieldevent.Event\">\r\n </alg-dynamic-field>\r\n <!--- <alg-field-descriptor\r\n [field]=\"field\"\r\n [form]=\"form\"\r\n [showLabel]=\"false\"\r\n (propertyChanged)=\"callSpecificFilterChanged($event)\">\r\n </alg-field-descriptor>!-->\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"this.showSearchButton\">\r\n <div class=\"button-container img\">\r\n <button\r\n type=\"button\"\r\n id=\"toggleButton\"\r\n class=\"btn btn-svg action-btn\"\r\n data-toggle=\"tooltip\"\r\n title=\"Actualiser les données\"\r\n (click)=\"proxy.refresh()\"\r\n >\r\n <img\r\n class=\"action-icon\"\r\n [src]=\"getImageUrl('refresh')\"\r\n alt=\"Rechercher\"\r\n />\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"this.showSearchBar\">\r\n <div class=\"input-img\">\r\n <input\r\n type=\"text\"\r\n class=\"form-control search-bar-action\"\r\n name=\"keyword\"\r\n #uniquename=\"ngModel\"\r\n [placeholder]=\"this.searchText\"\r\n [(ngModel)]=\"keyword\"\r\n (ngModelChange)=\"handleKeywordsChanged($event)\"\r\n />\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let action of actions\">\r\n <div\r\n *ngIf=\"action.isVisible && action.showTitle\"\r\n class=\"button-container\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-svg action-btn\"\r\n title=\"{{ action.title }}\"\r\n (click)=\"this.executeAction(action)\"\r\n [disabled]=\"! this.enableActions() || action.disabled\"\r\n >\r\n <img\r\n class=\"action-icon\"\r\n [src]=\"getImageUrl(action.icon)\"\r\n alt=\"{{ action.title }}\"\r\n />\r\n <div class=\"action-label\">\r\n <span>{{ action.title }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"action.isVisible && !action.showTitle\" class=\"button-container img\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-svg action-btn\"\r\n data-toggle=\"tooltip\"\r\n title=\"{{ action.title }}\"\r\n (click)=\"this.executeAction(action)\"\r\n [disabled]=\"! this.enableActions() || action.disabled\"\r\n >\r\n <img\r\n class=\"action-icon\"\r\n [src]=\"getImageUrl(action.icon)\"\r\n alt=\"{{ action.title }}\"\r\n />\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-content select=\"[actions-content]\"> </ng-content>\r\n \r\n </div>\r\n</div>\r\n","import { Utilities } from '@dflat-core/web/core';\nimport { EntityViewModel, FilterViewModel, PagedList } from '@dflat-core/web/core-model';\nimport { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { DflatBaseFilterComponent } from '../basefilter/basefilter.component';\n\n@Component({\n selector: 'alg-base-item-list',\n templateUrl: './base-item-list.component.html',\n styleUrls: ['./base-item-list.component.scss'],\n standalone: false\n})\nexport class BaseItemListComponent<\n TFilter extends FilterViewModel,\n TData extends EntityViewModel\n> implements OnInit, OnDestroy {\n @Input()\n multiselect: boolean = false;\n\n afterLoadData(result: PagedList<TData>) {}\n\n subscription: Subscription;\n\n get isDefined(): boolean {\n return !Utilities.IsNil(this._proxy);\n }\n\n _proxy: DflatBaseFilterComponent<TFilter, TData>;\n get proxy(): DflatBaseFilterComponent<TFilter, TData> {\n return this._proxy;\n }\n set proxy(value: DflatBaseFilterComponent<TFilter, TData>) {\n this._proxy = value;\n\n // Suppression des actions : search, save et filter\n this._proxy.filterAction('save');\n\n this.subscription = this._proxy.loadedData.subscribe((result) => {\n this.afterLoadData(result);\n });\n\n this.afterProxyInit();\n }\n\n constructor() {}\n ngOnDestroy(): void {\n if (!Utilities.IsNil(this.subscription)) {\n this.subscription.unsubscribe();\n }\n }\n\n ngOnInit(): void {}\n\n afterProxyInit() {}\n\n onItemClick($event : any, item: TData) {\n \n try {\n this.proxy.enableSelectionEvent = false;\n\n if (this.multiselect|| $event.ctrlKey) {\n if (item.IsSelected) \n this.proxy.unselect(item);\n else \n this.proxy.select(item);\n } else {\n if (item.IsSelected) {\n this.proxy.unselectAll();\n } else {\n this.proxy.unselectAll();\n this.proxy.select(item);\n }\n }\n }\n finally {\n this.proxy.enableSelectionEvent = true;\n this.proxy.emitOnSelect(this.proxy.selected);\n }\n }\n}\n","<p>base-item-list works!</p>\r\n","import { Component } from '@angular/core';\nimport { BreadcrumbService } from '@dflat-core/web/core-services';\n\n\n@Component({\n selector: 'alg-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n standalone: false\n})\nexport class BreadcrumbComponent {\n public display = false;\n public header = '';\n public description = '';\n public levels: Array<any> = [];\n\n constructor(private breadServ: BreadcrumbService) {\n // getting the data from the services\n this.breadServ.getCurrent().subscribe((data) => {\n this.display = data.display;\n this.header = data.header;\n this.description = data.description;\n this.levels = data.levels;\n });\n }\n\n}","<section class=\"breadcrumb-header\" *ngIf=\"display\">\r\n <ol class=\"breadcrumb\">\r\n <li>\r\n <a routerLink=\"/\">\r\n <i class=\"fa fa-home fa-lg\"></i> \r\n </a>\r\n </li>\r\n <ng-container *ngFor=\"let item of levels\">\r\n <li [class.active]=\"item.active\">\r\n <a [routerLink]=\"item.link\">\r\n <i *ngIf=\"item.icon !=null\" class=\"fa fa-chevron-right\"></i> \r\n <span>{{item.title}}</span>\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ol>\r\n </section>\r\n ","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[alg-editMode]',\r\n standalone: false\r\n})\r\nexport class EditModeDirective {\r\n\r\n constructor(public tpl: TemplateRef<any>) { }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Directive,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Renderer2\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[focusable]',\r\n standalone: false\r\n})\r\nexport class FocusableDirective implements OnInit, AfterViewInit, OnDestroy {\r\n private static focusTakenThisPass: boolean = false;\r\n private static lastFocusedField: HTMLElement | null = null;\r\n\r\n constructor(private host: ElementRef, private render : Renderer2) {\r\n\r\n }\r\n ngOnInit() {\r\n const el = this.host.nativeElement as HTMLInputElement;\r\n el.addEventListener('focus', () => {\r\n FocusableDirective.lastFocusedField = el;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n let el : HTMLElement = this.host.nativeElement;\r\n let container = el.parentElement?.parentElement;\r\n if (container) {\r\n this.render.removeClass(container, 'has-focus');\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n let el : HTMLElement = this.host.nativeElement;\r\n\r\n if (!FocusableDirective.focusTakenThisPass) {\r\n FocusableDirective.focusTakenThisPass = true;\r\n queueMicrotask(() => FocusableDirective.focusTakenThisPass = false);\r\n\r\n const lastFocused = FocusableDirective.lastFocusedField;\r\n\r\n if (lastFocused && lastFocused.offsetParent !== null) {\r\n lastFocused.focus();\r\n } else {\r\n const keywordInput = document.querySelector('.search-bar-action') as HTMLInputElement;\r\n if (keywordInput) {\r\n keywordInput.focus();\r\n }\r\n }\r\n }\r\n let container = el.parentElement?.parentElement;\r\n if (container) {\r\n this.render.addClass(container, 'has-focus');\r\n }\r\n }\r\n\r\n static resetLastFocus() {\r\n this.lastFocusedField = null;\r\n }\r\n \r\n static focusFirst(container: HTMLElement): void {\r\n const focusTarget = container?.querySelector(\r\n 'input, select, textarea, [tabindex]'\r\n ) as HTMLElement;\r\n focusTarget?.focus();\r\n }\r\n}\r\n","import {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n Renderer2,\n} from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport {\n distinctUntilChanged,\n filter,\n switchMap,\n take,\n takeUntil\n} from 'rxjs/operators';\nimport { EditModeDirective } from '../../../directives/editMode.directive';\nimport { FocusableDirective } from '../../../directives/focusable.directive';\nimport { ViewModeDirective } from '../../../directives/viewMode.directive';\nimport { EntityViewModel, PropertyEditorEvent } from '@dflat-core/web/core-model';\n\n@Component({\n selector: 'alg-datagrid-cell',\n templateUrl: './datagrid-cell.component.html',\n styleUrls: ['./datagrid-cell.component.scss'],\n standalone: false,\n})\nexport class DatagridCellComponent<TData extends EntityViewModel> {\n @Input() entity: TData;\n @Input() property: any;\n @Input() isEditable: boolean = true;\n\n @Output() update: EventEmitter<any> = new EventEmitter();\n\n @ContentChild(ViewModeDirective) viewModeTpl: ViewModeDirective;\n @ContentChild(EditModeDirective) editModeTpl: EditModeDirective;\n mode: 'view' | 'edit' = 'view';\n\n constructor(private host: ElementRef, private renderer: Renderer2) {}\n private destroy = new Subject();\n\n get currentView() {\n return this.mode === 'view'\n ? this.viewModeTpl.tpl\n : this.editModeTpl.tpl;\n }\n\n ngOnInit() {\n this.viewModeHandler();\n this.editModeHandler();\n }\n\n onPropertyChanged(event : PropertyEditorEvent){\n this.entity[this.property] = event.value\n }\n\n get element() {\n return this.host.nativeElement;\n }\n\n ngOnDestroy() {\n this.editMode.unsubscribe();\n this.destroy.next({});\n this.destroy.complete();\n }\n\n editMode = new Subject();\n editMode$ = this.editMode.asObservable();\n\n private viewModeHandler() {\n fromEvent(this.element, 'dblclick')\n .pipe(takeUntil(this.destroy))\n .subscribe(() => {\n if (this.isEditable && this.mode == 'view') {\n this.editMode.next(true);\n this.toEditMode();\n }\n });\n }\n\n private editModeHandler() {\n const clickOutside$ = fromEvent(document, 'click').pipe(\n filter(({ target }) => this.element.contains(target) === false),\n take(1)\n );\n\n this.editMode$\n .pipe(\n distinctUntilChanged(),\n switchMap(() => clickOutside$),\n takeUntil(this.destroy)\n )\n .subscribe(() => {\n if (this.mode == 'edit') {\n this.toViewMode();\n }\n });\n }\n\n toEditMode() {\n if (this.isEditable) {\n this.editMode.next(true);\n this.mode = 'edit';\n this.editModeHandler();\n // Wins focus over ambient focus restoration from FocusableDirective \n setTimeout(() => FocusableDirective.focusFirst(this.element));\n }\n }\n\n toViewMode(fromDataGrid: boolean = false) {\n this.mode = 'view';\n if (!fromDataGrid) this.update.emit(this.entity);\n }\n}\n","<ng-container class=\"datacell-container\" *ngTemplateOutlet=\"currentView\">\r\n \r\n</ng-container>\r\n","import { Utilities } from '@dflat-core/web/core';\nimport {\n CustomFieldTypes,\n EntityViewModel,\n EntityViewModelWithFields,\n ExtendedProperty,\n FilterDescriptor,\n FilterType,\n Section,\n} from '@dflat-core/web/core-model';\nimport { Injectable } from '@angular/core';\nimport moment from 'moment';\nimport { BehaviorSubject, distinctUntilChanged, map, Observable } from 'rxjs';\n\n@Injectable()\nexport class SelectionService<TData extends EntityViewModel> {\n private selectedMap: Map<string, TData[]> = new Map();\n private selectionSubjects: Map<string, BehaviorSubject<TData[]>> = new Map();\n\n getSelected(entityKey: string): TData[] {\n return [...(this.selectedMap.get(entityKey) || [])];\n }\n\n adaptSelectionToViewModel(selected: TData[],fieldSections: Section[]): TData {\n if (!selected?.length) return undefined;\n\n const base = { ...selected[0] };\n\n fieldSections?.forEach((section) =>\n section.FieldViewModels.filter((f) => !f.IsHidden).forEach(\n (field) => {\n const val = selected[0][field.PropertyName];\n const isDistinct = selected.some(\n (item) => item[field.PropertyName] !== val\n );\n base[field.PropertyName] = isDistinct ? null : val;\n }\n )\n );\n\n return base;\n }\n\n setSelected( entityKey: string,data: TData[],viewModel: EntityViewModelWithFields<TData>) {\n if (viewModel) this.formatData(data, viewModel);\n\n this.selectedMap.set(entityKey, data);\n this.setOriginals(\n entityKey,\n data.map((item) => ({ ...item }))\n );\n\n if (!this.selectionSubjects.has(entityKey)) {\n this.selectionSubjects.set(\n entityKey,\n new BehaviorSubject<TData[]>(data)\n );\n } else {\n this.selectionSubjects.get(entityKey)?.next(data);\n }\n }\n\n formatData( data: TData[],viewModel: EntityViewModelWithFields<TData>) {\n if (!data || data.length === 0 || !viewModel) return;\n let fields = ([] as FilterDescriptor[]).concat(\n ...viewModel.FieldSections.map((s) => s.FieldViewModels)\n );\n data.forEach((current) => {\n if (!Utilities.IsNil(fields)) {\n fields.forEach((field) => {\n if (field.FilterType === FilterType.DateTime ||\n field.FilterType === FilterType.Date) {\n let key = field.PropertyName;\n let currentKey = current[key];\n if (\n typeof currentKey === 'string' &&\n moment(currentKey).isValid()\n ) {\n current[key] = Utilities.getCustomDate(currentKey);\n }\n }\n });\n }\n\n if (current.ExtendedProperties && current.ExtendedProperties.length > 0) {\n current.ExtendedProperties.forEach((extProperty) => {\n current[extProperty.PropertyName] =\n this.getFormattedValue(extProperty);\n });\n }\n });\n }\n\n getFormattedValue(p: ExtendedProperty): any {\n if (p.FieldType == CustomFieldTypes.Checkbox) {\n const v = String(p.Value).toLowerCase();\n return v === 'true' || v === '1';\n }\n return p.Value;\n }\n\n getSelectionSubject(entityKey: string): BehaviorSubject<TData[]> {\n if (!this.selectionSubjects.has(entityKey)) {\n const hasSelection = this.selectedMap.has(entityKey);\n const initialValue = hasSelection\n ? this.selectedMap.get(entityKey)!\n : null;\n this.selectionSubjects.set(\n entityKey,\n new BehaviorSubject<TData[]>(initialValue)\n );\n }\n\n return this.selectionSubjects.get(entityKey)!;\n }\n\n clearSelection(entityKey: string): void {\n if (this.selectedMap.has(entityKey)) {\n this.selectedMap.set(entityKey, []);\n this.selectionSubjects.get(entityKey)?.next([]);\n }\n }\n\n isSelected(entityKey: string, item: TData): boolean {\n const selected = this.selectedMap.get(entityKey) || [];\n return selected.includes(item);\n }\n\n private originalMap = new Map<string, TData[]>();\n setOriginals(entityKey: string, data: TData[]) {\n this.originalMap.set(entityKey, data);\n }\n getOriginals(entityKey: string): TData[] {\n return this.originalMap.get(entityKey) || [];\n }\n\n isMultiSelect(entityKey: string): boolean {\n const selected = this.getSelected(entityKey);\n return selected.length > 1;\n }\n\n haseSelection(entityKey: string): boolean {\n const selected = this.getSelected(entityKey);\n return selected.length > 0;\n }\n\n getSelectedById$(entityKey: string,id: number | string): Observable<TData> {\n return this.getSelectionSubject(entityKey).pipe(\n map((selection) => selection.find((item) => item.Id === id) ?? null),\n distinctUntilChanged((a, b) => a?.Id === b?.Id)\n );\n }\n}\n","import { Directive, Input, HostListener, Renderer2 } from '@angular/core';\nimport { EntityViewModel } from '@dflat-core/web/core-model';\nimport { DatagridCellComponent } from '../components/datagrid-custom/datagrid-cell/datagrid-cell.component';\n\n// export enum KEY_CODE {\n// RIGHT_ARROW = 39,\n// LEFT_ARROW = 37\n// }\n@Directive({\n selector: '[OnEnter]',\n standalone: false\n})\nexport class OnEnterDirective {\n constructor(private cell: DatagridCellComponent<EntityViewModel>) {}\n\n // @HostListener('window:keyup', ['$event'])\n // keyEvent(event : KeyboardEvent){\n // if (event.keyCode === KEY_CODE.LEFT_ARROW){\n // this.cell.toViewMode();\n // }\n // }\n getNextElt() {}\n\n @HostListener('keyup.enter')\n onEnter() {\n this.cell.toViewMode();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'todefine',\r\n standalone: false\r\n})\r\nexport class ToDefinePipe implements PipeTransform {\r\n constructor() {\r\n }\r\n transform(value: string, handleNull: any) {\r\n\r\n return handleNull ? (value || 'A définir') : value;\r\n }\r\n}\r\n","import { Utilities } from '@dflat-core/web/core';\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'tofixedsizeinteger',\n standalone: false\n})\nexport class ToFixedSizeIntegerPipe implements PipeTransform {\n constructor() {}\n\n transform(value: string, character: any,size : number): string {\n if(!Utilities.IsNil(value))\n return String(value).padStart(size, character);\n return;\n }\n}\n","import { Utilities } from '@dflat-core/web/core';\nimport {\n ColumnDescriptor,\n EntityViewModel,\n EntityViewModelWithFields,\n FieldDescriptor,\n FilterType, PagedList\n} from '@dflat-core/web/core-model';\nimport {\n AfterViewInit,\n Component,\n ContentChild, ElementRef,\n EventEmitter,\n Input,\n IterableDiffer,\n IterableDiffers,\n Output,\n QueryList,\n Renderer2,\n ViewChildren\n} from '@angular/core';\nimport { SelectionType } from '@swimlane/ngx-datatable';\nimport { Guid } from 'guid-typescript';\nimport { isNil } from 'lodash';\nimport { BsDatepickerConfig } from 'ngx-bootstrap/datepicker';\nimport { Subject, takeUntil } from 'rxjs';\nimport { DatagridOptions, IPaging, ISorting } from '../../model/datagrid';\nimport { FieldDescriptorWithValue, IFilterComponent } from '../../model/model';\nimport { ImageService } from '../../services/image.service';\nimport { LayoutService } from '../../v2/services/layout.service';\nimport { SelectionService } from '../../v2/services/selection.service';\nimport { DatagridCellComponent } from './datagrid-cell/datagrid-cell.component';\n\n@Component({\n selector: 'alg-datagrid-custom',\n templateUrl: './datagrid-custom.component.html',\n styleUrls: ['./datagrid-custom.component.scss'],\n standalone: false\n})\nexport class DatagridCustomComponent<TData extends EntityViewModel>\n implements AfterViewInit {\n \n constructor(\n private renderer: Renderer2,\n private iterable: IterableDiffers,\n private imageService: ImageService,\n private layoutHandlerService : LayoutService,\n private selectionService: SelectionService<TData>,\n ) {\n this.iterableDiffer = this.iterable.find(this.modified).create(null);\n this.guid = Guid.create();\n \n this.bsConfig.containerClass = 'theme-blue';\n this.bsConfig.dateInputFormat = 'L';\n this.bsConfig.showWeekNumbers = true;\n }\n ngAfterViewInit() {\n this.layoutHandlerService.resize$.pipe(takeUntil(this.destroy$)).subscribe(() => {this.resizeColumns();});\n }\n \n private destroy$ = new Subject<void>();\n ngOnDestroy(): void {\n this.destroy$.next();\n }\n \n @Input() proxy: IFilterComponent;\n @Input() displayDetail: boolean = false;\n @Input() displayPaginator: boolean = true;\n @Input() enableLastColumnResize: boolean = true;\n //#region old\n public guid: Guid;\n\n updateRowState(item: TData) {\n let key: string = `${this.guid?.toString()}-row-${item.Id?.toString()}`;\n let elt: Element = document.getElementById(key);\n if ( Utilities.IsNil(elt) )\n return;\n\n this.renderer.removeClass(elt, 'mw-invalid');\n this.renderer.removeClass(elt, 'mw-modified');\n this.renderer.removeClass(elt, 'mw-warning');\n\n if ( this.isModified(item) && ! this.isInvalid(item) && ! this.isWarning(item))\n {\n this.renderer.addClass(elt, 'mw-modified');\n }\n\n if ( this.isWarning(item) && ! this.isInvalid(item)){\n this.renderer.addClass(elt, 'mw-warning');\n }\n\n if ( this.isInvalid(item) )\n {\n this.renderer.addClass(elt, 'mw-invalid');\n }\n\n }\n\n\n isModified(row: TData): boolean {\n return !Utilities.IsNil(row) && row['isTheSame'] === false;\n }\n\n isInvalid(row: TData): boolean {\n return !Utilities.IsNil(row) && (row['isValid'] === false || row['hasError'] === true);\n }\n\n isWarning(row: TData): boolean {\n return !Utilities.IsNil(row) && row['hasWarning'] === true;\n }\n\n public logo: any;\n\n @Input('datagridClass') datagridClass: string = 'datagrid-custom-container';\n\n @ViewChildren('thHeader')\n thHeaders: QueryList<ElementRef>;\n\n @ViewChildren('lastColumnHeader')\n lastColumnHeader: QueryList<ElementRef>;\n\n @ViewChildren('datagridContainer')\n datagridContainer: QueryList<ElementRef>;\n\n selectFirstRow() {\n if (\n this.data !== null &&\n this.data.Values !== null &&\n this.data.Values.length > 0\n ) {\n // if (this.lastSelectedRow !== undefined)\n // {\n // let elt = this.data.Values.find(p=>p.Id == this.lastSelectedRow.Id);\n // if ( elt !== undefined) {\n // this.lastSelectedRow = elt;\n // this.selected.push(elt);\n // }\n // else {\n // this.lastSelectedRow = this.data.Values[0];\n // this.selected.push(this.data.Values[0]);\n // }\n // }\n // else {\n this.lastSelectedRow = this.data.Values[0];\n this.selected.push(this.data.Values[0]);\n// }\n } else {\n this.clearSelection(true);\n }\n\n this.setSelection();\n }\n\n resizeColumns() {\n\n if (!this.enableLastColumnResize)\n return;\n\n // Calcul de la taille totale de toutes colonnes\n let totalColumnWidth = 0;\n this.thHeaders.forEach((th) => {\n totalColumnWidth = totalColumnWidth + th.nativeElement.offsetWidth;\n this.renderer.setStyle(th.nativeElement, 'min-width', th.nativeElement.offsetWidth + 'px');\n });\n\n // Récuèpère la taille du container\n let totalContainerWidth = this.datagridContainer\n .map((c) => c.nativeElement.offsetWidth)\n .pop();\n\n // Si la taille du tableau est inférieur à la taile du container,\n // on affecte la taille de la dernière colonne avec la différence\n // pour combler l'espace vide à droite du tableau.\n let w = 0;\n if (totalContainerWidth > totalColumnWidth)\n w = totalContainerWidth - totalColumnWidth;\n\n // Modification du style de la dernière colonne, pour affecter la largeur calculée ci-dessus.\n this.lastColumnHeader.forEach((th, index) => {\n this.renderer.setStyle(th.nativeElement, 'width', w + 'px');\n });\n }\n\n /**\n * Paginated rows\n *\n * @type {PagedList<TData>}\n * @memberof DatagridComponent\n */\n @Input()\n public data: PagedList<TData> = {\n TotalRowCount: 0,\n Values: [],\n };\n\n @Input()\n public options: Partial<DatagridOptions> = {};\n\n /**\n * Data rows currently selected\n *\n * @type {TData[]}\n * @memberof DatagridComponent\n */\n @Input()\n public selected: TData[] = [];\n\n @Input()\n public modified: TData[] = [];\n\n /**\n * Columns parameters\n * Provide default implementation of\n * - [cell template]{@ColumnDescriptor#cellTemplate}\n * - [display]{@ColumnDescriptor#display}\n * @type {ColumnDescriptor[]}\n * @memberof DatagridComponent\n */\n @Input()\n public set columns(val: ColumnDescriptor[]) {\n this._columns = val.map((c) => {\n // c.cellTemplate = c.cellTemplate || this.datagridDynamicTemplate.dynamicTemplate\n c.Display = c.Display || { type: 'text' };\n //c.width = c.display.width || undefined;\n return c;\n });\n }\n\n public get columns(): ColumnDescriptor[] {\n // if (this._columns) {\n // if (this._columns.some(c => c.display && c.display.type === \"img\")) {\n // let imgCol = this._columns.find(c => c.display && c.display.type === \"img\");\n // const actualWidth = this._columns.find(c => c.display && c.display.type === \"img\").$$oldWidth;\n // if (!Utilities.IsNil(actualWidth)) {\n // this._columns.find(c => c.display && c.display.type === \"img\").width = 25;\n // }\n // };\n // };\n return this._columns;\n }\n\n private _columns: ColumnDescriptor[] = [];\n\n /**\n * Data loading function.\n * Can return the plain @{PagedList} or an @{Observable}\n * @type {(PagedListRes<TData>|ObservablePagedListRes<TData>)}\n * @memberof DatagridComponent\n */\n @Input()\n reloadDataFn: (sorting: ISorting<TData>, paging: IPaging) => void = (\n sorting: ISorting<TData>,\n paging: IPaging\n ) => { };\n\n /**\n * Pagination information\n *\n * @type {IPaging}\n * @memberof DatagridComponent\n */\n @Input()\n public paging: IPaging = {\n rowsOnPage: 25,\n offset: 0,\n };\n\n /**\n * Sorting information\n *\n * @type {ISorting<TData>}\n * @memberof DatagridComponent\n */\n @Input()\n public sorting: ISorting<TData> = {};\n\n /**\n * Number of total available rows\n *\n * @type {number}\n * @memberof DatagridComponent\n */\n public totalRowCount: number = 0;\n\n /**\n * Event triggered when the selected data changed\n *\n * @type {EventEmitter<TData[]>}\n * @memberof DatagridComponent\n */\n @Output()\n public onSelect: EventEmitter<TData[]> = new EventEmitter(true);\n\n /**\n * Wrapper for loading data.\n * Calls (reloadDataFn)@(DataGridComponent#reloadDataFn) and populate internal values\n *\n * @private\n * @memberof DatagridComponent\n */\n private reloadDataWrapper() {\n this.reloadDataFn(this.sorting, this.paging);\n }\n\n private iterableDiffer: IterableDiffer<{}>;\n private lastSelectedRow: TData;\n private selecting: boolean;\n private dragSelection: boolean;\n private firstSelectingRow: TData;\n private currentSelectedId: number;\n\n // handleRowMouseOver(id: any, event: any) {\n // if (this.isResizing) {\n // this.handleHeaderMouseOver(null, event);\n // return;\n // }\n // if (\n // this.selecting &&\n // this.options.selectionType === SelectionType.multi\n // ) {\n // if (this.currentSelectedId !== id) {\n // let row = this.data.Values.find((t) => t.Id === id) as TData;\n // // Affecte l'Id de la ligne courante.\n // this.currentSelectedId = row.Id;\n\n // if (this.lastSelectedRow.Id === this.currentSelectedId) {\n // // Vide la sélection actuelle.\n // this.clearSelection(false);\n\n // // On ne sélectionne que la ligne en cours.\n // this.selected.push(row);\n // } else {\n // // Complète la sélection avec tous les élement situés entre lastSelectedRow\n // // et la ligne sélectionnée.\n // let tbody = document.getElementById(\n // this.guid.toString() + '-row-' + row.Id\n // ).parentElement;\n\n // let currentRowId = this.guid.toString() + '-row-' + row.Id;\n // let lastRowId =\n // this.guid.toString() +\n // '-row-' +\n // this.lastSelectedRow.Id;\n\n // let inside = false;\n // let first = false;\n\n // // Vide la sélection actuelle.\n // this.clearSelection(false);\n\n // // On suppose que chaque ligne est identifiée par l'Id de l'entité.\n // // ça ne marchera pas s'il y a des doublons.\n // // On sélectionne toutes les lignes situées entre lastSelectedRow\n // // et la ligne sélectionnée.\n // tbody.childNodes.forEach((ch) => {\n // if (\n // !inside &&\n // (ch['id'] === currentRowId ||\n // ch['id'] === lastRowId)\n // ) {\n // inside = true;\n // first = true;\n // }\n\n // if (inside) {\n // let currentId = ch['id'].substring(\n // this.guid.toString().length + 5\n // );\n // let toAdd = this.data.Values.find(\n // (t) => t.Id.toString() === currentId\n // ) as TData;\n // if (toAdd !== undefined) {\n // this.selected.push(toAdd);\n // }\n // }\n\n // if (\n // !first &&\n // inside &&\n // (ch['id'] === currentRowId ||\n // ch['id'] === lastRowId)\n // )\n // inside = false;\n\n // first = false;\n // });\n // }\n\n // // Affiche la sélection.\n // this.setSelection();\n // }\n // }\n // }\n handleRowMouseUp(id: any, event: any) {\n if (this.isResizing) {\n this.handleHeaderMouseUp(id, event);\n return;\n }\n\n if (event.ctrlKey || event.shiftKey) return;\n\n if (this.selecting) this.selecting = false;\n\n this.dragSelection = true;\n }\n\n handleRowMouseDown(id: any, event: any) {\n if (event !== undefined && (event.ctrlKey || event.shiftKey)) return;\n\n this.firstSelectingRow = this.data.Values.find(\n (t) => t.Id === id\n ) as TData;\n\n if (this.selected.length === 1 && this.selected[0].Id === id) return;\n\n // Indique que l'on est en cours de sélection\n this.selecting = true;\n\n // Vide la sélection\n this.clearSelection(true);\n\n // On ajoute l'élément à la sélection\n this.lastSelectedRow = this.firstSelectingRow;\n this.selected.push(this.firstSelectingRow);\n\n // Affecte l'Id de la ligne courante.\n this.currentSelectedId = this.firstSelectingRow.Id;\n\n\n // Affiche la sélection.\n this.setSelection();\n }\n\n selectRowForce(id: any) {\n this.selectRow(id, { shiftKey: false, ctrlKey: false });\n }\n\n selectRow(id: any, event: any) {\n // console.log(this.isEditModeEnabled);\n // if (this.isEditModeEnabled) {\n // return;\n // }\n\n if (this.dragSelection) {\n this.dragSelection = false;\n return;\n }\n\n\n // User is selecting\n if (this.selecting) return;\n\n let d = this.data.Values.find((t) => t.Id === id) as TData;\n if (d !== undefined) {\n if (\n this.options.selectionType === SelectionType.multi &&\n event.ctrlKey\n ) {\n if (this.selected.length > 1) {\n // On vérifie si l'élémént est déjà sélectionné\n let s = this.selected.find((t) => t.Id === id) as TData;\n if (s !== undefined) {\n // Dans ce cas, on désélectionne l'élément selectionné.\n const index = this.selected.indexOf(s, 0);\n this.clearSelectionAtIndex(id, index);\n // this.checks();\n\n // On positionne la dernière ligne sélectionnée au dernier élement sélectionné.\n if (this.selected.length > 1)\n this.lastSelectedRow = this.selected[\n this.selected.length - 1\n ];\n } else {\n // On ajoute l'élément à la sélection\n this.lastSelectedRow = d;\n this.selected.push(d);\n }\n } else if (\n this.selected.length === 1 &&\n this.selected[0].Id === d.Id\n ) {\n // Si c'est la même ligne, on déselectionne tout et on ne garde que la ligne actuelle.\n this.clearSelection(true);\n } else {\n // On ajoute l'élément à la sélection\n this.lastSelectedRow = d;\n this.selected.push(d);\n }\n } else if (\n this.options.selectionType === SelectionType.multi &&\n (event.shiftKey || this.selecting)\n ) {\n if (Utilities.IsNil(this.lastSelectedRow)) {\n // On ajoute l'élément à la sélection\n this.lastSelectedRow = d;\n this.selected.push(d);\n } else if (\n this.selected.length === 1 &&\n this.selected[0].Id === d.Id\n ) {\n // Si c'est la même ligne, on déselectionne tout et on ne garde que la ligne actuelle.\n this.clearSelection(true);\n } else if (this.lastSelectedRow.Id !== d.Id) {\n // Complète la sélection avec tous les élement situés entre lastSelectedRow\n // et la ligne sélectionnée.\n let tbody = document.getElementById(\n this.guid.toString() + '-row-' + d.Id\n ).parentElement;\n let currentRowId = this.guid.toString() + '-row-' + d.Id;\n let lastRowId =\n this.guid.toString() +\n '-row-' +\n this.lastSelectedRow.Id;\n\n let inside = false;\n let first = false;\n\n // Vide la sélection actuelle.\n this.clearSelection(false);\n\n // On suppose que chaque ligne est identifiée par l'Id de l'entité.\n // ça ne marchera pas s'il y a des doublons.\n // On sélectionne toutes les lignes situées entre lastSelectedRow\n // et la ligne sélectionnée.\n tbody.childNodes.forEach((ch) => {\n if (ch['id'] !== undefined)\n {\n\n if (!inside && (ch['id'] === currentRowId || ch['id'] === lastRowId)) \n {\n inside = true;\n first = true;\n }\n\n if (inside) {\n let currentId = ch['id'].substring(this.guid.toString().length + 5);\n\n let toAdd = this.data.Values.find((t) => t.Id.toString() === currentId) as TData;\n\n if (toAdd !== undefined)\n this.selected.push(toAdd);\n \n }\n\n if (\n !first &&\n inside &&\n (ch['id'] === currentRowId ||\n ch['id'] === lastRowId)\n )\n inside = false;\n\n first = false;\n }\n }\n );\n } else {\n // L'utilisateur a reclické sur la première ligne, dans ce cas on vide la sélection et on sélectionne uniquemenet la ligne initiale.\n this.clearSelection(true);\n\n // On ajoute l'élément à la sélection\n this.lastSelectedRow = d;\n this.selected.push(d);\n }\n } else {\n // Dans le cas d'un simple click sur la ligne (pas de Ctrl/Shift)\n // 1. Si l'élément est déjà sélectionné, on vide la sélection\n if (\n this.selected.length === 1 &&\n this.selected[0].Id === d.Id\n ) {\n this.clearSelection(true);\n }\n // 2.Dans le cas, ou on a un élément sélectionné.\n else {\n //if (this.selected.length === 1) {\n\n // On vide la sélection\n this.clearSelection(true);\n\n // On ajoute l'élément à la sélection\n this.lastSelectedRow = d;\n this.selected.push(d);\n }\n }\n }\n\n this.setSelection();\n //datagrid cell changes\n }\n\n setSelection() {\n setTimeout(() => {\n this.selected.forEach((s) => {\n let el: HTMLElement = document.getElementById(\n this.guid.toString() + '-row-' + s.Id\n );\n if (el) {\n {\n let tds = el.getElementsByTagName('td');\n for (let i = 0; i < tds.length; i++)\n this.renderer.addClass(tds[i], 'selected');\n\n this.renderer.addClass(el, 'selected');\n }\n }\n });\n });\n\n // emission du changement de sélection.\n this.onSelect.emit(this.selected);\n this.selectionService.setSelected(this.proxy.getEntityKey(),this.selected,this.viewModel);\n\n }\n clearSelectionAtIndex(id: number, index: number) {\n // Supprime la classe \"selected\" sur l'élément <tr> correpondant à l'id spécifié.;\n let el = document.getElementById(this.guid.toString() + '-row-' + id);\n\n let tds = el.getElementsByTagName('td');\n for (let i = 0; i < tds.length; i++)\n this.renderer.removeClass(tds[i], 'selected');\n\n this.renderer.removeClass(el, 'selected');\n\n // Supprime l'élément du tableau.\n if (index > -1) this.selected.splice(index, 1);\n }\n clearSelection(clearLastRow: boolean) {\n // Supprime la classe \"selected\" sur les éléments <tr> selectionnées;\n this.selected.forEach((s) => {\n let el = document.getElementById(\n this.guid.toString() + '-row-' + s.Id\n );\n if (el) {\n let tds = el.getElementsByTagName('td');\n for (let i = 0; i < tds.length; i++)\n this.renderer.removeClass(tds[i], 'selected');\n\n this.renderer.removeClass(el, 'selected');\n }\n });\n\n // vide le tableau\n while (this.selected.length > 0) this.selected.pop();\n\n // Vide la dernière ligne sélectionnée\n if (clearLastRow) this.lastSelectedRow = undefined;\n }\n\n // onSort($event) {\n // this.sorting = $event;\n // //this.columns\n // this.reloadDataWrapper();\n // }\n\n isSorting(name: string) {\n return this.sorting.property !== name && name !== '';\n }\n\n isSortAsc(name: string) {\n let isSortAsc: boolean =\n this.sorting.property === name && this.sorting.direction === 'asc';\n return isSortAsc;\n }\n\n isSortDesc(name: string) {\n let isSortDesc: boolean =\n this.sorting.property === name && this.sorting.direction === 'desc';\n return isSortDesc;\n }\n\n sortHeaderClick(headerName: any) {\n if (headerName) {\n if (this.sorting.property === headerName) {\n this.sorting.direction =\n this.sorting.direction === 'asc' ? 'desc' : 'asc';\n }\n this.sorting.property = headerName;\n\n this.reloadDataWrapper();\n }\n }\n\n handleHeaderMouseDown(column, event) {\n this.currentColumn = column;\n this.offsetX = 0;\n this.isResizing = true;\n }\n\n handleHeaderMouseUp(column, event) {\n this.currentColumn = null;\n this.isResizing = false;\n this.offsetX = 0;\n this.resizeColumns();\n }\n\n isResizing: boolean = false;\n currentColumn: ColumnDescriptor = null;\n offsetX: number;\n\n handleHeaderMouseOver(id: number, event) {\n if (this.isResizing && this.currentColumn !== null) {\n let el = document.getElementById(\n this.guid.toString() + '-col-' + this.currentColumn.Property\n );\n let w = el.offsetWidth + this.offsetX + event.movementX;\n if (w > 40) {\n this.offsetX = this.offsetX + event.movementX;\n this.renderer.setStyle(el, 'width', w + 'px');\n console.log(event.movementX);\n console.log(w);\n }\n }\n }\n\n isUndefined(val: any) {\n return Utilities.IsNil(val);\n }\n\n getEnumImageUrl(row: TData, column: ColumnDescriptor): string {\n return this.imageService.getEnumImageUrlForGrid(row, column);\n }\n getImageUrl(row: TData, column: ColumnDescriptor): string {\n return row[column.Property];\n }\n\n getCellStyleClass(index: number, row: TData, column: ColumnDescriptor): string {\n\n let computedCellStyle = `${this.getStyleClass(index, row)} ${column.Display.type}`\n var cellStyle;\n\n if (!isNil(this.proxy)) {\n if (!isNil(this.proxy.getColumnStyle(row, column.Property)))\n cellStyle = this.proxy.getColumnStyle(row, column.Property);\n if (!isNil(this.proxy.getCellStyle(row, column.Property)))\n cellStyle = `${cellStyle} ${this.proxy.getCellStyle(row, column.Property)}`;\n }\n computedCellStyle = cellStyle ? `${computedCellStyle} ${cellStyle}` : computedCellStyle\n return computedCellStyle;\n }\n getRowStateStyle(index:number, row:any) : string{\n if (!isNil(this.proxy)) {\n let rowStateStyle = `${this.proxy.getRowStateStyle(index,row)}`;\n if(!isNil(rowStateStyle))\n return `row-state ${rowStateStyle}`;\n }\n else\n return 'row-state';\n }\n getStyleClass(index: number, row: any): string {\n var rowStyle;\n\n if (!Utilities.IsNil(this.proxy))\n rowStyle = this.proxy.getStyle(row);\n\n let lineStyle = index % 2 == 0 ? 'row-odd' : 'row-even';\n if ( index == 1)\n lineStyle = 'row-even first-row'\n if (index == this.data.Values.length)\n lineStyle = lineStyle + ' last-row';\n if (!Utilities.IsNil(rowStyle)) {\n return `${lineStyle} ${rowStyle}`;\n } else {\n return lineStyle;\n }\n\n }\n\n showOnToolTip(row, prop): any {\n if(!Utilities.IsNil(this.proxy))\n return this.proxy.showOnToolTip(row, prop)\n return null;\n }\n\n @Output()\n onEnter: EventEmitter<FieldDescriptorWithValue> = new EventEmitter();\n\n @ViewChildren('dataGridCellComponent')\n dataGridCells: QueryList<DatagridCellComponent<TData>>;\n\n @ContentChild(DatagridCellComponent)\n cell: DatagridCellComponent<TData>;\n\n\n onKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented) return;\n let _currentCell = this.dataGridCells.find((x) => x.mode === 'edit');\n let _currentRowIndex = this.data.Values.indexOf(_currentCell.entity);\n let _currentColumnIndex = this.columns.map((x) => x.Property).indexOf(_currentCell.property);\n\n switch (event.key) {\n case 'Tab': {\n if (event.shiftKey) {\n let _newColumnIndex = _currentColumnIndex;\n let _column = this.columns[_newColumnIndex];\n do {\n let temp = this.columns[_newColumnIndex - 1];\n if (!isNil(temp) && this.proxy.enableEdit(temp.Property,_currentCell.entity)) {\n _column = temp;\n break;\n }\n _newColumnIndex -= 1;\n }\n while (_newColumnIndex > 0);\n\n if (_column.Property != _currentCell.property) {\n this.emitOnEnter(_currentCell);\n var _targetCell = this.dataGridCells.find((x) => (x.property == _column.Property) && (x.entity.Id == _currentCell.entity.Id));\n if(!isNil(_targetCell))\n _targetCell.toEditMode();\n _currentCell.toViewMode(true);\n break;\n }\n }\n\n let _newColumnIndex = _currentColumnIndex;\n let _column = this.columns[_newColumnIndex];\n do {\n let temp = this.columns[_newColumnIndex + 1];\n if (!isNil(temp) && this.proxy.enableEdit(temp.Property,_currentCell.entity)) {\n _column = temp;\n break;\n }\n _newColumnIndex += 1;\n }\n while (_newColumnIndex < this.columns.length);\n\n if (_column.Property != _currentCell.property) {\n this.emitOnEnter(_currentCell);\n var _targetCell = this.dataGridCells.find((x) => (x.property == _column.Property) && (x.entity.Id == _currentCell.entity.Id));\n if(!isNil(_targetCell))\n _targetCell.toEditMode();\n _currentCell.toViewMode(true);\n }\n break;\n\n }\n\n case 'Enter':\n {\n let _newColumnIndex = _currentColumnIndex;\n let _column = this.columns[_newColumnIndex];\n do {\n let temp = this.columns[_newColumnIndex + 1];\n\n if (!isNil(temp) && this.proxy.enableEdit(temp.Property,_currentCell.entity)) {\n _column = temp;\n break;\n }\n _newColumnIndex += 1;\n }\n while (_newColumnIndex < this.columns.length);\n\n if (_column.Property != _currentCell.property) {\n this.emitOnEnter(_currentCell);\n var _targetCell = this.dataGridCells.find((x) => (x.property == _column.Property) && (x.entity.Id == _currentCell.entity.Id));\n if(!isNil(_targetCell))\n _targetCell.toEditMode();\n _currentCell.toViewMode(true);\n }\n break;\n }\n case 'ArrowUp': {\n let _newRowIndex = _currentRowIndex;\n let _newRow = this.data.Values[_newRowIndex];\n\n do {\n let temp = this.data.Values[_newRowIndex - 1];\n this.data.Values.find(x => x.IsEditable)\n if (!isNil(temp) && temp.IsEditable) {\n _newRow = temp;\n break;\n }\n _newRowIndex -= 1;\n }\n while (_newRowIndex > 0);\n\n if (_newRow.Id != _currentCell.entity.Id) {\n this.emitOnEnter(_currentCell);\n this.updateSelected(_newRow.Id);\n _currentCell.toViewMode(true);\n\n var _targetCell = this.dataGridCells.find((x) => x.property == _currentCell.property && (x.entity.Id == _newRow.Id));\n if(!isNil(_targetCell))\n _targetCell.toEditMode();\n }\n break;\n }\n case 'ArrowDown': {\n let _newRowIndex = _currentRowIndex;\n let _newRow = this.data.Values[_newRowIndex];\n do {\n let temp = this.data.Values[_newRowIndex + 1];\n if (!isNil(temp) && temp.IsEditable) {\n _newRow = temp;\n break;\n }\n _newRowIndex += 1;\n }\n while (_newRowIndex < this.data.Values.length);\n\n if (_newRow.Id != _currentCell.entity.Id) {\n\n this.emitOnEnter(_currentCell);\n this.updateSelected(_newRow.Id);\n _currentCell.toViewMode(true);\n var _targetCell = this.dataGridCells.find(x=>(x.entity.Id == _newRow.Id) && (x.property == _currentCell.property));\n if(!isNil(_targetCell))\n _targetCell.toEditMode();\n }\n break;\n }\n\n case 'l': {\n if (event.ctrlKey) {\n this.dataGridCells\n .filter((x) => x.entity.Id == _currentCell.entity.Id)\n .forEach((x) => x.toEditMode());\n }\n break;\n }\n case 'Escape': {\n this.emitOnEnter(_currentCell);\n this.dataGridCells\n .filter((x) => x.mode == 'edit').forEach((cell) => cell.toViewMode(true))\n break;\n }\n default:\n return;\n }\n event.preventDefault();\n }\n\n @Input() isEditModeEnabled: boolean = false;\n\n updateSelected(id: number) {\n this.clearSelection(true);\n let row = this.data.Values.find((t) => t.Id === id);\n this.selected.push(row);\n this.setSelection();\n }\n\n emitOnEnter(currentCell: DatagridCellComponent<TData>) {\n if (!(this.isUndefined(currentCell) && this.isUndefined(currentCell.entity[currentCell.property]))) {\n let res: FieldDescriptorWithValue =\n {\n field: this.getField(currentCell.property),\n value: currentCell.entity\n }\n this.onEnter.emit(res);\n }\n }\n\n updateEntity(event, prop) {\n //This event is emitted when exiting edit mode for cells\n //this.onSelect.emit(event);\n let currentCell = this.dataGridCells.find((x) => x.entity.Id == event.Id && x.property == prop);\n if (!this.isUndefined(currentCell))\n this.emitOnEnter(currentCell);\n }\n\n filterType = FilterType;\n bsConfig: Partial<BsDatepickerConfig> = new BsDatepickerConfig();\n @Input() viewModel: EntityViewModelWithFields<TData>;\n\n enableEdit(column: string, row: EntityViewModel) : boolean {\n if (!Utilities.IsNil(this.proxy))\n return this.proxy.enableEdit(column, row);\n\n return false;\n }\n\n getHeaderStyle(colProperty: string): string {\n let headerStyle = 'header'\n if (!isNil(this.proxy) && !isNil(this.proxy.getHeaderStyle(colProperty)))\n headerStyle = `${headerStyle} ${this.proxy.getHeaderStyle(colProperty)}`;\n return headerStyle;\n }\n\n getField(prop: string) {\n return this.proxy.getField(prop)\n }\n\n getFieldType(prop: string) : FilterType {\n let field: FieldDescriptor = this.proxy.getField(prop);\n if ( Utilities.IsNil(field))\n return FilterType.String;\n return field.FilterType;\n }\n\n getFieldPropertyName(prop: string) : string {\n let field: FieldDescriptor = this.proxy.getField(prop);\n if ( Utilities.IsNil(field))\n return prop\n return field.PropertyName;\n }\n\n getFieldReadOnly(prop: string) : boolean {\n let field: FieldDescriptor = this.proxy.getField(prop);\n if ( Utilities.IsNil(field))\n return true\n return field.ReadOnly;\n }\n\n\n getdatetime(d: Date) : Date {\n // console.log(d);\n return d;\n }\n\n toggleDetail(row: TData){\n // Effect pour ouvrir/fermer un dossier \n let tr = document.getElementById(row.Id + '_detail');\n let button = document.getElementById(row.Id + '_button');\n let dv = document.getElementById(row.Id + '_detail_div');\n\n // Afficher / masquer les sous dossiers\n if(tr.className.includes('toggleable-show'))\n {\n // Hide\n this.renderer.removeClass(tr, 'toggleable-show');\n this.renderer.removeClass(button, 'toggle-button-down');\n this.renderer.removeClass(dv, 'detail-div-show');\n \n }\n else\n {\n // Show\n this.renderer.addClass(tr, 'toggleable-show');\n this.renderer.addClass(button, 'toggle-button-down');\n this.renderer.addClass(dv, 'detail-div-show');\n }\n }\n}\n","<div #datagridContainer [class]=\"this.datagridClass\">\r\n <table class=\"datagrid-custom-datatable\">\r\n <thead>\r\n <tr>\r\n <th class=\"header row-state\"></th>\r\n <th #thHeader [ngClass]=\"col.Display.type\" [attr.id]=\"guid.toString() + '-col-' + col.Property\"\r\n *ngFor=\"let col of this.columns; let i = index\" (click)=\"sortHeaderClick(col.Property)\" [ngClass]=\"{\r\n sorting: isSorting(col.Property),\r\n sorting_asc: isSortAsc(col.Property),\r\n sorting_desc: isSortDesc(col.Property)}\" [attr.class]=\"this.getHeaderStyle(col.Property)\">\r\n <label>{{ col.Name }}</label>\r\n </th>\r\n <ng-container *ngIf=\"enableLastColumnResize\">\r\n <th #lastColumnHeader class=\"header last-column\"></th>\r\n </ng-container>\r\n\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <ng-container *ngFor=\"let row of this.data.Values; let r = index\" >\r\n <tr [attr.class]=\"getStyleClass(r, row)\"\r\n [attr.id]=\"guid.toString() + '-row-' + row.Id\" (click)=\"selectRow(row.Id, $event)\"\r\n (mousedown)=\"handleRowMouseDown(row.Id, $event)\" (mouseup)=\"handleRowMouseUp(row.Id, $event)\"\r\n [class.first-row]=\"r == 0\">\r\n\r\n <!-- -->\r\n <th [attr.class]=\"getRowStateStyle(r, row)\">\r\n <ng-container *ngIf=\"isModified(row) && ! isInvalid(row) && ! isWarning(row)\">\r\n <div>\r\n ...\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"isInvalid(row)\">\r\n <div>\r\n <img class=\"error-row-icon\" src=\"assets/images/error.svg\" />\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"isWarning(row) && ! isInvalid(row)\">\r\n <div>\r\n <img class=\"error-row-icon\" src=\"assets/images/warning.svg\" />\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"this.displayDetail\">\r\n <button type=\"button\" [attr.id]=\"row.Id + '_button'\" class=\"toggle-button btn\" (click)=\"toggleDetail(row)\">\r\n <i class=\"fa fa-chevron-right fa-custom\"></i>\r\n </button>\r\n </ng-container>\r\n </th>\r\n\r\n <td [attr.class]=\"getCellStyleClass(r, row, column)\" *ngFor=\"let column of this.columns; index as i\">\r\n <alg-datagrid-cell #dataGridCellComponent class=\"gridcell-container\" [entity]=\"row\"\r\n [isEditable]=\"this.enableEdit(column.Property,row)\" [property]=\"column.Property\"\r\n (keydown)=\"this.onKeyDown($event)\" (update)=\"this.updateEntity($event,column.Property)\">\r\n\r\n <ng-template alg-viewMode>\r\n\r\n <div [ngSwitch]=\"column.Display.type\" *ngIf=\"!isUndefined(row[column.Property])\">\r\n <div *ngSwitchCase=\"'url'\">\r\n <a [routerLink]=\"[column.Display.baseUrl,row[column.Property]]\">\r\n {{ row.Id || row[column.Property] }}\r\n </a>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'img'\" class=\"image\">\r\n <img *ngIf=\"column.Display.imagePath.length == 0\"\r\n [src]=\"(column.Display.imgBase || '') + (column.Display.sourceProperty? row[column.Display.sourceProperty]: row[column.Property])\" />\r\n\r\n <alg-image *ngIf=\"column.Display.imagePath.length != 0\"\r\n [imageUrl]=\"this.getEnumImageUrl(row,column)\" [imageHeight]=\"20\" [imageWidth]=\"20\">\r\n </alg-image>\r\n <!-- Pop up tool tip -->\r\n <div class=\"tool-tip\" *ngIf=\"!isUndefined(column.ToolTipProperty)\">\r\n {{ row[column.ToolTipProperty] }}\r\n </div>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'img-file'\" class=\"image\">\r\n \r\n <alg-image \r\n [imageUrl]=\"this.getImageUrl(row,column)\" [wide]=\"true\" [imageHeight]=\"40\" [imageWidth]=\"40\">\r\n </alg-image>\r\n\r\n <!-- Pop up tool tip -->\r\n <div class=\"tool-tip\" *ngIf=\"!isUndefined(column.ToolTipProperty)\">\r\n {{ row[column.ToolTipProperty] }}\r\n </div>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'wide-img'\" class=\"image\">\r\n <img *ngIf=\"column.Display.imagePath.length == 0\"\r\n [src]=\"(column.Display.imgBase || '') + (column.Display.sourceProperty? row[column.Display.sourceProperty]: row[column.Property])\" />\r\n\r\n <alg-image *ngIf=\"column.Display.imagePath.length != 0\" [wide]=\"true\"\r\n [imageUrl]=\"this.getEnumImageUrl(row,column)\" [imageHeight]=\"40\" [imageWidth]=\"40\">\r\n </alg-image>\r\n <!-- Pop up tool tip -->\r\n <div class=\"tool-tip\" *ngIf=\"!isUndefined(column.ToolTipProperty)\">\r\n {{ row[column.ToolTipProperty] }}\r\n </div>\r\n </div>\r\n\r\n <span *ngSwitchCase=\"'date'\">{{row[column.Property]| date: column.Display.format\r\n ||'dd/MM/yyyy'}} </span>\r\n <span *ngSwitchCase=\"'boolean'\">{{row[column.Property] ? 'OUI' : 'NON'}} </span>\r\n <span *ngSwitchCase=\"'datetime'\">{{getdatetime(row[column.Property])| date:\r\n column.Display.format ||'dd/MM/yyyy HH:mm:ss'}}</span>\r\n\r\n <span *ngSwitchCase=\"'money'\"\r\n [class.red]=\"!row[column.Property] && column.Display.handleError\" class=\"money\">\r\n {{row[column.Property]| currency: column.Display.currency ||\r\n (column.Display.sourceProperty && row[column.Display.sourceProperty] ?\r\n row[column.Display.sourceProperty]: false) ||'EUR':'symbol'| todefine:\r\n column.Display.handleError}}\r\n\r\n <div class=\"tool-tip\" *ngIf=\"this.showOnToolTip(row,column.Property)\">\r\n {{this.showOnToolTip(row,column.Property)}}\r\n </div>\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'percent'\"\r\n [class.red]=\"!row[column.Property] && column.Display.handleError\">\r\n {{row[column.Property] * column.Display.multiplier | percent : column.Display.format\r\n ||'1.0-2'| todefine: column.Display.handleError}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'number'\"\r\n [class.red]=\"!row[column.Property] && column.Display.handleError\">\r\n {{row[column.Property] * column.Display.multiplier| number: column.Display.format\r\n ||'1.0-3' | todefine : column.Display.handleError}}\r\n </span>\r\n <span *ngSwitchCase=\"'fixedsizeinteger'\"\r\n [class.red]=\"!row[column.Property] && column.Display.handleError\">\r\n {{row[column.Property] | tofixedsizeinteger : column.Display.completingCaracter : column.Display.width }}\r\n </span>\r\n <span *ngSwitchDefault [innerText]=\"row[column.Property]\">\r\n </span>\r\n </div>\r\n\r\n <div *ngIf=\"isUndefined(row[column.Property])\">\r\n <span *ngIf=\"!isUndefined(column.Display.nullCaseText)\" class=\"mw-invalid\">\r\n {{ column.Display.nullCaseText }}\r\n </span>\r\n\r\n <span *ngIf=\"isUndefined(column.Display.nullCaseText)\">\r\n \r\n </span>\r\n </div>\r\n\r\n </ng-template>\r\n\r\n <ng-template alg-editMode>\r\n <ng-container [ngSwitch]=\"this.getFieldType(column.Property)\">\r\n\r\n <ng-container *ngSwitchCase=\"this.filterType.Date\">\r\n <input class=\"form-control\" type=\"text\" placeholder=\"Sélectionner une date\"\r\n bsDatepicker [name]=\"this.getFieldPropertyName(column.Property)\"\r\n [bsConfig]=\"this.bsConfig\" [(ngModel)]=\"row[column.Property]\" focusable\r\n tabindex=\"0\" />\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"this.filterType.Integer\">\r\n <input class=\"form-control\" type=\"number\" [(ngModel)]=\"row[column.Property]\"\r\n [name]=\"column.Property\" focusable ng-pattern=\"/^[0-9]+$/\" tabindex=\"0\" />\r\n </ng-container>\r\n <!-- *ngIf=\"!isUndefined(column.ToolTipProperty)\" -->\r\n\r\n <ng-container *ngSwitchCase=\"this.filterType.CheckBox\">\r\n <table class=checkbox-table>\r\n <td><input type=\"checkbox\" [(ngModel)]=\"row[column.Property]\"\r\n [name]=\"this.getFieldPropertyName(column.Property)\"\r\n [readonly]=\"this.getFieldReadOnly(column.Property)\" focusable\r\n tabindex=\"0\">\r\n </td>\r\n </table>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"this.filterType.ComboBox\">\r\n <ng-select class=\"grid-select\"\r\n placeholder=\"Sélectionner {{this.getField(column.Property).Label}}\"\r\n [items]=\"this.getField(column.Property).Data\"\r\n [name]=\"this.getField(column.Property).PropertyName\"\r\n [multiple]=\"this.getField(column.Property).MultipleSelection\"\r\n [hideSelected]=\"this.getField(column.Property).HideSelected\"\r\n bindValue=\"{{this.getField(column.Property).ValueMember}}\"\r\n bindLabel=\"{{this.getField(column.Property).DisplayMember}}\"\r\n [(ngModel)]=\"row[column.Property]\"\r\n [readonly]=\"this.getFieldReadOnly(column.Property)\" OnEnter focusable\r\n tabindex=\"0\">\r\n </ng-select>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"this.filterType.Text\">\r\n <textarea class=\"form-control\" rows=\"5\" [(ngModel)]=\"row[column.Property]\"\r\n [name]=\"this.getFieldPropertyName(column.Property)\"\r\n [readonly]=\"this.getFieldReadOnly(column.Property)\" focusable tabindex=\"0\">\r\n </textarea>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <input type=\"text\" [(ngModel)]=\"row[column.Property]\"\r\n [readonly]=\"this.getFieldReadOnly(column.Property)\" [name]=\"column.Property\"\r\n [id]=\"column.Property\" tabindex=\"0\" focusable />\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n </ng-template>\r\n\r\n </alg-datagrid-cell>\r\n </td>\r\n <ng-container *ngIf=\"enableLastColumnResize\">\r\n <td></td>\r\n </ng-container>\r\n </tr>\r\n <ng-container *ngIf=\"this.displayDetail\">\r\n <tr [attr.id]=\"row.Id + '_detail'\" class=\"toggleable\">\r\n <th></th>\r\n <td [attr.colspan]=\"this.columns.length +1\">\r\n <div [attr.id]=\"row.Id + '_detail_div'\" class=\"detail-div\">\r\n qmsldkqsd <br>\r\n qmsldkmqd<br>\r\n qmsldkmqdqmlskd,mq<br><br>\r\n mqlkdq<br>\r\n\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n <tfoot></tfoot>\r\n </table>\r\n</div>\r\n","import * as _ from 'lodash';\nimport moment from 'moment';\n\nimport { FieldEvent, FilterDescriptor, FilterType, IFilterDescriptorExtra, Section} from '@dflat-core/web/core-model';\nimport { Location } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, Renderer2, SimpleChanges, ViewChild } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { IFilterComponent } from '../../../model/model';\n\n@Component({\n selector: 'alg-dynamic-filter',\n templateUrl: './dynamic-filter.component.html',\n styleUrls: ['./dynamic-filter.component.scss'],\n standalone: false\n})\n\nexport class DynamicFilterComponent implements OnChanges, OnInit {\n\n @Input() vm: any;\n @Input() vmDefinition: Array<FilterDescriptor>;\n @Input() vmSectionDefinition: Array<Section>;\n\n @Input() errorMessage: string;\n @Input() horizontal: boolean = true;\n @Input() submitBtnTitle: string;\n @Input() resetBtnTitle: string;\n @Input() displayCancelButton: boolean = false;\n @Input() displayResetButton: boolean = true;\n @Input() displaySearchButton: boolean = true;\n\n @Input() raiseSubmitOnPropertyChanged: boolean = true;\n\n @Input() proxy: IFilterComponent;\n\n @Output() submit: EventEmitter<any> = new EventEmitter();\n @Output() cancel: EventEmitter<any> = new EventEmitter();\n\n\n @ViewChild(\"filterForm\", {static: false}) private filterDiv: ElementRef;\n\n form: UntypedFormGroup = null;\n status: string;\n submitted = false;\n vmCopy: any;\n vmOriginal: any;\n submitButtonTitle: string = 'Rechercher';\n resetButtonTitle: string = 'Reset';\n vmDefinitionCopy: Array<IFilterDescriptorExtra> = [];\n constructor(private router: Router,\n protected route: ActivatedRoute,\n protected renderer: Renderer2,\n private location: Location) { }\n\n toggleFilters() {\n const isAdd = !(/open/.test(this.filterDiv.nativeElement.getAttribute('class')));\n if (isAdd)\n this.renderer.addClass(this.filterDiv.nativeElement, 'open');\n else\n this.renderer.removeClass(this.filterDiv.nativeElement, 'open');\n }\n\n public refreshFilters() {\n this.vmOriginal = Object.assign({}, this.vm);\n this.clearForm(this.vm, false);\n }\n\n formatDate(current: any) {\n if (this.vmDefinition && this.vm) {\n for (let key of Object.keys(current)) {\n let field = this.vmDefinition.find(f => f.PropertyName === key);\n if (field && field.FilterType && field.FilterType === FilterType.Date) {\n if (typeof current[key] === 'string' && moment(current[key]).isValid()) {\n const value = current[key];\n let date = new Date(moment.utc(value).year(),moment.utc(value).month(),moment.utc(value).date());\n if(value.split(\"/\").length > 1){\n date = new Date(moment.utc(value,\"DD/MM/YYYY\").year(),\n moment.utc(value,\"DD/MM/YYYY\").month(),moment.utc(value,\"DD/MM/YYYY\").date());\n }\n current[key] = isNaN(date.valueOf()) ? null : date;\n }\n\n // if (moment(vm[key]).isValid()) {\n // vm[key] = moment.utc(vm[key]).toDate();\n // }\n }\n }\n }\n }\n\n clearForm(toCopy: any, reset: boolean, initFilters?: boolean) {\n let group = {} as { [key: string]: UntypedFormControl };\n this.formatDate(toCopy);\n this.vmCopy = Object.assign({}, toCopy);\n if (this.vmDefinition) {\n this.vmDefinition.forEach(field => {\n // perform reset if true\n if (reset) {\n field.Data = Object.assign([], field.OriginalData);\n } else {\n field.OriginalData = Object.assign([], field.Data);\n }\n\n if (field.FilterDistinct) {\n field.Data = _.uniqBy(field.OriginalData, field.PropertyName);\n }\n\n const validators = [];\n if (field.Required) {\n validators.push(Validators.required);\n }\n if (field.NotDefaultRequired) {\n validators.push(this.notDefaultRequiredValidator);\n }\n group[field.PropertyName] = field.Required || field.NotDefaultRequired\n ? new UntypedFormControl({ value: this.vmCopy[field.PropertyName], disabled: field.ReadOnly }, validators)\n : new UntypedFormControl({ value: this.vmCopy[field.PropertyName], disabled: field.ReadOnly });\n });\n }\n if (this.form) {\n\n Object.keys(group).forEach(g => {\n if (this.form.get(g)) {\n this.form.get(g).reset({ value: group[g].value, disabled: group[g].disabled });\n }\n else {\n this.form.addControl(g, group[g]);\n }\n });\n }\n else {\n this.form = new UntypedFormGroup(group);\n }\n\n if (this.proxy !== undefined)\n this.proxy.FilterForm = this.form;\n }\n\n notDefaultRequiredValidator(control: UntypedFormControl) {\n let val = control.value;\n if (val === -1) {\n return { notDefaultRequired: true }\n }\n return null;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['errorMessage']) {\n // TODO\n }\n\n if (changes[\"vm\"]) {\n this.vm = changes[\"vm\"].currentValue || [];\n this.clearForm(this.vm, false);\n }\n\n if (changes[\"vmDefinition\"]) {\n this.vmDefinition = changes[\"vmDefinition\"].currentValue || [];\n this.clearForm(this.vm, false);\n }\n if (changes[\"submitBtnTitle\"]) {\n this.submitButtonTitle = changes[\"submitBtnTitle\"].currentValue || 'Rechercher';\n }\n if (changes[\"resetBtnTitle\"]) {\n this.resetButtonTitle = changes[\"resetBtnTitle\"].currentValue || 'Reset';\n }\n }\n\n ngOnInit() {\n this.vmOriginal = Object.assign({}, this.vm);\n if (this.proxy !== undefined)\n this.proxy.FilterForm = this.form;\n }\n\n onReset() {\n this.onClearForm();\n this.onSearch();\n }\n\n onClearForm() {\n this.clearForm(this.vmOriginal, true, true);\n }\n\n onCancel() {\n this.cancel.emit();\n }\n\n onSearch() {\n this.submitted = true;\n if (this.form.valid) {\n // Why getRawValue and not just value, because the value one will ignore the disabled field\n // https://angular.io/api/forms/FormGroup#!#getRawValue-anchor\n this.submit.emit(this.form.getRawValue());\n }\n }\n\n resetFieldData(field: FilterDescriptor) {\n field.Data = field\n .OriginalData\n .filter(p => p[field.ValueMember] === -1\n || _.every(Object.keys(field.CurrentFilters), (name) => { return p[name] === this.form.get(name).value; }));\n }\n\n onPropertyChanged(fieldEvent: FieldEvent) {\n // if cascade dependency is defined then filter it\n let field = fieldEvent.Field;\n if (field.CascadeDependency && field.CascadeDependencyProperty) {\n let selectedValue = Number(this.form.get(field.PropertyName).value);\n let props = field.CascadeDependencyProperty.split(\";\");\n\n\n props.forEach(prop => {\n let dependingField = this.vmDefinition.find(f => f.PropertyName === prop);\n dependingField.CurrentFilters = dependingField.CurrentFilters || {};\n if (selectedValue <= 0) {\n delete dependingField.CurrentFilters[field.PropertyName];\n this.resetFieldData(dependingField);\n }\n else {\n dependingField.CurrentFilters[field.PropertyName] = true;\n this.resetFieldData(dependingField);\n }\n\n if (field.FilterDistinct) {\n dependingField.Data = _.uniqBy(dependingField.Data, dependingField.PropertyName);\n }\n\n let currentValue = this.form.get(dependingField.PropertyName).value;\n let alreadySelected = _.findIndex(dependingField.Data, (item) => { return item[dependingField.ValueMember] === currentValue });\n if (alreadySelected === -1) {\n let valueToSet = dependingField.Data[0][dependingField.ValueMember];\n this.form.get(dependingField.PropertyName).setValue(valueToSet);\n }\n });\n }\n\n // run search if needed\n if (this.raiseSubmitOnPropertyChanged) {\n this.onSearch();\n }\n }\n}\n","\r\n\r\n<div>\r\n <div class=\"clearfix\">\r\n <form>\r\n <div class=\"clearfix\">\r\n <div *ngFor=\"let field of vmDefinition\">\r\n <alg-dynamic-field style=\"width: 100%\"\r\n [horizontal]=\"horizontal\"\r\n [field]=\"field\"\r\n [form]=\"form\"\r\n [submitted]=\"submitted\"\r\n (propertyChanged)=\"onPropertyChanged($event)\">\r\n </alg-dynamic-field>\r\n </div>\r\n </div>\r\n <div class=\"clearfix\">\r\n <hr class=\"edit-last-separator-hr\">\r\n </div>\r\n <div class=\"clearfix\">\r\n <div class=\"pull-right\">\r\n <button *ngIf=\"displayCancelButton\" type=\"button\" class=\"btn btn-secondary btn-flat\" (click)=\"onCancel()\">Annuler</button>\r\n <button *ngIf=\"displayResetButton\" type=\"button\" class=\"btn btn-success btn-flat\" (click)=\"onReset()\">{{resetButtonTitle}}</button>\r\n <button type=\"button\" class=\"btn btn-primary btn-flat\" (click)=\"onSearch()\">{{submitButtonTitle}}</button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n</div>\r\n","import * as _ from 'lodash';\nimport moment from 'moment';\n\nimport { Utilities } from '@dflat-core/web/core';\nimport {\n FieldEvent,\n FilterDescriptor,\n FilterType,\n IFilterDescriptorExtra,\n} from '@dflat-core/web/core-model';\nimport { Location } from '@angular/common';\nimport {\n Component,\n Input,\n OnChanges,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { DynamicFilterComponent } from './dynamic-filter.component';\n\n@Component({\n selector: 'alg-dynamic-filter-extra',\n templateUrl: './dynamic-filter-extra.component.html',\n styleUrls: ['./dynamic-filter.component.scss'],\n standalone: false\n})\nexport class DynamicFilterExtraComponent\n extends DynamicFilterComponent\n implements OnChanges {\n @Input() vmDefault: any;\n @Input() options: any;\n\n vmDefinitionCopy: Array<IFilterDescriptorExtra> = [];\n myOptions: { [id: string]: boolean }[] = [];\n constructor(\n router: Router,\n route: ActivatedRoute,\n renderer: Renderer2,\n location: Location\n ) {\n super(router, route, renderer, location);\n }\n setData(data: any, filterIndex: number) {\n if (this.vmDefinition) {\n this.vmDefinition[filterIndex].Data = data;\n }\n }\n\n formatDate(current: any) {\n if (this.vmDefinition && this.vm) {\n for (let key of Object.keys(current)) {\n let field = this.vmDefinition.find(\n (f) => f.PropertyName === key\n );\n if (\n field &&\n field.FilterType &&\n field.FilterType === FilterType.Date\n ) {\n if (\n typeof current[key] === 'string' &&\n moment(current[key]).isValid()\n ) {\n const value = current[key];\n let date = new Date(\n moment.utc(value).year(),\n moment.utc(value).month(),\n moment.utc(value).date()\n );\n if (value.split('/').length > 1) {\n date = new Date(\n moment.utc(value, 'DD/MM/YYYY').year(),\n moment.utc(value, 'DD/MM/YYYY').month(),\n moment.utc(value, 'DD/MM/YYYY').date()\n );\n }\n current[key] = isNaN(date.valueOf()) ? null : date;\n }\n // if (moment(vm[key]).isValid()) {\n // vm[key] = moment.utc(vm[key]).toDate();\n // }\n }\n }\n }\n }\n\n clearForm(toCopy: any, reset: boolean, initFilters?: boolean) {\n let group = {} as { [key: string]: UntypedFormControl };\n this.formatDate(toCopy);\n this.vmCopy = Object.assign({}, toCopy);\n if (this.vmDefinition) {\n this.vmDefinition.forEach((field) => {\n // perform reset if true\n if (initFilters) {\n if (reset) {\n field.Data = Object.assign([], field.OriginalData);\n } else {\n field.OriginalData = Object.assign([], field.Data);\n }\n\n if (field.FilterDistinct) {\n field.Data = _.uniqBy(\n field.OriginalData,\n field.PropertyName\n );\n }\n }\n\n group[field.PropertyName] = field.Required\n ? new UntypedFormControl(\n {\n value: this.vmCopy[field.PropertyName],\n disabled: field.ReadOnly,\n },\n Validators.required\n )\n : new UntypedFormControl({\n value: this.vmCopy[field.PropertyName],\n disabled: field.ReadOnly,\n });\n });\n }\n\n if (this.form) {\n Object.keys(group).forEach((g) => {\n if (this.form.get(g)) {\n const ctrl = this.form.get(g);\n if (\n group[g].value !== ctrl.value\n ) {\n ctrl.reset({\n value: group[g].value,\n disabled: group[g].disabled,\n });\n }\n } else {\n this.form.addControl(g, group[g]);\n }\n });\n } else {\n this.form = new UntypedFormGroup(group);\n }\n\n this.updateFilterSummary();\n }\n\n initFilters(reset: boolean, field: FilterDescriptor) {\n // perform reset if true\n if (reset) {\n field.Data = Object.assign([], field.OriginalData);\n } else {\n field.OriginalData = Object.assign([], field.Data);\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['vm']) {\n this.vm = changes['vm'].currentValue || [];\n this.clearForm(this.vm, false);\n }\n if (changes['vmDefinition']) {\n this.vmDefinition = changes['vmDefinition'].currentValue || [];\n this.clearForm(this.vm, false, true);\n }\n if (changes['submitBtnTitle']) {\n this.submitButtonTitle =\n changes['submitBtnTitle'].currentValue || 'Rechercher';\n }\n if (changes['resetBtnTitle']) {\n this.resetButtonTitle =\n changes['resetBtnTitle'].currentValue || 'Reset';\n }\n if (changes['vmDefault']) {\n this.vmDefault = changes['vmDefault'].currentValue || [];\n this.vmOriginal = Object.assign({}, this.vmDefault);\n }\n if (changes['options']) {\n this.options = changes['options'].currentValue || [];\n Object.keys(this.options).forEach(\n (key) => (this.myOptions[key] = this.options[key])\n );\n }\n }\n updateFilterSummary() {\n if (this.vmDefinition) {\n this.vmDefinitionCopy.splice(0, this.vmDefinitionCopy.length);\n this.vmDefinition.forEach((field) => {\n // perform reset if true\n const displayedVal = this.GetFilterSummary(field);\n if (displayedVal !== null && displayedVal !== undefined) {\n let fieldExtra = {\n DisplayedValue: displayedVal,\n Field: field,\n } as IFilterDescriptorExtra;\n this.vmDefinitionCopy.push(fieldExtra);\n }\n });\n }\n }\n\n updateCascadeDependencies(field: FilterDescriptor) {\n this.GetFilterSummary(field);\n\n // if cascade dependency is defined then filter it\n if (field.CascadeDependency && field.CascadeDependencyProperty) {\n var frm = this.form.get(field.PropertyName);\n if (!frm) return;\n\n let selectedValue = (frm.value != null ) ? Number(frm.value) : -1;\n let props = field.CascadeDependencyProperty.split(';');\n\n props.forEach((prop) => {\n let dependingField = this.vmDefinition.find(\n (f) => f.PropertyName === prop\n );\n dependingField.CurrentFilters =\n dependingField.CurrentFilters || {};\n if (selectedValue < 0) {\n delete dependingField.CurrentFilters[field.PropertyName];\n this.resetFieldData(dependingField);\n } else {\n dependingField.CurrentFilters[field.PropertyName] = true;\n this.resetFieldData(dependingField);\n }\n\n if (field.FilterDistinct) {\n dependingField.Data = _.uniqBy(\n dependingField.Data,\n dependingField.PropertyName\n );\n }\n\n let currentValue = this.form.get(dependingField.PropertyName)\n .value;\n let alreadySelected = _.findIndex(\n dependingField.Data,\n (item) => {\n return (\n item[dependingField.ValueMember] === currentValue\n );\n }\n );\n if (alreadySelected === -1 && dependingField.Data.length > 0) {\n let valueToSet =\n dependingField.Data[0][dependingField.ValueMember];\n this.form\n .get(dependingField.PropertyName)\n .setValue(valueToSet);\n }\n });\n }\n }\n\n onPropertyChanged(field: FieldEvent) {\n // Mise à jour en cascade des propriétés dépendantes.\n this.updateCascadeDependencies(field.Field);\n\n // run search if needed\n if (this.raiseSubmitOnPropertyChanged) {\n this.onSearch();\n }\n }\n\n GetFilterSummary(field: FilterDescriptor) {\n if (this.form) {\n const frm = this.form.get(field.PropertyName);\n if (!frm) return null;\n let displayedValue = '';\n if (field.FilterType === FilterType.ComboBox) {\n if (frm.value !== null && frm.value !== undefined) {\n if (isNaN(frm.value)) {\n displayedValue = `${frm.value}`;\n } else {\n const selectedVal = parseInt(frm.value);\n if (selectedVal === -1) return null;\n if (!Utilities.IsUndefined(field.OriginalData)) {\n const fld = field.OriginalData.filter(\n (p) => p[field.ValueMember] == frm.value\n )[0];\n if (\n fld &&\n fld.hasOwnProperty(field.DisplayMember)\n ) {\n displayedValue = `${fld[field.DisplayMember]}`;\n }\n }\n }\n } else {\n // to do remove it from filters\n return null;\n }\n } else {\n return null;\n }\n return displayedValue;\n }\n }\n\n resetFormControl(field: FilterDescriptor) {\n let group = {} as { [key: string]: UntypedFormControl };\n group[field.PropertyName] = field.Required\n ? new UntypedFormControl(\n {\n value: this.vmOriginal[field.PropertyName],\n disabled: field.ReadOnly,\n },\n Validators.required\n )\n : new UntypedFormControl({\n value: this.vmOriginal[field.PropertyName],\n disabled: field.ReadOnly,\n });\n if (this.form.get(field.PropertyName)) {\n this.form\n .get(field.PropertyName)\n .reset({\n value: group[field.PropertyName].value,\n disabled: group[field.PropertyName].disabled,\n });\n } else {\n this.form.addControl(field.PropertyName, group[field.PropertyName]);\n }\n\n this.updateFilterSummary();\n\n // run search if needed\n if (this.raiseSubmitOnPropertyChanged) {\n this.onSearch();\n }\n }\n}\n","<div class=\"clearfix\">\r\n <div class=\"row\">\r\n <div class=\"col-xs-9\">\r\n <div class=\"clearfix\">\r\n <div class=\"filter-summary\">\r\n <div class=\"filter\">\r\n <div *ngFor=\"let vm of vmDefinitionCopy\" class=\"option\" (click)=\"resetFormControl(vm.Field)\">\r\n {{vm.DisplayedValue }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component } from '@angular/core';\r\n\r\nimport { DynamicFilterExtraComponent } from './dynamic-filter-extra.component';\r\n\r\n@Component({\r\n selector: 'alg-dynamic-filter-panel',\r\n templateUrl: './dynamic-filter-panel.component.html',\r\n styleUrls: ['./dynamic-filter.component.scss'],\r\n standalone: false\r\n})\r\n\r\nexport class DynamicFilterPanel extends DynamicFilterExtraComponent {\r\n \r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n onDataLoaded(event: any) {\r\n\r\n }\r\n\r\n \r\n\r\n}\r\n","\r\n<div class=\"action-title\">\r\n <h1>Filtres</h1>\r\n <!-- <button type=\"button\" class=\"btn action-btn btn-xsm\" data-toggle=\"tooltip\" title=\"Réinitialiser les filtres\"\r\n (click)=\"onReset()\">\r\n <i class=\"fa fa-remove\"></i>\r\n </button> -->\r\n <button\r\n type=\"button\"\r\n id=\"toggleButton\"\r\n class=\"btn btn-svg action-btn\"\r\n data-toggle=\"tooltip\"\r\n title=\"Réinitialiser les filtres\"\r\n (click)=\"onReset()\"\r\n >\r\n <img\r\n class=\"action-icon\"\r\n src=\"assets/images/filter-circle-xmark-solid.svg\"\r\n alt=\"Rechercher\"\r\n />\r\n</button>\r\n</div>\r\n<ng-content select=\"[beforeFilter]\"></ng-content>\r\n<div class=\"filter-tab\">\r\n <form [formGroup]=\"form\" id=\"filterForm\">\r\n <div *ngFor=\"let field of vmDefinition\">\r\n <alg-dynamic-field [horizontal]=\"horizontal\" [field]=\"field\" [form]=\"form\" [submitted]=\"submitted\"\r\n (propertyChanged)=\"onPropertyChanged($event)\">\r\n </alg-dynamic-field>\r\n </div>\r\n </form>\r\n</div>\r\n<ng-content select=\"[afterFilter]\"></ng-content>\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: \"[algTabHeading]\",\r\n standalone: false\r\n})\r\nexport class TabHeadingDirective {\r\n\r\n constructor(public templateRef: TemplateRef<any>) {\r\n }\r\n}\r\n","import { Component, ContentChild, Input, TemplateRef } from '@angular/core';\r\n\r\nimport { TabHeadingDirective } from '../../directives/tab-heading';\r\n\r\n@Component({\r\n selector: \"alg-tab\",\r\n templateUrl: \"./tab.component.html\",\r\n styleUrls: [\"./tab.component.scss\"],\r\n standalone: false\r\n})\r\nexport class Tab {\r\n\r\n @ContentChild(TabHeadingDirective,{static: false})\r\n heading: TabHeadingDirective;\r\n\r\n @Input()\r\n title: string;\r\n\r\n @Input()\r\n active = false;\r\n\r\n @Input()\r\n disabled = false;\r\n\r\n @Input()\r\n hidden = false;\r\n\r\n @Input()\r\n iconUrl : string;\r\n\r\n get headingTemplate(): TemplateRef<any> {\r\n return this.heading ? this.heading.templateRef : null;\r\n };\r\n\r\n}\r\n","<ng-content *ngIf=\"active\"></ng-content>","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: \"[algTabTransclude]\",\r\n standalone: false\r\n})\r\nexport class TabTranscludeDirective {\r\n\r\n _algTabTransclude: TemplateRef<any>;\r\n\r\n constructor(public viewRef: ViewContainerRef) {\r\n }\r\n\r\n @Input()\r\n set algTabTransclude(templateRef: TemplateRef<any>) {\r\n this._algTabTransclude = templateRef;\r\n if (templateRef) {\r\n this.viewRef.createEmbeddedView(templateRef);\r\n }\r\n }\r\n\r\n get algTabTransclude() {\r\n return this._algTabTransclude;\r\n }\r\n}\r\n","import { Component, ContentChildren, EventEmitter, Input, Output, QueryList } from '@angular/core';\r\n\r\nimport { Tab } from '../tab/tab.component';\r\n\r\n@Component({\r\n selector: \"alg-tabset\",\r\n templateUrl: \"./tabset.component.html\",\r\n styleUrls: [\"./tabset.component.scss\"],\r\n standalone: false\r\n})\r\nexport class Tabset \r\n// implements \r\n// AfterContentInit\r\n// , AfterContentChecked\r\n{\r\n\r\n @Input()\r\n showNavs: boolean = true;\r\n\r\n // @Input() sectionContext: SectionContext<any>;\r\n\r\n @Input()\r\n pills: boolean;\r\n\r\n @Input() isVertical: boolean = false; \r\n\r\n @ContentChildren(Tab)\r\n tabs: QueryList<Tab>;\r\n\r\n @Output()\r\n onSelect = new EventEmitter<number>(false);\r\n\r\n changeActiveTabByIndex(index: number) {\r\n const tabs = this.tabs.toArray();\r\n tabs.forEach(tab => tab.active = false);\r\n\r\n tabs[index].active = true;\r\n this.onSelect.emit(tabs.indexOf(tabs[index]));\r\n }\r\n\r\n changeActiveTab(tab: Tab) {\r\n const tabs = this.tabs.toArray();\r\n tabs.forEach(tab => tab.active = false);\r\n tab.active = true;\r\n this.onSelect.emit(tabs.indexOf(tab));\r\n }\r\n\r\n getNavClass() {\r\n let rc = 'nav';\r\n if ( ! this.showNavs && this.tabs.length == 1)\r\n rc += ' nav-none';\r\n else if (!this.pills)\r\n rc += ' nav-tabs';\r\n else\r\n rc += ' nav-pills';\r\n\r\n if(this.isVertical)\r\n rc += ' vertical-layout'\r\n\r\n return rc;\r\n }\r\n\r\n}\r\n","\r\n<div class=\"tabset nav-tabs-custom\">\r\n <ul [ngClass]=\"getNavClass()\">\r\n <li role=\"presentation\" *ngFor=\"let tab of tabs\" [class.active]=\"tab.active\" [class.hidden]=\"tab.hidden\">\r\n <a (click)=\"changeActiveTab(tab)\" class=\"btn\" [class.disabled]=\"tab.disabled\" [class.btn-img]=\"tab.iconUrl\">\r\n <alg-image *ngIf=\"tab.iconUrl && tab.title!=''\" [imageUrl]=\"tab.iconUrl\" [imageHeight]=\"15\" [imageWidth]=\"15\">\r\n </alg-image>\r\n <img *ngIf=\"tab.iconUrl && tab.title==''\" [src]=\"tab.iconUrl\" class=\"tabset-img\"/>\r\n <span [algTabTransclude]=\"tab.headingTemplate\">{{tab.title}}</span>\r\n </a>\r\n </li>\r\n </ul>\r\n <div class=\"tabset-content\" [class.empty-nav]=\"! this.showNavs && this.tabs.length == 1\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { Utilities } from '@dflat-core/web/core';\nimport { FieldValidators, FilterDescriptor, FilterType, Section, SectionError, SpecificSection, ValidatorTypes, FieldEvent, TextZoneButtonEvent, ExtendedProperty, ConditionalResults } from '@dflat-core/web/core-model';\nimport { Location } from '@angular/common';\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChange, SimpleChanges } from '@angular/core';\nimport { AbstractControl, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport * as _ from 'lodash';\nimport moment from 'moment';\nimport { Subscription } from 'rxjs';\n\n\n\n@Component({\n selector: \"alg-dynamic-form\",\n templateUrl: \"./dynamic-form.component.html\",\n styleUrls: [\"./dynamic-form.component.scss\"],\n standalone: false\n})\nexport class DynamicFormComponent implements OnChanges, OnInit {\n @Input() vm: any = {}; //ViewModel : propre au controler traité\n @Input() vmDefinition: Array<Section> = []; //vmDef.FieldViewModels[] = fields (qui sont envoyés 1 par 1 au dynamicFieldComponent)\n @Input() operation: string;\n @Input() errorMessage: string;\n @Input() showButtons: boolean = true;\n @Input() forceSaveButton: boolean = false;\n @Input() specificSection: SpecificSection[];\n @Input() noTab: boolean = false;\n @Input() inputClass: string = 'form-control';\n @Input() saveButtonLabel : string = \"Sauvegarder\";\n @Output() update: EventEmitter<any> = new EventEmitter();\n @Output() cancel: EventEmitter<any> = new EventEmitter();\n @Output() propertychanged: EventEmitter<any> = new EventEmitter();\n @Output() PropertyChangedFullEvent: EventEmitter<any> = new EventEmitter();\n @Output() textZoneButtonClicked: EventEmitter<TextZoneButtonEvent> = new EventEmitter();\n @Output() dropZone: EventEmitter<any> = new EventEmitter();\n\n\n @Input() extendedPropertiesLoaded: EventEmitter<any> = new EventEmitter();;\n @Input() validateAfterEachChange: boolean = true;\n form: UntypedFormGroup;\n status: string;\n submitted = false;\n vmCopy: any;\n sectionErrors: SectionError[] = [];\n formChangesSubscription: Subscription;\n initialized: boolean = false;\n public test: any = 5;\n ErrorConfig = {\n required: 'Le champ est obligatoire',\n maxlength: 'Taille max du champs atteinte',\n email: 'Adresse email invalide'\n }\n constructor(private location: Location) {\n }\n\n ngOnInit() {\n this.initialized = true;\n this.clearForm();\n }\n\n ngAfterViewInit() {\n // Recharger la page pour afficher les extended properties\n this.extendedPropertiesLoaded.subscribe(res => { this.ngOnInit(); }\n );\n }\n\n formatDate(current: any) {\n if (this.vmDefinition) {\n const fields = ([] as FilterDescriptor[]).concat(...this.vmDefinition.map(s => s.FieldViewModels));\n for (let key of Object.keys(current)) {\n let field = fields.find(f => f.PropertyName === key);\n if (field && field.FilterType && field.FilterType === FilterType.Date) {\n if (typeof current[key] === 'string' && moment(current[key]).isValid()) {\n const value = current[key];\n let date = new Date(moment.utc(value,true).year(), moment.utc(value,true).month(), moment.utc(value,true).date());\n\n if (value.split(\"/\").length > 1) {\n date = new Date(moment.utc(value, \"DD/MM/YYYY\").year(),\n moment.utc(value, \"DD/MM/YYYY\").month(), moment.utc(value, \"DD/MM/YYYY\").date());\n\n }\n current[key] = isNaN(date.valueOf()) ? null : date;\n }\n }\n }\n }\n }\n clearForm() {\n this.formatDate(this.vm);\n if (this.form && Object.keys(this.form.controls).length > 0) {\n this.form.reset();\n this.vmCopy = Object.assign({}, this.vm);\n if (this.vmDefinition && this.vm) {\n setTimeout(() => {\n this.form.patchValue(this.vmCopy);\n }, 0);\n }\n return;\n }\n let group = {};\n if (this.vmDefinition && this.vm) {\n this.vmCopy = Object.assign({}, this.vm);\n this.vmDefinition.forEach(section => {\n section.FieldViewModels.forEach(field => {\n group[field.PropertyName] = new UntypedFormControl(this.vmCopy[field.PropertyName], this.getValidators(field.FieldValidators));\n this.checkFieldIsCascade(field);\n });\n });\n }\n this.form = new UntypedFormGroup(group);\n // if (this.vmDefinition) {\n // this.vmDefinition.forEach(section => {\n // section.FieldViewModels.forEach(field => {\n // if (field.IsConditioning){\n // this.handleConditionalFields(field.PropertyName, this.form.get(field.PropertyName).value);\n // }\n // else if (!Utilities.IsNil(field.CascadeDependency) && field.CascadeDependency === true) {\n // this.handleCascadeField(field);\n // }\n // });\n // });\n // }\n // if(this.formChangesSubscription){\n // this.formChangesSubscription.unsubscribe();\n // }\n // this.formChangesSubscription = this.form.valueChanges.subscribe(val => {\n // console.log(`Logging form value changes ${JSON.stringify(val)}`);\n // console.log(`Logging form value changes ${JSON.stringify(this.vm)}`);\n // this.vm = {...this.vm, ...val};\n // });\n }\n\n checkFieldIsCascade(field: FilterDescriptor) {\n if (!Utilities.IsNil(field.CascadeDependency) && field.CascadeDependency === true) {\n field.OriginalData = Object.assign([], field.Data);\n }\n if (field.FilterDistinct) {\n field.Data = _.uniqBy(field.OriginalData, field.PropertyName);\n }\n }\n\n /**\n * Gets validators\n * @param fieldValidators\n * @returns\n */\n getValidators(fieldValidators: FieldValidators) {\n let validators = [];\n if (fieldValidators) {\n if ((fieldValidators.ValidatorType & ValidatorTypes.MaxLength) != 0) {\n validators.push(Validators.maxLength(fieldValidators.MaxLength));\n }\n if ((fieldValidators.ValidatorType & ValidatorTypes.Required) != 0) {\n validators.push(Validators.required);\n }\n if ((fieldValidators.ValidatorType & ValidatorTypes.Email) != 0) {\n validators.push(Validators.email);\n }\n if((fieldValidators.ValidatorType & ValidatorTypes.Min) != 0){\n validators.push(Validators.min(fieldValidators.MinValue));\n }\n if((fieldValidators.ValidatorType & ValidatorTypes.Max) != 0){\n validators.push(Validators.max(fieldValidators.MaxValue));\n }\n }\n return validators;\n }\n /**\n * on changes\n * @param changes\n */\n ngOnChanges(changes: SimpleChanges) {\n if (this.initialized) {\n if (changes[\"vmDefinition\"]) {\n this.vmDefinition = changes[\"vmDefinition\"].currentValue || [];\n }\n if (changes[\"vm\"]) {\n this.vm = changes[\"vm\"].currentValue || {};\n }\n if (changes[\"specificSection\"]) {\n this.specificSection = changes[\"specificSection\"].currentValue || [];\n }\n this.checkIfWeCanClearForm();\n }\n }\n /**\n * Checks if we can clear form\n */\n checkIfWeCanClearForm() {\n if (this.vmDefinition && this.vm) {\n this.clearForm();\n }\n }\n /**\n * Determines whether back on\n */\n onBack() {\n this.location.back();\n }\n /**\n * Determines whether cancel on\n */\n onCancel() {\n if (this.cancel) {\n this.cancel.emit();\n } else {\n this.onBack();\n }\n }\n /**\n * Determines whether save on\n */\n onSave() {\n\n // if(this.validateAfterEachChange)\n // this.checkIsValid();\n\n this.submitted = true;\n if (this.form.valid) {\n // Why getRawValue and not just value, because the value one will ignore the disabled field\n // https://angular.io/api/forms/FormGroup#!#getRawValue-anchor\n this.update.emit(this.form.getRawValue());\n }\n }\n /**\n * Determines whether property changed on\n * @param field\n */\n onPropertyChanged(field: FieldEvent) {\n\n if (field.Field.FilterType == FilterType.Custom && !Utilities.IsNil(field.Field.ModalTriggerIdProperty)) {\n // this.vm[field.Field.ModalTriggerIdProperty] = field.Event['Id'];\n this.form.get(field.Field.ModalTriggerIdProperty).setValue(field.Event['Id']);\n }\n let c_value = this.form.get(field.Field.PropertyName).value;\n\n // Extended properties changed\n if (field.Field.IsExtendedProperty)\n this.vm[\"ExtendedProperties\"].filter(ex => ex.PropertyName == field.Field.PropertyName)[0].Value = c_value;\n\n this.propertychanged.emit({ propertyName: field.Field.PropertyName, value: c_value });\n\n if (field.Field.IsConditioning) {\n this.handleConditionalFields(field.Field.PropertyName, this.form.get(field.Field.PropertyName).value);\n }\n else if (!Utilities.IsNil(field.Field.CascadeDependency) && field.Field.CascadeDependency === true) {\n this.handleCascadeField(field.Field);\n }\n // else {\n // this.checkIsValid();\n // }\n }\n\n\n onTextZoneButtonClicked(event: TextZoneButtonEvent) {\n this.textZoneButtonClicked.emit(event);\n }\n\n\n onDropZone(event: any) {\n this.dropZone.emit(event);\n }\n\n // onPropertyChangedFullEvent(event: Event) {\n // this.PropertyChangedFullEvent.emit(event);\n // }\n /**\n * Handles conditional fields\n * @param conditioningFieldPropertyName\n * @param conditioningFieldValue\n */\n handleConditionalFields(conditioningFieldPropertyName: string, conditioningFieldValue: any) {\n if (this.vmDefinition && this.vm) {\n this.vmDefinition.forEach(section => {\n section.FieldViewModels.forEach(field => {\n if (field.IsConditional && (field.ConditioningField == conditioningFieldPropertyName)) {\n\n if ( field.ConditionalResult == ConditionalResults.Hide )\n field.IsHidden = ((field.ConditioningFieldValue.filter(c => c === conditioningFieldValue)?.length>0) || (field.BoolConditioningFieldValue === conditioningFieldValue));\n else if ( field.ConditionalResult == ConditionalResults.ReadOnly )\n field.ReadOnly = ((field.ConditioningFieldValue.filter(c => c === conditioningFieldValue)?.length>0) || (field.BoolConditioningFieldValue === conditioningFieldValue));\n\n if (field.IsHidden) {\n this.form.controls[field.PropertyName].clearValidators();\n this.form.controls[field.PropertyName].updateValueAndValidity();\n } else {\n if ((field.FieldValidators.ValidatorType & ValidatorTypes.Required) != 0)\n this.form.controls[field.PropertyName].setValidators([Validators.required])\n if ((field.FieldValidators.ValidatorType & ValidatorTypes.MaxLength) != 0)\n this.form.controls[field.PropertyName].setValidators([Validators.maxLength(field.FieldValidators.MaxLength)])\n if ((field.FieldValidators.ValidatorType & ValidatorTypes.Email) != 0)\n this.form.controls[field.PropertyName].setValidators([Validators.email])\n this.form.controls[field.PropertyName].updateValueAndValidity();\n }\n }\n });\n });\n }\n }\n\n // resetFieldData(field: FilterDescriptor) {\n // if (Utilities.IsNil(field.OriginalData)) {\n // console.log(`${field.PropertyName} OriginalData is undefined !!!!!`);\n // return;\n // }\n\n // if (field.FilterType == FilterType.Integer) {\n // field.Data = field\n // .OriginalData\n // .filter(p => p[field.ValueMember] === -1\n // || _.every(Object.keys(field.CurrentFilters), (name) => { return p[name] === this.form.get(name).value; }));\n // }\n // else {\n // field.Data = field\n // .OriginalData\n // .filter(p => _.every(Object.keys(field.CurrentFilters), (name) => { return p[name] === this.form.get(name).value; }));\n // }\n // }\n\n resetFieldData(field: FilterDescriptor) {\n try {\n field.Data = field.OriginalData\n .filter(p => p[field.ValueMember] === -1\n || _.every(Object.keys(field.CurrentFilters), (name) => { return p[name] === this.form.get(name).value; }));\n }\n catch (error) {\n }\n }\n\n handleCascadeField(field: FilterDescriptor) {\n // if cascade dependency is defined then filter it\n // if (field.CascadeDependency && field.CascadeDependencyProperty) {\n // let selectedValue = field.FilterType === FilterType.Integer ? Number(this.form.get(field.PropertyName).value) : this.form.get(field.PropertyName).value;\n // let props = field.CascadeDependencyProperty.split(\";\");\n // var fieldsVm = this.vmDefinition.map(vm => vm.FieldViewModels).reduce((results, plans) => [...results, ...plans], []).filter(\n // s => props.includes(s.PropertyName)\n // );\n\n // props.forEach(prop => {\n // let dependingField = fieldsVm.find(f => f.PropertyName === prop);\n // dependingField.CurrentFilters = dependingField.CurrentFilters || {};\n // if (Utilities.IsNil(selectedValue) || Utilities.isEmptyString(selectedValue)) {\n // delete dependingField.CurrentFilters[field.PropertyName];\n // this.resetFieldData(dependingField);\n // }\n // else {\n // dependingField.CurrentFilters[field.PropertyName] = true;\n // this.resetFieldData(dependingField);\n // }\n // if (field.FilterDistinct) {\n // dependingField.Data = _.uniqBy(dependingField.Data, dependingField.PropertyName);\n // }\n // let currentValue = this.form.get(dependingField.PropertyName).value;\n // let alreadySelected = _.findIndex(dependingField.Data, (item) => { return item[dependingField.ValueMember] === currentValue });\n // });\n // }\n // if cascade dependency is defined then filter it\n if (field.CascadeDependency && field.CascadeDependencyProperty) {\n let selectedValue = Number(this.form.get(field.PropertyName).value);\n let props = field.CascadeDependencyProperty.split(\";\");\n var _self = this;\n var fieldsVm = this.vmDefinition.map(vm => vm.FieldViewModels).reduce((results, plans) => [...results, ...plans], []).filter(\n s => props.includes(s.PropertyName)\n );\n\n props.forEach(prop => {\n let dependingField = fieldsVm.find(f => f.PropertyName === prop);\n dependingField.CurrentFilters = dependingField.CurrentFilters || {};\n if (selectedValue <= 0) {\n delete dependingField.CurrentFilters[field.PropertyName];\n this.resetFieldData(dependingField);\n }\n else {\n dependingField.CurrentFilters[field.PropertyName] = true;\n this.resetFieldData(dependingField);\n }\n\n if (field.FilterDistinct) {\n dependingField.Data = _.uniqBy(dependingField.Data, dependingField.PropertyName);\n }\n\n let currentValue = this.form.get(dependingField.PropertyName).value;\n let alreadySelected = _.findIndex(dependingField.Data, (item) => { return item[dependingField.ValueMember] === currentValue });\n if (alreadySelected === -1) {\n if (!Utilities.IsNil(dependingField.Data[0])) {\n let valueToSet = dependingField.Data[0][dependingField.ValueMember];\n this.form.get(dependingField.PropertyName).setValue(valueToSet);\n }\n }\n });\n }\n }\n\n /**\n * Checks is valid\n */\n // checkIsValid() {\n // setTimeout(() => {\n // this.sectionErrors.splice(0, this.sectionErrors.length);\n // if (this.vmDefinition && this.vm) {\n // this.vmDefinition.forEach(section => {\n // let sectionError = {\n // Name: section.Name,\n // Errors: []\n // } as SectionError;\n\n // section.FieldViewModels.forEach(field => {\n // let ctrl: AbstractControl = this.form.get(field.PropertyName);\n // if (!ctrl.valid) {\n // for (let errorCode in ctrl.errors) {\n // if (ctrl.errors.hasOwnProperty(errorCode)) {\n // sectionError.Errors.push(field.Label + ' : ' + this.retrieveErrorMessage(errorCode));\n // }\n // }\n // }\n // });\n\n // if (sectionError.Errors.length > 0) {\n // this.sectionErrors.push(sectionError);\n // }\n // });\n // }\n // });\n // }\n /**\n * Retrieves error message\n * @param errorCode\n * @returns\n */\n retrieveErrorMessage(errorCode: string) {\n return this.ErrorConfig[errorCode] || \"ERRORS\";\n }\n /**\n * Retrieves full error message\n * @param label\n * @param errorCode\n * @param PropertyName\n * @returns full error message\n */\n retrieveFullErrorMessage(label: string, errorCode: string, PropertyName: string): string {\n return\n 'Erreur sur le champ: ' + label +\n ', Type de l\\'erreur: ' + errorCode +\n ', err value: ' + JSON.stringify(this.form.get(PropertyName).errors[errorCode]);\n }\n /**\n * Marks as touched\n */\n markAsTouched() {\n setTimeout(() => {\n this.form.markAsTouched();\n });\n }\n /**\n * Marks as dirty\n */\n markAsDirty() {\n setTimeout(() => {\n this.form.markAsDirty();\n });\n }\n\n isValid(): boolean {\n return this.form.valid && !this.form.dirty\n }\n\n isDirty(){\n return this.form.valid && this.form.dirty;\n }\n\n isInvalid(){\n return !this.form.valid;\n }\n\n reset(): void {\n if (this.form)\n this.form.reset();\n }\n\n markFormAsPristine(): void {\n if (this.form)\n this.form.markAsPristine();\n }\n\n get formValue(){\n return this.form.getRawValue();\n }\n\n getRequiredIcon() {\n return `../../assets/images/star-of-life-solid.svg`;\n }\n}\n","<div class=\"dynamic-form-container\">\r\n <div class=\"box-body\">\r\n <ng-container *ngIf=\"sectionErrors && (sectionErrors.length > 0)\">\r\n <div class=\"alert\">\r\n <div class=\"errorMessage\" *ngFor=\"let item of sectionErrors\">\r\n <b> Onglet {{ item.Name }} </b>\r\n <ul>\r\n <li *ngFor=\"let err of item.Errors\">\r\n {{ err }}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <form class=\"dynamic-form\" novalidate>\r\n <div>\r\n <ng-container *ngIf=\"vmDefinition\">\r\n <div ngSwitch=\"{{vmDefinition.length}}\">\r\n <!-- CAS:1 -->\r\n <div *ngSwitchCase=\"'1'\">\r\n\r\n <div ngSwitch=\"{{noTab}}\">\r\n <div *ngSwitchCase=\"'true'\">\r\n <div *ngFor=\"let field of vmDefinition[0].FieldViewModels\">\r\n <!-- <img *ngIf=\"field.Required\" class=\"required-icon\" [src]=\"this.getRequiredIcon()\" alt=\"obligatoire\"> -->\r\n <alg-dynamic-field [inputClass]=\"this.inputClass\" [field]=\"field\" [form]=\"form\"\r\n [submitted]=\"submitted\"\r\n (propertyChanged)=\"onPropertyChanged($event)\"\r\n (dropZone)=\"onDropZone($event)\"\r\n (textZoneButtonClicked)=\"onTextZoneButtonClicked($event)\">\r\n </alg-dynamic-field>\r\n </div>\r\n </div>\r\n <div *ngSwitchDefault>\r\n <alg-tabset [showNavs]=\"false\" [pills]=\"false\">\r\n <!-- CAS:1 -> Création des onglets \"Génériques\" -->\r\n <alg-tab title=\"Propriétés\" [active]=\"true\">\r\n <div class=\"dynamic-form-inner-container\">\r\n <div *ngFor=\"let field of vmDefinition[0].FieldViewModels\">\r\n <!-- <img *ngIf=\"field.Required\" class=\"required-icon\" [src]=\"this.getRequiredIcon()\" alt=\"obligatoire\"> -->\r\n <alg-dynamic-field [field]=\"field\" [form]=\"form\" [submitted]=\"submitted\"\r\n (propertyChanged)=\"onPropertyChanged($event)\"\r\n (dropZone)=\"onDropZone($event)\"\r\n (textZoneButtonClicked)=\"onTextZoneButtonClicked($event)\">\r\n </alg-dynamic-field>\r\n </div>\r\n </div>\r\n </alg-tab>\r\n\r\n\r\n <!-- CAS:1 -> Création des onglets \"Spécifiques\", Pour savoir par ou on passe, TESTER context.cas -->\r\n <ng-container *ngIf=\"specificSection && specificSection.length > 0\">\r\n <alg-tab [title]=\"section.Name\"\r\n *ngFor=\"let section of specificSection; let i = index\">\r\n <div class=\"dynamic-form-inner-container\">\r\n <ng-container\r\n *ngTemplateOutlet=\"section.Template; context: {$implicit: section, sectionIndex: i , cas: '1'}\">\r\n </ng-container>\r\n </div>\r\n </alg-tab>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n </div>\r\n </div>\r\n </ng-container>\r\n </alg-tabset>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- CAS:par defaut -->\r\n <div *ngSwitchDefault>\r\n <alg-tabset [showNavs]=\"false\" [pills]=\"false\">\r\n <!-- CAS:par defaut -> Création des onglets \"Génériques\" -->\r\n <alg-tab [title]=\"section.Name\" *ngFor=\"let section of vmDefinition\"\r\n [active]=\"section === vmDefinition[0]\">\r\n <div class=\"dynamic-form-inner-container\">\r\n <div *ngFor=\"let field of section.FieldViewModels\">\r\n <alg-dynamic-field [field]=\"field\" [form]=\"form\" [submitted]=\"submitted\"\r\n (propertyChanged)=\"onPropertyChanged($event)\"\r\n (dropZone)=\"onDropZone($event)\"\r\n (textZoneButtonClicked)=\"onTextZoneButtonClicked($event)\">\r\n </alg-dynamic-field>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n </div>\r\n </div>\r\n </div>\r\n </alg-tab>\r\n\r\n <!-- CAS:par defaut -> Création des onglets \"Spécifiques\", Pour savoir par ou on passe, TESTER context.cas -->\r\n <ng-container *ngIf=\"specificSection && specificSection.length > 0\">\r\n\r\n <alg-tab [title]=\"section.Name\" *ngFor=\"let section of specificSection; let i = index\">\r\n <div class=\"dynamic-form-inner-container\">\r\n <ng-container\r\n *ngTemplateOutlet=\"section.Template; context: {$implicit: section, sectionIndex: i, cas: 'default'}\">\r\n </ng-container>\r\n </div>\r\n </alg-tab>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </alg-tabset>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"errorMessage \" class=\"alert alert-danger\">\r\n {{ errorMessage }}\r\n </div>\r\n </div>\r\n <div *ngIf=\"showButtons\" class=\"clearfix footer-buttons\">\r\n <div class=\"pull-right\">\r\n <button type=\"button\" class=\"btn btn-secondary btn-flat\" (click)=\"onCancel()\">Annuler</button>\r\n <button type=\"button\" class=\"btn btn-primary btn-flat\" [disabled]=\"!forceSaveButton && !form.valid\"\r\n (click)=\"onSave()\">{{saveButtonLabel}}</button>\r\n </div>\r\n </div>\r\n </form>\r\n</div>\r\n","import * as _ from 'lodash';\nimport { Subscription } from 'rxjs';\n\nimport { Utilities } from '@dflat-core/web/core';\nimport { FilterDescriptor, FilterType, IFilterDescriptorExtra } from '@dflat-core/web/core-model';\nimport { AuthService } from '@dflat-core/web/core-services';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { IFilterComponent } from '../../model/model';\n\n@Component({\n selector: 'alg-filtersummary',\n templateUrl: './filtersummary.component.html',\n styleUrls: ['./filtersummary.component.css'],\n standalone: false\n})\nexport class FilterSummaryComponent {\n\n @Input() proxy: IFilterComponent; //DflatBaseFilterComponent<FilterViewModel, any>;\n @Output() submit: EventEmitter<any> = new EventEmitter();\n\n filterList: Array<IFilterDescriptorExtra> = [];\n subscription: Subscription;\n\n isEmptyFilter(): boolean {\n return this.filterList.length == 0;\n }\n\n constructor(private authSevice: AuthService) {\n\n }\n\n ngOnInit(): void {\n if(! Utilities.IsNil(this.proxy.onSearch))\n {\n this.subscription = this.proxy.onSearch.subscribe(\n (msg: any) => { this.onDataLoaded(msg) }, null, null);\n }\n }\n\n ngOnDestroy() {\n // prevent memory leak when component destroyed\n if(! Utilities.IsNil(this.subscription))\n this.subscription.unsubscribe();\n }\n\n onDataLoaded(event: any) {\n this.updateFilterSummary(this.proxy.FilterDescriptors, this.proxy.FilterForm);\n }\n\n updateFilterSummary(descriptors: FilterDescriptor[], form: UntypedFormGroup) {\n if (descriptors && form) {\n this.filterList.splice(0, this.filterList.length);\n\n descriptors.forEach(field => {\n // perform reset if true\n const displayedVal = this.GetFilterSummary(field, form);\n if (displayedVal !== null && displayedVal !== undefined) {\n let fieldExtra = { DisplayedValue: displayedVal, Field: field } as IFilterDescriptorExtra;\n this.filterList.push(fieldExtra);\n }\n });\n\n this.proxy.HasFilter = ! this.isEmptyFilter();\n }\n }\n\n GetFilterSummary(field: FilterDescriptor, form: UntypedFormGroup) {\n const frm = form.get(field.PropertyName);\n if (!frm)\n return null;\n\n let displayedValue = null;\n if (field.FilterType === FilterType.ComboBox) {\n if (frm.value !== null && frm.value !== undefined) {\n if (isNaN(frm.value)) {\n displayedValue = `${frm.value}`;\n }\n else {\n const selectedVal = parseInt(frm.value);\n if (selectedVal === -1) return null;\n if (!Utilities.IsUndefined(field.OriginalData)) {\n const fld = field.OriginalData.filter(p => p[field.ValueMember] == frm.value)[0];\n if (fld && fld.hasOwnProperty(field.DisplayMember)) {\n displayedValue = `${fld[field.DisplayMember]}`;\n }\n }\n }\n }\n else {\n // to do remove it from filters\n // console.log(\"value is null, to do remove from filters summaries\");\n return null;\n }\n }\n else {\n //displayedValue = frm.value;\n return null;\n }\n // console.log(`${field.Label} : ${displayedValue}`);\n return displayedValue;\n }\n\n\n resetFormControl(field: FilterDescriptor) {\n if (!field.IsClearable) return;\n let group = {} as { [key: string]: UntypedFormControl };\n var fieldValue = this.proxy.FilterDescriptors[field.PropertyName];\n if ((field.FilterType === FilterType.ComboBox) && (fieldValue == null || fieldValue == undefined)) {\n if (field.Data.find(d => d[field.ValueMember] === -1))\n fieldValue = -1;\n else\n fieldValue = null;\n }\n\n group[field.PropertyName] = field.Required\n ? new UntypedFormControl({ value: fieldValue, disabled: field.ReadOnly }, Validators.required)\n : new UntypedFormControl({ value: fieldValue, disabled: field.ReadOnly });\n\n if (this.proxy.FilterForm.get(field.PropertyName)) {\n this.proxy.FilterForm.get(field.PropertyName).reset({ value: group[field.PropertyName].value, disabled: group[field.PropertyName].disabled });\n }\n else {\n this.proxy.FilterForm.addControl(field.PropertyName, group[field.PropertyName]);\n }\n\n this.updateFilterSummary(this.proxy.FilterDescriptors, this.proxy.FilterForm);\n this.updateCascadeFields(field);\n\n // run search if needed\n this.onSearch();\n }\n\n updateCascadeFields(field: FilterDescriptor) {\n // if cascade dependency is defined then filter it\n if (field.CascadeDependency && field.CascadeDependencyProperty) {\n let selectedValue = Number(this.proxy.FilterForm.get(field.PropertyName).value);\n let props = field.CascadeDependencyProperty.split(\";\");\n\n props.forEach(prop => {\n let dependingField = this.proxy.FilterDescriptors.find(f => f.PropertyName === prop);\n dependingField.CurrentFilters = dependingField.CurrentFilters || {};\n if (selectedValue <= 0) {\n delete dependingField.CurrentFilters[field.PropertyName];\n this.resetFieldData(dependingField);\n }\n else {\n dependingField.CurrentFilters[field.PropertyName] = true;\n this.resetFieldData(dependingField);\n }\n\n if (field.FilterDistinct) {\n dependingField.Data = _.uniqBy(dependingField.Data, dependingField.PropertyName);\n }\n\n let currentValue = this.proxy.FilterForm.get(dependingField.PropertyName).value;\n let alreadySelected = _.findIndex(dependingField.Data, (item) => { return item[dependingField.ValueMember] === currentValue });\n if (alreadySelected === -1) {\n let valueToSet = dependingField.Data[0][dependingField.ValueMember];\n this.proxy.FilterForm.get(dependingField.PropertyName).setValue(valueToSet);\n }\n });\n }\n }\n\n resetFieldData(field: FilterDescriptor) {\n field.Data = field\n .OriginalData\n .filter(p => p[field.ValueMember] === -1\n || _.every(Object.keys(field.CurrentFilters), (name) => { return p[name] === this.proxy.FilterForm.get(name).value; }));\n }\n\n onSearch() {\n if (this.proxy.FilterForm.valid) {\n // Why getRawValue and not just value, because the value one will ignore the disabled field\n // https://angular.io/api/forms/FormGroup#!#getRawValue-anchor\n this.submit.emit(this.proxy.FilterForm.getRawValue());\n }\n }\n\n}\n","<div class=\"clearfix\" *ngIf=\"! isEmptyFilter()\">\r\n <div class=\"filter-summary\">\r\n <div class=\"filter\">\r\n <ng-container *ngIf=\"filterList\">\r\n <div *ngFor=\"let filter of filterList\" class=\"option\"\r\n (click)=\"resetFormControl(filter.Field)\">\r\n {{filter.DisplayedValue}}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div> \r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'alg-grid-row',\r\n templateUrl: './grid-row.component.html',\r\n styleUrls: ['./grid-row.component.scss'],\r\n standalone: false\r\n})\r\nexport class GridRowComponent implements OnInit {\r\n\r\n // Nombre de colonnes (1, 2 ou 3)\r\n @Input() columns?: number;\r\n get isTriple() { return this.columns === 3;}\r\n get isDouble() { return this.columns === 2;}\r\n get isSingle() { return this.columns === 1;}\r\n \r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div class=\"row algorima-row\">\r\n <div class=\"algorima-col class.col-sm-12\" [hidden]=\"! isDouble && ! isTriple\" [class.col-md-4]=\"isTriple\" [class.col-lg-4]=\"isTriple\" [class.col-md-6]=\"isDouble\" [class.col-lg-6]=\"isDouble\">\r\n <ng-content select=\"[leftContent]\"></ng-content>\r\n </div>\r\n <div class=\"algorima-col class.col-sm-12\" [hidden]=\"isDouble\" [class.col-md-4]=\"isTriple\" [class.col-lg-4]=\"isTriple\" [class.col-md-12]=\"isSingle\" [class.col-lg-12]=\"isSingle\">\r\n <ng-content select=\"[middleContent]\"></ng-content>\r\n </div>\r\n <div class=\"algorima-col class.col-sm-12\" [hidden]=\"! isDouble && ! isTriple\" [class.col-md-4]=\"isTriple\" [class.col-lg-4]=\"isTriple\" [class.col-md-6]=\"isDouble\" [class.col-lg-6]=\"isDouble\">\r\n <ng-content select=\"[rightContent]\"></ng-content>\r\n </div>\r\n</div>","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { Action, IActionComponent } from '../../model/model';\nimport { ApplicationService } from '../../services/application.service';\nimport { Utilities } from '@dflat-core/web/core';\n\n\n@Component({\n selector: 'msw-logs',\n templateUrl: './logs.component.html',\n styleUrls: ['./logs.component.scss'],\n standalone: false\n})\nexport class LogsComponent implements IActionComponent {\n @Output() onDownloadLogs: EventEmitter<any> = new EventEmitter();\n @Output() onDisplayLogs: EventEmitter<any> = new EventEmitter();\n\n @Input() hasLogs: boolean = false;\n @Input() logs: any[] = [];\n @Input() logs_filter : any[] = [];\n hasFilter : boolean = false;\n\n searchText: string = 'Rechercher dans la log...';\n search: string;\n\n\n actions: Array<Action> = [\n new Action(\n 'clear',\n 'Effacer la console',\n true,\n false,\n false,\n 'trash-o',\n 'bg-blue',\n this.clearLogs.bind(this),\n null,\n ()=>true\n )\n ];\n\n @ViewChild('logContainer', { static: false }) logContainer: ElementRef;\n \n constructor(public app: ApplicationService) {\n\n }\n handleActionSearchKeywords(keyword: string) {\n this.search = keyword;\n if (!Utilities.IsNil(keyword) && keyword.trim() != '') {\n this.logs_filter = this.logs.filter(log=>this.filter(log, keyword)); \n this.hasFilter = true;\n }\n else {\n this.hasFilter = false;\n }\n\n }\n \n toggleFilterView(): void {}\n refresh(): void {}\n showHistory(): void {}\n\n hasNoLogs() {\n return (! this.hasLogs) && this.logs.length === 0 ; //this.hasLogs === false;\n }\n\n clearLogs() {\n this.logs.splice(0, this.logs.length);\n }\n\n scrollToBottom(): void {\n try {\n this.logContainer.nativeElement.scrollTop = this.logContainer.nativeElement.scrollHeight + 10;\n } catch (err) {\n\n }\n }\n\n cliquerSurCase(item: any): void {\n\n if (item.indexOf('[') > -1) {\n let codeId: any = \"\";\n codeId = item.split(\"[\")[1].split(\"]\")[0];\n this.app.Router.navigate([`edi/agentplugin/${codeId}`]);\n }\n\n }\n getlogs() : any[] {\n return this.hasFilter ? this.logs_filter : this.logs;\n }\n \n\n updateFilter(log: any) {\n if (!this.hasFilter)\n return;\n \n let existinglog = this.logs_filter.find(l=>l.id == log.id);\n if (existinglog) {\n existinglog.content = log.content;\n }\n else if (this.filter(log, this.search))\n this.logs_filter.push(log);\n }\n\n filter(log: any, keyword: string): boolean {\n return log.content[1].toUpperCase().includes(this.search.toUpperCase()) || \n log.content[2].toUpperCase().includes(this.search.toUpperCase()) || \n log.content[3].toUpperCase().includes(this.search.toUpperCase());\n }\n\n \n\n ngOnDestroy(): void {\n \n }\n\n}\n","\r\n\r\n<alg-actions [proxy]=\"this\" [actions]=\"this.actions\" [showFilterButton]=\"false\" [showSearchButton]=\"false\" [showSearchBar]=\"true\">\r\n </alg-actions>\r\n<div class=\"logs-textarea\" #logContainer>\r\n \r\n\r\n <ng-container *ngIf=\"logs.length == 0\">\r\n <span class=\"log-info\">En attente des logs...</span>\r\n </ng-container>\r\n\r\n <ng-container>\r\n <table>\r\n <tr *ngFor=\"let log of this.getlogs();\" [ngClass]=\"log.class\">\r\n <td class = \"td1\">{{log.content[0]}}</td>\r\n <td class = \"td2\">{{log.content[1]}}</td>\r\n <td *ngIf=\"log.content[2].indexOf('[') > -1\"\r\n style=\"cursor:pointer;\"\r\n (click)=\"cliquerSurCase(log.content[2])\" \r\n class = \"td3 td3over\">{{log.content[2]}}\r\n </td>\r\n <td *ngIf=\"log.content[2].indexOf('[') === -1\"\r\n style=\"cursor:text;\"\r\n (click)=\"cliquerSurCase(log.content[2])\" \r\n class = \"td3\">{{log.content[2]}}\r\n </td>\r\n <td class = \"td4\">{{log.content[3]}}</td>\r\n <td class = \"td5\">{{log.content[4]}}</td>\r\n </tr>\r\n </table>\r\n </ng-container>\r\n </div>\r\n","import { Utilities } from '@dflat-core/web/core';\nimport { IUserCredential, User } from '@dflat-core/web/core-model';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n ViewChildren\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MenuItem } from '@dflat-core/web/core-services';\nimport cloneDeep from 'lodash/cloneDeep';\n\n@Component({\n selector: 'alg-menu',\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.scss'],\n standalone: false\n})\nexport class MenuComponent implements OnInit, AfterViewInit {\n public currentUrl: string;\n public currentUser: User = new User({} as IUserCredential);\n public showMe: boolean = true;\n\n @Input() horizontalMode: boolean = false;\n @Input() compact = false;\n @Input() menuItems: Array<MenuItem> = [];\n items: Array<MenuItem> = [];\n\n isFiltered : boolean = false;\n\n @Input() isFixed: boolean = false;\n @Input() displaySearchBar: boolean = true;\n @ViewChildren('treeview')\n private treeview: QueryList<ElementRef>;\n\n @ViewChildren('treeviewmenu')\n private treeviewmenu: QueryList<ElementRef>;\n private currentTreeView: ElementRef = undefined;\n private currentTreeViewMenu: ElementRef = undefined;\n private currentClass: string = undefined;\n\n keyword: string;\n\n @Output()\n itemClicked: EventEmitter<MenuItem> = new EventEmitter<MenuItem>();\n\n constructor(\n //private userServ: UserService,\n public router: Router,\n public renderer: Renderer2\n ) {\n // getting the current url\n this.router.events.subscribe((evt: any) => (this.currentUrl = evt.url));\n //this.userServ.getCurrent().subscribe((user) => this.currentUser = user);\n }\n ngAfterViewInit(): void {\n this.setFixedStyle();\n }\n\n public ngOnInit(): void {\n // this.menuService.getCurrent().subscribe((menu) => {\n // this.originalItems = menu.filter(m=>m.sublinks !== null && m.sublinks.length > 0)\n // .sort((a,b) => (a.title > b.title) ? 1 : ((b.title > a.title) ? -1 : 0));\n this.items = cloneDeep(this.menuItems);\n // });\n }\n\n toggleMenu(itemId: number, clicked: boolean, eventType: string) {\n if (this.isFixed) return;\n\n if (itemId == 99999 || (clicked && this.horizontalMode)) {\n if (!Utilities.IsNil(this.currentTreeViewMenu)) {\n this.renderer.removeClass(\n this.currentTreeViewMenu.nativeElement,\n this.currentClass\n );\n this.renderer.addClass(\n this.currentTreeViewMenu.nativeElement,\n 'collapsed'\n );\n\n this.renderer.removeClass(\n this.currentTreeView.nativeElement,\n 'active'\n );\n }\n\n this.currentTreeViewMenu = undefined;\n this.currentClass = undefined;\n\n return;\n }\n\n if (this.lockToggle) return;\n\n let menuToggle = this.menuItems.find(it => it.id == itemId);\n let node = this.treeview.find(\n el => el.nativeElement['id'] == 'node-' + itemId\n );\n const nb = menuToggle.sublinks?.length;\n let submenu = this.treeviewmenu.find(\n el => el.nativeElement['id'] == 'subtree-' + itemId\n );\n\n if (\n !Utilities.IsNil(this.currentTreeViewMenu) &&\n (nb == 0 || submenu != this.currentTreeViewMenu || clicked)\n ) {\n this.renderer.removeClass(\n this.currentTreeViewMenu.nativeElement,\n this.currentClass\n );\n this.renderer.addClass(\n this.currentTreeViewMenu.nativeElement,\n 'collapsed'\n );\n\n this.renderer.removeClass(\n this.currentTreeView.nativeElement,\n 'active'\n );\n\n this.currentTreeViewMenu = undefined;\n this.currentClass = undefined;\n }\n\n if (\n !Utilities.IsNil(submenu) &&\n (submenu != this.currentTreeViewMenu || clicked)\n ) {\n if (submenu != this.currentTreeViewMenu) {\n this.renderer.removeClass(submenu.nativeElement, 'collapsed');\n this.renderer.addClass(\n submenu.nativeElement,\n 'uncollapsed-' + nb\n );\n\n this.renderer.addClass(node.nativeElement, 'active');\n\n this.currentTreeViewMenu = submenu;\n this.currentTreeView = node;\n this.currentClass = 'uncollapsed-' + nb;\n } else {\n this.currentTreeViewMenu = undefined;\n this.currentClass = undefined;\n // this.currentTreeView = undefined;\n }\n }\n }\n\n isItemActive(subitem: MenuItem): boolean {\n return (\n !Utilities.IsNil(this.currentUrl) &&\n location.pathname == subitem.link\n );\n }\n\n lockToggle: boolean = false;\n subItemClick(item: MenuItem, subitem: MenuItem) {\n if (item != null) {\n this.itemClicked.emit(subitem);\n this.toggleMenu(item.id, true, 'click');\n this.lockToggle = true;\n setTimeout(() => {\n this.lockToggle = false;\n }, 300);\n } else {\n this.itemClicked.emit(item);\n }\n }\n\n getSubtreeClass(nb: number): string {\n if ( this.isFixed)\n return 'uncollapsed-' + nb;\n return '';\n\n }\n public setFixedStyle() \n {\n // if (this.isFixed) {\n // this.menuItems.forEach(element => {\n \n // let itemId = element.id;\n // let menuToggle = this.menuItems.find(it => it.id == itemId);\n // let node = this.treeview.find(\n // el => el.nativeElement['id'] == 'node-' + itemId\n // );\n\n // this.renderer.addClass(node.nativeElement,'active');\n\n // const nb = menuToggle.sublinks?.length;\n // let submenu = this.treeviewmenu.find(\n // el => el.nativeElement['id'] == 'subtree-' + itemId\n // );\n\n // this.renderer.addClass(submenu.nativeElement,'uncollapsed-' + nb);\n \n \n // });\n // }\n }\n\n reset() {\n // Retour à l'original\n this.items = cloneDeep(this.menuItems);\n this.isFiltered= false;\n this.isFixed = false;\n }\n\n filter(event: any) {\n if ( Utilities.isEmptyString(this.keyword)) {\n this.reset();\n return;\n }\n\n this.isFiltered= true;\n this.isFixed = true;\n this.items = [];\n for(let i = 0; i < this.menuItems.length; i++) {\n\n if ( Utilities.IsNil(this.menuItems[i].sublinks) )\n {\n let clone = cloneDeep(this.menuItems[i]);\n this.items.push(clone);\n continue;\n }\n\n let filterd = this.menuItems[i].sublinks.filter(l=>l.title.toUpperCase().includes(this.keyword.toUpperCase()));\n \n if ( filterd.length > 0) { \n let clone = cloneDeep(this.menuItems[i]);\n clone.sublinks = cloneDeep(filterd);\n this.items.push(clone);\n }\n }\n }\n\n}","<!-- Left side column. contains the logo and sidebar -->\r\n<aside class=\"main-sidebar\">\r\n <div *ngIf=\"this.displaySearchBar && ! this.compact\" class=\"search-input-container\">\r\n <input [(ngModel)]=\"this.keyword\" name=\"search\" autocomplete=\"off\" class=\"search form-control search-bar-action search-input\" type=\"text\" [placeholder]=\"'Rechercher un menu...'\" (input)=\"filter($event)\">\r\n </div>\r\n <ng-container *ngIf = \"!this.isFiltered\">\r\n <!-- sidebar: style can be found in sidebar.less -->\r\n <section class=\"sidebar-container\" [class.compact]=\"this.compact\" (mouseleave)=\"horizontalMode && this.toggleMenu(99999, true, 'mouseleave')\">\r\n <!-- Sidebar Menu -->\r\n <ul class=\"sidebar-menu\" [class.compact]=\"this.compact\"\r\n [class.vertical]=\"! horizontalMode\" \r\n [class.horizontal]=\"horizontalMode\"\r\n >\r\n <ng-container *ngFor=\"let item of items\">\r\n <ng-container *ngIf=\"!item.sublinks\">\r\n <li (mouseenter)=\"horizontalMode && this.toggleMenu(item.id, false, 'mouseenter')\" \r\n (mouseleave)=\"horizontalMode && this.toggleMenu(item.id, false, 'mouseleave')\"\r\n class=\"treeview\" #treeview id=\"node-{{item.id}}\">\r\n \r\n <a (click)=\"this.subItemClick(item, null)\" *ngIf=\"!item.external\" [routerLink]=\"item.link\" id=\"node-{{item.id}}\">\r\n <i class=\"fa fa-{{ item.icon }} fa-lg\"></i>\r\n <span [class.compact]=\"this.compact\">{{ item.title }}</span>\r\n </a>\r\n <a (click)=\"this.subItemClick(item, null)\" *ngIf=\"item.external\" [href]=\"item.link\" [target]=\"item.target\">\r\n <i class=\"fa fa-{{ item.icon }} fa-lg\"></i>\r\n <span [class.compact]=\"this.compact\">{{ item.title }}</span>\r\n </a>\r\n <div class=\"subtree-container\" [class.vertical]=\"! horizontalMode\" \r\n [class.horizontal]=\"horizontalMode\">\r\n <ul class=\"treeview-menu\" #treeviewmenu id=\"subtree-{{item.id}}\">\r\n\r\n </ul>\r\n </div>\r\n\r\n </li>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"item.sublinks\">\r\n <li (mouseenter)=\"horizontalMode && this.toggleMenu(item.id, false, 'mouseenter')\" \r\n (mouseleave)=\"horizontalMode && this.toggleMenu(item.id, false, 'mouseleave')\"\r\n class=\"treeview\" #treeview id=\"node-{{item.id}}\">\r\n <!-- {{ item.title }} -->\r\n <a \r\n [routerLink]=\"! horizontalMode ? null : item.link\" \r\n (click)=\"this.toggleMenu(item.id, true, 'mouseclick')\">\r\n <i *ngIf=\"item.icon\" class=\"fa fa-{{ item.icon }} fa-lg\"></i>\r\n <span [class.compact]=\"this.compact\">{{ item.title }}</span>\r\n </a>\r\n <div class=\"subtree-container\" \r\n [class.vertical]=\"! horizontalMode\" \r\n [class.horizontal]=\"horizontalMode\">\r\n <ul class=\"treeview-menu\" #treeviewmenu id=\"subtree-{{item.id}}\" [ngClass]=\"getSubtreeClass(item.sublinks.length)\">\r\n <ng-container *ngFor=\"let subitem of item.sublinks\">\r\n <li [class.active]=\"isItemActive(subitem)\">\r\n <a (click)=\"this.subItemClick(item, subitem)\" *ngIf=\"!subitem.external\" [routerLink]=\"subitem.link\">\r\n <i *ngIf=\"subitem.icon\" class=\"fa fa-{{ subitem.icon }}\"></i>\r\n <span [class.compact]=\"this.compact\">{{ subitem.title }}</span>\r\n </a>\r\n <a (click)=\"this.subItemClick(item, subitem)\" *ngIf=\"subitem.external\" [href]=\"subitem.link\" [target]=\"subitem.target\">\r\n <i *ngIf=\"subitem.icon\" class=\"fa fa-{{ subitem.icon }}\"></i>\r\n <span [class.compact]=\"this.compact\">{{ subitem.title }}</span>\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n </ul>\r\n <!-- /.sidebar-menu -->\r\n </section>\r\n <!-- /.sidebar -->\r\n </ng-container>\r\n <ng-container *ngIf = \"this.isFiltered\">\r\n <section class=\"sidebar-container\" (mouseleave)=\"horizontalMode && this.toggleMenu(99999, true, 'mouseleave')\">\r\n <!-- Sidebar Menu -->\r\n <ul class=\"sidebar-menu\" [class.compact]=\"this.compact\"\r\n [class.vertical]=\"! horizontalMode\" \r\n [class.horizontal]=\"horizontalMode\"\r\n >\r\n <ng-container *ngFor=\"let item of items\">\r\n <ng-container *ngIf=\"!item.sublinks\">\r\n <li\r\n class=\"treeview\">\r\n \r\n <a (click)=\"this.subItemClick(item, null)\" *ngIf=\"!item.external\" [routerLink]=\"item.link\" id=\"node-{{item.id}}\">\r\n <i class=\"fa fa-{{ item.icon }} fa-lg\"></i>\r\n <span [class.compact]=\"this.compact\">{{ item.title }}</span>\r\n </a>\r\n <a (click)=\"this.subItemClick(item, null)\" *ngIf=\"item.external\" [href]=\"item.link\" [target]=\"item.target\">\r\n <i class=\"fa fa-{{ item.icon }} fa-lg\"></i>\r\n <span [class.compact]=\"this.compact\">{{ item.title }}</span>\r\n </a>\r\n <div class=\"subtree-container\" [class.vertical]=\"! horizontalMode\" \r\n [class.horizontal]=\"horizontalMode\">\r\n <ul class=\"treeview-menu\">\r\n \r\n </ul>\r\n </div>\r\n \r\n </li>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"item.sublinks\">\r\n <li class=\"treeview\">\r\n <!-- {{ item.title }} -->\r\n <a \r\n [routerLink]=\"! horizontalMode ? null : item.link\">\r\n <i *ngIf=\"item.icon\" class=\"fa fa-{{ item.icon }} fa-lg\"></i>\r\n <span [class.compact]=\"this.compact\">{{ item.title }}</span>\r\n </a>\r\n <div class=\"subtree-container\" \r\n [class.vertical]=\"! horizontalMode\" \r\n [class.horizontal]=\"horizontalMode\">\r\n <ul class=\"treeview-menu\" #treeviewmenu [ngClass]=\"getSubtreeClass(item.sublinks.length)\">\r\n <ng-container *ngFor=\"let subitem of item.sublinks\">\r\n <li [class.active]=\"isItemActive(subitem)\">\r\n <a (click)=\"this.subItemClick(item, subitem)\" *ngIf=\"!subitem.external\" [routerLink]=\"subitem.link\">\r\n <i *ngIf=\"subitem.icon\" class=\"fa fa-{{ subitem.icon }}\"></i>\r\n <span [class.compact]=\"this.compact\">{{ subitem.title }}</span>\r\n </a>\r\n <a (click)=\"this.subItemClick(item, subitem)\" *ngIf=\"subitem.external\" [href]=\"subitem.link\" [target]=\"subitem.target\">\r\n <i *ngIf=\"subitem.icon\" class=\"fa fa-{{ subitem.icon }}\"></i>\r\n <span [class.compact]=\"this.compact\">{{ subitem.title }}</span>\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n </ul>\r\n <!-- /.sidebar-menu -->\r\n </section>\r\n </ng-container>\r\n \r\n</aside>","import { Utilities } from '@dflat-core/web/core';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'alg-validation-error',\n templateUrl: './validation-error.component.html',\n styleUrls: ['./validation-error.component.scss'],\n standalone: false\n})\nexport class ValidationErrorComponent {\n\n validationErrors: string[] = null;\n \n constructor() {}\n\n hasValidationErrors() { return ! Utilities.IsNil(this.validationErrors); } \n}\n","<div>\r\n <ng-container *ngIf=\"this.hasValidationErrors()\">\r\n <div class=\"validation-error-container\">\r\n <div class=\"validation-error-panel\">\r\n <b> {{this.validationErrors.length}} erreur(s) de validation </b>\r\n <ul>\r\n <li *ngFor=\"let err of this.validationErrors\">\r\n {{ err }}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</ng-container>\r\n</div>","import { Utilities } from '@dflat-core/web/core';\nimport { DataService } from '@dflat-core/web/core-data';\nimport {\n FieldDescriptor,\n FilterType,\n Section,\n TrackRecordProperty,\n} from '@dflat-core/web/core-model';\n\nimport { DatePipe } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { IIsCancel } from '../../model/model';\n\n@Component({\n selector: 'alg-track-record-modal',\n templateUrl: './track-record-modal.component.html',\n standalone: false\n})\nexport class TrackRecordModalComponent implements OnInit, IIsCancel {\n isCancel?: boolean = false;\n\n @Input() entityKey: string = ' ';\n @Input() entityId: number = null;\n\n ngOnInit(): void {\n this.dataService\n .getTrackRecordProperties(this.entityKey, [this.entityId])\n .subscribe((res) => {\n this.viewModel = res[0];\n\n if (!Utilities.IsNil(this.viewModel) && !Utilities.IsNil(this.viewModel.CreationDate))\n this.viewModel.CreationDateString = this.datePipe.transform(this.viewModel.CreationDate,'dd/MM/yyyy HH:mm:ss');\n\n if (!Utilities.IsNil(this.viewModel) && !Utilities.IsNil(this.viewModel.ModificationDate))\n this.viewModel.ModificationDateString = this.datePipe.transform(this.viewModel.ModificationDate,'dd/MM/yyyy HH:mm:ss');\n });\n }\n\n callBackAction: (component: IIsCancel) => void = () => {};\n\n public viewModel: TrackRecordProperty = {};\n public TrackRecordSections: Section[] = [];\n\n getTrackRecordSection() {\n let fields: FieldDescriptor[] = [];\n let creationDate: FieldDescriptor = {\n PropertyName: 'CreationDateString',\n FilterType: FilterType.String,\n ReadOnly: true,\n Label: 'Date de création',\n };\n let createdBy: FieldDescriptor = {\n PropertyName: 'CreatedBy',\n FilterType: FilterType.String,\n ReadOnly: true,\n Label: 'Crée par :',\n };\n let modifiedBy: FieldDescriptor = {\n PropertyName: 'ModifiedBy',\n FilterType: FilterType.String,\n ReadOnly: true,\n Label: 'Modifié par :',\n };\n\n let modificationDate: FieldDescriptor = {\n PropertyName: 'ModificationDateString',\n FilterType: FilterType.String,\n ReadOnly: true,\n Label: 'Date de modification',\n };\n\n fields = [createdBy, creationDate, modifiedBy, modificationDate];\n\n let section: Section = {\n FieldViewModels: fields,\n IsCustomFieldSection: false,\n IsFileSection: false,\n IsTrackRecordSection: false,\n Name: 'Historique',\n };\n\n this.TrackRecordSections = [section];\n }\n\n constructor(private dataService: DataService, private datePipe: DatePipe) {\n this.getTrackRecordSection();\n }\n}\n","<alg-dynamic-form #dForm\r\n [vm]=\"this.viewModel\"\r\n [vmDefinition]=\"this.TrackRecordSections\"\r\n [showButtons]=\"false\">\r\n</alg-dynamic-form>\r\n","import { Utilities } from '@dflat-core/web/core';\nimport { LayoutService } from '../../v2/services/layout.service';\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n Renderer2\n} from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\n\n// Handles panel resizing and orientation\n@Directive({\n selector: '[oldLayoutHandler]',\n exportAs: 'oldLayoutHandler',\n standalone: false\n})\nexport class OldLayoutHandlerDirective implements OnDestroy, AfterViewInit {\n \n isVerticalLayout: boolean;\n propertyflexGrow: number;\n\n constructor(\n private layoutHandlerService: LayoutService,\n private renderer: Renderer2,\n private elRef: ElementRef\n ) { }\n\n ngAfterViewInit(): void {\n this.layoutHandlerService.getPreferencesByEntityKey(this.entityKey)\n .pipe(takeUntil(this.destroy$))\n .subscribe((preferences) => {\n setTimeout(() => {\n this.lastPropertyflexGrow = preferences.PropertyFlexGrow;\n this.propertyflexGrow = preferences.PropertyFlexGrow;\n this.isVerticalLayout = preferences.IsVerticalLayout;\n this.updateLayout();\n });\n\n });\n }\n\n @Input() entityKey!: string;\n @Input() isSection: boolean = false;\n\n\n private destroy$ = new Subject<void>();\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n expandPropertyflexGrow(event: MouseEvent) {\n if (event)\n event.stopPropagation();\n this.layoutHandlerService.expandPropertyflexGrow(this.entityKey,this.propertyflexGrow == 100 ? 30 : 100)\n }\n\n getHtmlElement(className: string): HTMLElement {\n return Array.from(this.elRef.nativeElement.querySelectorAll(className))\n .find((el: HTMLElement) => el.id === this.entityKey)[0];\n }\n\n lastPropertyflexGrow: number;\n \n hidePropertyGrid() {\n if (this.propertyflexGrow != 0 )\n this.lastPropertyflexGrow = this.propertyflexGrow;\n\n this.propertyflexGrow = 0;\n this.updateLayout();\n }\n\n scheduleLayout() {\n queueMicrotask(() => {\n requestAnimationFrame(() => {\n this.updateLayout();\n });\n });\n }\n \n showPropertyGrid() {\n this.propertyflexGrow = this.lastPropertyflexGrow;\n this.updateLayout();\n }\n\n public updateLayout(): void {\n \n if ( Utilities.IsNil(this.propertyflexGrow))\n return;\n\n // Initialize panel container if necessary\n const panelContainer = this.elRef.nativeElement.querySelector('.panel-container');\n \n\n // Configure direction and dimensions of main container\n if (panelContainer) {\n const direction = this.isVerticalLayout ? 'column' : 'row';\n this.renderer.setStyle(panelContainer, 'flex-direction', direction);\n //this.renderer.setStyle(panelContainer, 'height', `calc(100% - ${actionHeight+1}px)`);\n }\n\n // Configure panel growth\n const middleContainer = this.elRef.nativeElement.querySelector('.middle-panel');\n if (middleContainer) {\n this.renderer.setStyle(middleContainer, 'flex-grow', 100 - this.propertyflexGrow);\n }\n\n const rightPanelContainer = this.elRef.nativeElement.querySelector('.right-panel-container');\n if (rightPanelContainer)\n this.renderer.setStyle(rightPanelContainer, 'flex-grow', this.propertyflexGrow);\n\n // Configure separator\n const separator = this.elRef.nativeElement.querySelector('.separator-container');\n const directionClass = this.isVerticalLayout ? 'vertical' : 'horizontal';\n const oppositeClass = this.isVerticalLayout ? 'horizontal' : 'vertical';\n if (separator) {\n this.renderer.addClass(separator, directionClass);\n this.renderer.removeClass(separator, oppositeClass);\n }\n\n // Configure expand button\n const expandButton = this.elRef.nativeElement.querySelector('.expand-btn');\n if (expandButton) {\n const paddingStyle = this.isVerticalLayout ? { padding: '0' } : { padding: '0' };\n for (const [key, value] of Object.entries(paddingStyle)) {\n this.renderer.setStyle(expandButton, key, value);\n }\n\n // Determine arrow direction\n const arrowClass = !this.isVerticalLayout\n ? this.propertyflexGrow == 100 ? 'arrow-right' : 'arrow-left'\n : this.propertyflexGrow == 100 ? 'arrow-down' : 'arrow-up';\n\n const arrowSpan = expandButton.querySelector('div');\n if (arrowSpan) {\n ['arrow-right', 'arrow-left', 'arrow-up', 'arrow-down'].forEach(\n (cls) => {\n this.renderer.removeClass(arrowSpan, cls);\n }\n );\n this.renderer.addClass(arrowSpan, arrowClass);\n }\n }\n\n // Configure toggle button\n const toggleButton = this.elRef.nativeElement.querySelector('.toggle-btn');\n if (toggleButton) {\n\n // Determine arrow direction\n const arrowClass = this.isVerticalLayout\n ? 'arrow-right'\n : 'arrow-down';\n\n const arrowSpan = toggleButton.querySelector('div');\n if (arrowSpan) {\n ['arrow-right', 'arrow-left', 'arrow-up', 'arrow-down'].forEach(\n (cls) => {\n this.renderer.removeClass(arrowSpan, cls);\n }\n );\n this.renderer.addClass(arrowSpan, arrowClass);\n }\n }\n\n }\n \n private dragInProgress = false;\n startResizing(event: MouseEvent): void {\n if (this.isSection) return;\n event.preventDefault();\n this.dragInProgress = true;\n }\n\n // Handles mouse movement during resizing\n @HostListener('window:mousemove', ['$event'])\n onMouseMove(event: MouseEvent) {\n if (this.isSection || !this.dragInProgress) {\n return;\n }\n event.preventDefault();\n \n const panelContainer = this.elRef.nativeElement.querySelector('.panel-container');\n if (!panelContainer)\n return;\n const rect = panelContainer.getBoundingClientRect();\n let flexGrow: number;\n\n if (!this.isVerticalLayout) {\n const offsetX = event.clientX - rect.left;\n const ratio = offsetX / rect.width;\n flexGrow = Math.round(100 - Math.min(80, Math.max(20, ratio * 100)));\n flexGrow = flexGrow >= 80 ? 100 : flexGrow;\n } else {\n const offsetY = event.clientY - rect.top;\n flexGrow = Math.round(100 - (offsetY / rect.height) * 100);\n }\n\n // Update the local state\n this.propertyflexGrow = flexGrow;\n \n // Apply the layout changes in real-time during drag\n this.scheduleLayout();\n \n // Also update the context for other subscribers\n // this.layoutHandlerService.setPropertyEditorFlexGrow(this.entityKey,flexGrow);\n }\n\n\n @HostListener('document:mouseup')\n onMouseUp(): void {\n if (!this.dragInProgress) return;\n this.dragInProgress = false;\n this.layoutHandlerService.stopResizing(this.entityKey, this.propertyflexGrow);\n }\n\n stopResizing(event : MouseEvent) {\n if (this.isSection) return;\n event.preventDefault();\n this.layoutHandlerService.stopResizing(this.entityKey);\n }\n\n @HostListener('window:beforeunload')\n onBeforeUnload() {\n this.layoutHandlerService.saveLayoutPreferences();\n }\n}","import { Directive, ElementRef, Renderer2, Input, OnInit, OnDestroy } from '@angular/core';\r\n\r\n // Directive that hides an element when it doesn't meet specified dimension thresholds\r\n // Can check width, height, and flex-grow values\r\n@Directive({\r\n selector: '[hideOnThreshold]' // Can be used as an attribute on any element\r\n ,\r\n standalone: false\r\n})\r\nexport class HideOnThresholdDirective implements OnInit, OnDestroy {\r\n // Input properties to set minimum thresholds. Null means no threshold check\r\n @Input() minWidth: number = null; // Minimum width in pixels\r\n @Input() minHeight: number | null = null; // Minimum height in pixels\r\n @Input() minFlexGrow: number | null = null; // Minimum flex-grow value\r\n\r\n // ResizeObserver instance to monitor element size changes\r\n private resizeObserver: ResizeObserver | null = null;\r\n\r\n /**\r\n * Constructor injects required services\r\n * @param el Reference to the host element\r\n * @param renderer Service for safe DOM manipulation\r\n */\r\n constructor(private el: ElementRef, private renderer: Renderer2) {}\r\n\r\n //Initialize the directive and set up size monitoring\r\n ngOnInit(): void {\r\n // Exit if no thresholds are set\r\n if (this.minWidth === null && this.minHeight === null && this.minFlexGrow === null) {\r\n return;\r\n }\r\n\r\n // Create ResizeObserver to monitor element dimensions\r\n this.resizeObserver = new ResizeObserver((entries) => {\r\n for (const entry of entries) {\r\n // Get current dimensions from the resize entry\r\n const { width, height } = entry.contentRect;\r\n const element = entry.target as HTMLElement;\r\n \r\n // Get current flex-grow value from computed styles\r\n const computedStyle = getComputedStyle(element);\r\n const flexGrow = parseInt(computedStyle.getPropertyValue('flex-grow'));\r\n\r\n // Check if any threshold conditions are not met\r\n const widthCondition = this.minWidth !== null && width < this.minWidth;\r\n const heightCondition = this.minHeight !== null && height < this.minHeight;\r\n const flexGrowCondition = this.minFlexGrow !== null && flexGrow < this.minFlexGrow;\r\n\r\n // Hide element if any condition is not met, show it otherwise\r\n if (widthCondition || heightCondition || flexGrowCondition) {\r\n this.renderer.setStyle(this.el.nativeElement, 'display', 'none');\r\n } else {\r\n this.renderer.removeStyle(this.el.nativeElement, 'display');\r\n }\r\n }\r\n });\r\n\r\n // Start observing the element's size changes\r\n this.resizeObserver.observe(this.el.nativeElement);\r\n }\r\n\r\n // Cleanup: stop observing element size changes when directive is destroyed\r\n ngOnDestroy(): void {\r\n this.resizeObserver?.disconnect();\r\n }\r\n}","import {\r\n AfterViewInit,\r\n Component,\r\n Input,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { OldLayoutHandlerDirective } from '../old-layout-handler.directive';\r\n\r\n@Component({\r\n selector: 'alg-page-layout',\r\n templateUrl: './page-layout.component.html',\r\n styleUrls: ['./page-layout.component.scss'],\r\n standalone: false\r\n})\r\nexport class PageLayoutComponent implements AfterViewInit {\r\n @Input() public ShowLeftPanel?: boolean = true;\r\n @Input() public ShowPropertyPanel?: boolean = true;\r\n @Input() entityKey!: string;\r\n @ViewChild(OldLayoutHandlerDirective) layoutHandlerDirective!: OldLayoutHandlerDirective;\r\n\r\n constructor( ) {}\r\n ngAfterViewInit(): void {\r\n this.layoutHandlerDirective.updateLayout();\r\n }\r\n\r\n}\r\n","<div class=\"page-container\" oldLayoutHandler [entityKey]=\"this.entityKey\" #layoutHandler=\"oldLayoutHandler\">\r\n <ng-content class=\"action-panel\" select=\"[actionsContent]\"></ng-content>\r\n <div class=\"panel-container\" [id]=\"layoutHandler.entityKey\">\r\n <div class=\"middle-panel\">\r\n\r\n <div *ngIf=\"this.ShowLeftPanel\" class=\"left-panel-container\" hideOnThreshold >\r\n <ng-content select=\"[leftContent]\"></ng-content>\r\n </div>\r\n <div class=\"middle-panel-content\">\r\n <div class=\"middle-panel-header\">\r\n <ng-content select=\"[middleHeader]\"></ng-content>\r\n </div>\r\n \r\n <div class=\"middle-panel-main\">\r\n <ng-content select=\"[middleContent]\"></ng-content>\r\n </div>\r\n <div class=\"middle-panel-footer\">\r\n <ng-content select=\"[middleFooter]\"></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"this.ShowPropertyPanel\">\r\n <div class=\"separator-container\" (mousedown)=\"layoutHandler.startResizing($event)\" [id]=\"layoutHandler.entityKey\">\r\n <button class=\"expand-btn\" (click)=\"layoutHandler.expandPropertyflexGrow($event)\">\r\n <div class=\"arrow\"></div>\r\n </button>\r\n </div>\r\n \r\n <div class=\"right-panel-container\" [id]=\"layoutHandler.entityKey\">\r\n <ng-content select=\"[rightContent]\"></ng-content>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","import { nameof, Utilities } from '@dflat-core/web/core';\nimport {\n ActionDescriptor,\n ColumnDescriptor,\n DictionnaryWrapper,\n EntityViewModel,\n EntityViewModelWithFields,\n FilterDescriptor,\n FilterViewModel,\n Notification,\n PagedList,\n SaveResults,\n SpecificSection\n} from '@dflat-core/web/core-model';\nimport {\n AfterContentInit, ContentChild,\n Directive,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Type,\n ViewChild\n} from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { SelectionType } from '@swimlane/ngx-datatable';\n\nimport moment from 'moment';\nimport {\n BehaviorSubject,\n filter,\n forkJoin as observableForkJoin,\n of,\n Subject,\n Subscription,\n switchMap\n} from 'rxjs';\nimport { ExportDataModalComponent } from '../../modals/export-data-modal/export-data-modal.component';\nimport {\n DatagridOptions, IPaging,\n ISorting\n} from '../../model/datagrid';\nimport {\n Action,\n ConfirmOptions,\n downloadFile,\n ExtendedAction,\n FieldDescriptorWithValue,\n IDialogOptions,\n IFilterComponent,\n DflatBaseComponent\n} from '../../model/model';\n\nimport type { ActionsComponent } from '../actions/actions.component';\nimport { DatagridCustomComponent } from '../datagrid-custom/datagrid-custom.component';\n\nimport { DialogType } from '../../services/alert.service';\nimport type { PropertyGridComponent } from '../property-grid/property-grid.component';\nimport { ValidationErrorComponent } from '../validation-error/validation-error.component';\n\nimport { ActivatedRoute } from '@angular/router';\nimport { isNil } from 'lodash';\nimport { ApplicationService } from '../../services/application.service';\nimport type { DynamicFilterPanel } from '../dynamic-components/dynamic-filter/dynamic-filter-panel.component';\n\nimport { Guid } from 'guid-typescript';\nimport { TrackRecordModalComponent } from '../../modals/track-record-modal/track-record-modal.component';\nimport { PageLayoutComponent } from '../datapage/layout-page/page-layout.component';\n\n\n\n//#region Action\n@Directive()\nexport abstract class DflatBaseFilterComponent<\n TFilter extends FilterViewModel,\n TData extends EntityViewModel\n >\n extends DflatBaseComponent\n implements OnInit, OnDestroy, IFilterComponent, AfterContentInit {\n @ContentChild('itemListComponent', { static: true })\n itemListComponent: any;\n FILE_SECTION: string = 'Fichiers';\n // abstract getEntityKey(): string;\n // abstract getTitle(): string;\n // abstract getPath(): string;\n\n getEntityKey(): string {\n return '';\n }\n getTitle(): string {\n return '';\n }\n getPath(): string {\n return '';\n }\n getIcon(): string {\n return 'first-order';\n }\n guid: Guid = Guid.create();\n notif: Subscription;\n HasFilter: boolean;\n isLoading: boolean = false;\n loadDataOnNotification: boolean = false;\n displayComponent: boolean = false;\n specificSections: SpecificSection[];\n deleteMessage: string = 'Souhaitez-vous confirmer la suppression ?';\n isEditModeEnabled: boolean = true;\n get EditModeEnabled() {\n return this.isEditModeEnabled;\n }\n set EditModeEnabled(value) {\n this.isEditModeEnabled = value;\n }\n\n enableLastColumnResize: boolean = true;\n get EnableLastColumnResize() {\n return this.enableLastColumnResize;\n }\n set EnableLastColumnResize(value) {\n this.enableLastColumnResize = value;\n }\n @Input() public applyFilterParameters: boolean = true;\n @Input() public isMainComponent: boolean = true;\n @Input() public rightPanelClass: string = 'right-side-panel'\n @Input() public actionBarSearchText: string = \"Rechercher...\"\n @Input() public isModal: boolean = false;\n @Input() public isPropertyPanelVisible: boolean = true;\n @Input() public isFilterPanelVisible: boolean = true;\n @Input() public isActionsContentVisible: boolean = true;\n @Input() public isFilterSummaryVisible: boolean = true;\n @Input() public displayDetail: boolean = false;\n @Input() public loadDataOnInit?: boolean = true;\n @Input() public showActionTitle: boolean = false;\n @Input() public showActionSearchBar: boolean = true;\n @Input() public handleActionKeyword: boolean = true;\n @Input() actionTitle: string = '';\n\n @Input('baseComponentClass') baseComponentClass: string = 'basecomponent';\n @Input('propertyGridClass') propertyGridClass: string =\n 'property-container';\n @Input() clearbreadcrumbOnDispose: boolean = true;\n\n _selectionType: SelectionType = SelectionType.multi;\n get selectionType(): SelectionType {\n return this._selectionType;\n }\n\n @Input('selectionType')\n set selectionType(value: SelectionType) {\n this._selectionType = value;\n if (!Utilities.IsNil(this.datagrid))\n this.datagridOptions.selectionType = value;\n }\n\n _datagridOptions: Partial<DatagridOptions> = {\n columnMode: 'force',\n dataTableClass: 'dflat-datatable',\n footerHeight: 0,\n headerHeight: 'unset',\n selectionType: SelectionType.multi,\n rowHeight: 25,\n scrollbarH: true,\n scrollbarV: false,\n };\n get datagridOptions(): Partial<DatagridOptions> {\n return this._datagridOptions;\n }\n @Input('datagridOptions')\n set datagridOptions(value: Partial<DatagridOptions>) {\n this._datagridOptions = value;\n }\n\n\n @Output() onSearch: EventEmitter<any> = new EventEmitter();\n @Output() onSelect: EventEmitter<TData[]> = new EventEmitter<TData[]>();\n @Output() onModified: EventEmitter<boolean> = new EventEmitter();\n @Output() onActionSearchKeyword: EventEmitter<string> = new EventEmitter<string>();\n\n filterDescriptors: FilterDescriptor[];\n get FilterDescriptors() {\n return this.filterDescriptors;\n }\n set FilterDescriptors(value) {\n this.filterDescriptors = value;\n }\n\n filter = {} as TFilter;\n get Filter() {\n return this.filter;\n }\n @Input('Filter')\n set Filter(value) {\n this.filter = value;\n }\n\n defaultFilter = {} as TFilter;\n get DefaultFilter() {\n return this.defaultFilter;\n }\n set DefaultFilter(value) {\n this.defaultFilter = value;\n }\n\n filterForm: UntypedFormGroup = null;\n get FilterForm() {\n return this.filterForm;\n }\n set FilterForm(value) {\n this.filterForm = value;\n }\n\n isFilterVisible: boolean = true;\n get IsFilterVisible() {\n return this.isFilterVisible;\n }\n set IsFilterVisible(value) {\n this.isFilterVisible = value;\n }\n\n\n // Si isCustomColumns est true, c'est à dire on veut utiliser\n // les collones décrit dans le composant au lieu du controlleur\n isCustomColumns: boolean = false;\n get IsCustomColumns() {\n return this.isCustomColumns;\n }\n set IsCustomColumns(value) {\n this.isCustomColumns = value;\n }\n\n isCardVisible: boolean = false;\n get IsCardVisible() {\n return this.isCardVisible;\n }\n set IsCardVisible(value) {\n this.isCardVisible = value;\n }\n\n\n showFilterButton: boolean = true;\n get ShowFilterButton() {\n return this.showFilterButton;\n }\n @Input('ShowFilterButton')\n set ShowFilterButton(value) {\n this.showFilterButton = value;\n }\n\n showSearchButton: boolean = true;\n get ShowSearchButton() {\n return this.showSearchButton;\n }\n @Input('ShowSearchButton')\n set ShowSearchButton(value) {\n this.showSearchButton = value;\n }\n\n showPaginator: boolean = true;\n get ShowPaginator() {\n return this.showPaginator;\n }\n set ShowPaginator(value) {\n this.showPaginator = value;\n }\n\n get ShowPropertyPanel() {\n return this.isPropertyPanelVisible;\n }\n set ShowPropertyPanel(value) {\n this.isPropertyPanelVisible = value;\n }\n\n get ShowFilterLabel() {\n return this.isFilterPanelVisible;\n }\n set ShowFilterLabel(value) {\n this.isFilterPanelVisible = value;\n }\n\n defaultPaging = { rowsOnPage: 25, offset: 0 } as IPaging;\n private defaultSorting = {} as ISorting<TData>;\n\n currentPageNumber = 1;\n get CurrentPageNumber() {\n return this.currentPageNumber;\n }\n set CurrentPageNumber(value) {\n this.currentPageNumber = value;\n }\n\n totalPages = 1;\n get TotalPages() {\n return this.totalPages;\n }\n set TotalPages(value) {\n this.totalPages = value;\n }\n\n lastExecutionTime = '0 ms';\n get LastExecutionTime() {\n return this.lastExecutionTime;\n }\n set LastExecutionTime(value) {\n this.lastExecutionTime = value;\n }\n\n get Paging() {\n return this.Filter\n ? { rowsOnPage: this.Filter.Take, offset: this.Filter.Offset }\n : this.defaultPaging;\n }\n set Paging(value) {\n this.Filter.Take = value.rowsOnPage;\n this.Filter.Offset = value.offset;\n }\n\n get Sorting() {\n return this.Filter\n ? {\n property: this.Filter.SortColumn as keyof TData,\n direction: this.Filter.SortDirection as 'asc' | 'desc',\n }\n : this.defaultSorting;\n }\n\n set Sorting(value) {\n if (this.Filter.SortColumn != value.property)\n this.Filter.SortColumn = value.property as string;\n if (this.Filter.SortDirection != value.direction)\n this.Filter.SortDirection = value.direction;\n }\n\n protected filterInUrl: boolean = true;\n\n Results: PagedList<TData> = { Values: [], TotalRowCount: 0 };\n OrginalResults: any[] = [];\n errorMessage: string;\n\n private _columns: ColumnDescriptor[] = [];\n get columns() {\n return this._columns;\n }\n set columns(col) {\n this._columns = col;\n }\n\n private _viewModel: EntityViewModelWithFields<TData>;\n get ViewModel() {\n return this._viewModel;\n }\n set ViewModel(val) {\n this._viewModel = val;\n }\n\n originalColumns: any[] = [];\n originalViewModel: EntityViewModelWithFields<TData>;\n selected: TData[] = [];\n actionDescriptors: ActionDescriptor[] = [];\n\n loadedFilter: Subject<TFilter> = new Subject();\n loadedColumnDescriptors: Subject<ColumnDescriptor[]> = new Subject();\n loadedActionDescriptors: Subject<ActionDescriptor[]> = new Subject();\n loadedFilterDescriptors: Subject<FilterDescriptor[]> = new Subject();\n loadedData: Subject<PagedList<TData>> = new Subject();\n loadedEntityViewModel: Subject<\n EntityViewModelWithFields<TData>\n > = new Subject();\n init: boolean = false;\n modified: any[] = [];\n\n @Input('forceFilter')\n forceFilter: boolean = false;\n\n fetchData = (sort: ISorting<TData>, page: IPaging) => {\n this.Filter.Take = page.rowsOnPage;\n this.Filter.Offset = page.offset;\n this.Filter.SortColumn = sort.property as string;\n this.Filter.SortDirection = sort.direction;\n if (this.loadDataOnInit) {\n this.Search(this.Filter, false);\n }\n };\n\n /*\n * @actions\n */\n actions: Array<Action> = [\n new Action(\n 'showHistory',\n \"Afficher l'historique\",\n false,\n false,\n false,\n 'history',\n 'bg-blue',\n this.showHistory.bind(this),\n this.getActionPermissionKey('edit'),\n this.canShowHistory.bind(this)\n ),\n new Action(\n 'save',\n 'Enregistrer',\n false,\n false,\n false,\n 'save',\n 'bg-blue',\n this.save.bind(this),\n this.getActionPermissionKey('edit'),\n this.canSave.bind(this)\n ),\n new Action(\n 'add',\n 'Ajouter',\n false,\n false,\n false,\n 'plus-square',\n 'bg-blue',\n this.add.bind(this),\n this.getActionPermissionKey('add'),\n this.canAdd.bind(this)\n ),\n new Action(\n 'edit',\n 'Editer',\n false,\n true,\n false,\n 'pencil',\n 'bg-olive',\n this.edit.bind(this),\n this.getActionPermissionKey('edit'),\n ),\n new Action(\n 'delete',\n 'Supprimer',\n false,\n true,\n true,\n 'trash-o',\n 'bg-red',\n this.delete.bind(this),\n this.getActionPermissionKey('delete'),\n this.canDelete.bind(this)\n ),\n new Action(\n 'export',\n 'Exporter les données',\n false,\n false,\n false,\n 'file-arrow-down-solid',\n 'bg-yellow',\n this.export.bind(this),\n this.getActionPermissionKey('export')\n ),\n ];\n\n @Input()\n showEditAction: boolean = true;\n\n @Input()\n showAddAction: boolean = true;\n\n @Input()\n showDeleteAction: boolean = true;\n\n actionsCard: Array<Action> = [\n new Action(\n 'showCard',\n '',\n false,\n false,\n false,\n 'address-card',\n 'bg-yellow',\n this.showPanelDataGrid.bind(this),\n this.getActionPermissionKey('export')\n ),\n new Action(\n 'showDataGrid',\n '',\n false,\n false,\n false,\n 'list',\n 'bg-yellow',\n this.showPanelCard.bind(this),\n this.getActionPermissionKey('export')\n ),\n ];\n\n initExportModal(value?: any) { }\n\n canDelete() {\n return (\n !Utilities.IsNil(this.selected) && this.selected.length > 0\n );\n }\n canSave() {\n let isDirty: boolean = this.isDirty();\n let isInvalid: boolean = this.isInvalid();\n\n return isDirty && !isInvalid;\n }\n\n isInvalid(): boolean {\n return this.modified.filter((m) => m.isValid === false).length > 0;\n }\n\n canAdd() {\n return true;\n }\n\n canExport() {\n return this.Results.TotalRowCount > 0;\n\n }\n\n canShowHistory(){\n return (\n !Utilities.IsNil(this.selected) &&\n this.selected.length > 0\n );\n }\n\n showAction(actionname: string) {\n let action = this.actions.find((act) => act.name == actionname)\n if ( ! Utilities.IsNil(action))\n action.show();\n }\n\n filterAction(actionname: string) {\n let action = this.actions.find((act) => act.name == actionname)\n if ( ! Utilities.IsNil(action))\n action.hide();\n }\n\n clearActions() {\n this.actions.splice(0, this.actions.length);\n }\n //notVisible(name: string ){this.a\n\n getActionPermissionKey(action: 'add' | 'edit' | 'export' | any) {\n if (Utilities.IsNil(this.PermissionKey)) {\n return null;\n }\n return `${this.PermissionKey}.${action}`;\n }\n\n\n raiseFilterPropertyChanged: boolean = false;\n\n constructor(protected app : ApplicationService, protected route: ActivatedRoute) {\n super(app);\n \n this.guid = Guid.create();\n\n if (! this.showAddAction )\n this.filterAction('add');\n if (! this.showEditAction )\n this.filterAction('edit');\n if (! this.showDeleteAction )\n this.filterAction('delete');\n }\n ngAfterContentInit(): void {\n if (!Utilities.IsNil(this.itemListComponent))\n this.itemListComponent.proxy = this;\n }\n ngAfterViewInit(): void {\n \n }\n\n subscription: Subscription;\n\n ngOnInit(): void {\n\n this.actionTitle = this.getTitle();\n this.showActionTitle = true;\n\n if (this.isMainComponent && !this.isModal) {\n this.initBreadCrumb({\n description: this.getTitle(),\n display: true,\n header: this.getTitle(),\n levels: [\n {\n icon: this.getIcon(),\n link: [this.getPath()],\n title: this.getTitle(),\n },\n ],\n });\n }\n this.errorMessage = null;\n const params$ = this.isMainComponent ? this.route.queryParams : of({});\n this.subscription = this.getConfigData().pipe(\n // si la config chargée, on regarde les params de l'URL\n switchMap(() => params$),\n filter(() => this.loadDataOnInit)\n ).subscribe(params => {\n \n if (this.applyFilterParameters) {\n const keys = Object.keys(params);\n \n let newFilter = this.forceFilter ? { ...this.Filter } : { ...this.DefaultFilter };\n\n if (keys.length > 0) {\n keys.forEach(key => {\n newFilter[key] = Utilities.isNumber(this.DefaultFilter[key]) ? +params[key] : params[key];\n });\n }\n\n this.raiseFilterPropertyChanged = false;\n this.Filter = newFilter;\n\n if (this.actionComponent && !Utilities.IsNil(this.Filter.Keywords)) {\n this.actionComponent.keyword = this.Filter.Keywords;\n }\n }\n this.loadData();\n });\n\n // Register to notification\n this.unsubscribeEntityNotification();\n this.subscribeEntityNotification();\n }\n\n initUserFilter() { }\n\n subscribeEntityNotification() {\n this.notif = this.mqService\n .of(Utilities.GetChannel(this.getEntityKey()))\n .subscribe((notif) => {\n this.onNotificationHandled(notif);\n });\n }\n\n unsubscribeEntityNotification() {\n if (this.notif) {\n this.notif.unsubscribe();\n }\n }\n\n onNotificationHandled(notif: Notification) {\n if (\n (<TData[]>this.Results.Values).some((i) => i.Id === notif.entityId)\n ) {\n this.dataService\n .getDetails<TData>(this.getEntityKey(), notif.entityId)\n .subscribe((item) => {\n // check if the data is not modified\n const isTheItemOutOfDate = this.modified.find(\n (i) => i.Id === (<any>item).Id\n );\n if (isTheItemOutOfDate) {\n // otherwise we display a message\n console.log(\n `L'élément dont l'Id ${(<any>item).Id\n } est invalide, merci de raffraichir la page !`\n );\n } else {\n // if true\n let oldItem = (<any[]>this.OrginalResults).find(\n (i) => (<any>i).Id === (<any>item).Id\n );\n let index = this.OrginalResults.indexOf(oldItem);\n this.OrginalResults[index] = item;\n\n // replace in this this.Results.Values\n oldItem = (<any[]>this.Results.Values).find(\n (i) => i.Id === (<any>item).Id\n );\n index = this.Results.Values.indexOf(oldItem);\n this.Results.Values[index] = item;\n \n }\n });\n }\n else {\n if ( this.loadDataOnNotification) {\n this.resetModified();\n this.loadData();\n }\n }\n }\n handleRowSelectionChanged(event: any) {\n // Si le chargement est en cours, on ne traite pas l'évènement.\n if (this.isLoading) return;\n\n // Mise à jour des actions\n this.refreshActions();\n \n if (!Utilities.IsNil(this.datagrid)) {\n // Appel de la fonction onSelectionChanged\n this.onSelectionChanged(this.datagrid.selected);\n\n // Envoi de l'évènement de sélection\n this.emitOnSelect(this.datagrid.selected);\n }\n\n // if (!Utilities.IsNil(this.selected) && this.selected.length > 0) {\n // this.propertyGridComponent.context = this.selected[0];\n // this.propertyGridComponent.refreshCurrentTab();\n // }\n }\n refreshActions() {\n // Mise à jour des actions dans le menu\n if (!Utilities.IsNil(this.actionComponent))\n this.actionComponent.refreshActions();\n }\n\n selectionHelper: DictionnaryWrapper<UntypedFormGroup> = new DictionnaryWrapper<UntypedFormGroup>();\n onSelectionChanged(selected: TData[]) {\n if (!Utilities.IsNil(this.propertyGridComponent)) {\n this.propertyGridComponent.onSelectionChanged(selected);\n this.propertyGridComponent.ViewModel = this.getViewModel(selected);\n }\n }\n\n getViewModel(selected: TData[]): EntityViewModelWithFields<TData> {\n return this.ViewModel;\n }\n\n // méthode appelée après chaque changement sélection réalisé !!!\n updatedModifiedEntities() {\n\n setTimeout(() => {\n this.selected.forEach((item) => this.updatedModified(item));\n this.refreshActions();\n this.onModified.emit(this.isDirty());\n });\n\n\n }\n\n /**\n * @function onGridValueChanged()\n * triggered everytime property's value is changed from Data-Grid\n * @param event : {Field : FieldDescriptor + Value : TDATA }\n */\n onGridValueChanged(event:FieldDescriptorWithValue){\n\n }\n\n handleOriginalEntityChanged(ids: number[]) {\n // setTimeout(() => { // setTimeout commenté car il entre pas dedans avant deepComparer() et la ligne choisi devient dirty si il a de custom field\n ids.forEach(id => {\n // replace in this this.Results.Values\n var oldItem = (<any[]>this.Results.Values).find(\n (i) => i.Id === id\n );\n var index = this.Results.Values.indexOf(oldItem);\n this.OrginalResults[index] = Object.assign({}, oldItem);\n });\n // });\n }\n\n buildForm(vm: TData) {\n let group = {};\n if (!Utilities.IsNil(this.ViewModel) && this.ViewModel.FieldSections && vm) {\n this.ViewModel.FieldSections.forEach((section) => {\n section.FieldViewModels.forEach((field) => {\n group[field.PropertyName] = new UntypedFormControl(\n vm[field.PropertyName],\n this.propertyGridComponent.getValidators(\n field.FieldValidators\n )\n );\n });\n });\n }\n\n const form = new UntypedFormGroup(group);\n this.ViewModel.FieldSections.forEach((section) => {\n section.FieldViewModels.forEach((field) => {\n if (field.IsConditioning)\n this.propertyGridComponent.handleConditionalFields(\n field.PropertyName,\n form.get(field.PropertyName).value\n );\n });\n });\n\n return form;\n }\n\n getConfigData() {\n return observableForkJoin([\n this.loadActionDescriptors(),\n this.loadEmptyFilter(),\n this.loadFilterDescriptors(),\n this.loadColumns(),\n this.loadViewModel(),\n ]);\n }\n\n public ngOnDestroy() {\n this.onDispose();\n }\n\n initBreadCrumb(data: any) {\n if (!this.isModal) {\n setTimeout(() => {\n this.breadServ.setCurrent(data);\n\n });\n }\n }\n\n onDispose(): void {\n if (!this.isModal && this.clearbreadcrumbOnDispose) {\n this.breadServ.clear();\n }\n\n this.loadedData.complete();\n\n this.unsubscribeEntityNotification();\n\n if (!Utilities.IsNil(this.subscription))\n this.subscription.unsubscribe();\n }\n\n public pageValueChanged(data: any) {\n // Conversion de la valeur saisie en nombre entier.\n let val = Number(data.target.value);\n\n // Si pas un nombre entier, on met 1.\n if (Number.isNaN(val))\n val = 1;\n\n if (val <= 0) this.updatePageNumber(1);\n else if (val > this.TotalPages) this.updatePageNumber(this.TotalPages);\n else this.updatePageNumber(val);\n }\n\n public nextPage(data: any) {\n if (this.CurrentPageNumber < this.TotalPages)\n this.updatePageNumber(this.CurrentPageNumber + 1);\n }\n public lastPage(data: any) {\n if (this.CurrentPageNumber != this.TotalPages)\n this.updatePageNumber(this.TotalPages);\n }\n public previousPage(data: any) {\n if (this.CurrentPageNumber > 1)\n this.updatePageNumber(this.CurrentPageNumber - 1);\n }\n public firstPage(data: any) {\n if (this.CurrentPageNumber > 1) this.updatePageNumber(1);\n }\n\n public updatePageNumberOfRows(numberOfRows: number) {\n this.Paging = { rowsOnPage: numberOfRows, offset: 0 } as IPaging;\n this.CurrentPageNumber = 1;\n this.Filter.Take = numberOfRows;\n this.Filter.Offset = 0;\n this.Search(this.Filter, false);\n }\n\n protected updatePageNumber(pageNumber: any) {\n this.CurrentPageNumber = pageNumber;\n this.Paging = {\n rowsOnPage: this.Paging.rowsOnPage,\n offset: (this.CurrentPageNumber - 1) * this.Paging.rowsOnPage,\n } as IPaging;\n this.Search(this.Filter, false);\n }\n\n @ViewChild('datagrid', { static: false })\n datagrid: DatagridCustomComponent<TData>;\n\n @ViewChild('actionComponent', { static: false }) actionComponent: ActionsComponent;\n\n @ViewChild('propertyGridComponent', { static: false }) propertyGridComponent: PropertyGridComponent<TData>;\n @ViewChild('validationErrorComponent', { static: false }) validationErrorComponent: ValidationErrorComponent;\n\n @ViewChild('filterComponent', { static: false }) filterComponent: DynamicFilterPanel;\n\n @ViewChild('pageLayout', { static: false }) pageLayout: PageLayoutComponent;\n\n public showHistory() {\n let Id = this.selected[0].Id;\n let entityKey = this.getEntityKey()\n if (\n !Utilities.IsNil(Id) &&\n !Utilities.IsNil(entityKey)\n ) {\n let options: IDialogOptions = {\n childComponentType: TrackRecordModalComponent,\n initialViewModel: {\n entityKey: entityKey,\n entityId: Id,\n },\n title: 'Historique',\n loadFunction: undefined,\n callBackAction: (component: TrackRecordModalComponent) => {},\n };\n let modal = this.modalService.openComponentCustom(\n {},\n options,\n false\n );\n return modal;\n }\n }\n\n public toggleFilterView() {\n this.IsFilterVisible = !this.IsFilterVisible;\n this.updateLayout();\n }\n\n public ToggleRightPanelView() {\n this.isPropertyPanelVisible = !this.isPropertyPanelVisible;\n }\n\n public ToggleFilterLabelView() {\n this.isFilterPanelVisible = !this.isFilterPanelVisible;\n }\n\n public showPanelCard() {\n this.IsCardVisible = false;\n }\n\n public showPanelDataGrid() {\n this.IsCardVisible = true;\n }\n\n abstract get PermissionKey(): string;\n public refresh(): void {\n this.Search();\n }\n public Search(filter: any = {}, resetPage: boolean = true) {\n if (resetPage) filter.Offset = 0;\n\n // copy the filter properties\n this.CopyFilterProperties(filter);\n\n // split url route\n let urlAndParams = Utilities.splitInTwo(this.router.url, '?');\n\n // bind the parameters to url routing\n let requestParams = this.dataService.getFormattedParams(filter);\n const computedUrl = this.router\n .createUrlTree([urlAndParams.firstPart], {\n queryParams: requestParams,\n })\n .toString();\n if (\n !this.filterInUrl ||\n computedUrl === this.router.url ||\n this.isModal ||\n !this.isMainComponent\n ) {\n this.loadData();\n } else {\n // navigate to the the formatted url\n this.router.navigate([urlAndParams.firstPart], {\n queryParams: requestParams,\n });\n }\n }\n\n private CopyFilterProperties(filter: any) {\n Object.keys(filter).forEach((key) => (this.Filter[key] = filter[key]));\n }\n\n loadData() {\n if (this.isDirty()) {\n this.modalService.confirmModal(\n \"Vous avez des modifications en cours ! Souhaitez-vous Continuer à faire des modifications, Enregister vos changements, ou bien les Annuler ?\",\n () => this.saveAll(),\n true\n )\n .subscribe((result) => {\n if (result === ConfirmOptions.LEAVE) {\n if ( ! Utilities.IsNil(this.datagrid) && ! Utilities.IsNil(this.datagrid.selected))\n this.lastSelected = Object.assign([], this.datagrid.selected);\n this.performLoadData();\n this.resetModified();\n }\n });\n } else {\n if ( ! Utilities.IsNil(this.datagrid) && ! Utilities.IsNil(this.datagrid.selected))\n this.lastSelected = Object.assign([], this.datagrid.selected);\n this.performLoadData();\n }\n }\n\n lastSelected: TData[];\n\n performLoadData() {\n this.isLoading = true;\n\n this.raiseFilterPropertyChanged = false;\n var start = new Date().getTime();\n\n\n\n // Remets à 0 la sélectoin\n if (!Utilities.IsNil(this.datagrid))\n this.datagrid.clearSelection(true);\n\n this.dataService\n .search<TData>(this.getEntityKey(), this.Filter)\n .subscribe((res) => {\n\n\n this.filterResult(res);\n\n this.resetColumns();\n this.OrginalResults = this.Results.Values.map((item) =>\n Object.assign({}, item)\n );\n\n this.loadedData.next(res);\n\n // Mise à jour du numéro de page.\n var expectedValue =\n 1 + Math.round(this.Filter.Offset / this.Filter.Take);\n if (expectedValue != this.CurrentPageNumber)\n this.CurrentPageNumber = expectedValue;\n\n // Mise à jour du nombre total de pages\n var expectedTotalPages = Math.ceil(\n this.Results.TotalRowCount / this.Filter.Take\n );\n if (expectedTotalPages != this.TotalPages)\n this.TotalPages = expectedTotalPages;\n\n // Calcul du temps d'exécution\n var end = new Date().getTime();\n var dt = (end - start) / 1000;\n this.LastExecutionTime = dt.toString() + ' s';\n\n setTimeout(() => {\n\n // Appel de la méthode AfterLoad\n this.afterLoadData();\n\n // Indique que le composant peut être affiché.\n this.displayComponent = true;\n });\n\n this.init = true;\n });\n }\n\n filterResult(res: PagedList<TData>) {\n this.Results = res;\n res.Values.forEach( v=> {\n v['isValid']=true;\n v['hasWarning']=false;\n v['hasError']=false;\n v['isTheSame']=true;\n })\n }\n\n updatedModified(item: TData) {\n this.modified.forEach((current, index) => {\n if (current.Id === item.Id)\n this.modified.splice(index, 1);\n });\n\n const original = this.OrginalResults.find((i) => i.Id === item.Id);\n\n if (original === undefined) {\n this.checkValidaty(item);\n this.modified.push(item);\n\n if (!Utilities.IsNil(this.datagrid))\n this.datagrid.updateRowState(item);\n } else {\n let isTheSame = this.deepComparer(item, original);\n item['isTheSame'] = isTheSame;\n\n if (!isTheSame) {\n this.checkValidaty(item);\n this.modified.push(item);\n }\n\n if (!Utilities.IsNil(this.datagrid))\n this.datagrid.updateRowState(item);\n }\n }\n\n checkValidaty(selected: TData) {\n const key = selected.Id.toString();\n if (Utilities.IsNil(this.selectionHelper.get(key))) {\n this.selectionHelper.dictionary[key] = this.buildForm(selected);\n selected[this.isValidKey] = this.selectionHelper.dictionary[\n key\n ].valid;\n } else {\n // we just need to patch form\n this.patchForm(this.selectionHelper.dictionary[key], selected);\n }\n }\n\n patchForm(form: UntypedFormGroup, vm: TData) {\n if (form && Object.keys(form.controls).length > 0) {\n if (this.ViewModel.FieldSections && vm) {\n form.patchValue(vm);\n form.updateValueAndValidity();\n vm[this.isValidKey] = form.valid;\n\n // NE PAS SUPPRIMER, CE BOUT DE CODE EST UTILE POUR DEBUGGER\n // Object.keys(form.controls).forEach(key => {\n // const controlErrors: ValidationErrors = form.get(key).errors;\n // if (controlErrors != null) {\n // Object.keys(controlErrors).forEach(keyError => {\n // console.log('Key control: ' + key + ', keyError: ' + keyError + ', err value: ', controlErrors[keyError]);\n // });\n // }\n // });\n }\n }\n }\n\n isValidKey: string = 'isValid';\n isTheSameKey: string = 'isTheSame';\n IsSelectedKey: string = 'IsSelected';\n IsEditableKey: string = 'IsEditable';\n hasWarningKey: string = 'hasWarning';\n hasErrorKey: string = 'hasError';\n\n isComparableProperty(current: any, key: string): boolean {\n return key !== this.isValidKey && key != this.IsSelectedKey && key != this.IsEditableKey && key != this.isTheSameKey\n && key != this.hasWarningKey\n && key != this.hasErrorKey\n\n\n // on ne compare pas les tableaux.\n // raison !!!\n // && Object.prototype.toString.call(current[key]) !== '[object Array]'\n }\n\n deepComparer(current: any, original: any) {\n if (!current || !original) return true;\n let isTheSame = true;\n for (let key of Object.keys(current)) {\n isTheSame = true;\n if (this.isComparableProperty(current, key)) {\n\n if (Object.prototype.toString.call(current[key]) === '[object Array]'){\n isTheSame = isTheSame && JSON.stringify(current[key]) === JSON.stringify(original[key]);\n }\n else if((current[key] === null || current[key] === undefined)\n && (original[key] === null || original[key] === undefined)\n ){\n isTheSame = isTheSame && true;\n }\n else if (current[key] !== original[key]) {\n // console.log(`${key}: ${current[key]} is different from original ${original[key]}`)\n if (current[key] instanceof Date) {\n if (\n !Utilities.IsNil(original) &&\n typeof original[key] === 'string' &&\n moment(original[key]).isValid()\n ) {\n const transformedOriginalDate = Utilities.getCustomDate(\n original[key]\n );\n isTheSame =\n isTheSame &&\n moment.utc(current[key]).format() ===\n moment\n .utc(transformedOriginalDate)\n .format();\n }\n // both are invalid dates\n else if (\n (!moment(current[key]).isValid() ||\n current[key] === null) &&\n (!moment(original[key]).isValid() ||\n original[key] === null)\n ) {\n isTheSame = isTheSame && true;\n }\n // at least one is not valid\n else if (\n (!moment(current[key]).isValid() &&\n moment(original[key]).isValid()) ||\n (moment(current[key]).isValid() &&\n !moment(original[key]).isValid())\n ) {\n isTheSame = isTheSame && false;\n }\n // both are valid dates\n else if (\n moment(current[key]).isValid() &&\n moment(original[key]).isValid()\n ) {\n isTheSame =\n isTheSame &&\n moment.utc(current[key]).format() ===\n moment.utc(original[key]).format();\n }\n } else {\n isTheSame = isTheSame && current[key] === original[key];\n }\n }\n if (!isTheSame)\n break;\n }\n }\n return isTheSame;\n }\n\n loadViewModel() {\n let loader = this.loadedEntityViewModel;\n this.dataService\n .getEntityViewModel<TData>(this.getEntityKey(), 0)\n .subscribe((res) => {\n this.originalViewModel = Object.assign({}, res);\n this.ViewModel = res;\n if (!Utilities.IsNil(this.propertyGridComponent))\n this.propertyGridComponent.ViewModel = this.ViewModel;\n\n this.resetFieldViewModel();\n loader.next(res);\n loader.complete();\n });\n\n return loader;\n }\n\n resetFieldViewModel() {\n //Cette fonction virtuele nous permet de modifier les fields dans le view model\n //à partir du donnée de view model si besoin\n }\n\n loadColumns() {\n let loader = this.loadedColumnDescriptors;\n\n this.dataService\n .getViewColumns(this.getEntityKey())\n .subscribe((res) => {\n this.originalColumns = res.map((x) => Object.assign({}, x)); //Object.assign(this.originalColumns,res);\n if (!this.isCustomColumns) {\n this.columns = res;\n }\n loader.next(res);\n loader.complete();\n });\n\n return loader;\n }\n\n\n loadActionDescriptors() {\n let loader = this.loadedActionDescriptors;\n this.dataService\n .getExtendedActions(this.getEntityKey())\n .subscribe((res) => {\n if( !Utilities.IsNil(res) ) {\n this.actionDescriptors = res.map((x) => Object.assign({}, x));\n if (!Utilities.IsNil(this.actions)) {\n res.forEach(x=>\n {\n this.actions.push(new ExtendedAction(this.getEntityKey(), x));\n })\n }\n\n\n }\n loader.next(res);\n loader.complete();\n });\n\n return loader;\n }\n\n\n\n loadFilterDescriptors() {\n let loader = this.loadedFilterDescriptors;\n this.dataService\n .getViewFilterDescriptors(this.getEntityKey())\n .subscribe(\n (res) => {\n this.FilterDescriptors = res;\n loader.next(res);\n loader.complete();\n },\n (error) => {\n console.log(error);\n }\n );\n return loader;\n }\n\n loadEmptyFilter() {\n let loader = this.loadedFilter;\n this.dataService\n .getEmptyFilter<TFilter>(this.getEntityKey())\n .subscribe((res) => {\n this.DefaultFilter = res;\n this.initUserFilter();\n\n this.Filter = { ...res, ...this.Filter };\n loader.next(res);\n loader.complete();\n });\n return loader;\n }\n\n\n export() {\n const initialState = {\n EntityKey: this.getEntityKey(),\n isModal: true,\n callBackAction: (options: any) => {\n if (!Utilities.IsNil(options)) {\n if (options == 0) this.exportXLSX();\n else this.exportCSV();\n }\n this.modalService.close(modal);\n },\n };\n\n let modal = this.modalService.openComponentWithState(\n ExportDataModalComponent,\n {},\n initialState\n );\n\n // this.initExportModal.bind(this);\n }\n\n exportXLSX() {\n console.log('export xlsx action ');\n this.Filter.IsCsvExport = false;\n this.dataService\n .exportAll<TData>(this.getEntityKey(), this.Filter)\n .subscribe(downloadFile);\n }\n\n exportCSV() {\n console.log('export csv action ');\n this.Filter.IsCsvExport = true;\n this.dataService\n .exportAll<TData>(this.getEntityKey(), this.Filter)\n .subscribe(downloadFile);\n }\n\n save() {\n this.saveAll(true);\n }\n\n add() {\n this.router.navigate([this.getPath(), 0]);\n }\n\n edit() {\n let selection = this.selected as TData[];\n this.router.navigate([this.getPath(), selection[0].Id]);\n }\n \n delete() {\n this.alertService.showDialog(\n this.deleteMessage,\n DialogType.Confirm,\n (res) => {\n this.innerDelete();\n },\n () => { },\n 'Oui',\n 'Non'\n );\n }\n\n innerDelete() {\n let notInBase: TData[] = this.selected.filter((s) => s.Id <= 0);\n if (notInBase.length > 0) {\n notInBase.forEach(d => {\n let i: number = this.Results.Values.lastIndexOf(d);\n this.Results.Values.splice(i, 1);\n this.Results.TotalRowCount--;\n });\n }\n \n let inBase: TData[] = this.selected.filter((s) => s.Id > 0);\n if (inBase.length > 0) {\n this.dataService\n .deleteEntities<TData>(this.getEntityKey(), inBase)\n .subscribe(\n (deleteResult) => {\n if (deleteResult.Success) {\n this.resetModified();\n this.unselectAll();\n \n this.performLoadData();\n \n this.afterDelete();\n \n }\n else {\n this.handleDeleteFail(deleteResult)\n }\n },\n (err) => {\n if (!Utilities.IsNil(err.error))\n console.log(err.error);\n \n this.alertService.error(\n 'Une erreur est survenue pendant la suppression.'\n );\n }\n );\n }\n else {\n this.resetModified();\n this.unselectAll();\n }\n }\n\n handleDeleteFail(res : SaveResults<TData>) {\n this.alertService.error(res.ErrorMessage);\n }\n\n\n afterDelete() {}\n\n\n public afterLoadData() {\n this.isLoading = false;\n\n this.raiseFilterPropertyChanged = true;\n\n // Mise à jour des actions dans le menu\n this.refreshActions();\n\n // A surcharger\n this.onSearch.emit(this);\n\n // Redimensionnement automatique des colonnes\n this.updateLayout();\n\n // Sélection de la dernière ligne sélectionnée.\n this.selectLastRow();\n }\n\n selectLastRow() {\n if (!Utilities.IsNil(this.datagrid)) {\n setTimeout(() => {\n if ( this.lastSelected == undefined || this.lastSelected.length == 0 )\n this.datagrid.selectFirstRow();\n else {\n let id = this.lastSelected[0].Id;\n if ( this.datagrid.data.Values.some( d=>d.Id == id)) {\n this.datagrid.handleRowMouseDown(id, undefined);\n }\n else {\n this.datagrid.selectFirstRow();\n }\n }\n }, 0);\n }\n }\n\n resetColumns() {\n //Cette fonction virtuele nous permet de modifier les colonnes à partir du donnée de view model si besoin\n }\n\n public updateLayout() {\n\n setTimeout(() => {\n if(!Utilities.IsNil(this.pageLayout) && !Utilities.IsNil(this.pageLayout.layoutHandlerDirective))\n this.pageLayout.layoutHandlerDirective.updateLayout();\n });\n\n // Resize les colonnes\n if (!Utilities.IsNil(this.datagrid)) {\n setTimeout(() => { this.datagrid.resizeColumns(); }, 0);\n }\n }\n\n public ResetFilter() {\n this.Filter = Object.assign({}, this.DefaultFilter);\n }\n public resetPaging() {\n this.Paging = { ...this.Paging, offset: this.DefaultFilter.Offset };\n }\n\n isDirty(): boolean {\n var result: boolean = (! Utilities.IsNil(this.modified)) && this.modified.length > 0;\n // if ( result )\n // console.log(this.modified);\n\n return result;\n // return (\n // // this.modified.length > 0 &&\n // // this.actionComponent &&\n // // this.actionComponent.hasPermission(this.getActionPermissionKey('edit'))\n // );\n }\n\n saveAll(reload?: boolean) {\n if (this.modified && this.modified.length > 0) {\n\n this.dataService.saveEntities(this.getEntityKey(), this.modified).subscribe(s => {\n if (s.Success) {\n this.resetModified();\n if (reload) {\n this.loadData();\n }\n this.onSaveCompleted();\n }\n else\n this.alertService.handleSaveError(s);\n });\n }\n }\n\n\n initCurrentTab(context: any) {\n this.performLoadData();\n }\n\n resetModified() {\n this.modified.splice(0, this.modified.length);\n }\n\n onSaveCompleted() {\n // TO OVERRIDE WHEN NEEDED\n }\n getSpecificSectionContext(\n name: string,\n templateType: Type<any>,\n context?: any,\n filter?: any\n ) {\n let initialViewModel = {};\n\n initialViewModel[\n nameof(\n (component: DflatBaseFilterComponent<any, any>) =>\n component.isMainComponent\n )\n ] = false;\n initialViewModel[\n nameof(\n (component: DflatBaseFilterComponent<any, any>) =>\n component.isModal\n )\n ] = true;\n initialViewModel[\n nameof(\n (component: DflatBaseFilterComponent<any, any>) =>\n component.forceFilter\n )\n ] = true;\n initialViewModel[\n nameof(\n (component: DflatBaseFilterComponent<any, any>) =>\n component.applyFilterParameters\n )\n ] = false;\n\n if (filter) {\n initialViewModel[\n nameof(\n (component: DflatBaseFilterComponent<any, any>) =>\n component.Filter\n )\n ] = filter;\n }\n\n if (context) {\n initialViewModel = { ...initialViewModel, ...context };\n }\n\n let sectionToAdd: SpecificSection = {\n Name: name,\n Template: templateType,\n Context: initialViewModel,\n };\n\n return sectionToAdd;\n }\n\n onTextZoneButtonClicked($event) { }\n\n propertyModified(field_newValue: FieldDescriptorWithValue) {\n // Ce evenement est envoyé par l'EventEmitter \"propertyModified\" de propertygrid.component,\n // ca signifie une modification de propriété(mais pas un changement de selection)\n this.updatedModifiedEntities();\n }\n showOnToolTip(row: EntityViewModel, property: string): any {\n return null;\n }\n\n enableEdit(prop: string, row: EntityViewModel): boolean {\n return this.isRowEditable(row) && this.isPropertyEditable(prop);\n }\n\n isRowEditable(row: EntityViewModel): boolean {\n if (!isNil(row) && row.IsEditable && this.isEditModeEnabled) return true;\n return false;\n }\n\n isPropertyEditable(prop: string): boolean {\n\n if (isNil(this._viewModel) || isNil(prop)) return false;\n\n let field = this.getField(prop);\n if (! isNil(field) && (field.IsHidden || field.ReadOnly))\n return false;\n\n return true;\n\n }\n\n getField(prop: string) {\n return this._viewModel.FieldSections.map((vm) => vm.FieldViewModels)\n .reduce((results, plans) => [...results, ...plans], [])\n .filter((x) => x.PropertyName == prop)[0];\n }\n\n getStyle(data: any): string {\n return null;\n }\n getCellStyle(row: EntityViewModel, property: string): string {\n return null;\n }\n getHeaderStyle(colProperty: string): string {\n return null;\n }\n getRowStateStyle(index: any, row: any): string {\n return null;\n }\n getColumnStyle(data: any, propertyName: string): string {\n return null;\n }\n\n //#region Gestion de la sélection\n select(data: TData) {\n // Si l'élément est déjà sélectionné, on ne fait rien\n if (this.selected.lastIndexOf(data) >= 0) return;\n\n // Change le flag de sélection à true.\n data.IsSelected = true;\n\n // Ajout de l'élement à la selection\n this.selected.push(data);\n\n // Appel de la méthode post changement de sélection\n this.afterSelectionChanged();\n }\n\n unselect(data: TData) {\n // Si l'élément n'est pas sélectionné, on ne fait rien\n let index = this.selected.lastIndexOf(data);\n if (index < 0) return;\n\n // Change le flag de sélection à false.\n data.IsSelected = false;\n\n // Suppression de l'élément\n this.selected.splice(index, 1);\n\n // Appel de la méthode post changement de sélection\n this.afterSelectionChanged();\n }\n\n selectFirst() {\n if (this.Results && this.Results.Values && this.Results.Values.length > 0) {\n // Réinitialise la liste des lignes sélectionnées et ajoute tous les éléments de la liste.\n this.selected = [];\n\n let data = this.Results.Values[0];\n data.IsSelected = true;\n\n // Ajoute l'élément à la liste\n this.selected.push(data);\n\n // Appel de la méthode post changement de sélection\n this.afterSelectionChanged();\n }\n }\n\n selectAll() {\n // Réinitialise la liste des lignes sélectionnées et ajoute tous les éléments de la liste.\n this.selected = [];\n\n this.Results.Values.forEach((data) => {\n // Change le flag de sélection à false.\n data.IsSelected = true;\n\n // Ajoute l'élément à la liste\n this.selected.push(data);\n });\n\n // Appel de la méthode post changement de sélection\n this.afterSelectionChanged();\n }\n\n unselectAll() {\n // Réinitialise la liste des lignes sélectionnées\n this.selected = [];\n\n this.Results.Values.forEach((data) => {\n // Change le flag de sélection à false.\n data.IsSelected = false;\n });\n\n // Appel de la méthode post changement de sélection\n this.afterSelectionChanged();\n }\n\n afterSelectionChanged() {\n // Refresh des actions\n this.refreshActions();\n\n // Appel de la fonction onSelectionChanged\n this.onSelectionChanged(this.selected);\n\n // Envoi de l'évènement de sélection\n this.emitOnSelect(this.selected);\n }\n\n enableSelectionEvent: boolean = true;\n emitOnSelect(data: TData[]) {\n if (this.enableSelectionEvent)\n this.onSelect.emit(data);\n }\n\n handleActionSearchKeywords(keyword: string)\n {\n if ( this.handleActionKeyword )\n {\n console.log(\"Handled Action keyword !\");\n this.filter.Keywords = keyword;\n if (! Utilities.IsNil(this.filterComponent))\n this.filterComponent.vm.Keywords = keyword;\n\n setTimeout(() => {\n if (! Utilities.IsNil(this.filterComponent))\n this.filterComponent.refreshFilters();\n this.Search(this.filter, true);\n });\n\n\n\n }\n else {\n this.onActionSearchKeyword.emit(keyword);\n }\n }\n\n //#endregion\n}\n\n\n","import { FilterViewModel } from '@dflat-core/web/core-model';\nimport { AuthService } from '@dflat-core/web/core-services';\nimport { Component, Input } from '@angular/core';\n\nimport { DflatBaseFilterComponent } from '../basefilter/basefilter.component';\n\n@Component({\n selector: \"alg-paginator\",\n templateUrl: \"./paginator.component.html\",\n styleUrls: [\"./paginator.component.scss\"],\n standalone: false\n})\nexport class PaginatorComponent {\n\n\n @Input() proxy : DflatBaseFilterComponent<FilterViewModel, any>;\n @Input() displayInfo : boolean= true;\n\n\n get _proxy(){\n if(this.proxy)\n { return this.proxy; }\n }\n\n @Input() currentRowsPerPage: number = 25;\n\n // Defined options for number of rows display\n public numberOfRowsPerPage: number[] = [25,50,100,150,250,500];\n\n\n selectOption(event : any){\n this.currentRowsPerPage = this.numberOfRowsPerPage[event.target.options.selectedIndex];\n return this.currentRowsPerPage;\n }\n\n constructor(private authSevice:AuthService)\n {\n }\n\n getImageUrl(icon: string) {\n return `/assets/images/${icon}.svg`;\n }\n}\n","<div class=\"paginator-panel\">\r\n <!--ACTIONS-->\r\n\r\n <button type=\"button\" class=\"btn btn-svg small action-btn\" data-toggle=\"tooltip\" title=\"Dernière page\"\r\n (click)=\"_proxy?.lastPage($event)\">\r\n <img class=\"action-icon\" [src]=\"getImageUrl('step-forward')\" alt=\"Dernière page\">\r\n </button>\r\n\r\n\r\n <button type=\"button\" class=\"btn btn-svg small action-btn\" data-toggle=\"tooltip\" title=\"Page suivante\"\r\n (click)=\"_proxy?.nextPage($event)\">\r\n \r\n <img class=\"action-icon\" [src]=\"getImageUrl('forward')\" alt=\"Page suivante\">\r\n </button>\r\n\r\n <input class=\"pagenumber-input\" type=\"text\" [ngModel]=\"_proxy?.CurrentPageNumber\"\r\n (change)=\"_proxy?.pageValueChanged($event)\" min=\"1\" />\r\n\r\n <button type=\"button\" class=\"btn btn-svg small action-btn\" data-toggle=\"tooltip\" title=\"Page précédente\"\r\n (click)=\"_proxy?.previousPage($event)\">\r\n <img class=\"action-icon\" [src]=\"getImageUrl('backward')\" alt=\"Page précédente\">\r\n \r\n </button>\r\n\r\n <button type=\"button\" class=\"btn btn-svg small action-btn\" data-toggle=\"tooltip\" title=\"Première page\"\r\n (click)=\"_proxy?.firstPage($event)\">\r\n <img class=\"action-icon\" [src]=\"getImageUrl('step-backward')\" alt=\"Première page\">\r\n </button>\r\n \r\n <div class=\"pagenumberrows\" data-toggle=\"tooltip\" title=\"Nombre de lignes du tableau\">\r\n <select (change)=\"_proxy?.updatePageNumberOfRows(selectOption($event))\" class=\"select\">\r\n <option *ngFor=\"let item of this.numberOfRowsPerPage\" value=\"{{item}}\" [selected]=\"item== this.currentRowsPerPage\">\r\n {{item}}\r\n </option>\r\n </select>\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"displayInfo\">\r\n <ng-container *ngIf=\"_proxy?.Results\">\r\n\r\n <span class=\"total-span\">{{_proxy?.Results?.TotalRowCount}} résultats / {{_proxy?.TotalPages}} pages\r\n ({{_proxy?.LastExecutionTime}})</span>\r\n\r\n </ng-container>\r\n\r\n\r\n \r\n\r\n </ng-container>\r\n\r\n</div>","import { Component, Input, Output, EventEmitter, Renderer2 } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'msw-base-parameter-type',\r\n template: '<div></div>',\r\n standalone: false\r\n})\r\n\r\nexport class BaseParameterTypeComponent{\r\n\r\n constructor()\r\n {\r\n }\r\n \r\n _inputField: any\r\n @Input('inputField')\r\n set inputField(value: any) { \r\n this._inputField = value;\r\n }\r\n\r\n _inputId: number\r\n @Input('InputId')\r\n set inputId(value: number) {\r\n this._inputId = value;\r\n }\r\n _inputName: string\r\n @Input('InputName')\r\n set inputName(value: string) {\r\n this._inputName = value;\r\n }\r\n _isMendatory: boolean\r\n @Input('IsMandatory')\r\n set isMendatory(value: boolean) {\r\n this._isMendatory = value;\r\n }\r\n _placeHolder: string\r\n @Input('PlaceHolder')\r\n set placeHolder(value: string) {\r\n this._placeHolder = value;\r\n }\r\n _isReadOnly: boolean=false\r\n @Input('isReadOnly')\r\n set isReadOnly(value: boolean) {\r\n this._isReadOnly = value;\r\n }\r\n \r\n @Output() onParameterChanged: EventEmitter<any> = new EventEmitter<any>(); \r\n\r\n inputFieldChanged(inputField: any)\r\n {\r\n this.onParameterChanged.emit(inputField);\r\n } \r\n\r\n}\r\n","import { Component, Input } from \"@angular/core\";\r\nimport { BaseParameterTypeComponent } from \"../base-parameter-type.component\";\r\n\r\n@Component({\r\n selector: 'msw-parameter-text',\r\n templateUrl: \"./parameter-type-text.component.html\",\r\n styleUrls: [\"../../parameter-field.component.css\"],\r\n standalone: false\r\n})\r\n\r\nexport class ParameterTypeTextComponent extends BaseParameterTypeComponent { \r\n ngOnInit()\r\n {\r\n this._inputField;\r\n }\r\n}","<input class=\"local-input-style\" \r\n type=\"text\" \r\n [readonly]=\"_isReadOnly\"\r\n [id]=\"this._inputField.Id\" \r\n [(ngModel)]=\"this._inputField.Value\"\r\n (change)=\"this.inputFieldChanged(this._inputField)\"\r\n>","import { DatePipe } from \"@angular/common\";\r\nimport { Component, Input } from \"@angular/core\";\r\nimport { BaseParameterTypeComponent } from \"../base-parameter-type.component\";\r\n\r\n@Component({\r\n selector: 'msw-parameter-number',\r\n templateUrl: \"./parameter-type-number.component.html\",\r\n styleUrls: [\"../../parameter-field.component.css\"],\r\n standalone: false\r\n})\r\n\r\nexport class ParameterTypeNumberComponent extends BaseParameterTypeComponent { \r\n\r\n}","<input class=\"local-input-style\" \r\n type=\"number\" \r\n [readonly]=\"_isReadOnly\"\r\n [id]=\"this._inputField.Id\" \r\n [(ngModel)]=\"this._inputField.Value\"\r\n (change)=\"this.inputFieldChanged(this._inputField)\"\r\n>","import { Component, Input } from \"@angular/core\";\r\nimport { BaseParameterTypeComponent } from \"../base-parameter-type.component\";\r\n\r\n@Component({\r\n selector: 'msw-parameter-bool',\r\n templateUrl: \"./parameter-type-bool.component.html\",\r\n styleUrls: [\"../../parameter-field.component.css\"],\r\n standalone: false\r\n})\r\n\r\nexport class ParameterTypeBoolComponent extends BaseParameterTypeComponent { \r\n\r\n boolValue: boolean;\r\n\r\n inputFieldChanged(inputField: any)\r\n {\r\n if ( this.boolValue )\r\n this._inputField.Value = '1';\r\n else\r\n this._inputField.Value = '0';\r\n\r\n this.onParameterChanged.emit(inputField);\r\n } \r\n\r\n @Input('inputField')\r\n set inputField(value: any) { \r\n this._inputField = value;\r\n this.boolValue = (value != undefined && value.Value == '1');\r\n }\r\n\r\n}","<label class=\"switch\">\r\n <input \r\n type=\"checkbox\"\r\n [id]=\"this._inputField.Id\" \r\n name=\"new-input-name\"\r\n [readonly]=\"_isReadOnly\"\r\n [(ngModel)]=\"this.boolValue\"\r\n (change)=\"this.inputFieldChanged(this._inputField)\">\r\n <span class=\"slider round\"></span>\r\n</label>","import { Utilities } from \"@dflat-core/web/core\";\nimport { DatePipe } from \"@angular/common\";\nimport { Component, Input } from \"@angular/core\";\nimport { BsDatepickerConfig, BsLocaleService } from \"ngx-bootstrap/datepicker\";\nimport { BaseParameterTypeComponent } from \"../base-parameter-type.component\";\nimport { defineLocale } from \"ngx-bootstrap/chronos\";\nimport { frLocale } from 'ngx-bootstrap/locale';\n\n@Component({\n selector: 'msw-parameter-date',\n templateUrl: \"./parameter-type-date.component.html\",\n styleUrls: [\"../../parameter-field.component.css\"],\n standalone: false\n})\n\nexport class ParameterTypeDateComponent extends BaseParameterTypeComponent { \n\n constructor(private datepipe: DatePipe, private localeService: BsLocaleService)\n {\n super();\n defineLocale('fr', frLocale);\n this.localeService.use('fr');\n this.bsConfig.containerClass = 'theme-blue';\n this.bsConfig.dateInputFormat = 'L';\n this.bsConfig.showWeekNumbers = true;\n // this.bsConfig.isAnimated = true;\n }\n\n bsConfig: Partial<BsDatepickerConfig> = new BsDatepickerConfig();\n today = new Date;\n displayedDate: Date;\n \n ngAfterContentInit()\n {\n this.displayedDate = this._inputField.Value;\n }\n\n \n\n onBsValueChanged(event) {\n\n if( this._inputField.Value !== this.datepipe.transform(event, 'dd/MM/YYYY'))\n {\n this._inputField.Value = this.datepipe.transform(event, 'dd/MM/YYYY');\n super.inputFieldChanged(this._inputField);\n }\n \n }\n\n\n\n}","<div class=\"date-time-parameter-container\">\r\n <input class=\"local-input-style date-parameter-container\" \r\n type=\"text\" \r\n placeholder=\"Sélectionner une date\" \r\n [bsConfig]=\"bsConfig\"\r\n [id]=\"'date'\" \r\n bsDatepicker\r\n [(ngModel)]=\"this.displayedDate\"\r\n (bsValueChange)=\"onBsValueChanged($event)\">\r\n \r\n <!-- <input class=\"local-input-style time-parameter-container\" type=\"time\" matInput name=\"week\" min=\"09:00\" max=\"18:00\"> -->\r\n</div>\r\n","import { Component, Input } from \"@angular/core\";\r\nimport { BaseParameterTypeComponent } from \"../base-parameter-type.component\";\r\n\r\n@Component({\r\n selector: 'msw-parameter-password',\r\n templateUrl: \"./parameter-type-password.component.html\",\r\n styleUrls: [\"../../parameter-field.component.css\"],\r\n standalone: false\r\n})\r\n\r\nexport class ParameterTypePasswordComponent extends BaseParameterTypeComponent { \r\n\r\n hidePassword: boolean = true;\r\n\r\n showPassword()\r\n {\r\n this.hidePassword = !this.hidePassword;\r\n }\r\n inputFieldChanged(inputField: any)\r\n {\r\n this.onParameterChanged.emit(inputField);\r\n let f = this._inputField\r\n } \r\n\r\n}","<div class=\"password-field\">\r\n <input class=\"local-input-style password-type\" \r\n [type]=\"hidePassword ? 'password' : 'text'\"\r\n [id]=\"this._inputField.Id\" \r\n name=\"new-input-name\"\r\n [readonly]=\"_isReadOnly\"\r\n [(ngModel)]=\"this._inputField.Value\"\r\n (change)=\"this.inputFieldChanged(this._inputField)\">\r\n <button class=\"btn btn-secondary see-password-button\" (click)=\"showPassword()\"><i class=\"fa fa-eye\" aria-hidden=\"true\"></i></button>\r\n</div>","import { Utilities } from \"@dflat-core/web/core\";\nimport { Component, Renderer2 } from \"@angular/core\";\nimport { BaseParameterTypeComponent } from \"./base-parameter-type.component\";\n\n@Component({\n selector: 'msw-base-array-parameter-type',\n template: '<div></div>',\n standalone: false\n})\n\nexport class BaseArrayParameterTypeComponent extends BaseParameterTypeComponent{\n\n constructor(public renderer: Renderer2)\n {\n super();\n }\n\n parameterArray: string[] = [];\n newElement: string;\n\n ngAfterViewInit()\n {\n if(!(Utilities.IsNil(this._inputField) || Utilities.IsNil(this._inputField.Value)))\n this.parameterArray = this._inputField.Value.split(';')\n }\n\n parameterModified($event)\n {\n let index = $event.target.id;\n let newValue = $event.target.value;\n this.parameterArray[index] = newValue;\n\n this.onInputFieldModified();\n }\n\n addNewToArray()\n {\n\n if(this.parameterArray[this.parameterArray.length - 1] != \"\")\n this.parameterArray.push(\"\");\n else\n {\n let parameterInput = document.getElementById((this.parameterArray.length - 1).toString());\n if( !Utilities.IsNil(parameterInput) && !parameterInput.className.includes('flash-parameter'))\n this.renderer.addClass(parameterInput, 'flash-parameter');\n }\n }\n\n removeFromArray(index: number)\n {\n this.parameterArray.splice(index, 1);\n this.onInputFieldModified();\n }\n\n onInputFieldModified()\n {\n let value: string = \"\";\n this._inputField.Value = \"\";\n\n for(let i = 0; i < this.parameterArray.length ; i++)\n {\n value = value.concat(this.parameterArray[i]);\n if(i < this.parameterArray.length - 1)\n value = value.concat(';');\n }\n\n this._inputField.Value = value;\n this.inputFieldChanged(this._inputField);\n }\n}\n","import { Utilities } from \"@dflat-core/web/core\";\nimport { Component, Input, Renderer2 } from \"@angular/core\";\nimport { BaseArrayParameterTypeComponent } from \"../base-array-parameter-type.component\";\n\n@Component({\n selector: 'msw-parameter-text-array',\n templateUrl: \"./parameter-type-text-array.component.html\",\n styleUrls: [\"../../parameter-field.component.css\"],\n standalone: false\n})\n\nexport class ParameterTypeTextArrayComponent extends BaseArrayParameterTypeComponent { \n \n}","<div class=\"array-input-container\">\r\n <div> \r\n <div type=\"button\" class=\"add-button\" title=\"Close\" (click)=\"addNewToArray()\">\r\n <i class=\"fa fa-plus\"></i>\r\n </div>\r\n </div>\r\n <div class=\"array-element-container\">\r\n <div *ngFor=\"let param of this.parameterArray, let i = index\">\r\n <div class=\"array-element\">\r\n <button type=\"button\" class=\"btn btn-secondary remove-button\" title=\"Close\" (click)=\"removeFromArray(i)\">\r\n <i class=\"fa fa-minus\"></i>\r\n </button>\r\n <div class=\"array-element-index\">\r\n {{i+1}}\r\n </div>\r\n <input class=\"local-input-style local-array-input-style\" \r\n type=\"text\" \r\n [id]=\"i\" \r\n [readonly]=\"_isReadOnly\"\r\n [value]=\"this.parameterArray[i]\"\r\n spellcheck=\"false\"\r\n (change)=\"this.parameterModified($event)\"\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n","import { Utilities } from \"@dflat-core/web/core\";\nimport { Component, Input, Renderer2 } from \"@angular/core\";\nimport { BaseArrayParameterTypeComponent } from \"../base-array-parameter-type.component\";\nimport { BaseParameterTypeComponent } from \"../base-parameter-type.component\";\n\n@Component({\n selector: 'msw-parameter-number-array',\n templateUrl: \"./parameter-type-number-array.component.html\",\n styleUrls: [\"../../parameter-field.component.css\"],\n standalone: false\n})\n\nexport class ParameterTypeNumberArrayComponent extends BaseArrayParameterTypeComponent { \n \n}","<div class=\"array-input-container\">\r\n <div> \r\n <div type=\"button\" class=\"add-button\" title=\"Close\" (click)=\"addNewToArray()\">\r\n <i class=\"fa fa-plus\"></i>\r\n </div>\r\n </div>\r\n <div class=\"array-element-container\">\r\n <div *ngFor=\"let param of this.parameterArray, let i = index\">\r\n <div class=\"array-element\">\r\n <button type=\"button\" class=\"btn btn-secondary remove-button\" title=\"Close\" (click)=\"removeFromArray(i)\">\r\n <i class=\"fa fa-minus\"></i>\r\n </button>\r\n <div class=\"array-element-index\">\r\n {{i+1}}\r\n </div>\r\n <input class=\"local-input-style local-array-input-style\" \r\n type=\"number\" \r\n [id]=\"i\" \r\n [readonly]=\"_isReadOnly\"\r\n [value]=\"this.parameterArray[i]\"\r\n spellcheck=\"false\"\r\n (change)=\"this.parameterModified($event)\"\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n","import { Utilities } from \"@dflat-core/web/core\";\nimport { DatePipe } from \"@angular/common\";\nimport { Component, Input, Renderer2 } from \"@angular/core\";\nimport { BsDatepickerConfig } from \"ngx-bootstrap/datepicker\";\nimport { BaseArrayParameterTypeComponent } from \"../base-array-parameter-type.component\";\n\n@Component({\n selector: 'msw-parameter-date-array',\n templateUrl: \"./parameter-type-date-array.component.html\",\n styleUrls: [\"../../parameter-field.component.css\"],\n standalone: false\n})\n\nexport class ParameterTypeDateArrayComponent extends BaseArrayParameterTypeComponent { \n\n constructor(public renderer: Renderer2, private datepipe: DatePipe)\n {\n super(renderer); \n \n this.bsConfig.containerClass = 'theme-blue';\n this.bsConfig.dateInputFormat = 'L';\n this.bsConfig.showWeekNumbers = true;\n // this.bsConfig.isAnimated = true;\n }\n\n bsConfig: Partial<BsDatepickerConfig> = new BsDatepickerConfig();\n\n today = new Date;\n displayedDate: Date;\n \n // ngAfterContentInit()\n // {\n // this.displayedDate = this._inputField.Value;\n // }\n\n ngAfterViewInit()\n {\n super.ngAfterViewInit();\n this.parameterArray\n }\n\n inputDateFieldChanged($event, i: number)\n {\n let value = this.datepipe.transform($event, 'dd/MM/YYYY')\n this.parameterArray[i] = value;\n this.onInputFieldModified();\n }\n}","<div class=\"array-input-container\">\r\n <div> \r\n <div type=\"button\" class=\"add-button\" title=\"Close\" (click)=\"addNewToArray()\">\r\n <i class=\"fa fa-plus\"></i>\r\n </div>\r\n </div>\r\n <div class=\"array-element-container\">\r\n <div *ngFor=\"let param of this.parameterArray, let i = index\">\r\n <div class=\"array-element\">\r\n <button type=\"button\" class=\"btn btn-secondary remove-button\" title=\"Close\" (click)=\"removeFromArray(i)\">\r\n <i class=\"fa fa-minus\"></i>\r\n </button>\r\n <div class=\"array-element-index\">\r\n {{i+1}}\r\n </div>\r\n <input class=\"local-input-style local-array-input-style\" \r\n type=\"text\" \r\n placeholder=\"Sélectionner une date\" \r\n [bsConfig]=\"bsConfig\"\r\n [id]=\"i\" \r\n [readonly]=\"_isReadOnly\"\r\n [value]=\"this.parameterArray[i]\"\r\n bsDatepicker\r\n (bsValueChange)=\"inputDateFieldChanged($event, i)\">\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n","import { Utilities } from \"@dflat-core/web/core\";\nimport { Component, Input, Renderer2 } from \"@angular/core\";\nimport { BaseArrayParameterTypeComponent } from \"../base-array-parameter-type.component\";\n\n@Component({\n selector: 'msw-parameter-bool-array',\n templateUrl: \"./parameter-type-bool-array.component.html\",\n styleUrls: [\"../../parameter-field.component.css\"],\n standalone: false\n})\n\nexport class ParameterTypeBoolArrayComponent extends BaseArrayParameterTypeComponent { \n\n boolArray: boolean[] = [];\n\n ngAfterViewInit()\n {\n super.ngAfterViewInit();\n\n let boolStringArray = this._inputField.Value.split(';')\n boolStringArray.forEach(b => {\n this.boolArray.push(b == \"1\");\n })\n }\n\n addNewToArray()\n {\n this.boolArray.push(false);\n this.parameterArray.push('0');\n }\n\n getValue(boolString: string)\n {\n if(boolString == \"1\")\n return true;\n else\n return false;\n }\n\n inputBoolFieldChanged($event, i: number)\n {\n // this.boolArray[i] = $event.target.checked\n // let parameterInput = document.getElementById((this.boolArray.length - 1).toString()); \n\n this.boolArray;\n this.parameterArray[i] = $event.target.checked == true ? '1' : '0';\n this.onInputFieldModified();\n }\n\n removeFromArray(i)\n {\n this.boolArray.splice(i, 1);\n super.removeFromArray(i);\n }\n}","<div class=\"array-input-container\">\r\n <div> \r\n <div type=\"button\" class=\"add-button\" title=\"Close\" (click)=\"addNewToArray()\">\r\n <i class=\"fa fa-plus\"></i>\r\n </div>\r\n </div>\r\n <div class=\"array-element-container\">\r\n <div *ngFor=\"let param of this.boolArray, let i = index\">\r\n <div class=\"array-element\">\r\n <button type=\"button\" class=\"btn btn-secondary remove-button\" title=\"Close\" (click)=\"removeFromArray(i)\">\r\n <i class=\"fa fa-minus\"></i>\r\n </button>\r\n <div class=\"bool-array-element-index\">\r\n {{i+1}}\r\n </div>\r\n <label class=\"switch\">\r\n <input \r\n type=\"checkbox\"\r\n [readonly]=\"_isReadOnly\"\r\n [checked]=\"param\"\r\n (change)=\"this.inputBoolFieldChanged($event, i)\">\r\n <span class=\"slider round\"></span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n","import { Utilities } from \"@dflat-core/web/core\";\nimport { Component, EventEmitter, Input, Output, Renderer2 } from \"@angular/core\";\n\n@Component({\n selector: 'msw-parameter-field',\n templateUrl: \"./parameter-field.component.html\",\n styleUrls: [\"./parameter-field.component.css\"],\n standalone: false\n})\nexport class ParameterFieldComponent { \n\n constructor(private renderer: Renderer2)\n {\n\n }\n\n @Input() public inputField: any; \n @Input() public isReadOnly: boolean = false; \n @Output() onParameterChanged: EventEmitter<any> = new EventEmitter<any>();\n\n inputFieldChanged(inputField: any)\n {\n this.onParameterChanged.emit(inputField)\n }\n\n onHelpIconClicked(id: number)\n {\n let clickedHelpIcon = document.getElementById(id + '_help');\n \n if( !Utilities.IsNil(clickedHelpIcon) && clickedHelpIcon.className.includes('show-help-text'))\n this.renderer.removeClass(clickedHelpIcon, 'show-help-text');\n else if( !Utilities.IsNil(clickedHelpIcon) && !clickedHelpIcon.className.includes('show-help-text'))\n this.renderer.addClass(clickedHelpIcon, 'show-help-text'); \n }\n\n\n\n}","<div class=\"variable-container\">\r\n <div class=\"variable-property\">\r\n {{this.inputField.ParameterLabel}}\r\n <div *ngIf=\"this.inputField.ParameterDescription!=null\" class=\"variable-property-help\" (click)=\"onHelpIconClicked(this.inputField.Id)\">\r\n <span><i class=\"fa fa-question-circle\"></i></span>\r\n <span class=\"help-text\" [attr.id]=\"this.inputField.Id + '_help'\">{{this.inputField.ParameterDescription}}</span>\r\n </div>\r\n </div>\r\n<div class=\"variable-value\">\r\n <div [ngSwitch]=\"this.inputField.ParameterType\"> \r\n\r\n <!-- string -->\r\n <div *ngSwitchCase=\"0\">\r\n <msw-parameter-text\r\n [inputField]=\"this.inputField\"\r\n [isReadOnly]=\"this.isReadOnly\"\r\n (onParameterChanged)=\"this.inputFieldChanged(this.inputField)\">\r\n </msw-parameter-text>\r\n </div>\r\n\r\n <!-- int -->\r\n <div *ngSwitchCase=\"1\">\r\n <msw-parameter-number\r\n [inputField]=\"this.inputField\"\r\n [isReadOnly]=\"this.isReadOnly\"\r\n (onParameterChanged)=\"this.inputFieldChanged(this.inputField)\">\r\n </msw-parameter-number>\r\n </div>\r\n\r\n <!-- double -->\r\n <div *ngSwitchCase=\"2\">\r\n <msw-parameter-number\r\n [inputField]=\"this.inputField\"\r\n [isReadOnly]=\"this.isReadOnly\"\r\n (onParameterChanged)=\"this.inputFieldChanged(this.inputField)\">\r\n </msw-parameter-number>\r\n </div>\r\n\r\n <!-- boolean -->\r\n <div *ngSwitchCase=\"3\">\r\n <msw-parameter-bool\r\n [inputField]=\"this.inputField\"\r\n [isReadOnly]=\"this.isReadOnly\"\r\n (onParameterChanged)=\"this.inputFieldChanged(this.inputField)\">\r\n </msw-parameter-bool>\r\n </div>\r\n\r\n <!-- Date time -->\r\n <div *ngSwitchCase=\"4\">\r\n <msw-parameter-date\r\n [inputField]=\"this.inputField\"\r\n [isReadOnly]=\"this.isReadOnly\"\r\n (onParameterChanged)=\"this.inputFieldChanged(this.inputField)\">\r\n </msw-parameter-date>\r\n </div>\r\n\r\n <!-- StringArray -->\r\n <div *ngSwitchCase=\"5\">\r\n <msw-parameter-text-array\r\n [inputField]=\"this.inputField\"\r\n [isReadOnly]=\"this.isReadOnly\"\r\n (onParameterChanged)=\"this.inputFieldChanged(this.inputField)\">\r\n </msw-parameter-text-array>\r\n </div>\r\n\r\n <!-- IntArray -->\r\n <div *ngSwitchCase=\"6\">\r\n <msw-parameter-number-array\r\n [inputField]=\"this.inputField\"\r\n [isReadOnly]=\"this.isReadOnly\"\r\n (onParameterChanged)=\"this.inputFieldChanged(this.inputField)\">\r\n </msw-parameter-number-array>\r\n </div>\r\n\r\n <!-- DoubleArray -->\r\n <div *ngSwitchCase=\"7\">\r\n <msw-parameter-number-array\r\n [inputField]=\"this.inputField\"\r\n [isReadOnly]=\"this.isReadOnly\"\r\n (onParameterChanged)=\"this.inputFieldChanged(this.inputField)\">\r\n </msw-parameter-number-array>\r\n </div>\r\n\r\n <!-- BooleanArray -->\r\n <div *ngSwitchCase=\"8\">\r\n <msw-parameter-bool-array\r\n [inputField]=\"this.inputField\"\r\n [isReadOnly]=\"this.isReadOnly\"\r\n (onParameterChanged)=\"this.inputFieldChanged(this.inputField)\">\r\n </msw-parameter-bool-array>\r\n </div>\r\n\r\n <!-- DateTimeArray -->\r\n <div *ngSwitchCase=\"9\">\r\n <msw-parameter-date-array\r\n [inputField]=\"this.inputField\"\r\n [isReadOnly]=\"this.isReadOnly\"\r\n (onParameterChanged)=\"this.inputFieldChanged(this.inputField)\">\r\n </msw-parameter-date-array>\r\n </div> \r\n\r\n <!-- password -->\r\n <div *ngSwitchCase=\"10\">\r\n <msw-parameter-password\r\n [inputField]=\"this.inputField\"\r\n [isReadOnly]=\"this.isReadOnly\"\r\n (onParameterChanged)=\"this.inputFieldChanged(this.inputField)\">\r\n </msw-parameter-password>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Directive, EventEmitter, HostListener, Input, Output } from '@angular/core';\r\n\r\n\r\n@Directive({\r\n selector: '[validateOnEnter]',\r\n standalone: false\r\n})\r\nexport class ValidateOnEnterDirective {\r\n\r\nconstructor() {\r\n }\r\n @Input('ValidateValue') value : string;\r\n @Output() onEnterValidate : EventEmitter<string> = new EventEmitter();\r\n @HostListener('keyup.enter')\r\n onEnter() {\r\n this.onEnterValidate.emit(this.value);\r\n }\r\n}\r\n","import { ParameterValueView} from \"@dflat-core/web/system-model\";\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { BaseParameterTypeComponent } from \"../parameter-field/parameter-types/base-parameter-type.component\";\n\n@Component({\n selector: 'msw-form-password',\n templateUrl: \"./form-password.component.html\",\n styleUrls: [\"../parameter-field/parameter-field.component.css\"],\n standalone: false\n})\n\nexport class FormPasswordComponent extends BaseParameterTypeComponent { \n\n hidePassword: boolean = true;\n \n set inputField(value: any) { \n let param : ParameterValueView;\n param = {...value};\n param.Value = null;\n this._inputField = value;\n \n }\n\n showPassword()\n {\n this.hidePassword = !this.hidePassword;\n }\n\n}\n","<div class=\"password-field\">\r\n <input class=\"local-input-style password-type\" \r\n [type]=\"hidePassword ? 'password' : 'text'\"\r\n [id]=\"this._inputField.PropertyName\"\r\n [name]=\"this._inputField.PropertyName\" \r\n [readonly]=\"_isReadOnly\"\r\n [(ngModel)]=\"this._inputField.Value\"\r\n (ngModelChange)=\"this.inputFieldChanged(this._inputField)\"\r\n autocomplete=\"new-password\">\r\n <button class=\"btn btn-secondary see-password-button\" (click)=\"showPassword()\"><i class=\"fa fa-eye\" aria-hidden=\"true\"></i></button>\r\n</div>\r\n","import { Utilities } from '@dflat-core/web/core';\nimport { DataService } from '@dflat-core/web/core-data';\nimport { ConditionalResults, CustomFieldTypes, DictionnaryWrapper, EntityViewModel, EntityViewModelWithFields, ExtendedProperty, FieldDescriptor, FieldValidators, FilterDescriptor, FilterType, FilterViewModel, Section, SectionError, SpecificSection, TextZoneButtonEvent, ValidatorTypes } from '@dflat-core/web/core-model';\nimport { AfterViewInit, Component, ComponentFactoryResolver, ElementRef, EventEmitter, Input, Output, QueryList, ViewChild, ViewChildren, ViewContainerRef } from '@angular/core';\nimport { AbstractControl, UntypedFormControl, UntypedFormGroup, NgForm, Validators } from '@angular/forms';\nimport * as _ from 'lodash';\nimport moment from 'moment';\nimport { defineLocale } from 'ngx-bootstrap/chronos';\nimport { BsDatepickerConfig, BsLocaleService } from 'ngx-bootstrap/datepicker';\nimport { frLocale } from 'ngx-bootstrap/locale';\nimport { ToastrService } from 'ngx-toastr';\nimport { from, groupBy, mergeMap, Subscription, toArray } from 'rxjs';\nimport { FieldDescriptorWithValue, IDialogOptions, InputSelectorOptions } from '../../model/model';\nimport { ModalService } from '../../services/modal.service';\nimport { DflatBaseFilterComponent } from '../basefilter/basefilter.component';\nimport { InputSelectorComponent } from '../input-selector/input-selector.component';\n\n\n@Component({\n selector: 'alg-property-grid',\n templateUrl: './property-grid.component.html',\n styleUrls: ['./property-grid.component.scss'],\n standalone: false\n})\nexport class PropertyGridComponent<TData extends EntityViewModel> implements AfterViewInit {\n\n @Input()\n validateAfterEachChange: boolean = true;\n\n @Input()\n istripledot: boolean = false;\n\n @Input()\n showNavs: boolean = false;\n\n isVerticalNavDisplay : boolean = false;\n\n @Input(\"options\") options: InputSelectorOptions = new InputSelectorOptions();\n @ViewChildren('templateContainer', { read: ViewContainerRef }) dynamicTabsTemplates: QueryList<ViewContainerRef>;\n @ViewChildren('inputSelector') inputSelectors: QueryList<InputSelectorComponent>;\n\n @ViewChild('gridForm', { static: false }) public ngForm: NgForm;\n @ViewChild('tabTmplcontainer', { static: false }) tabTmplcontainer;\n @ViewChild('tabs', { static: false }) tabs;\n\n @Input() entityKey: string;\n @Input() propertyGridClass: string = \"property-container\";\n @Input() specificSections: SpecificSection[];\n @Input() selectedTab: number = 0;\n\n\n //Evenements à mettre à jour (nom - utilité - appels - commentaire pour expliquer)\n // @Output() entityChanged: EventEmitter<any> = new EventEmitter();// propriété modifié par main + changement de selection\n @Output() propertyModified: EventEmitter<FieldDescriptorWithValue> = new EventEmitter();// Propriété modifié par main seulement\n @Output() originalEntityChanged: EventEmitter<number[]> = new EventEmitter();\n\n\n\n\n @Output() onTableSelectedChanged: EventEmitter<any> = new EventEmitter();\n @Output() textZoneButtonClicked: EventEmitter<TextZoneButtonEvent> = new EventEmitter();\n @Output() inputTextValidated: EventEmitter<string> = new EventEmitter();\n\n private supplierId: number;\n public get SupplierId() { return this.supplierId; }\n public set SupplierId(value) {\n this.supplierId = value;\n\n if (!Utilities.IsNil(this.inputSelectors) && this.inputSelectors.length > 0) {\n this.inputSelectors.forEach(c => c.supplierId = value);\n }\n\n }\n\n\n @Output() TripleDotClicked: EventEmitter<any> = new EventEmitter();\n\n entity: TData = null;\n viewModelLoaded: boolean;\n selected: TData[];\n isDirty: boolean = false;\n filterType = FilterType;\n bsConfig: Partial<BsDatepickerConfig> = new BsDatepickerConfig();\n bsTimeConfig: Partial<BsDatepickerConfig> = new BsDatepickerConfig();\n bsValue = new Date();\n locale = 'fr';\n selectionHelper: DictionnaryWrapper<any> = new DictionnaryWrapper<any>();\n currentTab = {};\n validatorDefined: boolean = false;\n counter: number = 1;\n radioButton = [];\n _options: IDialogOptions = {};\n public form: UntypedFormGroup;\n sectionErrors: SectionError[] = [];\n subscription: Subscription;\n ErrorConfig = {\n required: 'Le champ est obligatoire',\n maxlength: 'Taille max du champs atteinte',\n email: 'Adresse email invalide'\n }\n\n get Fields() {\n if(!Utilities.IsNil(this.ViewModel) && !Utilities.IsNil(this.ViewModel.FieldSections)){\n const fields = ([] as FilterDescriptor[]).concat(...this.viewModel.FieldSections.map(s => s.FieldViewModels));\n return fields;\n }\n }\n\n viewModel: EntityViewModelWithFields<TData>;\n fieldSection: Section[] = [];\n\n get ViewModel() { return this.viewModel; }\n set ViewModel(value) {\n this.viewModel = value;\n if(this.Fields)\n this.Fields.forEach(f => this.checkFieldIsCascade(f));\n if (value) {\n this.fieldSection = this.viewModel.FieldSections\n this.setValidators();\n }\n\n\n\n }\n\n constructor(\n private modalService: ModalService,\n private dataService: DataService,\n private localeService: BsLocaleService,\n private componentFactoryResolver: ComponentFactoryResolver,\n private toastrService: ToastrService,\n public elementRef : ElementRef\n ) {\n defineLocale('fr', frLocale);\n this.localeService.use('fr');\n this.bsConfig.containerClass = 'theme-blue';\n\n this.bsConfig.dateInputFormat = 'L';\n this.bsConfig.showWeekNumbers = true;\n\n\n\n }\n\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.setValidators();\n });\n }\n\n buildForm() {\n let group = {};\n if (this.viewModel.FieldSections && this.viewModel.ViewModel) {\n this.viewModel.FieldSections.forEach(section => {\n section.FieldViewModels.forEach(field => {\n group[field.PropertyName] = new UntypedFormControl(this.viewModel.ViewModel[field.PropertyName], this.getValidators(field.FieldValidators));\n this.checkFieldIsCascade(field);\n });\n });\n }\n\n this.form = new UntypedFormGroup(group);\n this.viewModel.FieldSections.forEach(section => {\n section.FieldViewModels.forEach(field => {\n if (field.IsConditioning) {\n this.handleConditionalFields(field.PropertyName, this.form.get(field.PropertyName).value);\n }\n if (!Utilities.IsNil(field.CascadeDependency) && field.CascadeDependency === true) {\n this.handleCascadeField(field);\n }\n });\n });\n }\n\n changeActivTab(tabIndex: number) {\n this.selectedTab = tabIndex;\n\n this.refreshAttributesTab();\n\n if (this.selectedTab >= this.ViewModel.FieldSections.length && this.dynamicTabsTemplates && this.dynamicTabsTemplates.length > 0) {\n let dynamicTabsTemplatesArray = this.dynamicTabsTemplates.toArray();\n const tmpIndex = this.selectedTab - this.ViewModel.FieldSections.length;\n const tab : SpecificSection = this.specificSections[tmpIndex];\n\n let viewContainerRef = dynamicTabsTemplatesArray[tmpIndex];\n // clear without destroying the first node\n viewContainerRef.detach();\n\n if (Utilities.IsNil(this.selectionHelper.get(tab.Name))) {\n // *** Create an embedded view\n // let _viewRef = tab.Template.createEmbeddedView();\n // this.selectionHelper.dictionary[tab.Name] = <any>_viewRef;\n\n // *** Create a component ref\n\n let componentFactory = this.componentFactoryResolver.resolveComponentFactory(tab.Template);\n // let viewContainerRef = dynamicTabsTemplatesArray[tmpIndex];\n // let componentRef = viewContainerRef.createComponent(tab.Component);\n\n // const componentFactory = this.componentFactoryResolver.resolveComponentFactory(tab.Template);\n const componentRef = viewContainerRef.createComponent(componentFactory.componentType);\n\n\n\n tab.Component = componentRef.instance;\n Object.assign(componentRef.instance, tab.Context);\n this.selectionHelper.dictionary[tab.Name] = <any>componentRef;\n\n const _componentRef = this.selectionHelper.dictionary[tab.Name];\n if (typeof _componentRef.instance['initCurrentTab'] === 'function') {\n _componentRef.instance.initCurrentTab(tab.Context);\n }\n\n } else {\n // *** if embedded view\n // dynamicTabsTemplatesArray[tmpIndex].insert((<any>this.selectionHelper.dictionary[tab.Name]), 0);\n\n viewContainerRef.insert((<any>this.selectionHelper.dictionary[tab.Name]).hostView, 0);\n if (!this.currentTab[tabIndex])\n this.refreshCurrentTab();\n }\n\n this.currentTab[tabIndex] = true;\n }\n }\n\n refreshAttributesTab() {\n if (!Utilities.IsNil(this.ViewModel) && this.selectedTab < this.ViewModel.FieldSections.length && this.ViewModel.FieldSections[this.selectedTab].IsCustomFieldSection) {\n var ids: number[] = this.selected.filter(s => s[\"ExtendedProperties\"].length == 0).map(s => s.Id);\n if (ids.length > 0) {\n this.dataService.getExtendedProperties(this.entityKey, ids).subscribe(res => {\n res.forEach(p => {\n let entity: TData = this.selected.find(s => s.Id === p.EntityId);\n entity[p.PropertyName] = this.getFormattedValue(p);\n entity[\"ExtendedProperties\"].push(p);\n });\n this.originalEntityChanged.emit(ids);\n this.entity = this.getEntityFromSelection(this.selected);\n this.checkFieldCascedData();\n this.setValidators();\n });\n }\n }\n }\n\n getFormattedValue(p: ExtendedProperty): any {\n if (p.FieldType == CustomFieldTypes.Checkbox) {\n if (p.Value == \"true\")\n return true;\n else\n return false;\n }\n return p.Value\n ;\n }\n\n isValidControl(propertyName : string): boolean{\n if(!Utilities.IsNil(this.ngForm.controls) && !Utilities.IsNil(this.ngForm.controls[propertyName]) ){\n return this.ngForm.controls[propertyName].valid\n }\n return true;\n }\n\n getValidationErrors(field : FieldDescriptor) : string{\n let result : string;\n if(!Utilities.IsNil(field) && !Utilities.IsNil(this.ngForm.controls) && !Utilities.IsNil(this.ngForm.controls[field.PropertyName]) ){\n if(this.ngForm.controls[field.PropertyName]?.hasError('required'))\n result = 'Ce champ est obligatoire'\n\n if(this.ngForm.controls[field.PropertyName]?.hasError('min'))\n result = `Minimum: ${field.FieldValidators.MinValue}`\n\n if(this.ngForm.controls[field.PropertyName]?.hasError('max'))\n result = `Maximum: ${field.FieldValidators.MaxValue}`\n\n if(this.ngForm.controls[field.PropertyName]?.hasError('min'))\n result = `Longueur maximale: ${field.FieldValidators.MaxLength} caractères`\n }\n return result;\n }\n\n context?: any;\n refreshCurrentTab() {\n if (!Utilities.IsNil(this.ViewModel) && !Utilities.IsNil(this.ViewModel.FieldSections)\n && this.selectedTab >= this.ViewModel.FieldSections.length) {\n const tmpIndex = this.selectedTab - this.ViewModel.FieldSections.length;\n if ( Utilities.IsNil(this.specificSections) || this.specificSections.length == 0)\n return;\n\n const tab = this.specificSections[tmpIndex];\n if (tab && !Utilities.IsNil(this.selectionHelper.get(tab.Name))) {\n const _componentRef = this.selectionHelper.dictionary[tab.Name];\n Object.assign(_componentRef.instance, tab.Context);\n this.selectionHelper.dictionary[tab.Name] = <any>_componentRef;\n\n if (typeof _componentRef.instance['initCurrentTab'] === 'function') {\n _componentRef.instance.initCurrentTab(tab.Context);\n }\n this.currentTab[this.selectedTab] = true;\n }\n }\n\n }\n\n resetSpecificSectionContext(sectionName: string, filter: FilterViewModel, component: DflatBaseFilterComponent<any, any>) {\n if (Utilities.IsNil(this.specificSections)) return;\n this.currentTab = {};\n let section : SpecificSection = this.specificSections.find(s => s.Name === sectionName);\n if (!Utilities.IsNil(section)) {\n section.IconUrl =null;\n (<any>section.Context).Filter = filter;\n (<any>section.Context).Component = component;\n }\n }\n\n fetchCustomFieldSection(sectionName: string, filter: FilterViewModel, component: DflatBaseFilterComponent<any, any>) {\n this.dataService\n .getEntityViewModel<TData>(component.getEntityKey(), 0)\n .subscribe((res) => {\n\n let vm = Object.assign({}, res);\n let customFieldSections = vm.FieldSections.filter(x=>x.IsCustomFieldSection == true);\n this.fieldSection.push(...customFieldSections)\n\n });\n }\n\n setValidators() {\n if (this.viewModel) {\n this.viewModel.FieldSections.forEach(section => {\n section.FieldViewModels.forEach(field => {\n const ctrl = this.ngForm.controls[field.PropertyName];\n // if (field.FilterType === FilterType.ComboBox || field.FilterType === FilterType.Date ||\n // field.FilterType === FilterType.Custom) {\n // if (field.ReadOnly && ctrl) {\n // ctrl.disable();\n // }\n // }\n if (!Utilities.IsNil(ctrl)) {\n if (field.IsConditioning && ! Utilities.IsNil(this.entity)) {\n this.handleConditionalFields(field.PropertyName, this.entity[field.PropertyName]);\n }\n if (!field.IsHidden) {\n ctrl.setValidators(this.getValidators(field.FieldValidators));\n // this.ngForm.controls[field.PropertyName].update\n }\n // this.checkFieldIsCascade(field);\n this.handleCascadeField(field);\n }\n })\n });\n }\n }\n\n\n\n initViewModel() {\n if (!this.viewModelLoaded) {\n this.dataService.getEntityViewModel<TData>(this.entityKey, 0).subscribe(res => {\n this.viewModel = Object.assign({}, res);\n this.viewModelLoaded = true;\n });\n }\n }\n\n getEntityFromSelection(selected: TData[]): TData {\n if (selected == null || selected.length == 0) {\n this.selectionHelper = new DictionnaryWrapper<any>();\n return null;\n }\n\n\n this.selected.forEach(item => this.formatDate(item));\n const result = Object.assign({}, selected[0]) as TData;\n\n //#region TODO USE New Rxjs GrouBy\n // this.viewModel.FieldSections.forEach(section => {\n // section.FieldViewModels.filter(f => !!!f.IsHidden).forEach(f => {\n // const example = from(selected).pipe(\n // groupBy(sld => f.PropertyName),\n // // return each item in group as array\n // mergeMap(group => group.pipe(toArray())));\n // const subscribe = example.subscribe(val => {if(val.length > 1) {console.log(f.PropertyName + 'groupBy rxjs result'+ val)};});\n // })});\n //#endregion\n if (!Utilities.IsNil(this.viewModel)) {\n this.viewModel.FieldSections.forEach(section => {\n section.FieldViewModels.filter(f => !!!f.IsHidden).forEach(f => {\n let value = undefined;\n let hasDistinctValues = false;\n\n selected.forEach(s => {\n if (!hasDistinctValues) {\n let current = s[f.PropertyName];\n if (Utilities.IsUndefined(value))\n value = current;\n else if (current !== value) {\n value = null;\n hasDistinctValues = true;\n }\n }\n result[f.PropertyName] = value;\n });\n });\n });\n }\n return result;\n }\n\n _getEntityFromSelection(selected: TData[]): TData {\n if (selected == null || selected.length == 0) {\n this.selectionHelper = new DictionnaryWrapper<any>();\n return null;\n }\n\n this.selected.forEach(item => this.formatDate(item));\n const result = Object.assign({}, selected[0]) as TData;\n\n if (!Utilities.IsNil(this.viewModel)) {\n this.viewModel.FieldSections.forEach(section => {\n section.FieldViewModels.filter(f => !!!f.IsHidden).forEach(f => {\n const groupedByProperty = from(selected).pipe(\n groupBy(vm => vm[f.PropertyName]),\n mergeMap(grp_vm => grp_vm.pipe(toArray()))\n );\n\n groupedByProperty.subscribe(values => {\n let value = undefined;\n let hasDistinctValues = false;\n values.forEach(s => {\n if (!hasDistinctValues) {\n let current = s[f.PropertyName];\n if (Utilities.IsUndefined(value))\n value = current;\n else if (current !== value) {\n value = null;\n hasDistinctValues = true;\n }\n }\n });\n result[f.PropertyName] = value;\n });\n });\n });\n }\n return result;\n }\n\n\n formatDate(current: any) {\n\n let fields: any;\n if (!Utilities.IsNil(this.viewModel)) {\n fields = ([] as FilterDescriptor[]).concat(...this.viewModel.FieldSections.map(s => s.FieldViewModels)).filter(f => f.FilterType === FilterType.Date);\n }\n if (!Utilities.IsNil(fields)) {\n fields.forEach(field => {\n let key = field.PropertyName;\n let currentKey = current[key];\n if (typeof currentKey === 'string' && moment(currentKey).isValid()) {\n current[key] = Utilities.getCustomDate(currentKey);\n }\n });\n }\n }\n\n\n hasSelection() {\n return !Utilities.IsNil(this.entity);\n }\n\n onSelectionChanged(selected: TData[]) {\n\n this.selected = selected;\n this.entity = this.getEntityFromSelection(selected);\n let o = this._getEntityFromSelection(selected);\n\n if (!Utilities.IsNil(this.entity)) {\n\n setTimeout(() => {\n this.refreshAttributesTab();\n this.checkFieldCascedData();\n this.setValidators();\n });\n\n }\n\n // this.entityChanged.emit();\n }\n\n inputSelectorChanged(field: FilterDescriptor, event: any): void {\n // Trigger pour modifier à la volée la propriété liée à l'Id\n // des items dans la combobox.\n if (!Utilities.IsNil(field.ModalTriggerIdProperty) && !Utilities.IsNil(event)) {\n this.entity[field.ModalTriggerIdProperty] = event['Id'];\n this.selected.forEach(s => {\n s[field.ModalTriggerIdProperty] = event['Id'];\n });\n\n this.isDirty = true;\n }\n }\n\n // setValue(propertyName: String, newValue: any){\n // this.entity[propertyName] = newValue;\n // }\n onCallValidation(field: FilterDescriptor, event: any): void {\n this.inputTextValidated.emit(event);\n }\n\n getFieldReadOnly(field : FieldDescriptor) : boolean{\n let isReadOnly : boolean = field.ReadOnly;\n // if (!Utilities.IsNil(field) && !Utilities.IsNil(this.selected) ){\n\n // if( this.selected.length > 1 ){\n // return isReadOnly || !Utilities.IsNil(this.selected.find(s=>s.IsEditable == false))\n // }\n // else{\n // if(!Utilities.IsNil(this.selected[0]))\n // return isReadOnly || !this.selected[0].IsEditable\n // }\n // }\n return isReadOnly;\n }\n onNgModelChange(field: FilterDescriptor, newValue: any): void {\n // Affectation des changements\n if (this.selected != null) {\n\n if (!Utilities.IsNil(newValue) && typeof newValue === 'string') {\n if (Utilities.isEmptyString(newValue.trim())) {\n newValue = null;\n }\n }\n // console.log('///////////notify property//////////////')\n // console.log(this.selected);\n\n this.selected.forEach(s => {\n s[field.PropertyName] = newValue;\n\n // Ajout des custom fields.\n if (field.IsExtendedProperty) {\n let property: ExtendedProperty = s[\"ExtendedProperties\"].find((p: ExtendedProperty) => p.PropertyName == field.PropertyName);\n\n if (Utilities.IsNil(property)) {\n var extProp: ExtendedProperty = {};\n extProp.PropertyName = field.PropertyName;\n extProp.Value = newValue;\n\n s[\"ExtendedProperties\"].push(extProp);\n }\n else {\n property.Value = newValue;\n }\n }\n });\n this.isDirty = true;\n\n if (field.IsConditioning) {\n this.handleConditionalFields(field.PropertyName, newValue);\n }\n else if (!Utilities.IsNil(field.CascadeDependency) && field.CascadeDependency === true) {\n this.handleCascadeField(field);\n } else {\n if ( this.validateAfterEachChange )\n this.checkIsValid();\n }\n\n let event: FieldDescriptorWithValue = {\n field: field,\n value: newValue\n };\n \n this.propertyModified.emit(event);\n }\n }\n\n getValidators(fieldValidators: FieldValidators) {\n let validators = [];\n if (fieldValidators) {\n if ((fieldValidators.ValidatorType & ValidatorTypes.MaxLength) != 0) {\n validators.push(Validators.maxLength(fieldValidators.MaxLength));\n }\n if ((fieldValidators.ValidatorType & ValidatorTypes.Max) != 0) {\n validators.push(Validators.max(fieldValidators.MaxValue));\n }\n if ((fieldValidators.ValidatorType & ValidatorTypes.Min) != 0) {\n validators.push(Validators.min(fieldValidators.MinValue));\n }\n if ((fieldValidators.ValidatorType & ValidatorTypes.Required) != 0) {\n validators.push(Validators.required);\n }\n if ((fieldValidators.ValidatorType & ValidatorTypes.Email) != 0) {\n validators.push(Validators.email);\n }\n }\n return validators;\n }\n\n /**\n * Handles conditional fields\n * @param conditioningFieldPropertyName\n * @param conditioningFieldValue\n */\n handleConditionalFields(conditioningFieldPropertyName: string, conditioningFieldValue: any) {\n if (this.viewModel.FieldSections && this.viewModel.ViewModel) {\n this.viewModel.FieldSections.forEach(section => {\n section.FieldViewModels.forEach(field => {\n if (field.IsConditional && (field.ConditioningField == conditioningFieldPropertyName)) {\n if ( field.ConditionalResult == ConditionalResults.Hide )\n field.IsHidden = ((! Utilities.IsNil(field.ConditioningFieldValue) && field.ConditioningFieldValue.filter(c => c === conditioningFieldValue)?.length>0) || (Utilities.IsNil(conditioningFieldValue) && ! field.BoolConditioningFieldValue) || (field.BoolConditioningFieldValue === conditioningFieldValue));\n else if ( field.ConditionalResult == ConditionalResults.ReadOnly )\n field.ReadOnly = ((! Utilities.IsNil(field.ConditioningFieldValue) && field.ConditioningFieldValue.filter(c => c === conditioningFieldValue)?.length>0) || (Utilities.IsNil(conditioningFieldValue) && ! field.BoolConditioningFieldValue) || (field.BoolConditioningFieldValue === conditioningFieldValue));\n\n if(!Utilities.IsNil(this.ngForm.controls[field.PropertyName])){\n if (field.IsHidden) {\n this.ngForm.controls[field.PropertyName].clearValidators();\n } else {\n\n if ((field.FieldValidators.ValidatorType & ValidatorTypes.Required) != 0)\n this.ngForm.controls[field.PropertyName].setValidators([Validators.required])\n\n\n if ((field.FieldValidators.ValidatorType & ValidatorTypes.MaxLength) != 0)\n this.ngForm.controls[field.PropertyName].setValidators([Validators.maxLength(field.FieldValidators.MaxLength)])\n\n if ((field.FieldValidators.ValidatorType & ValidatorTypes.Max) != 0)\n this.ngForm.controls[field.PropertyName].setValidators([Validators.max(field.FieldValidators.MaxValue)])\n\n if ((field.FieldValidators.ValidatorType & ValidatorTypes.Min) != 0)\n this.ngForm.controls[field.PropertyName].setValidators([Validators.max(field.FieldValidators.MinValue)])\n\n if ((field.FieldValidators.ValidatorType & ValidatorTypes.Email) != 0)\n this.ngForm.controls[field.PropertyName].setValidators([Validators.email])\n }\n this.ngForm.controls[field.PropertyName].updateValueAndValidity();\n }\n }\n });\n });\n\n if ( this.validateAfterEachChange)\n this.checkIsValid();\n }\n }\n\n\n /**\n * Checks is valid\n */\n checkIsValid() {\n\n\n this.sectionErrors.splice(0, this.sectionErrors.length);\n\n if (this.viewModel.FieldSections && this.viewModel.ViewModel) {\n this.viewModel.FieldSections.forEach(section => {\n let sectionError = {\n Name: section.Name,\n Errors: []\n } as SectionError;\n\n section.FieldViewModels.forEach(field => {\n\n let ctrl: AbstractControl = this.ngForm.controls[field.PropertyName];\n if (ctrl)\n ctrl.updateValueAndValidity();\n\n if (ctrl && !ctrl.valid) {\n for (let errorCode in ctrl.errors) {\n if (ctrl.errors.hasOwnProperty(errorCode)) {\n sectionError.Errors.push(field.Label + ' : ' + this.retrieveErrorMessage(errorCode));\n }\n }\n\n }\n });\n\n if (sectionError.Errors.length > 0) {\n this.sectionErrors.push(sectionError);\n }\n });\n }\n\n }\n\n\n /**\n * Retrieves error message\n * @param errorCode\n * @returns\n */\n retrieveErrorMessage(errorCode: string) {\n return this.ErrorConfig[errorCode] || \"ERRORS\";\n }\n\n isValid(): boolean {\n\n return this.ngForm.valid; //&& this.ngForm.dirty\n }\n\n\n\n handleCascadeField(field: FilterDescriptor) {\n\n if ( Utilities.IsNil(this.entity))\n return;\n\n // if cascade dependency is defined then filter it\n if (field.CascadeDependency && field.CascadeDependencyProperty) {\n // console.log(`field => ${field.PropertyName}`);\n let ctrl: AbstractControl = this.ngForm.controls[field.PropertyName];\n if (Utilities.IsUndefined(ctrl) && Utilities.IsNil(field)) {\n return;\n }\n let selectedValue = field.FilterType === FilterType.Integer ? Number(this.entity[field.PropertyName]) : this.entity[field.PropertyName];\n let props = field.CascadeDependencyProperty.split(\";\");\n var fieldsVm = this.viewModel.FieldSections.map(vm => vm.FieldViewModels).reduce((results, plans) => [...results, ...plans], []).filter(\n s => props.includes(s.PropertyName)\n );\n\n props.forEach(prop => {\n let dependingField = fieldsVm.find(f => f.PropertyName === prop);\n dependingField.CurrentFilters = dependingField.CurrentFilters || {};\n if (Utilities.IsNil(selectedValue) || Utilities.isEmptyString(selectedValue)) {\n delete dependingField.CurrentFilters[field.PropertyName];\n this.resetFieldData(dependingField);\n }\n else {\n dependingField.CurrentFilters[field.PropertyName] = true;\n this.resetFieldData(dependingField);\n }\n if (field.FilterDistinct) {\n dependingField.Data = _.uniqBy(dependingField.Data, dependingField.PropertyName);\n }\n });\n }\n }\n\n resetFieldData(field: FilterDescriptor) {\n if (Utilities.IsNil(field.OriginalData)) {\n return;\n }\n\n if (field.FilterType == FilterType.Integer) {\n field.Data = field\n .OriginalData\n .filter(p => p[field.ValueMember] === -1\n || _.every(Object.keys(field.CurrentFilters), (name) => { return p[name] === this.entity[name]; }));\n }\n else {\n field.Data = field\n .OriginalData\n .filter(p => _.every(Object.keys(field.CurrentFilters), (name) => { return p[name] === this.entity[name]; }));\n }\n }\n\n checkFieldIsCascade(field: FilterDescriptor) {\n if (!Utilities.IsNil(field.CascadeDependency) && field.CascadeDependency === true) {\n field.OriginalData = Object.assign([], field.Data);\n }\n if (field.FilterDistinct) {\n field.Data = _.uniqBy(field.OriginalData, field.PropertyName);\n }\n }\n\n checkFieldCascedData() {\n if (!Utilities.IsNil(this.viewModel)) {\n if (this.viewModel.FieldSections && this.viewModel.ViewModel) {\n this.viewModel.FieldSections.forEach(section => {\n section.FieldViewModels.forEach(field => {\n this.handleCascadeField(field);\n });\n });\n }\n }\n };\n\n getRadioButtonId(propName: string, indexOfData: number) {\n return propName + \"-\" + indexOfData.toString();\n }\n\n onClick(field: FilterDescriptor, inputText: string) {\n let event: TextZoneButtonEvent = {\n Field: field,\n Value: inputText\n }\n this.textZoneButtonClicked.emit(event);\n }\n icon = \"circle-info-solid\"\n getInfoIcon() {\n return `/assets/images/circle-info.svg`;\n }\n\n getRequiredIcon() {\n return `/assets/images/star-of-life-solid.svg`;\n }\n\n\n // toast_class_override : Partial<IndividualConfig>;\n onInfoClick(field: FilterDescriptor) {\n // this.toast_class_override = {...this.toast_class_override2,toastClass : 'background-color :var(--main-bg-color) !important;color:black;'};\n this.toastrService.info(field.Description.replace(\"\\n\", \"<br>\"), 'Information');\n }\n showInformation(field: FilterDescriptor): boolean {\n return (!Utilities.IsNil(field.Description)) && (field.Description.length > 0)\n }\n\n}\n","<div class=\"main-component\">\r\n<form class=\"propertyGridform\" #gridForm=\"ngForm\">\r\n\r\n <div [ngClass]=\"this.propertyGridClass\">\r\n <ng-container *ngIf=\"this.hasSelection()\">\r\n <alg-tabset [showNavs]=\"this.showNavs\" #tabs [pills]=\"false\" (onSelect)=\"changeActivTab($event)\" class=\"property-grid-tabset\"\r\n [isVertical]=\"isVerticalNavDisplay\">\r\n <ng-container *ngFor=\"let section of fieldSection; let i = index\">\r\n <!-- CAS:1 -> Création des onglets \"Génériques\" -->\r\n <alg-tab [title]=\"section.Name\" [active]=\"i == 0\">\r\n <div [attr.id]=\"'content-'+i\" class=\"property-grid-tab\">\r\n <table class=\"property-table\" *ngIf=\"this.entity != null\">\r\n <tbody>\r\n <ng-container *ngFor=\"let field of section.FieldViewModels; let j = index\">\r\n <ng-container *ngIf=\"field.ColumnSpan == 0 && field.ColumnIndex == 0\">\r\n <tr>\r\n <td [hidden]=\"!!field.IsHidden\" class=\"label-column\" [class.invalid]=\"!this.isValidControl(field.PropertyName)\">\r\n <ng-container *ngIf=\"field.FilterType != this.filterType.CheckBox && field.FilterType != this.filterType.RadioButton\">\r\n <span>{{field.Label}}</span>\r\n <img *ngIf=\"this.showInformation(field)\" class=\"information-icon\" [src]=\"this.getInfoIcon()\" alt=\"information\" (click)=\"this.onInfoClick(field)\">\r\n <img *ngIf=\"field.Required\" class=\"required-icon\" [src]=\"this.getRequiredIcon()\" alt=\"obligatoire\">\r\n <ng-container *ngIf=\"!this.isValidControl(field.PropertyName)\">\r\n <div class=\"validation-error-class\">\r\n {{this.getValidationErrors(field)}}\r\n </div>\r\n </ng-container>\r\n\r\n </ng-container>\r\n </td>\r\n <td *ngIf=\"field.KeepPlace\" class=\"label-column\"></td>\r\n <ng-container\r\n *ngIf=\"j + 1 < section.FieldViewModels.length && section.FieldViewModels[j+1].ColumnSpan == 0 && section.FieldViewModels[j+1].ColumnIndex == 1 && section.FieldViewModels[j+1].FilterType != this.filterType.CheckBox && section.FieldViewModels[j+1].FilterType != this.filterType.RadioButton\">\r\n <td [hidden]=\"!!section.FieldViewModels[j+1].IsHidden\"\r\n class=\"label-column\" [class.invalid]=\"!this.isValidControl(section.FieldViewModels[j+1].PropertyName)\">\r\n <span>{{section.FieldViewModels[j+1].Label}}</span>\r\n <img *ngIf=\"this.showInformation(field)\" class=\"information-icon\" [src]=\"this.getInfoIcon()\" alt=\"information\" (click)=\"this.onInfoClick(field)\">\r\n <img *ngIf=\"section.FieldViewModels[j+1].Required\" class=\"required-icon\" [src]=\"this.getRequiredIcon()\" alt=\"obligatoire\">\r\n <ng-container *ngIf=\"!this.ngForm.controls[section.FieldViewModels[j+1].PropertyName]?.valid\">\r\n <div class=\"validation-error-class\">\r\n {{this.getValidationErrors(section.FieldViewModels[j+1])}}\r\n </div>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n <tr>\r\n <td [hidden]=\"!!field.IsHidden\" class=\"prpty-column left\">\r\n <ng-container [ngSwitch]=\"field.FilterType\">\r\n <ng-container *ngSwitchCase=\"this.filterType.ComboBox\">\r\n <ng-select appendTo=\"body\" placeholder=\"Sélectionner {{field.Label}}\"\r\n [readonly]=\"this.getFieldReadOnly(field)\"\r\n [items]=\"field.Data\"\r\n [name]=\"field.PropertyName\"\r\n [multiple]=\"field.MultipleSelection\"\r\n [hideSelected]=\"field.HideSelected\"\r\n bindValue=\"{{field.ValueMember}}\"\r\n bindLabel=\"{{field.DisplayMember}}\"\r\n [(ngModel)]=\"this.entity[field.PropertyName]\"\r\n (ngModelChange)=\"this.onNgModelChange(field, $event)\">\r\n </ng-select>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"this.filterType.Date\">\r\n <input class=\"form-control\" type=\"text\" placeholder=\"Sélectionner une date\" bsDatepicker\r\n [readonly]=\"this.getFieldReadOnly(field)\"\r\n [disabled]=\"this.getFieldReadOnly(field)\"\r\n [name]=\"field.PropertyName\"\r\n [bsConfig]=\"this.bsConfig\"\r\n [(ngModel)]=\"this.entity[field.PropertyName]\"\r\n (ngModelChange)=\"this.onNgModelChange(field, $event)\" />\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"this.filterType.DateTime\">\r\n <input class=\"form-control\" type=\"text\"\r\n [readonly]=\"this.getFieldReadOnly(field)\"\r\n [name]=\"field.PropertyName\"\r\n [value]=\"this.entity[field.PropertyName] | date: 'dd/MM/yyyy HH:mm:ss'\"\r\n />\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"this.filterType.Integer\">\r\n <input class=\"form-control\" type=\"number\"\r\n [(ngModel)]=\"this.entity[field.PropertyName]\"\r\n [name]=\"field.PropertyName\"\r\n [readonly]=\"this.getFieldReadOnly(field)\"\r\n (ngModelChange)=\"this.onNgModelChange(field, $event)\">\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"this.filterType.CheckBox\">\r\n <div class=\"radio-button-container\">\r\n <div class=\"radio-button-box\">\r\n <input class = \"radio-button\"\r\n type=\"checkbox\"\r\n [(ngModel)]=\"this.entity[field.PropertyName]\"\r\n [name]=\"field.PropertyName\"\r\n [disabled]=\"this.getFieldReadOnly(field)\"\r\n (ngModelChange)=\"this.onNgModelChange(field, $event)\"\r\n >\r\n </div>\r\n <label class=\"radio-button-label\">{{field.Label}}</label>\r\n\r\n </div>\r\n\r\n </ng-container>\r\n <!--Enum Input-->\r\n <div *ngSwitchCase=\"filterType.RadioButton\" class=\"form-group row has-feedback\">\r\n <div class=\"radio-button-container\">\r\n <div *ngFor=\"let data of field.Data; let indexOfData = index\" class=\"radio-button-label-box\">\r\n <div class=\"radio-button-box\">\r\n <input class = \"radio-button\"\r\n type=\"radio\"\r\n [id]=\"getRadioButtonId(field.PropertyName, indexOfData)\"\r\n [value]=\"indexOfData\"\r\n [(ngModel)]=\"this.entity[field.PropertyName]\"\r\n [name]=\"field.PropertyName\"\r\n [readonly]=\"this.getFieldReadOnly(field)\"\r\n (ngModelChange)=\"this.onNgModelChange(field, $event)\"\r\n >\r\n </div>\r\n <label class=\"radio-button-label\">{{data}}</label>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Text zone with button -->\r\n <div *ngSwitchCase=\"filterType.TextZoneWithButton\" class=\"form-group row has-feedback\">\r\n <div class=\"radio-button-container\">\r\n <div class=\"text-zone-and-button\">\r\n <div class=\"text-zone-container\">\r\n <textarea type=\"text\" class=\"text-area\" spellcheck=\"false\" #textarea\r\n [id]=\"field.PropertyName\"\r\n [(ngModel)]=\"this.entity[field.PropertyName]\"\r\n [name]=\"field.PropertyName\"\r\n [readonly]=\"this.getFieldReadOnly(field)\"\r\n (ngModelChange)=\"this.onNgModelChange(field, $event)\">\r\n </textarea>\r\n\r\n </div>\r\n <div class=\"feedback-and-button\" >\r\n <div class=\"feedback\">\r\n <div class=\"feedback-green\" *ngIf=\"field.TextWithStyle.GreenText.length > 0\">\r\n {{field.TextWithStyle.GreenText}}\r\n </div>\r\n <div class=\"feedback-yellow\" *ngIf=\"field.TextWithStyle.YellowText.length > 0\">\r\n {{field.TextWithStyle.YellowText}}\r\n </div>\r\n <div class=\"feedback-red\" *ngIf=\"field.TextWithStyle.RedText.length > 0\">\r\n {{field.TextWithStyle.RedText}}\r\n </div>\r\n </div>\r\n <button type=\"button\" id=\"botton-compile\" class=\"btn btn-primary btn-flat pull-right button\" (click)=\"onClick(field, textarea.value)\">{{field.ButtonLabel}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n <ng-container *ngSwitchCase=\"this.filterType.Text\">\r\n <textarea class=\"form-control\" rows=\"5\"\r\n [(ngModel)]=\"this.entity[field.PropertyName]\"\r\n [name]=\"field.PropertyName\"\r\n [readonly]=\"this.getFieldReadOnly(field)\"\r\n (ngModelChange)=\"this.onNgModelChange(field, $event)\"\r\n validateOnEnter\r\n [ValidateValue]=\"this.entity[field.PropertyName]\"\r\n (onEnterValidate)=\"this.onCallValidation(field, $event)\">\r\n </textarea>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"this.filterType.Custom\">\r\n\r\n <alg-input-selector\r\n #inputSelector\r\n type=\"text\"\r\n [(ngModel)]=\"this.entity[field.PropertyName]\"\r\n (ngModelChange)=\"this.onNgModelChange(field, $event)\"\r\n (change)=\"this.inputSelectorChanged(field, $event)\"\r\n [id]=\"field.PropertyName\"\r\n [name]=\"field.PropertyName\"\r\n [readonly]=\"this.getFieldReadOnly(field)\"\r\n [modalPropertyValue]=\"field.ModalPropertyValue\"\r\n [modalPropertyName]=\"field.ModalPropertyName\"\r\n [modalEntityKey]=\"field.ModalEntityKey\"\r\n [modalTitle]=\"field.ModalTitle\"\r\n [supplierId]=\"this.SupplierId\">\r\n </alg-input-selector>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngSwitchDefault>\r\n <div>\r\n <input type=\"text\"\r\n [(ngModel)]=\"this.entity[field.PropertyName]\"\r\n [readonly]=\"this.getFieldReadOnly(field)\"\r\n (ngModelChange)=\"this.onNgModelChange(field, $event)\"\r\n [id]=\"field.PropertyName\"\r\n [name]=\"field.PropertyName\"\r\n class=\"form-control\"\r\n\r\n [ngClass]=\"{'dflat-invalid ': !this.isValidControl(field.PropertyName) && field.Required, 'dflat-valid ' : this.isValidControl(field.PropertyName) && field.Required}\">\r\n </div>\r\n\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngSwitchCase=\"this.filterType.TextWithButton\">\r\n <div class=\"pull-left input-select-default\" [class.with-button]=\"this.options.showSelectButton\" >\r\n <input type=\"text\"\r\n #textarea\r\n [(ngModel)]=\"this.entity[field.PropertyName]\"\r\n (ngModelChange)=\"this.onNgModelChange(field, $event)\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"this.getFieldReadOnly(field)\"\r\n [name]=\"field.PropertyName\"\r\n class=\"form-control\"\r\n [ngClass]=\"{'dflat-invalid ': !this.isValidControl(field.PropertyName) && field.Required, 'dflat-valid ' : this.isValidControl(field.PropertyName) && field.Required}\"\r\n\r\n >\r\n </div>\r\n <div class=\"input-group-btn pull-left\">\r\n <button class=\"btn btn-secondary btn-32 btn-input-select\" (click)=\"onClick(field, textarea.value)\">\r\n <span class=\"fa fa-ellipsis-h\"></span>\r\n </button>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n <td *ngIf=\"field.KeepPlace\" class=\"prpty-column left\"></td>\r\n <ng-container\r\n *ngIf=\"j + 1 < section.FieldViewModels.length && section.FieldViewModels[j+1].ColumnSpan == 0 && section.FieldViewModels[j+1].ColumnIndex == 1\">\r\n <td [hidden]=\"!!section.FieldViewModels[j+1].IsHidden\"\r\n class=\"prpty-column\">\r\n\r\n <ng-container [ngSwitch]=\"section.FieldViewModels[j+1].FilterType\">\r\n <ng-container *ngSwitchCase=\"this.filterType.ComboBox\">\r\n <ng-select appendTo=\"body\" placeholder=\"Sélectionner {{section.FieldViewModels[j+1].Label}}\"\r\n [items]=\"section.FieldViewModels[j+1].Data\"\r\n [readonly]=\"this.getFieldReadOnly(section.FieldViewModels[j+1])\"\r\n [name]=\"section.FieldViewModels[j+1].PropertyName\"\r\n [multiple]=\"section.FieldViewModels[j+1].MultipleSelection\"\r\n [hideSelected]=\"section.FieldViewModels[j+1].HideSelected\"\r\n bindValue=\"{{section.FieldViewModels[j+1].ValueMember}}\"\r\n bindLabel=\"{{section.FieldViewModels[j+1].DisplayMember}}\"\r\n [(ngModel)]=\"this.entity[section.FieldViewModels[j+1].PropertyName]\"\r\n (ngModelChange)=\"this.onNgModelChange(section.FieldViewModels[j+1], $event)\">\r\n </ng-select>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"this.filterType.Date\">\r\n <input class=\"form-control\" type=\"text\" placeholder=\"Sélectionner une date\" bsDatepicker\r\n [name]=\"section.FieldViewModels[j+1].PropertyName\"\r\n [isDisabled]=\"this.getFieldReadOnly(section.FieldViewModels[j+1])\"\r\n [readonly]=\"this.getFieldReadOnly(section.FieldViewModels[j+1])\"\r\n [bsConfig]=\"this.bsConfig\"\r\n [(ngModel)]=\"this.entity[section.FieldViewModels[j+1].PropertyName]\"\r\n (ngModelChange)=\"this.onNgModelChange(section.FieldViewModels[j+1], $event)\" />\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"this.filterType.DateTime\">\r\n <input class=\"form-control\" type=\"text\"\r\n [readonly]=\"this.getFieldReadOnly(section.FieldViewModels[j+1])\"\r\n [disabled]=\"this.getFieldReadOnly(section.FieldViewModels[j+1])\"\r\n [name]=\"section.FieldViewModels[j+1].PropertyName\"\r\n [value]=\"this.entity[section.FieldViewModels[j+1].PropertyName] | date: 'dd/MM/yyyy HH:mm:ss'\"\r\n />\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"this.filterType.Integer\">\r\n <input class=\"form-control\" type=\"number\"\r\n [(ngModel)]=\"this.entity[section.FieldViewModels[j+1].PropertyName]\"\r\n [name]=\"section.FieldViewModels[j+1].PropertyName\"\r\n [readonly]=\"this.getFieldReadOnly(section.FieldViewModels[j+1])\"\r\n (ngModelChange)=\"this.onNgModelChange(section.FieldViewModels[j+1], $event)\">\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"this.filterType.CheckBox\">\r\n <div class=\"radio-button-container\">\r\n <div class=\"radio-button-box\">\r\n <input class = \"radio-button\"\r\n type=\"checkbox\"\r\n [(ngModel)]=\"this.entity[section.FieldViewModels[j+1].PropertyName]\"\r\n [name]=\"section.FieldViewModels[j+1].PropertyName\"\r\n [disabled]=\"this.getFieldReadOnly(section.FieldViewModels[j+1])\"\r\n (ngModelChange)=\"this.onNgModelChange(section.FieldViewModels[j+1], $event)\"\r\n >\r\n </div>\r\n <label class=\"radio-button-label\">{{section.FieldViewModels[j+1].Label}}</label>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"this.filterType.Text\">\r\n <textarea class=\"form-control\" rows=\"5\"\r\n [(ngModel)]=\"this.entity[section.FieldViewModels[j+1].PropertyName]\"\r\n [name]=\"section.FieldViewModels[j+1].PropertyName\"\r\n (ngModelChange)=\"this.onNgModelChange(section.FieldViewModels[j+1], $event)\"\r\n validateOnEnter\r\n [readonly]=\"this.getFieldReadOnly(section.FieldViewModels[j+1])\"\r\n [ValidateValue]=\"this.entity[section.FieldViewModels[j+1].PropertyName]\"\r\n (onEnterValidate)=\"this.onCallValidation(section.FieldViewModels[j+1], $event)\" >\r\n </textarea>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"this.filterType.Custom\">\r\n <alg-input-selector #inputSelector type=\"text\"\r\n [(ngModel)]=\"this.entity[section.FieldViewModels[j+1].PropertyName]\"\r\n (ngModelChange)=\"this.onNgModelChange(section.FieldViewModels[j+1], $event)\"\r\n (change)=\"this.inputSelectorChanged(section.FieldViewModels[j+1], $event)\"\r\n [id]=\"section.FieldViewModels[j+1].PropertyName\"\r\n [name]=\"section.FieldViewModels[j+1].PropertyName\"\r\n [modalPropertyValue]=\"section.FieldViewModels[j+1].ModalPropertyValue\"\r\n [modalPropertyName]=\"section.FieldViewModels[j+1].ModalPropertyName\"\r\n [modalEntityKey]=\"section.FieldViewModels[j+1].ModalEntityKey\"\r\n [modalTitle]=\"section.FieldViewModels[j+1].ModalTitle\"\r\n [readonly]=\"this.getFieldReadOnly(section.FieldViewModels[j+1])\"\r\n [supplierId]=\"this.SupplierId\">\r\n </alg-input-selector>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngSwitchDefault>\r\n <div>\r\n\r\n <input type=\"text\"\r\n [(ngModel)]=\"this.entity[section.FieldViewModels[j+1].PropertyName]\"\r\n [readonly]=\"this.getFieldReadOnly(section.FieldViewModels[j+1])\"\r\n (ngModelChange)=\"this.onNgModelChange(section.FieldViewModels[j+1], $event)\"\r\n [id]=\"section.FieldViewModels[j+1].PropertyName\"\r\n [name]=\"section.FieldViewModels[j+1].PropertyName\"\r\n class=\"form-control\"\r\n [ngClass]=\"{'dflat-invalid ': !this.isValidControl(section.FieldViewModels[j+1].PropertyName) && section.FieldViewModels[j+1].Required, 'dflat-valid ' : this.isValidControl(section.FieldViewModels[j+1].PropertyName) && section.FieldViewModels[j+1].Required}\">\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngIf=\"field.ColumnSpan == 1\">\r\n <tr>\r\n <td [hidden]=\"!!field.IsHidden || field.FilterType == 4\"\r\n class=\"label-column\" [class.invalid]=\"!this.isValidControl(field.PropertyName)\">\r\n <span>{{field.Label}}</span>\r\n <img *ngIf=\"this.showInformation(field)\" class=\"information-icon\" [src]=\"this.getInfoIcon()\" alt=\"Information\" (click)=\"this.onInfoClick(field)\">\r\n <img *ngIf=\"field.Required\" class=\"required-icon\" [src]=\"this.getRequiredIcon()\" alt=\"obligatoire\">\r\n <ng-container *ngIf=\"!this.isValidControl(field.PropertyName)\">\r\n <div class=\"validation-error-class\">\r\n {{this.getValidationErrors(field)}}\r\n </div>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"2\" [hidden]=\"!!field.IsHidden\">\r\n <ng-container [ngSwitch]=\"field.FilterType\">\r\n <!--ComboBox-->\r\n <ng-container *ngSwitchCase=\"this.filterType.ComboBox\">\r\n <ng-select appendTo=\"body\" placeholder=\"Sélectionner {{field.Label}}\"\r\n [readonly]=\"this.getFieldReadOnly(field)\"\r\n [items]=\"field.Data\"\r\n [name]=\"field.PropertyName\"\r\n [multiple]=\"field.MultipleSelection\"\r\n [hideSelected]=\"field.HideSelected\"\r\n bindValue=\"{{field.ValueMember}}\"\r\n bindLabel=\"{{field.DisplayMember}}\"\r\n [(ngModel)]=\"this.entity[field.PropertyName]\"\r\n (ngModelChange)=\"this.onNgModelChange(field, $event)\">\r\n </ng-select>\r\n </ng-container>\r\n <!--Enum Input-->\r\n <div *ngSwitchCase=\"filterType.RadioButton\" class=\"form-group row has-feedback\">\r\n <div class=\"radio-button-container\">\r\n <div *ngFor=\"let data of field.Data; let indexOfData = index\" class=\"radio-button-label-box\">\r\n <div class=\"radio-button-box\">\r\n <input class = \"radio-button\"\r\n type=\"radio\"\r\n [id]=\"getRadioButtonId(field.PropertyName, indexOfData)\"\r\n [value]=\"indexOfData\"\r\n [(ngModel)]=\"this.entity[field.PropertyName]\"\r\n [name]=\"field.PropertyName\"\r\n [readonly]=\"this.getFieldReadOnly(field)\"\r\n (ngModelChange)=\"this.onNgModelChange(field, $event)\"\r\n >\r\n </div>\r\n <label class=\"radio-button-label\">{{data}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Text zone with button -->\r\n\r\n <div *ngSwitchCase=\"filterType.TextZoneWithButton\" class=\"form-group row has-feedback\">\r\n <div class=\"radio-button-container\">\r\n <div class=\"text-zone-and-button\">\r\n <div class=\"text-zone-container\">\r\n <textarea type=\"text\" class=\"text-area\" spellcheck=\"false\" #textarea\r\n [id]=\"field.PropertyName\"\r\n [(ngModel)]=\"this.entity[field.PropertyName]\"\r\n [name]=\"field.PropertyName\"\r\n [readonly]=\"this.getFieldReadOnly(field)\"\r\n (ngModelChange)=\"this.onNgModelChange(field, $event)\">\r\n </textarea>\r\n </div>\r\n <div class=\"feedback-and-button\" >\r\n <div class=\"feedback\">\r\n <div class=\"feedback-green\" *ngIf=\"field.TextWithStyle.GreenText.length > 0\">\r\n {{field.TextWithStyle.GreenText}}\r\n </div>\r\n <div class=\"feedback-yellow\" *ngIf=\"field.TextWithStyle.YellowText.length > 0\">\r\n {{field.TextWithStyle.YellowText}}\r\n </div>\r\n <div class=\"feedback-red\" *ngIf=\"field.TextWithStyle.RedText.length > 0\">\r\n {{field.TextWithStyle.RedText}}\r\n </div>\r\n </div>\r\n <button type=\"button\" id=\"botton-compile\" class=\"btn btn-primary btn-flat pull-right button\" (click)=\"onClick(field, textarea.value)\">{{field.ButtonLabel}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!--Date-->\r\n\r\n <ng-container *ngSwitchCase=\"this.filterType.Date\">\r\n <input class=\"form-control\" type=\"text\" placeholder=\"Sélectionner une date\" bsDatepicker\r\n [name]=\"field.PropertyName\"\r\n [disabled]=\"this.getFieldReadOnly(field)\"\r\n [bsConfig]=\"this.bsConfig\"\r\n [readonly]=\"this.getFieldReadOnly(field)\"\r\n [(ngModel)]=\"this.entity[field.PropertyName]\"\r\n (ngModelChange)=\"this.onNgModelChange(field, $event)\" />\r\n </ng-container>\r\n <!--Date-->\r\n\r\n <ng-container *ngSwitchCase=\"this.filterType.DateTime\">\r\n <input class=\"form-control\" type=\"text\"\r\n [name]=\"field.PropertyName\"\r\n [readonly]=\"this.getFieldReadOnly(field)\"\r\n [disabled]=\"this.getFieldReadOnly(field)\"\r\n [value]=\"this.entity[field.PropertyName] | date: 'dd/MM/yyyy HH:mm:ss'\"\r\n\r\n />\r\n </ng-container>\r\n <!--Integer-->\r\n\r\n <ng-container *ngSwitchCase=\"this.filterType.Integer\">\r\n <input class=\"form-control\" type=\"number\"\r\n [(ngModel)]=\"this.entity[field.PropertyName]\"\r\n [name]=\"field.PropertyName\"\r\n [readonly]=\"this.getFieldReadOnly(field)\"\r\n (ngModelChange)=\"this.onNgModelChange(field, $event)\">\r\n </ng-container>\r\n <!--CheckBox-->\r\n\r\n <ng-container *ngSwitchCase=\"this.filterType.CheckBox\">\r\n <div class=\"radio-button-container\">\r\n <div class=\"radio-button-box\">\r\n <input class = \"radio-button\"\r\n type=\"checkbox\"\r\n [disabled]=\"this.getFieldReadOnly(field)\"\r\n [(ngModel)]=\"this.entity[field.PropertyName]\"\r\n [name]=\"field.PropertyName\"\r\n (ngModelChange)=\"this.onNgModelChange(field, $event)\"\r\n >\r\n </div>\r\n <label class=\"radio-button-label\">{{field.Label}}</label>\r\n </div>\r\n </ng-container>\r\n <!--Text-->\r\n\r\n <ng-container *ngSwitchCase=\"this.filterType.Text\">\r\n <textarea class=\"form-control\" rows=\"5\"\r\n [readonly]=\"this.getFieldReadOnly(field)\"\r\n [(ngModel)]=\"this.entity[field.PropertyName]\"\r\n [name]=\"field.PropertyName\"\r\n (ngModelChange)=\"this.onNgModelChange(field, $event)\"\r\n validateOnEnter\r\n [ValidateValue]=\"this.entity[field.PropertyName]\"\r\n (onEnterValidate)=\"this.onCallValidation(field,$event)\">\r\n </textarea>\r\n </ng-container>\r\n <!--Custom-->\r\n\r\n <ng-container *ngSwitchCase=\"this.filterType.Custom\">\r\n <alg-input-selector #inputSelector type=\"text\" #textarea\r\n [readonly]=\"this.getFieldReadOnly(field)\"\r\n [(ngModel)]=\"this.entity[field.PropertyName]\"\r\n (ngModelChange)=\"this.onNgModelChange(field, $event)\"\r\n (change)=\"this.inputSelectorChanged(field, $event)\"\r\n [id]=\"field.PropertyName\"\r\n [name]=\"field.PropertyName\"\r\n [modalPropertyValue]=\"field.ModalPropertyValue\"\r\n [modalPropertyName]=\"field.ModalPropertyName\"\r\n [modalEntityKey]=\"field.ModalEntityKey\"\r\n [modalTitle]=\"field.ModalTitle\"\r\n [supplierId]=\"this.SupplierId\">\r\n </alg-input-selector>\r\n <button type=\"button\" class=\"btn btn-default\" (click)=\"onClick(field, textarea.value)\">{{field.ButtonLabel}}</button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"this.filterType.Password\">\r\n \r\n\r\n <msw-form-password\r\n [inputField]=\"field\"\r\n [isReadOnly]=\"this.getFieldReadOnly(field)\"\r\n (onParameterChanged)=\"this.onNgModelChange(field,$event.Value)\"\r\n >\r\n </msw-form-password>\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <div>\r\n <input type=\"text\"\r\n [readonly]=\"this.getFieldReadOnly(field)\"\r\n [(ngModel)]=\"this.entity[field.PropertyName]\"\r\n (ngModelChange)=\"this.onNgModelChange(field, $event)\"\r\n [id]=\"field.PropertyName\"\r\n [name]=\"field.PropertyName\"\r\n class=\"form-control\"\r\n [ngClass]=\"{'dflat-invalid ': !this.isValidControl(field.PropertyName) && field.Required, 'dflat-valid ' : this.isValidControl(field.PropertyName) && field.Required}\">\r\n\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </alg-tab>\r\n </ng-container>\r\n\r\n <!-- Inject Custom Tabs with specific templates -->\r\n <ng-container *ngIf=\"this.specificSections\">\r\n <ng-container *ngFor=\"let section of this.specificSections; let x = index\">\r\n <!-- <div> -->\r\n <alg-tab [title]=\"section.Name\" [iconUrl]=\"section.IconUrl\" [active]=\"false\">\r\n <!-- <table class=\"property-table\" *ngIf=\"this.entity != null\">\r\n <tbody> -->\r\n\r\n <!-- <ng-container\r\n *ngIf=\"this.selectedTab > this.viewModel.FieldSections.length - 1\"> -->\r\n\r\n <!-- <ng-container\r\n *ngTemplateOutlet=\"section.Template; context: {$implicit: section, sectionIndex: x, cas: 'default'}\">\r\n </ng-container> -->\r\n\r\n <!-- </ng-container> -->\r\n\r\n <ng-template #templateContainer></ng-template>\r\n\r\n <!-- </tbody>\r\n </table> -->\r\n </alg-tab>\r\n <!-- </div> -->\r\n </ng-container>\r\n </ng-container>\r\n\r\n </alg-tabset>\r\n </ng-container>\r\n <ng-container *ngIf=\"! this.hasSelection()\">\r\n <div class=\"warning\">\r\n Aucune donnée sélectionnée\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n</form>\r\n<!-- <button alg-debounce-click (debounceClick)=\"log()\" [debounceTime]=\"700\">\r\n Debounced Click\r\n</button> -->\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'alg-datapage',\r\n templateUrl: './old.datapage.component.html',\r\n styleUrls: ['./old.datapage.component.scss'],\r\n standalone: false\r\n})\r\n\r\nexport class OldDataPageComponent { \r\n @Input() \r\n public showLeftPanel?: boolean;\r\n @Input() public showRightPanel?: boolean;\r\n @Input() public leftPanelClass : string = \"left-side-panel\";\r\n @Input() public rightPanelClass : string = \"right-side-panel w50\";\r\n \r\n constructor(){\r\n }\r\n} \r\n","<div class=\"datapage-container\">\r\n <ng-content class=\"action-panel\" select=\"[actionsContent]\"></ng-content>\r\n\r\n <div class=\"panel-container\">\r\n <div [class]=\"this.leftPanelClass\" *ngIf=\"this.showLeftPanel\">\r\n <div class=\"main-component\">\r\n <ng-content select=\"[leftContent]\"></ng-content>\r\n </div>\r\n </div>\r\n <div [class]=\"this.rightPanelClass\" *ngIf=\"this.showRightPanel\">\r\n <div class=\"main-component\">\r\n <ng-content select=\"[rightContent]\"></ng-content>\r\n </div>\r\n </div>\r\n <div class=\"middle-panel\">\r\n <div class=\"middle-panel-header\">\r\n <ng-content select=\"[middleHeader]\"></ng-content>\r\n </div>\r\n <div class=\"middle-panel-main\">\r\n <div class=\"main-component\">\r\n <ng-content select=\"[middleContent]\"></ng-content>\r\n </div>\r\n </div>\r\n <div class=\"middle-panel-footer\">\r\n <ng-content select=\"[middleFooter]\"></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\ninterface Dictionary<T> {\r\n [Key: string]: T;\r\n}\r\n\r\n@Component({\r\n selector: 'msw-text-viewer',\r\n templateUrl: './text-viewer.component.html',\r\n styleUrls: ['./text-viewer.component.scss'],\r\n standalone: false\r\n})\r\nexport class TextViewerComponent implements OnInit {\r\n\r\n @Input()\r\n title: string;\r\n\r\n @Input()\r\n chapters: string[];\r\n\r\n @Input()\r\n contentByChapter: Dictionary<string> = {};\r\n\r\n @Input()\r\n globalContent : any;\r\n\r\n constructor(protected sanitized: DomSanitizer) { }\r\n\r\n ngOnInit(): void {\r\n this.chapters = this.getChapters();\r\n\r\n let i: number = 1;\r\n let gContent : string = '';\r\n this.chapters.forEach(key => {\r\n let id : string = 'chapter-' + i;\r\n let currentContent : string = this.getContent(key);\r\n this.contentByChapter[key] = currentContent;\r\n gContent = gContent\r\n .concat(\"<h1 id='\", id,\"'>\", key, \"</h1>\")\r\n .concat(\"<p>\", currentContent, \"</p>\");\r\n\r\n\r\n i++;\r\n });\r\n\r\n this.globalContent = this.sanitized.bypassSecurityTrustHtml(gContent);\r\n }\r\n\r\n getChapters() : string[] { return [];}\r\n getContent(chapter:string): string { return '';}\r\n\r\n onMenuClick(id: number): void {\r\n\r\n const el: HTMLElement|null = document.getElementById('chapter-' + id);\r\n if (el) {\r\n setTimeout(() =>\r\n el.scrollIntoView({behavior: 'smooth', block: 'start', inline: 'nearest'}), 0);\r\n }\r\n }\r\n\r\n}\r\n","<div class=\"text-viewer\">\r\n <alg-datapage [showLeftPanel]=\"true\" [showRightPanel]=\"false\">\r\n <div actionsContent>\r\n <h1>{{title}}</h1>\r\n </div>\r\n <div leftContent>\r\n <ul>\r\n <li *ngFor=\"let key of chapters; let i = index\">\r\n <button (click)=\"onMenuClick(i+1)\">{{key}}</button>\r\n </li>\r\n </ul>\r\n </div>\r\n <div middleContent>\r\n <div [innerHTML]=\"globalContent\"></div>\r\n \r\n </div>\r\n </alg-datapage>\r\n</div>","import { Utilities } from '@dflat-core/web/core';\nimport { Component, Input, Output, Renderer2, EventEmitter } from '@angular/core';\nimport { concat } from 'rxjs';\n\n\nexport interface AlgTime {\n hour: string,\n minute: string\n}\n\n@Component({\n selector: \"alg-time-picker\",\n templateUrl: \"./time-picker.component.html\",\n styleUrls: [\"./time-picker.component.css\"],\n standalone: false\n})\n\n// Ce composant prend un string des horaires separés par ';' et retourner un string des horaires modifiés \nexport class TimePickerComponent {\n constructor(private renderer: Renderer2)\n {\n \n }\n\n @Input() timeArrayString: string =\"\";\n @Output() onChanged: EventEmitter<string> = new EventEmitter<string>();\n @Output() isChangeValid: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n timeArray: AlgTime[] = [];\n selectableHours: string[] = [];\n selectableMinutes: string[] = [];\n selectedHour: string;\n selectedMinute: string;\n\n ngAfterViewInit()\n {\n this.generateTimeArray()\n\n for(let i = 0; i < 25; i++)\n this.selectableHours.push(i.toString().padStart(2, '0'));\n\n for(let i = 0; i < 12; i++)\n this.selectableMinutes.push((i * 5).toString().padStart(2, '0'));\n }\n\n generateTimeArray()\n {\n if(this.timeArrayString!=undefined)\n {\n let timeStrings = this.timeArrayString.split(';');\n timeStrings.forEach(timeString => \n {\n let algTime: AlgTime = {\n hour: timeString == \"\" ? \"\" : timeString.substring(0, timeString.indexOf(':')).padStart(2, '0'),\n minute: timeString == \"\" ? \"\" : timeString.substring(timeString.indexOf(':') + 1).padStart(2, '0')\n }\n \n if( !Utilities.IsNil(algTime.hour) && algTime.hour.length>0 && \n !Utilities.IsNil(algTime.minute) && algTime.minute.length>0)\n this.timeArray.push(algTime);\n })\n\n }\n }\n\n onHourSelected($event, index: number)\n {\n this.timeArray[index].hour = $event;\n this.modifyTimeArrayString();\n }\n\n \n onMinuteSelected($event, index: number)\n {\n this.timeArray[index].minute = $event;\n this.modifyTimeArrayString();\n }\n \n modifyTimeArrayString()\n {\n let outputTimeArrayString = \"\";\n let isValid: boolean = true;\n\n this.timeArray.forEach(time => {\n outputTimeArrayString = outputTimeArrayString.concat(time.hour, ':', time.minute, ';');\n if(Utilities.IsNil(time.hour) || time.hour == \"\" || Utilities.IsNil(time.minute) || time.minute == \"\")\n isValid = isValid && false;\n })\n\n this.onChanged.emit(outputTimeArrayString);\n this.isChangeValid.emit(isValid);\n }\n\n addNewToArray()\n {\n let newTime: AlgTime = {hour: null, minute: null}; \n this.timeArray.push(newTime);\n }\n \n removeFromArray(index: number)\n {\n this.timeArray.splice(index, 1);\n this.modifyTimeArrayString();\n }\n\n\n \n}\n","<div class=\"time-picker-container\">\r\n <div type=\"button\" class=\"add-button\" title=\"Close\" (click)=\"addNewToArray()\">\r\n <i class=\"fa fa-plus\"></i>\r\n </div>\r\n <div *ngFor=\"let time of timeArray, let i = index\">\r\n <div class=\"time-picker\">\r\n <button type=\"button\" class=\"btn btn-secondary remove-button\" title=\"Close\" (click)=\"removeFromArray(i)\">\r\n <i class=\"fa fa-minus\"></i>\r\n </button>\r\n <!-- Hour -->\r\n <ng-select class=\"hour\"\r\n bindValue=\"hour\"\r\n [items]=\"this.selectableHours\" \r\n [multiple]=\"false\"\r\n [hideSelected]=\"false\" \r\n [(ngModel)]=\"time.hour\"\r\n placeholder=\"Heure\"\r\n (change)=\"this.onHourSelected($event, i)\"></ng-select>\r\n\r\n <span class=\"seperator\"> : </span>\r\n <!-- Minutes -->\r\n <ng-select class=\"minute\"\r\n [items]=\"this.selectableMinutes\" \r\n [multiple]=\"false\"\r\n [hideSelected]=\"false\" \r\n [(ngModel)]=\"time.minute\"\r\n placeholder=\"Minute\"\r\n (change)=\"this.onMinuteSelected($event, i)\"></ng-select>\r\n </div>\r\n </div>\r\n</div>","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { IIsCancel } from '../../../model/model';\r\nimport { AlertService, DialogType } from '../../../services/alert.service';\r\n\r\nexport class IIsCancelWithWarning implements IIsCancel\r\n{\r\n isCancel : boolean = false;\r\n\r\n public showWarningMsg (msg : string, alertService : AlertService)\r\n {\r\n alertService.showDialog(msg, DialogType.Alert);\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'wizard-step',\r\n templateUrl: './wizard-step.component.html',\r\n styleUrls: ['./wizard-step.component.scss'],\r\n standalone: false\r\n})\r\nexport class WizardStepComponent {\r\n @Input() title: string;\r\n @Input() hidden: boolean = false;\r\n @Input() isValid: boolean = true;\r\n @Input() showNext: boolean = true;\r\n @Input() showPrev: boolean = true;\r\n\r\n @Output() onNext: EventEmitter<IIsCancelWithWarning> = new EventEmitter<IIsCancelWithWarning>();\r\n @Output() onPrevious: EventEmitter<IIsCancelWithWarning> = new EventEmitter<IIsCancelWithWarning>();\r\n @Output() onExport: EventEmitter<IIsCancelWithWarning> = new EventEmitter<IIsCancelWithWarning>();\r\n @Output() onComplete: EventEmitter<IIsCancelWithWarning> = new EventEmitter<IIsCancelWithWarning>();\r\n\r\n \r\n\r\n constructor() { }\r\n private _isActive: boolean = false;\r\n isDisabled: boolean = false;\r\n @Input('isActive')\r\n set isActive(isActive: boolean) {\r\n this._isActive = isActive;\r\n this.isDisabled = false;\r\n }\r\n\r\n get isActive(): boolean {\r\n return this._isActive;\r\n }\r\n}\r\n","<div [hidden]=\"!isActive\" class=\"wizard-autofit\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import { AfterContentInit, Component, ContentChildren, EventEmitter, Input, Output, QueryList } from '@angular/core';\r\nimport { IIsCancelWithWarning, WizardStepComponent } from './wizard-step/wizard-step.component';\r\n\r\n@Component({\r\n selector: 'wizard',\r\n templateUrl: './wizard.component.html',\r\n styleUrls: ['./wizard.component.scss'],\r\n standalone: false\r\n})\r\nexport class WizardComponent implements AfterContentInit {\r\n @Input()\r\n enableNavigation: boolean = false;\r\n\r\n [x: string]: any;\r\n @ContentChildren(WizardStepComponent)\r\n wizardSteps: QueryList<WizardStepComponent>;\r\n\r\n private _steps: Array<WizardStepComponent> = [];\r\n get steps(): Array<WizardStepComponent> {\r\n return this._steps.filter(step => !step.hidden);\r\n }\r\n \r\n private _isCompleted: boolean = false;\r\n\r\n @Output()\r\n onStepChanged: EventEmitter<WizardStepComponent> = new EventEmitter<WizardStepComponent>();\r\n\r\n constructor() { }\r\n\r\n ngAfterContentInit() {\r\n this.wizardSteps.forEach(step => this._steps.push(step));\r\n // setting first step as Active\r\n this.selectFirstStep();\r\n }\r\n\r\n public selectFirstStep() {\r\n // this.steps[0].isActive = true;\r\n this.steps.forEach((step, index) => step.isActive = index === 0);\r\n this._isCompleted = false;\r\n }\r\n\r\n \r\n\r\n get isCompleted(): boolean {\r\n return this._isCompleted;\r\n }\r\n\r\n get activeStep(): WizardStepComponent {\r\n return this.steps.find(step => step.isActive);\r\n }\r\n\r\n set activeStep(step: WizardStepComponent) {\r\n if (step !== this.activeStep && !step.isDisabled) {\r\n this.activeStep.isActive = false;\r\n step.isActive = true;\r\n this.onStepChanged.emit(step);\r\n }\r\n }\r\n\r\n public get activeStepIndex(): number {\r\n return this.steps.indexOf(this.activeStep);\r\n }\r\n\r\n get hasNextStep(): boolean {\r\n return this.activeStepIndex < this.steps.length - 1;\r\n }\r\n\r\n get hasPrevStep(): boolean {\r\n return this.activeStepIndex > 0;\r\n }\r\n\r\n public goToStep(step: WizardStepComponent): void {\r\n if (!this.isCompleted && this.enableNavigation) {\r\n this.activeStep = step;\r\n }\r\n }\r\n\r\n public export(): void {\r\n this.activeStep.onExport.emit();\r\n }\r\n\r\n public next(): void {\r\n\r\n if (this.hasNextStep) {\r\n let nextStep: WizardStepComponent = this.steps[this.activeStepIndex + 1];\r\n \r\n let event = new IIsCancelWithWarning();\r\n this.activeStep.onNext.emit(event);\r\n\r\n if (!event.isCancel) {\r\n nextStep.isDisabled = false;\r\n this.activeStep = nextStep;\r\n }\r\n }\r\n }\r\n\r\n public skip(): void {\r\n\r\n let nextStep: WizardStepComponent = this.steps[this.activeStepIndex + 1];\r\n this.activeStep = nextStep;\r\n }\r\n\r\n public previous(): void {\r\n this.isExportButtonVisible = false;\r\n\r\n if (this.hasPrevStep) {\r\n let prevStep: WizardStepComponent = this.steps[this.activeStepIndex - 1];\r\n this.activeStep.onPrevious.emit();\r\n prevStep.isDisabled = false;\r\n this.activeStep = prevStep;\r\n }\r\n }\r\n\r\n public complete(): void {\r\n this.activeStep.onComplete.emit();\r\n this._isCompleted = true;\r\n }\r\n}\r\n","<div class=\"wizard-container\">\r\n <div class=\"wizard-header\">\r\n <ng-container *ngFor=\"let step of steps; let i = index\">\r\n <div \r\n class=\"wizard-header-step\" \r\n \r\n [ngClass]=\"{'first': i == 0,'alternate': i%2 == 0,'active': step.isActive, 'enabled': !step.isDisabled, 'disabled': step.isDisabled, 'completed': isCompleted}\">\r\n <a (click)=\"goToStep(step)\">{{step.title}}</a>\r\n </div>\r\n <!-- <div class=\"wizard-header-separator\"\r\n [ngClass]=\"{'alternate': i%2 == 0,'active': step.isActive, 'enabled': !step.isDisabled, 'disabled': step.isDisabled, 'completed': isCompleted}\">\r\n </div> -->\r\n </ng-container>\r\n </div>\r\n <div class=\"wizard-body\">\r\n <ng-content>\r\n \r\n </ng-content>\r\n <ng-container *ngIf=\"!isCompleted\"></ng-container>\r\n </div>\r\n <div class=\"wizard-footer\">\r\n <div class=\"wizard-buttons\">\r\n <ng-container *ngIf=\"hasPrevStep && activeStep.showPrev\"><button type=\"button\" \r\n class=\"btn btn-main btn-flat pull-left\" (click)=\"previous()\">Précédent</button></ng-container>\r\n <ng-container *ngIf=\"hasNextStep && activeStep.showNext\"><button type=\"button\"\r\n class=\"btn btn-primary btn-flat pull-right\" (click)=\"next()\" [disabled]=\"!activeStep.isValid\">Suivant</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!hasNextStep\"><button type=\"button\" class=\"btn btn-primary btn-flat pull-right\"\r\n (click)=\"complete()\" [disabled]=\"!activeStep.isValid\">Valider</button></ng-container>\r\n </div>\r\n </div>\r\n\r\n</div>","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[addClass]',\r\n standalone: false\r\n})\r\nexport class AddclassDirective implements OnInit {\r\n @Input() highlight: number;\r\n constructor(private elt: ElementRef, private renderer: Renderer2) {}\r\n\r\n ngOnInit(): void {\r\n if (this.highlight == 3) {\r\n this.renderer.setStyle(\r\n this.elt.nativeElement,\r\n 'background-color',\r\n '#14358f'\r\n );\r\n this.renderer.setStyle(\r\n this.elt.nativeElement,\r\n 'color',\r\n 'white'\r\n );\r\n // console.log(this.elt.nativeElement.childNodes);\r\n // this.elt.nativeElement.childNodes.forEach(element => {\r\n // if ( element.className == 'money'){\r\n // this.renderer.setStyle(\r\n // element.nativeElement,\r\n // 'background-color',\r\n // 'white'\r\n // );\r\n // this.renderer.setStyle(\r\n // element.nativeElement,\r\n // 'color',\r\n // 'black'\r\n // );\r\n // }\r\n // });\r\n\r\n // let element = this.elt.nativeElement.childNodes[4]\r\n\r\n // // if ( element.className = \"'money'\"){\r\n // this.renderer.setStyle(\r\n // element,\r\n // 'background-color',\r\n // 'red'\r\n // );\r\n // this.renderer.setStyle(\r\n // this.elt.nativeElement,\r\n // 'color',\r\n // 'black'\r\n // );\r\n // }\r\n // });\r\n }\r\n if (this.highlight == 1) {\r\n this.renderer.setStyle(\r\n this.elt.nativeElement,\r\n 'background-color',\r\n '#4c5053'\r\n );\r\n this.renderer.setStyle(\r\n this.elt.nativeElement,\r\n 'color',\r\n 'white'\r\n );\r\n }\r\n if (this.highlight == 2) {\r\n this.renderer.setStyle(\r\n this.elt.nativeElement,\r\n 'background-color',\r\n '#c7c8ca'\r\n );\r\n this.renderer.setStyle(\r\n this.elt.nativeElement,\r\n 'color',\r\n 'black'\r\n );\r\n }\r\n\r\n }\r\n}\r\n","import {\r\n AfterViewChecked,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n Output,\r\n Renderer2\r\n } from '@angular/core';\r\n \r\n import { \r\n AnimationBuilder,\r\n AnimationFactory,\r\n AnimationPlayer,\r\n animate,\r\n style } from '@angular/animations';\r\n \r\n @Directive({\r\n selector: '[collapse]',\r\n exportAs: 'bs-collapse',\r\n host: {\r\n '[class.ngx-collapse]': 'true'\r\n },\r\n standalone: false\r\n})\r\n export class CollapseDirective implements AfterViewChecked {\r\n /** This event fires as soon as content collapses */\r\n @Output() collapsed: EventEmitter<any> = new EventEmitter();\r\n /** This event fires as soon as content becomes visible */\r\n @Output() expanded: EventEmitter<any> = new EventEmitter();\r\n \r\n @HostBinding('style.display') display: string;\r\n // shown\r\n @HostBinding('class.in')\r\n @HostBinding('class.ngx-show')\r\n @HostBinding('attr.aria-expanded')\r\n _collapse = true;\r\n // hidden\r\n @HostBinding('attr.aria-hidden') isCollapsed = false;\r\n // stale state\r\n @HostBinding('class.ngx-collapse') isCollapse = true;\r\n // animation state\r\n @HostBinding('class.ngx-collapsing') isCollapsing = false;\r\n \r\n /** A flag indicating visibility of content (shown or hidden) */\r\n @Input()\r\n set collapse(value: boolean) {\r\n this._collapse = value;\r\n if (this._collapse) {\r\n this.hide();\r\n } else {\r\n this.show();\r\n }\r\n }\r\n \r\n get collapse(): boolean {\r\n return this._collapse;\r\n }\r\n \r\n public isViewChecked: boolean = false;\r\n \r\n private _animation: AnimationFactory;\r\n private _animationPlayer: AnimationPlayer;\r\n \r\n constructor(private _el: ElementRef, private _renderer: Renderer2, private _builder: AnimationBuilder) {\r\n }\r\n \r\n ngAfterViewChecked() {\r\n this.isViewChecked = true;\r\n }\r\n \r\n ngAfterViewInit() {\r\n \r\n }\r\n \r\n /** allows to manually toggle content visibility */\r\n public toggle(): void {\r\n if (this._collapse) {\r\n this.show();\r\n } else {\r\n this.hide();\r\n }\r\n }\r\n \r\n /** allows to manually hide content */\r\n public hide(): void {\r\n if (!this.isViewChecked) {\r\n this._renderer.setStyle(this._el.nativeElement, 'display', 'none');\r\n this._renderer.setStyle(this._el.nativeElement, 'overflow', 'hidden');\r\n this._renderer.setStyle(this._el.nativeElement, 'position', 'relative');\r\n this._renderer.setStyle(this._el.nativeElement, 'height', '0');\r\n return;\r\n } else {\r\n this._renderer.removeStyle(this._el.nativeElement, 'overflow');\r\n this._renderer.removeStyle(this._el.nativeElement, 'position');\r\n this._renderer.removeStyle(this._el.nativeElement, 'height');\r\n this._renderer.removeStyle(this._el.nativeElement, 'display');\r\n }\r\n \r\n if (this._animationPlayer) {\r\n this._animationPlayer.finish()\r\n this._animationPlayer.destroy()\r\n }\r\n \r\n this._animation = this._builder.build([\r\n style({ overflow: 'hidden', position: 'relative' }),\r\n animate('0.35s ease', style({ height: '0' }))\r\n ]);\r\n \r\n this._animationPlayer = this._animation.create(this._el.nativeElement);\r\n \r\n this._animationPlayer.onStart = () => {\r\n this.isCollapse = false;\r\n this.isCollapsing = true;\r\n }\r\n this._animationPlayer.onDone = () => {\r\n this._collapse = true;\r\n this.isCollapsed = true;\r\n \r\n this.isCollapse = true;\r\n this.isCollapsing = false;\r\n \r\n this.display = 'none';\r\n this.collapsed.emit(this);\r\n }\r\n \r\n this._animationPlayer.play();\r\n }\r\n \r\n /** allows to manually show collapsed content */\r\n public show(): void {\r\n if (!this.isViewChecked) {\r\n this._renderer.setStyle(this._el.nativeElement, 'display', 'block');\r\n this._renderer.setStyle(this._el.nativeElement, 'overflow', 'hidden');\r\n this._renderer.setStyle(this._el.nativeElement, 'position', 'relative');\r\n this._renderer.removeStyle(this._el.nativeElement, 'height');\r\n return;\r\n } else {\r\n this._renderer.removeStyle(this._el.nativeElement, 'overflow');\r\n this._renderer.removeStyle(this._el.nativeElement, 'position');\r\n this._renderer.removeStyle(this._el.nativeElement, 'height');\r\n this._renderer.removeStyle(this._el.nativeElement, 'display');\r\n }\r\n \r\n if (this._animationPlayer) {\r\n this._animationPlayer.finish()\r\n this._animationPlayer.destroy()\r\n }\r\n \r\n this._animation = this._builder.build([\r\n style({ overflow: 'hidden', display: 'block', position: 'relative', height: 0 }),\r\n animate('0.35s ease', style({ height: 'auto' }))\r\n ]);\r\n \r\n this._animationPlayer = this._animation.create(this._el.nativeElement);\r\n \r\n this._animationPlayer.onStart = () => {\r\n this.isCollapse = false;\r\n this.isCollapsing = true;\r\n }\r\n this._animationPlayer.onDone = () => {\r\n this._collapse = false;\r\n this.isCollapsed = false;\r\n \r\n this.isCollapse = true;\r\n this.isCollapsing = false;\r\n \r\n this.display = 'block';\r\n this.expanded.emit(this);\r\n }\r\n \r\n this._animationPlayer.play();\r\n }\r\n }","import { Utilities } from '@dflat-core/web/core';\nimport {Injectable} from '@angular/core';\nimport { DroppableDirective } from '../directives/droppable.directive';\n\n@Injectable()\nexport class DragService {\n \n private zoneIDs: Array<string>;\n private availableZones: any = {};\n private availableZonesList: Array<any> = [];\n\n /**\n * @desc responsible for storing the draggable elements\n * zone target.\n * @param {Array<string>} zoneIDs - the zoneIDs\n */\n public startDrag(zoneIDs: Array<string>) {\n this.zoneIDs = zoneIDs;\n this.highLightAvailableZones();\n }\n\n /**\n * @desc responsible for matching the droppable element\n * with a draggable element\n * @param {string} zoneID - the zone ID to search for\n */\n public accepts(zoneID: string): boolean {\n return (this.zoneIDs.indexOf(zoneID) > -1);\n }\n\n /**\n * @desc responsible for removing highlighted available zones\n * that a draggable element can be added too.\n */\n public removeHighLightedAvailableZones(): void {\n\n if ( ! this.zoneIDs)\n return;\n\n this.zoneIDs.forEach((zone: string) => {\n if(! Utilities.IsNil(this.availableZones[zone]))\n this.availableZones[zone].end(); \n });\n }\n\n /**\n * @desc responsible for adding an available zone\n * @param {{ begin: Function, end: Function }} zoneID - zone key from DroppableOptions\n * @param {string} obj - reference to a start and stop object\n */\n public addAvailableZone(zoneID: string, obj: { dropDirective: DroppableDirective, zoneID: string, element: any, begin: Function, end: Function }): void {\n this.availableZones[zoneID] = obj;\n this.availableZonesList.push(obj);\n }\n\n /**\n * @desc responsible for removing an available zone\n * @param {string} zoneID - the zone ID to search for\n */\n public removeAvailableZone(zoneID: string): void {\n let i = this.availableZonesList.findIndex( z=> z == this.availableZones[zoneID]);\n this.availableZonesList.splice(i,1);\n \n delete this.availableZones[zoneID];\n }\n\n /**\n * @desc responsible for highlighting available zones\n * that a draggable element can be added too.\n */\n private highLightAvailableZones(): void {\n this.zoneIDs.forEach((zone: string) => {\n\n var x = zone;\n var y = this.availableZones[zone];\n if(! Utilities.IsNil(this.availableZones[zone]))\n this.availableZones[zone].begin();\n });\n }\n/**\n * Return the first zone that is a parent of the specified element.\n * @param element an Html Element\n */\n public getAvailableContainingZone(element: any) : string {\n \n let result: string = undefined;\n this.zoneIDs.forEach((zone: string) => {\n let zoneElement = this.availableZones[zone].element;\n if (zoneElement == element) \n result = zone;\n });\n if ( ! Utilities.IsNil(result) )\n return result;\n\n if ( Utilities.IsNil(element.parentElement) )\n return undefined;\n\n return this.getAvailableContainingZone(element.parentElement);\n }\n\n public getDroppable(zoneId: string): DroppableDirective {\n return this.availableZones[zoneId].dropDirective;\n }\n}\n","import { Utilities } from '@dflat-core/web/core';\nimport {\n Directive,\n ElementRef,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\nimport { DragService } from '../services/drag.service';\nimport { DroppableDirective } from './droppable.directive';\n\n// 1\n@Directive({\n selector: '[appDraggable]',\n standalone: false\n})\nexport class DraggableDirective implements OnInit, OnDestroy {\n // Events\n private onDragStart: Function;\n private onDragEnd: Function;\n private onTouchStart: Function;\n private onTouchEnd: Function;\n private onTouchMove: Function;\n\n // Options for the directive\n private options: DraggableOptions;\n\n // 2\n @Input()\n set appDraggable(options: DraggableOptions) {\n if (options) {\n this.options = options;\n }\n }\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private dragService: DragService,\n public zone: NgZone\n ) {\n // 3\n this.renderer.setProperty(\n this.elementRef.nativeElement,\n 'draggable',\n true\n );\n this.renderer.addClass(this.elementRef.nativeElement, 'app-draggable');\n }\n\n // 4\n ngOnInit() {\n this.addDragEvents();\n }\n\n // 5\n ngOnDestroy() {\n // Remove events\n this.onDragStart();\n this.onDragEnd();\n this.onTouchStart();\n this.onTouchMove();\n this.onTouchEnd();\n }\n\n /**\n * @desc responsible for adding the drag events to the directive\n * @note transfers drag data using the Drag and Drop API (Browser)\n * @note known CSS issue where a draggable element cursor cant be set while dragging in Chrome\n */\n // 6\n private addDragEvents(): void {\n // 7\n this.onDragStart = this.renderer.listen(\n this.elementRef.nativeElement,\n 'dragstart',\n (event: DragEvent): void => {\n this.dragService.startDrag(this.options.zones);\n // Transfer the data using Drag and Drop API (Browser)\n event.dataTransfer.setData(\n 'Text',\n JSON.stringify(this.options.data)\n );\n }\n );\n\n // 8\n this.onDragEnd = this.renderer.listen(\n this.elementRef.nativeElement,\n 'dragend',\n (event: DragEvent): void => {\n this.dragService.removeHighLightedAvailableZones();\n }\n );\n\n //\n this.onTouchStart = this.renderer.listen(\n this.elementRef.nativeElement,\n 'touchstart',\n (event: TouchEvent): void => {\n this.handleTouchStart(event);\n }\n );\n\n //\n this.onTouchMove = this.renderer.listen(\n this.elementRef.nativeElement,\n 'touchmove',\n (event: TouchEvent): void => {\n this.handleTouchMove(event);\n }\n );\n\n //\n this.onTouchEnd = this.renderer.listen(\n this.elementRef.nativeElement,\n 'touchend',\n (event: TouchEvent): void => {\n this.handleTouchEnd(event);\n }\n );\n }\n\n isDragging: boolean = false;\n isDragStarted: boolean = false;\n currentZoneId: string = undefined;\n\n touchTimer: any = null;\n\n handleTouchStart(event: TouchEvent) {\n clearTimeout(this.touchTimer);\n this.touchTimer = null;\n this.zone.runOutsideAngular(() => {\n this.touchTimer = setTimeout(() => {\n this.isDragging = true;\n this.isDragStarted = false;\n this.currentZoneId = undefined;\n }, 200);\n });\n }\n\n handleTouchMove(event: TouchEvent) {\n \n if ( this.touchTimer != null ) {\n clearTimeout(this.touchTimer);\n this.touchTimer = null;\n }\n\n if (this.isDragging) {\n event.preventDefault();\n\n if (!this.isDragStarted) {\n this.dragService.startDrag(this.options.zones);\n this.isDragStarted = true;\n }\n\n let target = document.elementFromPoint(\n event.touches[0].clientX,\n event.touches[0].clientY\n );\n if (!target) return;\n\n let zoneId = this.dragService.getAvailableContainingZone(target);\n\n if (\n Utilities.IsNil(this.currentZoneId) &&\n Utilities.IsNil(zoneId)\n )\n return;\n\n if (\n !Utilities.IsNil(this.currentZoneId) &&\n zoneId != this.currentZoneId\n ) {\n let lastDrop: DroppableDirective = this.dragService.getDroppable(\n this.currentZoneId\n );\n lastDrop.dragLeave();\n }\n\n if (Utilities.IsNil(zoneId)) return;\n\n let drop: DroppableDirective = this.dragService.getDroppable(\n zoneId\n );\n drop.dragEnter();\n this.currentZoneId = zoneId;\n }\n }\n\n handleTouchEnd(event: TouchEvent) {\n if ( this.touchTimer != null ) {\n clearTimeout(this.touchTimer);\n this.touchTimer = null;\n }\n\n if (!Utilities.IsNil(this.currentZoneId)) {\n let drop: DroppableDirective = this.dragService.getDroppable(\n this.currentZoneId\n );\n drop.drop(this.options.data);\n }\n\n this.dragService.removeHighLightedAvailableZones();\n\n this.isDragging = false;\n this.isDragStarted = false;\n this.currentZoneId = undefined;\n }\n\n getDraggableItem(element): any {}\n}\n\n// 9\nexport interface DraggableOptions {\n zones?: Array<string>;\n data?: any;\n}\n","import {Directive, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, Renderer2} from '@angular/core';\r\nimport {DragService} from '../services/drag.service';\r\n\r\n// 1\r\n@Directive({\r\n selector: '[appDroppable]',\r\n standalone: false\r\n})\r\n\r\nexport class DroppableDirective implements OnInit, OnDestroy {\r\n private onDragEnter: Function;\r\n private onDragLeave: Function;\r\n private onDragOver: Function;\r\n private onDrop: Function;\r\n\r\n public options: DroppableOptions = {\r\n zone: 'appZone'\r\n };\r\n\r\n // Allow options input by using [appDroppable]='{}'\r\n // 2\r\n @Input()\r\n set appDroppable(options: DroppableOptions) {\r\n if (options) {\r\n this.options = options;\r\n }\r\n }\r\n\r\n // Drop Event Emitter\r\n @Output() public onDroppableComplete: EventEmitter<DroppableEventObject> = new EventEmitter();\r\n\r\n // 3\r\n constructor(private elementRef: ElementRef\r\n , private renderer: Renderer2\r\n , private dragService: DragService) {\r\n this.renderer.addClass(this.elementRef.nativeElement, 'app-droppable');\r\n }\r\n\r\n // 4\r\n ngOnInit() {\r\n // Add available zone\r\n // This exposes the zone to the service so a draggable element can update it\r\n this.dragService.addAvailableZone(this.options.zone, {\r\n dropDirective: this,\r\n zoneID: this.options.zone,\r\n element: this.elementRef.nativeElement,\r\n begin: () => {\r\n this.renderer.addClass(this.elementRef.nativeElement, 'js-app-droppable--target');\r\n },\r\n end: () => {\r\n this.renderer.removeClass(this.elementRef.nativeElement, 'js-app-droppable--target');\r\n }\r\n \r\n });\r\n this.addOnDragEvents();\r\n }\r\n\r\n // 5\r\n ngOnDestroy() {\r\n // Remove zone\r\n this.dragService.removeAvailableZone(this.options.zone);\r\n\r\n // Remove events\r\n this.onDragEnter();\r\n this.onDragLeave();\r\n this.onDragOver();\r\n this.onDrop();\r\n\r\n }\r\n\r\n /**\r\n * @desc responsible for adding the drag events\r\n */\r\n // 6\r\n private addOnDragEvents(): void {\r\n // Drag Enter\r\n this.onDragEnter = this.renderer.listen(\r\n this.elementRef.nativeElement\r\n , 'dragenter'\r\n , (event: DragEvent): void => {\r\n this.handleDragEnter(event);\r\n });\r\n this.onDragLeave = this.renderer.listen(\r\n this.elementRef.nativeElement\r\n , 'dragleave'\r\n , (event: DragEvent): void => {\r\n this.handleDragLeave(event);\r\n });\r\n // Drag Over\r\n this.onDragOver = this.renderer.listen(\r\n this.elementRef.nativeElement\r\n , 'dragover'\r\n , (event: DragEvent): void => {\r\n this.handleDragOver(event);\r\n });\r\n // Drag Drop\r\n this.onDrop = this.renderer.listen(\r\n this.elementRef.nativeElement\r\n , 'drop'\r\n , (event: DragEvent): void => {\r\n this.handleDrop(event);\r\n });\r\n\r\n }\r\n\r\n public dragEnter() {\r\n // Add styling\r\n this.renderer.addClass(this.elementRef.nativeElement, 'js-app-droppable--zone');\r\n }\r\n public dragLeave() {\r\n // Add styling\r\n this.renderer.removeClass(this.elementRef.nativeElement, 'js-app-droppable--zone');\r\n }\r\n\r\n public drop(data: any) {\r\n this.dragService.removeHighLightedAvailableZones();\r\n this.dragLeave();\r\n\r\n this.onDroppableComplete.emit({\r\n data: data,\r\n zone: this.options.data\r\n });\r\n }\r\n\r\n /**\r\n * @desc responsible for handling the dragenter event\r\n * @param event\r\n */\r\n // 7\r\n private handleDragEnter(event: DragEvent): void {\r\n if (this.dragService.accepts(this.options.zone)) {\r\n // Prevent default to allow drop\r\n event.preventDefault();\r\n \r\n // Add styling\r\n this.dragEnter();\r\n }\r\n }\r\n\r\n /**\r\n * @desc responsible for handling the dragleave event\r\n * @param event\r\n */\r\n // 8\r\n private handleDragLeave(event: DragEvent): void {\r\n if (this.dragService.accepts(this.options.zone)) {\r\n // Add styling\r\n this.dragLeave();\r\n }\r\n }\r\n\r\n /**\r\n * @desc responsible for handling the dragOver event\r\n * @param event\r\n */\r\n // 9\r\n private handleDragOver(event: DragEvent): void {\r\n if (this.dragService.accepts(this.options.zone)) {\r\n // Prevent default to allow drop\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n /**\r\n * @desc responsible for handling the drop event\r\n * @param event \r\n */\r\n // 10\r\n private handleDrop(event: DragEvent): void {\r\n // Remove styling\r\n this.dragService.removeHighLightedAvailableZones();\r\n this.dragLeave();\r\n // Emit successful event\r\n const data = JSON.parse(event.dataTransfer.getData('Text'));\r\n this.onDroppableComplete.emit({\r\n data: data,\r\n zone: this.options.data\r\n });\r\n }\r\n}\r\n\r\n// 11\r\nexport interface DroppableOptions {\r\n data?: any;\r\n zone?: string;\r\n}\r\n\r\n// Droppable Event Object\r\nexport interface DroppableEventObject {\r\n data: any;\r\n zone: any;\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n Renderer2\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[tooltip]',\r\n standalone: false\r\n})\r\nexport class TooltipDirective {\r\n\r\n tooltip: HTMLElement;\r\n @Input(\"tooltip\") tooltipTitle: string;\r\n delay = 500;\r\n constructor(private el: ElementRef, private renderer: Renderer2) {}\r\n @HostListener(\"mouseover\") onMouseEnter() {\r\n this.showTooltip();\r\n }\r\n\r\n @HostListener(\"mouseleave\") onMouseLeave() {\r\n this.hidetooltip();\r\n }\r\n\r\n showTooltip() {\r\n this.tooltip = this.renderer.createElement(\"span\");\r\n // creating a span\r\n this.tooltip.appendChild(this.renderer.createElement(\"span\"));\r\n // appending a span to the tooltip\r\n\r\n this.renderer.appendChild(\r\n this.tooltip,\r\n this.renderer.createText(this.tooltipTitle)\r\n // adding the tooltip text into the tooltip span\r\n );\r\n const hostPos = this.el.nativeElement.getBoundingClientRect();\r\n // getting the hight width and positions of the target element\r\n let top, left;\r\n\r\n top = hostPos.bottom;\r\n left = hostPos.left + hostPos.width / 2;\r\n this.renderer.setStyle(this.tooltip, \"top\", `${top}px`);\r\n //adding a top positions value for the tooltip\r\n this.renderer.setStyle(this.tooltip, \"left\", `${left}px`);\r\n // adding the left value\r\n this.renderer.appendChild(document.body, this.tooltip);\r\n // appending to the document\r\n this.renderer.addClass(this.tooltip, \"tooltip\");\r\n // adding the tooltip styles\r\n }\r\n hidetooltip(){\r\n this.renderer.removeClass(this.tooltip, \"tooltip_show\");\r\n // on mouse over it will remove the opacity\r\n }\r\n }\r\n\r\n","//import { Utilities } from '@dflat-core/web/core';\nimport { Utilities } from '@dflat-core/web/core';\nimport { AuthService, HubService, MenuItem, MenuService, UserService } from '@dflat-core/web/core-services';\nimport { AfterViewInit, Component, ElementRef, OnDestroy, OnInit, Renderer2, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { Subject } from 'rxjs';\nimport { ActionService } from '../../services/action.service';\n\n\n@Component({\n selector: 'alg-default-layout',\n templateUrl: './default-layout.html',\n styleUrls: ['./default-layout.scss'],\n standalone: false\n})\nexport class DefaultLayoutComponent implements OnInit, OnDestroy, AfterViewInit {\n\n public mylinks: Array<any> = [];\n // public skin = 'skin-blue';\n // public display_control = true;\n // public display_user = true;\n // public display_tasks = true;\n // public display_messages = true;\n // public display_notifications = true;\n \n searchText: string = 'Rechercher...';\n keyword: string ='';\n\n @ViewChild('sidebar') \n private sidebar: ElementRef;\n sidebarVisible: boolean = false;\n public year: string;\n \n constructor(\n protected renderer:Renderer2, \n // private appConfig: AppConfiguration,\n protected userServ: UserService,\n protected menuServ: MenuService,\n protected authService: AuthService,\n protected hubService: HubService,\n protected route: ActivatedRoute,\n protected router: Router,\n protected actionService: ActionService\n \n ) {\n\n this.year = new Date().getFullYear().toString();\n \n }\n ngAfterViewInit(): void {\n \n }\n\n\n\n isNullOrUndefined(parameter: any): boolean {\n return (parameter == null);\n }\n\n onToggleButtonClick() {\n // if ( ! this.sidebarVisible ) {\n \n // // this.renderer.removeClass(this.sidebar.nativeElement, \"collapsed\");\n // // this.renderer.addClass(this.sidebar.nativeElement, \"uncollapsed\");\n // this.sidebarVisible = true;\n // }\n // else {\n \n \n // // this.renderer.removeClass(this.sidebar.nativeElement, \"uncollapsed\");\n // // this.renderer.addClass(this.sidebar.nativeElement, \"collapsed\");\n // this.sidebarVisible = false;\n // }\n this.sidebarVisible = ! this.sidebarVisible;\n }\n\n onUserInfos() { \n // this.router.navigate(['/admin/users', this.authService.userId]); \n }\n \n onlogOut(){\n this.userServ.logout();\n }\n\n \n\n public ngOnInit() {\n // register to menu change\n this.menuServ.getCurrent().subscribe((menu) => {\n this.mylinks = menu .sort((a,b) => (a.title > b.title) ? 1 : ((b.title > a.title) ? -1 : 0));\n });\n\n // this.userServ.getEditUser().subscribe((input: any) => {\n // this.showEditor();\n // });\n\n if (this.authService.isLoggedIn) {\n this.hubService.init();\n }\n }\n\n public destroy$ = new Subject<void>();\n public ngOnDestroy() {\n document.body.className = '';\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n handleItemClicked(item : MenuItem) {\n \n }\n\n // JC le 02/04/2024 Ajout du champs de recherche global dans le titre\n handleKeyboardEnter(valueText: string) {\n if (!Utilities.IsNil(valueText) && valueText.trim() != '') {\n this.router.navigateByUrl(`search?text=${valueText}`);\n }else{\n this.router.navigate(['/']);\n }\n }\n\n backHome() {\n this.router.navigate(['/']); \n }\n \n \n}\n","<div class=\"base-container\">\n <div class=\"base-topbar\">\n\n <div class=\"left-topbar\">\n <button class=\"btn btn-primary btn-lg sidebar-button\" (click)=\"onToggleButtonClick()\">\n <i class=\"fa fa-bars\"></i>\n </button>\n\n <div (click)=\"this.backHome()\">\n <!-- <img src=\"assets/images/LogoMarsow.svg\" class=\"mini-logo-lg\" /> -->\n </div>\n <div (click)=\"this.backHome()\">\n <span class=\"dflat-logo\"><b>Marsow</b></span>\n </div>\n </div>\n\n <div class=\"center-topbar\"></div>\n\n <!-- JC le 02/04/2024 Ajout du champs de recherche global dans le titre -->\n <div class = \"position_search\">\n\n <!-- <input class=\"search\" type=\"text\" placeholder=\"Rechercher...\" name=\"keyword\"/> -->\n\n <input class=\"search\" (keyup.enter)=\"handleKeyboardEnter(keyword)\" type=\"text\" \n name=\"keyword\" #uniquename=\"ngModel\" [placeholder]=\"this.searchText\" [(ngModel)]=\"keyword\" />\n </div>\n\n <div class=\"right-topbar\">\n <button class=\"btn btn-primary btn-lg sidebar-button\" (click)=\"onUserInfos()\">\n <i class=\"fa fa-user\"></i>\n </button>\n <button class=\"btn btn-primary btn-lg sidebar-button\" (click)=\"onlogOut()\">\n <i class=\"fa fa-power-off\"></i>\n </button>\n </div>\n\n </div>\n\n <div class=\"base-main\">\n <div class=\"sidebar-outcontainer\">\n <div #sidebar ngClass=\"sidebar-container collapsed\">\n <alg-menu [menuItems]=\"mylinks\" (itemClicked)=\"handleItemClicked($event)\"></alg-menu>\n </div>\n </div>\n <div class=\"main-content\">\n <div class=\"main-component\">\n <router-outlet>\n \n </router-outlet>\n </div>\n </div>\n </div>\n <!-- <div class=\"footer\">\n Copyright © {{this.year}} ALGORIMA\n </div> -->\n</div>\n\n\n ","import { Component, OnDestroy, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'alg-login-layout',\r\n templateUrl: './login-layout.html',\r\n styleUrls: ['./login-layout.scss'],\r\n standalone: false\r\n})\r\nexport class LoginLayoutComponent implements OnInit, OnDestroy {\r\n\r\n constructor(\r\n ) {\r\n }\r\n\r\n public ngOnInit() {\r\n window.dispatchEvent( new Event( 'resize' ) );\r\n document.body.className = 'hold-transition login-page';\r\n }\r\n\r\n public ngOnDestroy() {\r\n document.body.className = '';\r\n }\r\n\r\n}\r\n","<div class=\"login-box\">\n <div class=\"dflat-logo-container\">\n <div class=\"dflat-logo\">\n <img class=\"dflat-img\" src=\"assets/images/LogoMarsow.svg\" />\n </div>\n <div class=\"dflat-text\">\n <div class=\"msw\">Marsow</div>\n <div>v1.7.2-20260312</div>\n </div>\n </div>\n <div class=\"login-box-body\">\n <div class=\"customer-img-container\">\n </div>\n <div class=\"login-form-container\">\n <router-outlet> </router-outlet>\n </div>\n </div>\n</div>\n","import { DataService } from '@dflat-core/web/core-data';\nimport { FilterViewModel } from '@dflat-core/web/core-model';\nimport { AuthService } from '@dflat-core/web/core-services';\nimport { Component, EventEmitter } from '@angular/core';\n\nimport { DflatBaseFilterComponent } from '../../components/basefilter/basefilter.component';\nimport { ModalService } from '../../services/modal.service';\n\n@Component({\n selector: 'alg-validation-modal',\n templateUrl: './validation-modal.component.html',\n styleUrls: ['./validation-modal.component.css'],\n standalone: false\n})\nexport class ValidationModalComponent<TFilter extends FilterViewModel, TData> {\n EntityKey: string;\n getEntityKey(): string {\n return this.EntityKey;\n }\n message: string;\n title: string;\n result: EventEmitter<boolean> = new EventEmitter();\n\n constructor(\n public dataService: DataService,\n private authSevice:AuthService,\n protected modalService: ModalService) {\n }\n\n init(viewModel: DflatBaseFilterComponent<TFilter, TData>){\n // loading default view model\n this.EntityKey = viewModel.getEntityKey();\n }\n\n //#region Mixte(Methodes)\n okClick() {\n this.callBackAction();\n }\n //#endregion Mixte\n\n callBackAction : () => {} ;\n \n validation() { \n this.result.emit(true);\n this.callBackAction();\n };\n}\n","<!-- <div class=\"modal-dialog modal-lg\"> -->\r\n<div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">\r\n <i class=\"fa fa-shield fa-lg\"> {{this.title}}</i>\r\n </h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"row\">\r\n <div class=\"col-xs-12\">\r\n {{this.message}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"callBackAction()\">Non</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"validation()\">Oui</button>\r\n </div>\r\n</div>\r\n<!-- </div> -->","import { Pipe, PipeTransform } from '@angular/core';\nimport { isNumeric, Utilities } from '@dflat-core/web/core';\n\n@Pipe({\n name: 'euro',\n standalone: false\n})\nexport class EuroPipe implements PipeTransform {\n \n\n constructor() {\n \n }\n\n transform(initial: string): string {\n\n \n\n // Si la chaine est vide, on renvoie 0\n let value: string = initial.replace(',', '.');\n\n if( ! isNumeric(value) ) {\n // On supprime tous les caractères qui ne sont pas des chiffres.\n value = '';\n let hasSeparator: boolean = false;\n for (var i = 0; i < initial.length; i++) {\n let ch= initial[i];\n if ( isNumeric(ch) ) {\n value = value + ch;\n }\n else if (! hasSeparator && (ch == '.' || ch == ',')) {\n value = value + ch;\n hasSeparator = true;\n }\n }\n\n value = value.replace(',', '.');\n if ( ! isNumeric(value) )\n return '0.00 €';\n }\n \n // Si la chaine se termine par une seule décimale, on ajoute un 0 derrière.\n let splits = value.split('.');\n if ( Utilities.IsNil(splits ) || splits.length == 1)\n {\n // Pas de décimales (nombre entier), on ajoute ',00'\n value = value + '.00';\n }\n else if( splits.length > 1 && splits[1].length == 1)\n value = value + '0';\n else if ( splits.length > 1 && splits[1].length == 0) {\n // Pas de décimales (en cours de saisie, termine par .)\n value = value + '00';\n }\n else if ( splits.length > 1 && splits[1].length > 2) {\n // Plus de 2 décimales => on vire la dernère.\n value = splits[0] + '.' + splits[1].substring(0, 2);\n }\n\n // Enfin, on remplace les '.' par ',' pour l'affichage.\n return `${value.replace('.', ',')} €`;\n }\n\n parse(value: string): string {\n let result = value.split('€')[0].trim().replace(',', '.');\n return result;\n }\n}\n","\nimport { Observable } from 'rxjs';\n\nimport { Utilities } from '@dflat-core/web/core';\nimport { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\n\n\nimport { ConfirmOptions, DflatBaseComponent } from '../model/model';\nimport { ModalService } from './modal.service';\n\n@Injectable()\nexport class CanDeactivateGuard {\n\n constructor(public modalService: ModalService){\n }\n\n canDeactivate(component: DflatBaseComponent,\n currentRoute: ActivatedRouteSnapshot,\n currentState: RouterStateSnapshot,\n nextState?: RouterStateSnapshot\n ): Observable<ConfirmOptions> | Promise<ConfirmOptions> | boolean {\n\n if (! Utilities.IsNil(component) && ! Utilities.IsNil(component.isDirty))\n {\n if (component.isDirty()) {\n return this.modalService.confirmModal(\n \"Vous avez des modifications en cours ! Souhaitez-vous Continuer à faire des modifications, Enregister vos changements, ou bien les Annuler ?\",\n\n () => component.saveAll(), true);\n }\n }\n return true;\n }\n}\n","\nimport { AuthService } from \"@dflat-core/web/core-services\";\nimport { Injectable } from \"@angular/core\";\nimport { ModalOptions } from \"ngx-bootstrap/modal\";\nimport { Observable } from \"rxjs\";\nimport { IIsCancel, ILoginComponent } from \"../model/model\";\nimport { ModalService } from \"./modal.service\";\n\n@Injectable()\nexport class FireAuthService {\n constructor(\n private modalService: ModalService,\n private authService: AuthService\n ) {\n\n }\n\n public ensureLogin(loginComponentClass: ILoginComponent): Observable<string> {\n\n return new Observable<string>((observable) => {\n if (this.authService.isLoggedIn) {\n observable.next(this.authService.currentUser);\n observable.complete();\n }\n else {\n const initialState =\n {\n callBackAction: (omponent?: IIsCancel) => {\n this.modalService.close(modal);\n observable.next(this.authService.currentUser);\n observable.complete();\n }\n };\n\n let options: ModalOptions = {\n animated: false,\n backdrop: false,\n ignoreBackdropClick: true\n \n }\n let modal = this.modalService.openComponentWithState(loginComponentClass, options, initialState);\n\n }\n \n });\n }\n}","import { PropertyEditorEvent } from \"@dflat-core/web/core-model\";\nimport { Injectable } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\n\n@Injectable({ providedIn: 'root' })\nexport class PropertyChangeBus {\n private subject = new Subject<PropertyEditorEvent>();\n readonly events$ = this.subject.asObservable();\n\n emit(evt: PropertyEditorEvent) {\n this.subject.next(evt);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, ValidatorFn, Validators } from '@angular/forms';\nimport { FieldDescriptor, FieldValidators, ValidatorTypes } from '@dflat-core/web/core-model';\n\n@Injectable()\nexport class ValidationService {\n \n getFieldValidators(field: FieldDescriptor): any[] {\n const validators: any[] = [];\n\n if (field.Required) {\n validators.push(Validators.required);\n }\n\n if (field.FieldValidators) {\n const { MaxLength, MinValue, MaxValue } = field.FieldValidators;\n\n if (MaxLength) {\n validators.push(Validators.maxLength(MaxLength));\n }\n\n if (MinValue !== undefined) {\n validators.push(Validators.min(MinValue));\n }\n\n if (MaxValue !== undefined) {\n validators.push(Validators.max(MaxValue));\n }\n }\n\n return validators;\n }\n\n getValidationErrors(control: AbstractControl,field : FieldDescriptor): string {\n if (!control?.hasError) \n return '';\n\n if (control?.hasError('required')) {\n return `Le champs est obligatoire`;\n }\n if (control?.hasError('maxlength')) {\n return `Le champs ne peut pas dépasser ${field.FieldValidators.MaxLength} caractères`;\n }\n if (control?.hasError('min')) {\n return `Le champs doit être supérieur à ${field.FieldValidators.MinValue}`;\n }\n if (control?.hasError('max')) {\n return `Le champs doit être inférieur à ${field.FieldValidators.MaxValue}`;\n }\n\n return '';\n }\n\n getValidators(fieldValidators: FieldValidators): ValidatorFn[] {\n const validators: ValidatorFn[] = [];\n\n if (!fieldValidators) {\n return validators;\n }\n\n if ((fieldValidators.ValidatorType & ValidatorTypes.Required) != 0)\n validators.push(Validators.required);\n\n if ((fieldValidators.ValidatorType & ValidatorTypes.MaxLength) != 0)\n validators.push(Validators.maxLength(fieldValidators.MaxLength));\n\n if ((fieldValidators.ValidatorType & ValidatorTypes.Max) != 0)\n validators.push(Validators.max(fieldValidators.MaxValue));\n\n if ((fieldValidators.ValidatorType & ValidatorTypes.Min) != 0)\n validators.push(Validators.max(fieldValidators.MinValue));\n\n if ((fieldValidators.ValidatorType & ValidatorTypes.Email) != 0)\n validators.push(Validators.email);\n\n if (fieldValidators.MaxLength & ValidatorTypes.MaxLength)\n validators.push(Validators.maxLength(fieldValidators.MaxLength));\n\n return validators;\n }\n}","import { Utilities } from \"@dflat-core/web/core\";\nimport { ConditionalResults, EntityViewModel, FieldDescriptor, FieldValidators, FilterDescriptor, FilterType, PropertyEditorEvent } from \"@dflat-core/web/core-model\";\nimport { AbstractControl, FormControl, FormGroup } from \"@angular/forms\";\nimport { filter, Subject, takeUntil } from \"rxjs\";\nimport * as _ from 'lodash';\nimport { PropertyChangeBus } from \"../../services/property-change-bus.service\";\nimport { ValidationService } from \"../../services/validation.service\";\n\nexport class FormWrapper {\n\n private destroy$ = new Subject<void>();\n private change$ = new Subject<PropertyEditorEvent>();\n readonly changes$ = this.change$.asObservable();\n readonly form = new FormGroup({});\n \n constructor(\n private validationService : ValidationService,\n private bus: PropertyChangeBus,\n private validateAfterEachChange: boolean = true\n ) {\n this.bus.events$.pipe(takeUntil(this.destroy$)).subscribe(evt => { this.change$.next(evt)});\n }\n \n private Fields : FieldDescriptor[] = [];\n private initializing = false;\n private initialized = false;\n\n initialize(fields: FieldDescriptor[]) {\n if (this.initialized) return;\n\n this.initializing = true;\n this.Fields = fields;\n\n fields.forEach(field => {\n if (this.form.contains(field.PropertyName)) return;\n\n const validators = this.validationService.getFieldValidators(field) ?? [];\n const ctrl = new FormControl(null, validators);\n this.form.addControl(field.PropertyName, ctrl);\n\n ctrl.valueChanges\n .pipe(\n takeUntil(this.destroy$),\n filter(() => !this.initializing)\n )\n .subscribe(value => {\n this.change$.next({\n field,\n value,\n type: 'value'\n });\n });\n });\n\n this.initialized = true;\n this.initializing = false;\n }\n\n hookFormEntity(vm: EntityViewModel) {\n this.initializing = true;\n this.form.patchValue(vm, { emitEvent: false });\n this.initializing = false;\n this.recalculateAllCascades();\n }\n\n\n patch(vm: EntityViewModel) {\n this.form.patchValue(vm, { emitEvent: false });\n }\n\n reset(vm: EntityViewModel) {\n // this.form.reset();\n this.form.reset(vm, { emitEvent: false });\n const f = this.form.getRawValue();\n this.change$.next({ field: null, value:f, type:'reset' });\n }\n\n destroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n updateFields(field?: FilterDescriptor) {\n if (Utilities.IsNil(field)) {\n this.Fields.forEach((f) => {\n this.updateFields(f);\n });\n } else {\n if (field.IsConditioning) this.handleConditionalField(field);\n\n if (field.CascadeDependency === true \n && field.CascadeDependencyProperty)\n\n this.handleCascadeFilters(field);\n\n if (field.FilterType === FilterType.Custom || field.FilterType === FilterType.Date) {\n if (field.ReadOnly) {\n let control = this.form.get(field.PropertyName);\n control.disable();\n }\n }\n }\n }\n\n applyCascadeFrom(field: FieldDescriptor){\n if (this.initializing) \n return;\n \n this.handleCascadeFilters(field);\n }\n\n private recalculateAllCascades(): void {\n this.initializing = true;\n\n const cascadeSources = this.Fields.filter(\n f => f.CascadeDependency === true && !!f.CascadeDependencyProperty\n );\n\n cascadeSources.forEach(sourceField => {\n this.handleCascadeFilters(sourceField);\n });\n\n this.initializing = false;\n }\n\n alterFieldCascadeData(field : FieldDescriptor, reset : boolean = false){\n if (Utilities.IsNil(field.CascadeDependency))\n return;\n\n if (!field.Data || field.Data.length == 0)\n return;\n\n // if(field.OriginalData && field.OriginalData.length > 0)\n // return;\n\n // if (field.CascadeDependency === true) {\n // field.OriginalData = Object.assign([], field.Data);\n // }\n // if (field.FilterDistinct) {\n // field.Data = _.uniqBy(field.OriginalData, field.PropertyName);\n // }\n\n // if (reset) {\n // field.Data = Object.assign([], field.OriginalData);\n // } else {\n // field.OriginalData = Object.assign([], field.Data);\n // }\n \n if (field.FilterDistinct) {\n field.Data = _.uniqBy(field.OriginalData, field.PropertyName);\n }\n }\n\n handleCascadeFilters(field: FieldDescriptor): void {\n if (!field.CascadeDependency || !field.CascadeDependencyProperty)\n return;\n\n const selectedValue = Number(this.form.get(field.PropertyName)?.value);\n if (isNaN(selectedValue))\n return;\n\n const dependentPropertyNames = field.CascadeDependencyProperty.split(\";\").map(p => p.trim()).filter(p => p.length > 0);\n\n dependentPropertyNames.forEach(dependentPropName => {\n const dependentField = this.Fields.find(f => f.PropertyName === dependentPropName);\n if (!dependentField) {\n console.error(`Dependent field '${dependentPropName}' not found.`);\n return;\n }\n\n dependentField.CurrentFilters = dependentField.CurrentFilters || {};\n\n if (selectedValue <= 0) {\n delete dependentField.CurrentFilters[field.PropertyName];\n this.resetFieldData(dependentField);\n }\n else {\n dependentField.CurrentFilters[field.PropertyName] = true;\n this.resetFieldData(dependentField);\n }\n\n if (field.FilterDistinct && Array.isArray(dependentField.Data)) {\n dependentField.Data = _.uniqBy(dependentField.Data, dependentField.PropertyName);\n }\n\n // s'assurer que la valeur courante est valide selon le dataset de la cascade\n // si non on met à jour le filtre avec la dernière combinaison calculée\n const currentValue = this.form.get(dependentField.PropertyName)?.value;\n const isValueValid = _.some(dependentField.Data, item => item[dependentField.ValueMember] === currentValue);\n\n if (!isValueValid && dependentField.Data.length > 0) {\n const firstValidValue = dependentField.Data[0][dependentField.ValueMember];\n this.form.get(dependentField.PropertyName)?.setValue(firstValidValue,{emitEvent : false});\n }\n });\n }\n\n resetFieldData(field: FilterDescriptor) {\n if (Utilities.IsNil(field.OriginalData))\n return;\n\n field.Data = field.OriginalData.filter(p => p[field.ValueMember] === -1\n || _.every(Object.keys(field.CurrentFilters),\n (name) => { return p[name] === this.form.get(name).value; }));\n }\n\n handleConditionalField(_field: FilterDescriptor) {\n const conditioningProperty = _field.PropertyName;\n var conditionedFields = this.Fields.filter((_field) => _field.IsConditional && (_field.ConditioningField == conditioningProperty));\n if(!(conditionedFields.length > 0))\n return;\n const conditioningValue = this.form.get(conditioningProperty).value;\n for (let conditionedField of conditionedFields) {\n const conditionAccomplished =\n \n (!Utilities.IsNil(conditionedField.ConditioningFieldValue)\n && conditionedField.ConditioningFieldValue.filter(c => c === conditioningValue)?.length > 0)\n || (Utilities.IsNil(conditioningValue)\n && !conditionedField.BoolConditioningFieldValue)\n || (conditionedField.BoolConditioningFieldValue === conditioningValue);\n\n if (conditionedField.IsConditional && (conditionedField.ConditioningField == conditioningProperty)) {\n if (conditionedField.ConditionalResult == ConditionalResults.Hide)\n conditionedField.IsHidden = conditionAccomplished;\n else if (conditionedField.ConditionalResult == ConditionalResults.ReadOnly)\n conditionedField.ReadOnly = conditionAccomplished;\n }\n\n const control = this.form.controls[conditionedField.PropertyName];\n if (control) {\n if (conditionedField.IsHidden) {\n control.clearValidators();\n control.setValue(null, { emitEvent: false });\n control.markAsPristine();\n }\n else {\n this.addValidators(control as FormControl, conditionedField.FieldValidators);\n }\n\n if (this.validateAfterEachChange) {\n control.updateValueAndValidity({ emitEvent: true });\n }\n }\n }\n }\n \n addValidators(control: FormControl, validators: FieldValidators) {\n const validatorFns = this.validationService.getValidators(validators);\n control.setValidators(validatorFns);\n }\n\n\n\n // private isFormNative(field: FieldDescriptor): boolean {\n // return ![\n // FilterType.Custom,\n // FilterType.DropFileZone,\n // FilterType.TextWithButton,\n // FilterType.TextZoneWithButton\n // ].includes(field.FilterType);\n // }\n\n\n\n\n // private updateValidation() {\n // this.Fields.forEach(field => {\n // const ctrl = this.form.get(field.PropertyName);\n // if (ctrl) {\n // if (field.FilterType == FilterType.RadioButton) {\n // if (field.ReadOnly)\n // ctrl.disable();\n // else\n // ctrl.enable();\n // }\n // ctrl.updateValueAndValidity({ emitEvent: false });\n // }\n // });\n // }\n}\n","import { Utilities } from \"@dflat-core/web/core\";\nimport { FieldDescriptor, FilterViewModel } from \"@dflat-core/web/core-model\";\nimport { BaseComponent } from \"../base-component/base-component\";\nimport { IInputSelectorContext, InputSelectorOptions } from \"../../../model/model\";\nimport type { NewEditorComponent } from \"../new-editor/new-editor.component\";\nimport { SelectorMapperServiceBase } from \"../../../services/selectorMapperBase.service\";\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { AbstractControl, FormControl } from \"@angular/forms\";\nimport { BehaviorSubject, Observable, debounceTime, distinctUntilChanged, switchMap } from \"rxjs\";\n@Component({\n selector: 'alg-selector',\n templateUrl: './selector.component.html',\n styleUrl: './selector.component.scss',\n standalone : false,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SelectorComponent implements AfterViewInit {\n\n @Input({ required: true }) field!: FieldDescriptor;\n @Input({ required: true }) control!: AbstractControl;\n @Input() SupplierId: number = null;\n get formControl(): FormControl {\n return this.control as FormControl;\n}\n \n private search$ = new BehaviorSubject<string>(undefined);\n private page$ = new BehaviorSubject<number>(0);\n\n items$!: Observable<any[]>;\n options: InputSelectorOptions = new InputSelectorOptions();\n\n private context : IInputSelectorContext;\n \n constructor(\n // private registry: SelectorRegistry,\n private selectorMapperService: SelectorMapperServiceBase,\n private cd: ChangeDetectorRef\n ) {}\n \n \n ngAfterViewInit() {\n \n this.context = this.selectorMapperService\n .getInputSelectorContext(\n this.field.ModalEntityKey.toLowerCase(),\n this.field.ModalTitle);\n\n this.items$ = this.search$\n .pipe(debounceTime(200), \n distinctUntilChanged(),\n switchMap((keywords) => { \n let filter: FilterViewModel = {...this.field.DataFilter};\n filter.Take = 10;\n filter.Offset = 0;\n filter.Keywords = keywords;\n\n return this.context.loadFunction(filter)\n }));\n }\n\n onSearch( param : { term: string; items: any[] }) {\n // this.page$.next(0);\n this.search$.next(param.term);\n }\n\n loadNextPage() {\n this.page$.next(this.page$.value + 1);\n }\n\n\n openModal() {\n this.selectorMapperService.openSelectorModal(\n this.field.ModalEntityKey.toLowerCase(),\n this.field.ModalTitle,null,\n (component: BaseComponent<any, any>) => {\n component.facade.actions.showAction('add');\n component.facade.actions.showAction('save');\n component.facade.layout.disablePropertyPanel();\n component.facade.filter.setFilter(this.field.DataFilter)\n })\n .subscribe(res => {\n if (res?.length) {\n let _value = res[0]?.Id\n if (!Utilities.IsNil(this.field.ModalTriggerIdPropertyValue))\n _value = res[0]?.[this.field.ModalTriggerIdPropertyValue];\n \n this.control.setValue(_value);\n this.control.markAsDirty();\n this.cd.markForCheck();\n this.onChanged(res[0])\n }\n });\n }\n\n createNewItem(searchTerm: string) {\n if (this.context.creationComponentType) {\n console.log(`add ${searchTerm} called`)\n this.selectorMapperService.openEditorModal(\n this.context.creationModalTitle,this.context.creationComponentType,\n (component : NewEditorComponent<any>) => {\n component.facade.config\n .addAlterViewModelFunction(\n (vm) => {\n vm[this.field.ModalPropertyName] = searchTerm\n return vm;\n });\n }\n ); \n }\n else\n {\n alert(\"Cette fonctionnalité n'a pas été implémentée !\");\n }\n }\n\n @Output() change: EventEmitter<any> = new EventEmitter();\n // writeValue(obj: any): void {\n // this._value = obj;\n // this.cd.markForCheck();\n // }\n\n // registerOnChange(fn: any): void {\n // // this.onChange = fn;\n // }\n\n // registerOnTouched(fn: any): void {\n // // this.onTouched = fn;\n // }\n\n // setDisabledState?(isDisabled: boolean): void {\n // // this.disabled = isDisabled;\n // // TODO\n // // this.cd.markForCheck();\n // }\n onChanged(event: any) {\n this.change.emit(event);\n }\n}\n","<ng-container *ngIf=\"! field.ModalOnly\">\r\n<div class=\"pull-left input-select-default\"\r\n [class.with-button]=\"this.options.showSelectButton\"\r\n>\r\n <ng-select\r\n [readonly]=\"field.ReadOnly\"\r\n [items]=\"items$ | async\"\r\n search-enabled=\"true\"\r\n [class.disable-arrow]=\"this.options.disableArrow\"\r\n [class.disable-border]=\"this.options.disableBorder\"\r\n appendTo=\"body\"\r\n [formControl]=\"this.formControl\"\r\n [clearable]=\"this.options.clearable\"\r\n [multiple]=\"false\"\r\n [bindValue]=\"field.ModalPropertyValue\"\r\n [bindLabel]=\"field.ModalPropertyName\"\r\n [selectOnTab]=\"true\"\r\n (change)=\"this.onChanged($event)\"\r\n [virtualScroll]=\"true\"\r\n [loading]=\"false\"\r\n (scrollToEnd)=\"this.loadNextPage()\"\r\n (search)=\"this.onSearch($event)\"\r\n >\r\n <ng-template *ngIf=\"! this.options.showSelectButton\" ng-footer-tmp let-searchTerm=\"searchTerm\">\r\n <button\r\n type=\"button\"\r\n class=\"btn action-btn btn-create-input-select\"\r\n data-toggle=\"tooltip\"\r\n title=\"Créer un nouvel élément\"\r\n (click)=\"createNewItem(searchTerm)\"\r\n >\r\n <div class=\"pull-left action-icon\">\r\n <i class=\"fa fa-plus-square fa-lg\"></i>\r\n </div>\r\n <div class=\"pull-left action-label\"><span>Créer</span></div>\r\n </button>\r\n <ng-container *ngIf=\"!this.options.showSelectButton\">\r\n <button\r\n type=\"button\"\r\n class=\"btn action-btn btn-create-input-select\"\r\n data-toggle=\"tooltip\"\r\n title=\"Créer un nouvel élément\"\r\n (click)=\"createNewItem(searchTerm)\"\r\n >\r\n <div class=\"pull-left action-icon\">\r\n <i class=\"fa fa-search fa-lg\"></i>\r\n </div>\r\n <div class=\"pull-left action-label\">\r\n <span>Rechercher</span>\r\n </div>\r\n </button>\r\n </ng-container>\r\n </ng-template>\r\n </ng-select>\r\n \r\n </div>\r\n</ng-container> \r\n \r\n<ng-container *ngIf=\"this.options.showSelectButton\">\r\n <div class=\"input-group-btn pull-left\">\r\n <button\r\n class=\"btn btn-secondary btn-32 btn-input-select\"\r\n (click)=\"openModal()\"\r\n >\r\n <!-- [disabled]=\"control.disabled\" -->\r\n <span class=\"fa fa-ellipsis-h\"></span>\r\n </button>\r\n </div>\r\n</ng-container>\r\n<!-- ... -->\r\n<!-- (change)=\"this.onChanged($event)\"\r\n[items]=\"items\"\r\nbindValue=\"{{ modalPropertyValue }}\"\r\nbindLabel=\"{{ modalPropertyName }}\"\r\n[(ngModel)]=\"value\"\r\n[typeahead]=\"typeahead\"\r\n[disabled]=\"disabled\" -->\r\n","import { Utilities } from '@dflat-core/web/core';\nimport {\n EntityViewModel,\n FilterDescriptor,\n FilterType,\n PropertyEditorEvent\n} from '@dflat-core/web/core-model';\n\nimport {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport moment from 'moment';\nimport { defineLocale } from 'ngx-bootstrap/chronos';\nimport { BsDatepickerConfig, BsLocaleService } from 'ngx-bootstrap/datepicker';\nimport { frLocale } from 'ngx-bootstrap/locale';\nimport { Subject } from 'rxjs';\nimport { ValidationService } from '../../services/validation.service';\n\n@Component({\n selector: 'alg-field',\n templateUrl: './field.component.html',\n styleUrls: ['./field.component.scss'],\n standalone: false,\n})\nexport class FieldComponent implements OnInit {\n @Input() showLabel: boolean = true;\n @Input() entity: EntityViewModel;\n @Input() field: FilterDescriptor;\n \n @Input() form: FormGroup;\n @Input() horizontal: boolean = false;\n @Input() readonly: boolean = false;\n protected inputClass: string = 'form-control';\n allowValidation: boolean = true;\n\n @Output() propertyChanged: EventEmitter<PropertyEditorEvent> = new EventEmitter();\n \n _changeSubject = new Subject<PropertyEditorEvent>();\n Changes$ = this._changeSubject.asObservable()!;\n\n // @Output() radioButtonChanged: EventEmitter<any> = new EventEmitter();\n @ViewChild('horizSelect', { static: false }) horizSelect: any;\n\n filterType = FilterType;\n bsConfig: Partial<BsDatepickerConfig> = new BsDatepickerConfig();\n //bsValue = new Date();\n locale = 'fr';\n hidePassword: boolean = true;\n showPassword() {\n this.hidePassword = !this.hidePassword;\n }\n\n uploadForm = new FormGroup({ file1: new FormControl() });\n get isValid() {\n // return this.form.controls[this.field.DisplayMember].valid;\n return this.control.valid;\n }\n\n notlog: boolean = true;\n log(propname: string){\n if (this.notlog) {\n console.log(this.control.errors);\n this.notlog = false;\n }\n }\n constructor(\n public validationService: ValidationService,\n private localeService: BsLocaleService\n ) {\n defineLocale('fr', frLocale);\n this.localeService.use('fr');\n this.bsConfig.containerClass = 'theme-blue';\n this.bsConfig.dateInputFormat = 'L';\n this.bsConfig.showWeekNumbers = false;\n this.bsConfig.showClearButton = true;\n this.bsConfig.clearButtonLabel = 'Effacer';\n this.bsConfig.todayButtonLabel = 'Aujourd\\'hui';\n this.bsConfig.showTodayButton = true;\n }\n \n private internalForm: FormGroup;\n get control(): FormControl {\n return this.form?.get(this.field.PropertyName) as FormControl;\n }\n\n ngOnInit() {\n if (!this.form) {\n console.log(this.field.PropertyName)\n this.internalForm = new FormGroup({});\n this.form = this.internalForm;\n\n const validators = this.validationService.getFieldValidators(this.field) ?? [];\n const ctrl = new FormControl(null, validators);\n this.internalForm.addControl(this.field.PropertyName, ctrl);\n }\n }\n\n private destroy$ = new Subject<void>();\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onValueChanged(event: Event) {\n \n var value=this.control.value;\n if(this.field.FilterType === FilterType.Decimal)\n value = value.replace(',', '.');\n \n \n if(this.field.FilterType === FilterType.String)\n return;\n\n const evt: PropertyEditorEvent = {\n field: this.field,\n value: value,\n type : 'value'\n };\n\n this.form?.markAsTouched();\n this.propertyChanged.emit(evt);\n }\n \n onValueInput($event: Event) {\n const pending: PropertyEditorEvent = {\n field: this.field,\n value: this.control.value,\n type : 'value'\n };\n this.form?.markAsTouched();\n this.propertyChanged.emit(pending);\n }\n \n /** Returns the current control value as a Date for [bsValue] binding. */\n get dateValue(): Date | null {\n const val = this.control?.value;\n if (!val) return null;\n if (val instanceof Date) return isNaN(val.getTime()) ? null : val;\n const d = new Date(val);\n return isNaN(d.getTime()) ? null : d;\n }\n\n /** Returns the current control value formatted for datetime-local input. */\n get dateTimeLocalValue(): string {\n const val = this.control?.value;\n if (!val) return '';\n const d = val instanceof Date ? val : new Date(val);\n if (isNaN(d.getTime())) return '';\n const p = (n: number) => String(n).padStart(2, '0');\n return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())}T${p(d.getHours())}:${p(d.getMinutes())}`;\n }\n\n onBsValueChanged(event: Date | null) {\n // Reject invalid Date objects; pass through null (clear button)\n if (event instanceof Date && isNaN(event.getTime())) return;\n\n const newVal = event instanceof Date ? event : null;\n\n // Guard: skip when bsDatepicker re-fires due to [bsValue] binding update\n // during change detection (row selection without user interaction).\n const current = this.dateValue;\n const unchanged = newVal === null\n ? current === null\n : current !== null && newVal.toDateString() === current.toDateString();\n if (unchanged) return;\n\n this.control?.setValue(newVal, { emitEvent: false });\n\n const evt: PropertyEditorEvent = {\n field: this.field,\n value: newVal,\n type: 'value'\n };\n this.propertyChanged.emit(evt);\n this._changeSubject.next(evt);\n }\n\n onDateTimeLocalChanged(event: Event) {\n const raw = (event.target as HTMLInputElement).value;\n const newVal = raw ? new Date(raw) : null;\n this.control?.setValue(newVal, { emitEvent: false });\n\n const evt: PropertyEditorEvent = {\n field: this.field,\n value: newVal,\n type: 'value'\n };\n this.propertyChanged.emit(evt);\n this._changeSubject.next(evt);\n }\n\n filedata: any = null;\n\n fileEvent(e) {\n this.filedata = e.target.files[0];\n let event: PropertyEditorEvent = {\n field: this.field,\n value: this.filedata,\n type:'file'\n };\n if(this.filedata)\n {\n this.control.setValue(this.filedata);\n this.control.markAsTouched();\n this.control.updateValueAndValidity();\n }\n // this.dropZone.emit(event ?? 0);\n this.propertyChanged.emit(event);\n this._changeSubject.next(event);\n }\n \n inputSelectorChanged(event: Event) {\n if (this.field) {\n const evt: PropertyEditorEvent = {\n field: this.field,\n value: event,\n type: 'selector'\n };\n \n this.propertyChanged.emit(evt);\n this._changeSubject.next(evt);\n this.form?.markAsDirty();\n }\n }\n onClick(field: FilterDescriptor) {\n let event: PropertyEditorEvent = {\n field: field,\n value: this.control.value,\n type :'button'\n };\n this.propertyChanged.emit(event);\n this._changeSubject.next(event);\n }\n\n getDateFormat(date: FormControl, format) {\n return moment.utc(date.value).format(format);\n }\n \n isImgPathDefined(field: FilterDescriptor, val: any) {\n return field.DisplayImage && this.isDefined(val?.ImagePath);\n }\n\n isDefined(val: any) {\n return !Utilities.IsNil(val);\n }\n\n getRadioButtonId(propName: string, indexOfData: number) {\n return propName + '-' + indexOfData.toString();\n }\n\n\n getRequiredIcon() {\n return `../../assets/images/star-of-life-solid.svg`;\n }\n\n showValidationErrors(): boolean {\n const showValidationError = this.allowValidation && this.control.invalid \n && (this.control.dirty || this.control.touched)\n \n return (showValidationError && this.getValidationErrors() != '');\n }\n\n getValidationErrors(): string {\n const res = this.validationService.getValidationErrors(\n this.control,\n this.field\n );\n return res;\n }\n}\n","<div [formGroup]=\"form\" class=\"field-container\">\r\n <ng-container *ngIf=\"field\">\r\n <div [hidden]=\"!!field.IsHidden\" [ngSwitch]=\"field.FilterType\">\r\n <div class=\"label-group\" *ngIf=\"showLabel\">\r\n <label *ngIf=\"field.FilterType != filterType.CheckBox &&\r\n field.FilterType != filterType.HorizComboBox\"\r\n [htmlFor]=\"field.PropertyName\">\r\n {{ field.Label }}\r\n </label>\r\n <img *ngIf=\"field.Required\"\r\n class=\"required-icon\"\r\n [src]=\"this.getRequiredIcon()\"\r\n alt=\"obligatoire\"\r\n />\r\n </div>\r\n\r\n <!--String Input-->\r\n <div *ngSwitchCase=\"filterType.String\" class=\"form-group\">\r\n <div>\r\n <input\r\n [class]=\"this.inputClass\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n [formControl]=\"this.control\"\r\n [id]=\"field.PropertyName\"\r\n [type]=\"field.InputType\"\r\n (change)=\"this.onValueChanged($event)\"\r\n (input)=\"onValueInput($event)\"\r\n focusable\r\n />\r\n </div>\r\n </div>\r\n\r\n <!--Number Input-->\r\n <div *ngSwitchCase=\"filterType.Integer\" class=\"form-group\">\r\n <div>\r\n <input\r\n [class]=\"this.inputClass\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n [formControl]=\"this.control\"\r\n [id]=\"field.PropertyName\"\r\n (change)=\"onValueChanged($event)\"\r\n (input)=\"onValueInput($event)\"\r\n type=\"number\"\r\n focusable\r\n />\r\n </div>\r\n </div>\r\n <div *ngSwitchCase=\"filterType.Decimal\" class=\"form-group\">\r\n <div>\r\n <input\r\n [class]=\"this.inputClass\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n (change)=\"onValueChanged($event)\"\r\n (input)=\"onValueInput($event)\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.,][0-9]+)?$\"\r\n />\r\n </div>\r\n </div>\r\n <!--ComboBox Input-->\r\n <div *ngSwitchCase=\"filterType.ComboBox\" class=\"form-group\">\r\n <div>\r\n <ng-select\r\n appendTo=\"body\"\r\n placeholder=\"Sélectionner {{ field.Label }}\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [items]=\"field.Data\"\r\n [multiple]=\"field.MultipleSelection\"\r\n [hideSelected]=\"field.HideSelected\"\r\n bindValue=\"{{ field.ValueMember }}\"\r\n [clearable]=\"field.IsClearable\"\r\n bindLabel=\"{{ field.DisplayMember }}\"\r\n [selectOnTab]=\"true\"\r\n (change)=\"onValueChanged($event)\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n >\r\n </ng-select>\r\n </div>\r\n </div>\r\n\r\n <!-- InputSelect -->\r\n <!-- <div *ngSwitchCase=\"this.filterType.Custom\" class=\"form-group input\">\r\n <alg-input-selector #inputSelector\r\n type=\"text\"\r\n (change)=\"onValueChanged($event)\"\r\n [id]=\"this.field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n [modalPropertyValue]=\"this.field.ModalPropertyValue\"\r\n [modalPropertyName]=\"this.field.ModalPropertyName\"\r\n [modalEntityKey]=\"this.field.ModalEntityKey\"\r\n [modalTitle]=\"this.field.ModalTitle\"\r\n [readonly]=\"this.field.ReadOnly\">\r\n </alg-input-selector>\r\n </div> -->\r\n\r\n <!-- InputSelector with button -->\r\n <ng-container *ngSwitchCase=\"this.filterType.Custom\">\r\n <!-- <alg-selector\r\n #inputSelector\r\n type=\"text\"\r\n (change)=\"this.inputSelectorChanged($event)\"\r\n [id]=\"field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n [modalPropertyValue]=\"field.ModalPropertyValue\"\r\n [modalPropertyName]=\"field.ModalPropertyName\"\r\n [modalEntityKey]=\"field.ModalEntityKey\"\r\n [modalTitle]=\"field.ModalTitle\">\r\n </alg-selector> -->\r\n\r\n <!-- *ngSwitchCase=\"filterType.Custom\" -->\r\n <ng-container *ngIf=\"field.ModalOnly\">\r\n <div class=\"pull-left input-select-default with-button\">\r\n <input\r\n class=\"form-control\"\r\n [readonly]=\"true\"\r\n [name]=\"this.field.PropertyName\"\r\n [id]=\"this.field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n />\r\n </div> \r\n </ng-container>\r\n\r\n <alg-selector\r\n [field]=\"field\"\r\n [control]=\"this.control\"\r\n (change)=\"this.inputSelectorChanged($event)\"\r\n \r\n >\r\n <!-- [control]=\"this.form.controls[field.PropertyName]\" -->\r\n </alg-selector>\r\n\r\n </ng-container>\r\n\r\n <!-- TreeSelector -->\r\n <ng-container *ngSwitchCase=\"this.filterType.TreeSelector\">\r\n <alg-input-tree-selector\r\n [items]=\"field.Data\"\r\n [id]=\"field.PropertyName\"\r\n [bindValue]=\"field.ValueMember\"\r\n [bindLabel]=\"field.DisplayMember\"\r\n childrenKey=\"children\"\r\n countKey=\"childrenCount\"\r\n [formControlName]=\"field.PropertyName\"\r\n placeholder=\"{{ field.Label }}\"\r\n (change)=\"onValueChanged($event)\"\r\n >\r\n </alg-input-tree-selector>\r\n </ng-container>\r\n\r\n <!-- TextWithbutton -->\r\n <ng-container\r\n *ngSwitchCase=\"this.filterType.TextWithButton\"\r\n class=\"form-group\"\r\n >\r\n <div class=\"input-with-button\">\r\n\r\n <input\r\n type=\"text\"\r\n class=\"form-control\"\r\n (change)=\"onValueChanged($event)\"\r\n [name]=\"this.field.PropertyName\"\r\n [id]=\"this.field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n />\r\n\r\n <button\r\n class=\"btn btn-secondary btn-32 btn-input-select\"\r\n (click)=\"onClick(field)\"\r\n >\r\n <span class=\"fa fa-ellipsis-h\"></span>\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <!--HorizComboBox Input-->\r\n <div *ngSwitchCase=\"filterType.HorizComboBox\" class=\"form-group\">\r\n <div>\r\n <ng-select\r\n appendTo=\"body\"\r\n class=\"horiz-combox-box\"\r\n placeholder=\"{{ field.Label }}\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [items]=\"field.Data\"\r\n [multiple]=\"field.MultipleSelection\"\r\n [hideSelected]=\"field.HideSelected\"\r\n bindValue=\"{{ field.ValueMember }}\"\r\n bindLabel=\"{{ field.DisplayMember }}\"\r\n (change)=\"onValueChanged($event)\"\r\n >\r\n </ng-select>\r\n </div>\r\n </div>\r\n\r\n <!--Boolean Input-->\r\n <div *ngSwitchCase=\"filterType.CheckBox\" class=\"form-group\">\r\n <div class=\"checkbox-container\">\r\n <label class=\"switch\" [htmlFor]=\"field.PropertyName\">\r\n <input\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n type=\"checkbox\"\r\n (change)=\"onValueChanged($event)\"\r\n />\r\n <span class=\"slider round\"></span>\r\n </label>\r\n <span class=\"checkbox-label\">{{ field.Label }}</span>\r\n </div>\r\n </div>\r\n\r\n <!--Enum Input-->\r\n <div *ngSwitchCase=\"filterType.RadioButton\" class=\"form-group\">\r\n <div class=\"radio-button-container\">\r\n <form [formGroup]=\"form\" class=\"radio-buttons\">\r\n <div\r\n *ngFor=\"let data of field.Data;let indexOfData = index\" class=\"radio-button\">\r\n <input\r\n type=\"radio\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"getRadioButtonId(field.PropertyName,indexOfData)\"\r\n [value]=\"indexOfData\"\r\n (change)=\"onValueChanged($event)\"\r\n />\r\n <label class=\"radio-button-label\">{{ data }}</label>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <!-- Text zone with button -->\r\n <div *ngSwitchCase=\"filterType.TextZoneWithButton\"\r\n class=\"form-group\">\r\n <div class=\"text-zone-and-button\">\r\n <div class=\"text-zone-container\">\r\n <textarea\r\n #textarea\r\n type=\"text\"\r\n class=\"text-area\"\r\n spellcheck=\"false\"\r\n [formControlName]=\"field.ValueMember\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n (change)=\"onValueChanged($event)\"\r\n >\r\n </textarea>\r\n </div>\r\n <div class=\"feedback-and-button\">\r\n <div class=\"feedback\">\r\n <div class=\"feedback-green\" *ngIf=\"field.TextWithStyle.GreenText.length > 0\">\r\n {{ field.TextWithStyle.GreenText }}\r\n </div>\r\n <div class=\"feedback-yellow\" *ngIf=\"field.TextWithStyle.YellowText.length > 0\">\r\n {{ field.TextWithStyle.YellowText }}\r\n </div>\r\n <div class=\"feedback-red\" *ngIf=\"field.TextWithStyle.RedText.length > 0\">\r\n {{ field.TextWithStyle.RedText }}\r\n </div>\r\n </div>\r\n <button\r\n type=\"button\"\r\n id=\"botton-compile\"\r\n class=\"btn btn-primary btn-flat pull-right button\"\r\n (click)=\"onClick(field)\"\r\n >\r\n {{ field.ButtonLabel }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--Date -->\r\n <div *ngSwitchCase=\"filterType.Date\" class=\"form-group\">\r\n <div>\r\n <input\r\n type=\"text\"\r\n [class]=\"this.inputClass\"\r\n placeholder=\"Sélectionner une date\"\r\n [id]=\"field.PropertyName\"\r\n [bsConfig]=\"bsConfig\"\r\n [bsValue]=\"dateValue\"\r\n (bsValueChange)=\"onBsValueChanged($event)\"\r\n [disabled]=\"this.readonly || field.ReadOnly\"\r\n bsDatepicker\r\n />\r\n </div>\r\n </div>\r\n <!--DateTime -->\r\n <div *ngSwitchCase=\"filterType.DateTime\" class=\"form-group\">\r\n <div>\r\n <input\r\n type=\"datetime-local\"\r\n [class]=\"this.inputClass\"\r\n [id]=\"field.PropertyName\"\r\n [value]=\"dateTimeLocalValue\"\r\n [disabled]=\"this.readonly || field.ReadOnly\"\r\n (change)=\"onDateTimeLocalChanged($event)\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!-- Text input -->\r\n <div *ngSwitchCase=\"filterType.Text\" class=\"form-group\">\r\n <div>\r\n <textarea\r\n type=\"text\"\r\n rows=\"5\"\r\n [class]=\"this.inputClass\"\r\n [formControlName]=\"field.PropertyName\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n (change)=\"onValueChanged($event)\"\r\n [id]=\"field.PropertyName\"\r\n >\r\n </textarea>\r\n </div>\r\n </div>\r\n\r\n <!-- DropFileZone -->\r\n <div\r\n *ngSwitchCase=\"filterType.DropFileZone\"\r\n class=\"form-group ml-4\"\r\n >\r\n <fieldset>\r\n <input\r\n [id]=\"field.PropertyName\"\r\n type=\"file\"\r\n class=\"ml--3\"\r\n (change)=\"fileEvent($event)\"\r\n />\r\n </fieldset>\r\n </div>\r\n\r\n <!-- Password -->\r\n <div *ngSwitchCase=\"filterType.Password\" class=\"form-group\">\r\n <div class=\"input-with-button\">\r\n <input\r\n class=\"form-control\"\r\n [type]=\"hidePassword ? 'password' : 'text'\"\r\n [formControl]=\"control\"\r\n (change)=\"onValueChanged($event)\"\r\n [id]=\"field.PropertyName\"\r\n [name]=\"field.PropertyName\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n autocomplete=\"new-password\"\r\n />\r\n <!-- btn-32 pull-right button -->\r\n <button class=\"btn btn-secondary btn-32 btn-input-select\" (click)=\"showPassword()\">\r\n <i class=\"fa fa-eye\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"this.showValidationErrors()\">\r\n <div class=\"validation-message\">\r\n {{ this.getValidationErrors() }}\r\n </div>\r\n <!-- <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('required')\">\r\n Ce champ est obligatoire\r\n </ng-container>\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('min')\">\r\n Minimum: {{field.FieldValidators.MinValue}}\r\n </ng-container>\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('max')\">\r\n Maximum: {{field.FieldValidators.MaxValue}}\r\n </ng-container>\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('maxLength')\">\r\n Longueur maximale: {{field.FieldValidators.MaxLength}} caractères\r\n </ng-container> -->\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n</div>\r\n","import { Utilities } from '@dflat-core/web/core';\nimport { FilterDescriptor, PropertyEditorEvent, RunActionContext } from '@dflat-core/web/core-model';\n\nimport { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { IIsCancel } from '../../../model/model';\nimport type { LogsComponent } from '../../logs/logs.component';\nimport { PropertyChangeBus } from '../../../v2/services/property-change-bus.service';\nimport { ValidationService } from '../../../v2/services/validation.service';\nimport { FormWrapper } from '../../../v2/models/utilities/form-wrapper';\n\n@Component({\n selector: 'alg-ext-action',\n templateUrl: './extended-action.component.html',\n styleUrls: ['./extended-action.component.scss'],\n standalone: false\n})\nexport class ExtendedActionComponent implements OnInit, IIsCancel, OnDestroy {\n isCancel?: boolean = false;\n isContextLoaded?: boolean = false;\n displayLogTab: boolean = false;\n logs: any[] = [];\n \n @Input() RunContext: RunActionContext;\n @ViewChild('logsComponent', { static: false }) logsComponent: LogsComponent;\n\n get Fields(): FilterDescriptor[] {\n return this.RunContext.Action.FormDescriptor[0].FieldViewModels;\n }\n constructor(\n private bus : PropertyChangeBus, \n private validationService: ValidationService) { }\n \n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n public wrapper: FormWrapper;\n private destroy$ = new Subject<void>();\n ngOnInit() {\n\n if(!this.displayLogTab){\n this.wrapper = new FormWrapper(this.validationService,this.bus, false);\n this.wrapper.initialize(this.Fields);\n this.wrapper.hookFormEntity(this.RunContext.FormValue);\n \n this.wrapper.form.statusChanges.subscribe(() => {\n // if (this.wrapper.form.invalid) {\n // const invalidFields = [];\n // const controls = this.wrapper.form.controls;\n // for (const name in controls) {\n // if (controls[name].invalid) {\n // invalidFields.push({\n // name: name,\n // errors: controls[name].errors,\n // value: controls[name].value\n // });\n // }\n // }\n // console.warn('Champs invalides détectés :', invalidFields);\n // }\n \n // update form parents validity status on form.dirty or touched\n if (this.wrapper.form.dirty || this.wrapper.form.touched) {\n this.isFormValid$.next(this.wrapper.form.valid);\n }\n });\n }\n }\n\n public isFormValid$ = new BehaviorSubject<boolean>(true);\n\n onPropertyChanged(event: PropertyEditorEvent) {\n this.RunContext.FormValue[event.field.PropertyName] = event.value;\n this.RunContext[event.field.PropertyName] = event.value;\n this.wrapper.updateFields();\n }\n onDropZone(event: any) {\n this.RunContext[event.Field.PropertyName] = event.Event;\n }\n downloadLogs() {}\n displayLogs() {}\n clearLogs() {\n\n if (!Utilities.IsNil(this.logsComponent))\n this.logsComponent.clearLogs();\n }\n scrollToBottom() {\n if (!Utilities.IsNil(this.logsComponent))\n this.logsComponent.scrollToBottom();\n }\n\n}\n","<div class=\"extended-action-container\">\r\n <ng-container *ngIf=\"!this.displayLogTab;\">\r\n <div class=\"form-container\">\r\n <form [formGroup]=\"this.wrapper.form\" id=\"filterForm\">\r\n <div *ngFor=\"let field of this.Fields\">\r\n <alg-field \r\n [field]=\"field\" \r\n [form]=\"this.wrapper.form\"\r\n (propertyChanged)=\"onPropertyChanged($event)\"\r\n > \r\n </alg-field>\r\n </div>\r\n </form>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"this.displayLogTab;\">\r\n <div class=\"log-container\" [class.visible]=\"this.displayLogTab\">\r\n <msw-logs #logsComponent [logs]=\"logs\" (onDownloadLogs)=\"downloadLogs()\"\r\n (onDisplayLogs)=\"displayLogs()\">\r\n </msw-logs>\r\n </div>\r\n </ng-container>\r\n</div>\r\n","import { Utilities } from '@dflat-core/web/core';\nimport { MenuItem, MenuService } from '@dflat-core/web/core-services';\nimport {\n AfterViewInit,\n Component,\n OnInit\n} from '@angular/core';\nimport cloneDeep from 'lodash/cloneDeep';\n@Component({\n selector: 'alg-menu-dashboard',\n templateUrl: './menu-dashboard.component.html',\n styleUrls: ['./menu-dashboard.component.scss'],\n standalone: false\n})\nexport class MenuDashboardComponent implements OnInit {\n\n items: MenuItem[];\n originalItems: MenuItem[];\n keyword: string = '';\n constructor(private menuService : MenuService)\n {}\n\n ngOnInit(): void {\n this.menuService.getCurrent().subscribe((menu) => {\n this.originalItems = menu.filter(m=>m.sublinks !== null && m.sublinks.length > 0)\n .sort((a,b) => (a.title > b.title) ? 1 : ((b.title > a.title) ? -1 : 0));\n this.items = cloneDeep(this.originalItems);\n });\n }\n reset() {\n // Retour à l'original\n this.items = cloneDeep(this.originalItems);\n }\n\n filter(event: any) {\n if ( Utilities.isEmptyString(this.keyword)) {\n this.reset();\n return;\n }\n this.items = [];\n for(let i = 0; i < this.originalItems.length; i++) {\n\n let filterd = this.originalItems[i].sublinks.filter(l=>l.title.toUpperCase().includes(this.keyword.toUpperCase()));\n \n if ( filterd.length > 0) { \n let clone = cloneDeep(this.originalItems[i]);\n clone.sublinks = cloneDeep(filterd);\n this.items.push(clone);\n }\n }\n }\n \n}","\r\n\r\n\r\n\r\n<div class=\"menu-dashboard-container\">\r\n <div class=\"search-input-container\">\r\n <input [(ngModel)]=\"this.keyword\" name=\"search\" autocomplete=\"off\" class=\"form-control search-bar-action search-input\" type=\"text\" [placeholder]=\"'Rechercher dans les menus...'\" (input)=\"filter($event)\">\r\n </div>\r\n\r\n <ng-container *ngFor=\"let m of this.items\">\r\n <div class=\"submenu-container\">\r\n <div class=\"submenu-container-title moyen-titre\">\r\n <i\r\n *ngIf=\"m.icon\"\r\n class=\"fa fa-{{ m.icon }}\"\r\n ></i>\r\n <span >{{ m.title }}</span>\r\n \r\n </div>\r\n <div class=\"submenu-items-container paragraph-highlight\">\r\n <ng-container *ngFor=\"let subitem of m.sublinks\">\r\n <div class=\"menu-dashboard-subitem\">\r\n <a\r\n *ngIf=\"!subitem.external\"\r\n [routerLink]=\"subitem.link\"\r\n >\r\n <span>{{ subitem.title }}</span>\r\n </a>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'search-results',\r\n templateUrl: './search-results.component.html',\r\n styleUrls: ['./search-results.component.scss'],\r\n standalone: false\r\n})\r\nexport class SearchResultsComponent {\r\n @Input() data : any[];\r\n constructor() {\r\n\r\n }\r\n}\r\n","\r\n<div class=\"results-panel\" >\r\n <div class=\"result-grid\">\r\n <div class=\"result-card\" *ngFor=\"let item of data\">\r\n <div class=\"result-card-container\">\r\n <div class=\"result-card-inner\">\r\n <div>\r\n <ng-content [item]=\"item\">\r\n\r\n </ng-content>\r\n </div> \r\n </div> \r\n </div> \r\n </div> \r\n </div> \r\n</div> ","import { Utilities } from '@dflat-core/web/core';\nimport { LayoutContext } from '../models/contexts/layout-context';\nimport { layoutKeyToString, LayoutPreferences } from '../services/layout.service';\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n Renderer2\n} from '@angular/core';\nimport { distinctUntilChanged, Subject, takeUntil } from 'rxjs';\n\n// Handles panel resizing and orientation\n@Directive({\n selector: '[layoutHandler]',\n exportAs: 'layoutHandler',\n standalone: false\n})\nexport class LayoutHandlerDirective implements OnDestroy, AfterViewInit {\n // Indicates if the layout is vertical\n isVerticalLayout: boolean;\n // Defines the property panel's growth\n propertyflexGrow: number;\n\n @Input() middlePanel!: HTMLElement;\n rightPanel?: HTMLElement;\n _separator?: HTMLElement;\n\n\n\n /**\n * Constructor for the directive\n * @param layoutService Layout management service\n * @param renderer DOM rendering service\n * @param elRef Reference to the DOM element\n */\n constructor(\n private renderer: Renderer2,\n private elRef: ElementRef\n ) { }\n\n // Subscribes to layout preferences filtered by entity key of component\n ngAfterViewInit(): void {\n if (!this.layoutContext) {\n throw new Error('LayoutHandlerDirective requires LayoutContext');\n }\n\n this.layoutContext.layoutService.getPreferencesByEntityKey(this.entityKey)\n .pipe(distinctUntilChanged((a,b)=> JSON.stringify(a) == JSON.stringify(b)),takeUntil(this.destroy$))\n .subscribe((preferences) => {\n setTimeout(() => {\n // console.log(`Layout context for ${this.entityKey}`,preferences)\n this.lastPropertyflexGrow = preferences.PropertyFlexGrow;\n this.propertyflexGrow = preferences.PropertyFlexGrow;\n this.isVerticalLayout = preferences.IsVerticalLayout;\n this.scheduleLayout();\n })});\n }\n scheduleLayout() {\n queueMicrotask(() => {\n requestAnimationFrame(() => {\n this.updateLayout();\n });\n });\n }\n\n // Unique key to identify the entity\n @Input() entityKey!: string;\n\n // distinguish sections\n @Input() isSection: boolean = false;\n\n // layout context\n @Input() layoutContext: LayoutContext;\n\n\n // Cleanup on destruction\n private destroy$ = new Subject<void>();\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n /**\n * Toggles the property panel size\n * @param event Click event\n */\n expandPropertyflexGrow(event: MouseEvent) {\n if (event)\n event.stopPropagation();\n this.layoutContext.layoutService.expandPropertyflexGrow(this.entityKey,this.propertyflexGrow == 100 ? 30 : 100)\n }\n\n /**\n * Retrieves an HTML element by its class\n * @param className CSS class name\n * @returns HTML Element\n */\n getHtmlElement(className: string): HTMLElement {\n return Array.from(this.elRef.nativeElement.querySelectorAll(className))\n .find((el: HTMLElement) => el.id === this.entityKey)[0];\n }\n\n lastPropertyflexGrow: number;\n\n hidePropertyGrid() {\n if (this.propertyflexGrow != 0)\n this.lastPropertyflexGrow = this.propertyflexGrow;\n\n this.propertyflexGrow = 0;\n // this.updateLayout();\n\n //this.layoutContext.setFlexGrow(0);\n }\n\n showPropertyGrid() {\n this.propertyflexGrow = this.lastPropertyflexGrow;\n // this.updateLayout();\n //this.layoutContext.setFlexGrow(this.lastPropertyflexGrow);\n\n }\n\n public updateLayout(): void {\n\n if (Utilities.IsNil(this.propertyflexGrow))\n return;\n\n // // Initialize panel container if necessary\n const panelContainer = this.elRef.nativeElement.querySelector('.panel-container');\n\n // // Configure direction and dimensions of main container\n if (panelContainer) {\n const direction = this.isVerticalLayout ? 'column' : 'row';\n this.renderer.setStyle(panelContainer, 'flex-direction', direction);\n }\n\n const middle = this.middlePanel;\n const right = this.rightPanel;\n\n // No right panel → full width\n if (!right) {\n if (middle) {\n this.renderer.setStyle(middle, 'flex-grow', 100);\n }\n return;\n }\n\n // Both panels\n if (middle) {\n this.renderer.setStyle(middle, 'flex-grow', 100 - this.propertyflexGrow);\n }\n\n this.renderer.setStyle(right, 'flex-grow', this.propertyflexGrow);\n this.updateSeparator()\n\n }\n\n updateSeparator(){\n // Configure separator\n const directionClass = this.isVerticalLayout ? 'vertical' : 'horizontal';\n const oppositeClass = this.isVerticalLayout ? 'horizontal' : 'vertical';\n const separator = this._separator;\n if (separator) {\n this.renderer.addClass(separator, directionClass);\n this.renderer.removeClass(separator, oppositeClass);\n }\n\n // Configure expand button\n const expandButton = this.elRef.nativeElement.querySelector('.expand-btn');\n if (expandButton) {\n const paddingStyle = this.isVerticalLayout ? { padding: '0' } : { padding: '0' };\n for (const [key, value] of Object.entries(paddingStyle)) {\n this.renderer.setStyle(expandButton, key, value);\n }\n\n // Determine arrow direction\n const arrowClass = !this.isVerticalLayout\n ? this.propertyflexGrow == 100 ? 'arrow-right' : 'arrow-left'\n : this.propertyflexGrow == 100 ? 'arrow-down' : 'arrow-up';\n\n const arrowSpan = expandButton.querySelector('div');\n if (arrowSpan) {\n ['arrow-right', 'arrow-left', 'arrow-up', 'arrow-down'].forEach(\n (cls) => {\n this.renderer.removeClass(arrowSpan, cls);\n }\n );\n this.renderer.addClass(arrowSpan, arrowClass);\n }\n }\n\n // Configure toggle button\n const toggleButton = this.elRef.nativeElement.querySelector('.toggle-btn');\n if (toggleButton) {\n\n // Determine arrow direction\n const arrowClass = this.isVerticalLayout\n ? 'arrow-right'\n : 'arrow-down';\n\n const arrowSpan = toggleButton.querySelector('div');\n if (arrowSpan) {\n ['arrow-right', 'arrow-left', 'arrow-up', 'arrow-down'].forEach(\n (cls) => {\n this.renderer.removeClass(arrowSpan, cls);\n }\n );\n this.renderer.addClass(arrowSpan, arrowClass);\n }\n }\n }\n\n private dragInProgress = false;\n \n /**\n * Starts the resizing process\n * @param event Mouse event\n */\n startResizing(event: MouseEvent): void {\n if (this.isSection) return;\n event.preventDefault();\n this.dragInProgress = true;\n // this.layoutContext.layoutService.startResizing(this.entityKey);\n }\n\n\n // Handles mouse movement during resizing\n @HostListener('window:mousemove', ['$event'])\n onMouseMove(event: MouseEvent) {\n if (this.isSection || !this.dragInProgress) {\n return;\n }\n event.preventDefault();\n \n const panelContainer = this.elRef.nativeElement.querySelector('.panel-container');\n if (!panelContainer)\n return;\n const rect = panelContainer.getBoundingClientRect();\n let flexGrow: number;\n\n if (!this.isVerticalLayout) {\n const offsetX = event.clientX - rect.left;\n const ratio = offsetX / rect.width;\n flexGrow = Math.round(100 - Math.min(80, Math.max(20, ratio * 100)));\n flexGrow = flexGrow >= 80 ? 100 : flexGrow;\n } else {\n const offsetY = event.clientY - rect.top;\n flexGrow = Math.round(100 - (offsetY / rect.height) * 100);\n }\n\n // Update the local state\n this.propertyflexGrow = flexGrow;\n \n // Apply the layout changes in real-time during drag\n this.scheduleLayout();\n \n // Also update the context for other subscribers\n // this.layoutContext.setFlexGrow(flexGrow);\n }\n\n // Ends the resizing process\n @HostListener('document:mouseup')\n onMouseUp(): void {\n if (!this.dragInProgress) return;\n this.dragInProgress = false;\n if (this.isSection) return;\n\n // Pass the current flexGrow value to be saved\n this.layoutContext.layoutService.stopResizing(this.entityKey, this.propertyflexGrow);\n // this.resizeColumns();\n\n }\n stopResizing(event : MouseEvent) {\n if (this.isSection) return;\n event.preventDefault();\n this.layoutContext.layoutService.stopResizing(this.entityKey, this.propertyflexGrow);\n // this.resizeColumns();\n }\n // Saves preferences before window closes\n @HostListener('window:beforeunload')\n onBeforeUnload() {\n this.layoutContext.layoutService.saveLayoutPreferences();\n }\n}","import { FieldDescriptor } from \"@dflat-core/web/core-model\";\nimport { FormWrapper } from \"../../models/utilities/form-wrapper\";\nimport { IIsCancel } from \"../../../model/model\";\nimport { Component, Input } from \"@angular/core\";\n\n@Component({\n selector: 'alg-filter-form',\n templateUrl : './filter-form.component.html',\n styleUrls: ['./filter-form.component.scss'],\n standalone: false,\n})\nexport class FilterFormModalComponent implements IIsCancel{\n @Input() wrapper!: FormWrapper;\n @Input() fields!: FieldDescriptor[];\n\n constructor(){\n\n }\n isCancel?: boolean = false;\n}","<div class=\"filter-tab\">\r\n <form [formGroup]=\"wrapper.form\" id=\"filterForm\">\r\n <div *ngFor=\"let field of fields\">\r\n <alg-field [field]=\"field\" [form]=\"wrapper.form\"> </alg-field>\r\n </div>\r\n </form>\r\n</div>\r\n","import { nameof, Utilities } from '@dflat-core/web/core';\nimport { EntityViewModel, FilterDescriptor, PropertyEditorEvent } from '@dflat-core/web/core-model';\nimport { AuthService } from '@dflat-core/web/core-services';\nimport { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Guid } from 'guid-typescript';\nimport { combineLatest, Subject } from 'rxjs';\nimport { filter, map, take, takeUntil } from 'rxjs/operators';\nimport { Action, IDialogOptions } from '../../../model/model';\nimport { ActionService } from '../../../services/action.service';\nimport { ModalService } from '../../../services/modal.service';\nimport { PropertyChangeBus } from '../../services/property-change-bus.service';\nimport { ValidationService } from '../../services/validation.service';\nimport { EntityFacadeRegistryService } from '../../services/entity-facade-registry.service';\nimport { EntityFacade } from '../../models/entity-facade';\nimport { FormWrapper } from '../../models/utilities/form-wrapper';\nimport { FilterFormModalComponent } from '../filter-form/filter-form.component';\n\n\n@Component({\n // changeDetection: ChangeDetectionStrategy.OnPush,\n selector: \"alg-action-panel\",\n templateUrl: \"./action-panel.component.html\",\n styleUrls: ['./action-panel.component.scss'],\n standalone: false\n})\nexport class ActionPanelComponent implements OnInit, OnDestroy {\n\n @Input() searchText : string = \"Rechercher...\"\n keyword: string;\n handleKeywordsChanged(event: any) { \n \n this.facade.filter.setKeyword(event);\n }\n actions: Action[] = [];\n @Input() title: string = '';\n @Input() entityKey!: string;\n @Input() guid: Guid;\n\n constructor(\n private authSevice: AuthService,\n private actionService: ActionService,\n private modalService : ModalService,\n private bus: PropertyChangeBus,\n private validationService: ValidationService,\n private entityFacadeRegistryService: EntityFacadeRegistryService\n ) {\n }\n \n enableActions() {\n return true;\n }\n \n private destroy$ = new Subject<void>(); \n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n\n }\n facade : EntityFacade<EntityViewModel>;\n ngOnInit(): void {\n this.facade = this.entityFacadeRegistryService.getFacade<EntityViewModel>(this.entityKey, this.guid);\n \n this.facade.criteria$.pipe(map(c=>c.Keywords)).subscribe((kws) => this.keyword = kws);\n \n this.facade.actions.actions$.pipe(\n filter(x=> !Utilities.IsNil(x) && x.length > 0),\n takeUntil(this.destroy$)).subscribe((acts) => {\n this.actions = acts;\n });\n \n this.wrapper = new FormWrapper(this.validationService,this.bus,false);\n \n combineLatest([\n this.facade.criteria$,\n this.facade.config.filterDescriptors$\n ]).pipe(takeUntil(this.destroy$))\n .subscribe(([fltr,fds]) => {\n const filters = fds.filter(x=> x.PropertyName != 'Keywords' && x.PropertyName.toUpperCase() != 'ID');\n this.fields = filters;\n this.wrapper.initialize(filters);\n this.wrapper.hookFormEntity(fltr);});\n\n this.wrapper.changes$.pipe(takeUntil(this.destroy$)).subscribe(evt => this.handleFilterEvent(evt));\n \n }\n \n protected wrapper: FormWrapper;\n fields: FilterDescriptor[] = [];\n private suspendFilterApply = false;\n private openFilterModal(): void {\n this.suspendFilterApply = true;\n let init = {};\n init[nameof((component: FilterFormModalComponent) => component.wrapper)] = this.wrapper;\n init[nameof((component: FilterFormModalComponent) => component.fields)] = this.fields;\n \n \n const dialogParams: IDialogOptions = {\n childComponentType: FilterFormModalComponent,\n initialViewModel: Object.assign({}, init),\n title: \"Filtres\",\n callBackAction: (component: FilterFormModalComponent) => { \n this.setFilterFromModal(component) \n }\n }\n const modal = this.modalService.openComponentCustom({}, dialogParams, true);\n }\n\n setFilterFromModal(component : FilterFormModalComponent){ \n this.facade.filter.setFilter(component.wrapper.form.getRawValue());\n this.suspendFilterApply = false;\n }\n \n private handleFilterEvent(evt: PropertyEditorEvent) {\n if (evt.type === 'reset') {\n this.facade.filter.setFilter(evt.value);\n return;\n }\n this.wrapper.applyCascadeFrom(evt.field);\n if (!this.suspendFilterApply) \n this.facade.filter.setFilter(this.wrapper.form.getRawValue());\n }\n\n hasPermission(permission: string) {\n return Utilities.IsNil(permission) ? true : (this.authSevice.hasPermission(permission));\n }\n\n toggleFilterView() {\n this.openFilterModal();\n // this.facade.layout.toggleFilter()\n }\n\n canExecute(a: Action) {\n\n const selectedData = this.facade.selection.Selected;\n let notIsLoading= true;\n \n let hasPermission = this.hasPermission(a.permission);\n\n let isEnabled = notIsLoading && a.canExecute(selectedData) && hasPermission;\n\n a.disabled = !isEnabled;\n\n return isEnabled;\n }\n\n getImageUrl(icon: string) {\n return `/assets/images/${icon}.svg`;\n }\n\n executeAction(a: Action) {\n const selectedData = this.facade.selection.Selected;\n if ( a.isExtendedAction )\n {\n if ( this.canExecute(a))\n this.actionService.executeExtendedAction(a.descriptor,a.entityKey,selectedData.map(x=>x.Id)) \n \n }\n else {\n if (a.isActive())\n this.facade.actions.executeAction(a.name);\n }\n }\n}\n","<div class=\"action-panel\">\r\n <div class=\"action-panel-container\">\r\n <ng-container *ngIf=\"this.facade.layout.showActionTitle$ |async\">\r\n <div class=\"action-title\">\r\n <h1>{{ this.title }}</h1>\r\n <span>|</span>\r\n </div>\r\n </ng-container>\r\n \r\n <!-- ACTIONS-->\r\n <ng-container *ngIf=\"this.fields.length && this.facade.layout.showFilterButton$ |async\">\r\n <div class=\"button-container img\">\r\n <button\r\n type=\"button\"\r\n id=\"toggleFilter\"\r\n class=\"btn btn-svg action-btn\"\r\n data-toggle=\"tooltip\"\r\n title=\"Afficher/Masquer les filtres\"\r\n (click)=\"toggleFilterView()\"\r\n >\r\n <!-- <div class=\"pull-left action-icon\"><i class=\"fa fa-filter fa-lg\"></i></div> -->\r\n <img\r\n class=\"action-icon\"\r\n [src]=\"getImageUrl('filter-solid')\"\r\n alt=\"Afficher/Masquer les filtres\"\r\n />\r\n </button>\r\n </div>\r\n </ng-container>\r\n \r\n \r\n\r\n <ng-container *ngIf=\"this.facade.layout.showActionSearchBar$ | async\">\r\n <div class=\"input-img\">\r\n <input\r\n \r\n type=\"text\"\r\n class=\"form-control search-bar-action\"\r\n name=\"keyword\"\r\n #uniquename=\"ngModel\"\r\n [placeholder]=\"this.searchText\"\r\n [(ngModel)]=\"keyword\"\r\n (ngModelChange)=\"handleKeywordsChanged($event)\"\r\n focusable\r\n focusTrap\r\n />\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngFor=\"let action of actions\">\r\n <div\r\n *ngIf=\"action.isVisible && action.showTitle\"\r\n class=\"button-container\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-svg action-btn\"\r\n title=\"{{ action.title }}\"\r\n (click)=\"this.executeAction(action)\"\r\n [disabled]=\"action.disabled$ | async\">\r\n\r\n <img\r\n class=\"action-icon\"\r\n [src]=\"getImageUrl(action.icon)\"\r\n alt=\"{{ action.title }}\"\r\n />\r\n <div class=\"action-label\">\r\n <span>{{ action.title }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"action.isVisible && !action.showTitle\" class=\"button-container img\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-svg action-btn\"\r\n data-toggle=\"tooltip\"\r\n title=\"{{ action.title }}\"\r\n (click)=\"this.executeAction(action)\"\r\n [disabled]=\"! this.enableActions() || action.disabled\"\r\n >\r\n <img\r\n class=\"action-icon\"\r\n [src]=\"getImageUrl(action.icon)\"\r\n alt=\"{{ action.title }}\"\r\n />\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-content select=\"[actions-content]\"> </ng-content>\r\n </div>\r\n</div>\r\n","import { ColumnDescriptor } from \"@dflat-core/web/core-model\";\nimport { Component, Input } from \"@angular/core\";\n\n@Component({\n selector: 'alg-cell-renderer',\n templateUrl: './cell-renderer.component.html',\n standalone: false\n})\nexport class CellRendererComponent {\n @Input() row: any;\n @Input() column: ColumnDescriptor;\n @Input() context: any;\n\n isUndefined(value: any) {\n return value === undefined || value === null;\n }\n\n ngOnInit() {\n console.log('CellRendererComponent initialized with column:', this.column.Property);\n }\n}\n","<ng-container>\r\n<div [ngSwitch]=\"column.Display.type\" *ngIf=\"!isUndefined(row[column.Property])\">\r\n\r\n <div *ngSwitchCase=\"'url'\">\r\n <a [routerLink]=\"[column.Display.baseUrl, row[column.Property]]\">\r\n {{ row.Id || row[column.Property] }}\r\n </a>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'img'\" class=\"image\">\r\n <img *ngIf=\"column.Display.imagePath.length === 0\"\r\n [src]=\"(column.Display.imgBase || '') + \r\n (column.Display.sourceProperty ? \r\n row[column.Display.sourceProperty] : \r\n row[column.Property])\" />\r\n\r\n <alg-image *ngIf=\"column.Display.imagePath.length !== 0\"\r\n [imageUrl]=\"context.getEnumImageUrl(row, column)\"\r\n [imageHeight]=\"20\" [imageWidth]=\"20\">\r\n </alg-image>\r\n\r\n <div class=\"tool-tip\" *ngIf=\"column.ToolTipProperty\">\r\n {{ row[column.ToolTipProperty] }}\r\n </div>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'img-file'\" class=\"image\">\r\n <alg-image \r\n [imageUrl]=\"context.getImageUrl(row, column)\"\r\n [wide]=\"true\" [imageHeight]=\"40\" [imageWidth]=\"40\">\r\n </alg-image>\r\n\r\n <div class=\"tool-tip\" *ngIf=\"column.ToolTipProperty\">\r\n {{ row[column.ToolTipProperty] }}\r\n </div>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'wide-img'\" class=\"image\">\r\n <alg-image *ngIf=\"column.Display.imagePath.length !== 0\" \r\n [wide]=\"true\"\r\n [imageUrl]=\"context.getEnumImageUrl(row,column)\" \r\n [imageHeight]=\"40\" [imageWidth]=\"40\">\r\n </alg-image>\r\n\r\n <div class=\"tool-tip\" *ngIf=\"column.ToolTipProperty\">\r\n {{ row[column.ToolTipProperty] }}\r\n </div>\r\n </div>\r\n\r\n <span *ngSwitchCase=\"'date'\">\r\n {{ row[column.Property] | date: column.Display.format || 'dd/MM/yyyy' }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'boolean'\">\r\n {{ row[column.Property] ? 'OUI' : 'NON' }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'datetime'\">\r\n {{ row[column.Property] | date: column.Display.format || 'dd/MM/yyyy HH:mm:ss' }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'money'\" \r\n [class.red]=\"!row[column.Property] && column.Display.handleError\"\r\n class=\"money\">\r\n {{ row[column.Property]\r\n | currency: column.Display.currency ||\r\n (column.Display.sourceProperty && row[column.Display.sourceProperty]\r\n ? row[column.Display.sourceProperty]\r\n : 'EUR')\r\n : 'symbol'\r\n | todefine: column.Display.handleError }}\r\n <div class=\"tool-tip\" *ngIf=\"context.showOnToolTip(row, column.Property)\">\r\n {{ context.showOnToolTip(row, column.Property) }}\r\n </div>\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'percent'\" \r\n [class.red]=\"!row[column.Property] && column.Display.handleError\">\r\n {{ (row[column.Property] * column.Display.multiplier)\r\n | percent: column.Display.format || '1.0-2'\r\n | todefine: column.Display.handleError }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'number'\" \r\n [class.red]=\"!row[column.Property] && column.Display.handleError\">\r\n {{ (row[column.Property] * column.Display.multiplier)\r\n | number: column.Display.format || '1.0-3'\r\n | todefine : column.Display.handleError }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'fixedsizeinteger'\" \r\n [class.red]=\"!row[column.Property] && column.Display.handleError\">\r\n {{ row[column.Property] \r\n | tofixedsizeinteger : column.Display.completingCaracter : column.Display.width }}\r\n </span>\r\n\r\n <span *ngSwitchDefault>\r\n {{ row[column.Property] }}\r\n </span>\r\n\r\n</div>\r\n\r\n<div *ngIf=\"isUndefined(row[column.Property])\">\r\n <span *ngIf=\"column.Display.nullCaseText\" class=\"mw-invalid\">\r\n {{ column.Display.nullCaseText }}\r\n </span>\r\n <span *ngIf=\"!column.Display.nullCaseText\">\r\n \r\n </span>\r\n</div>\r\n</ng-container>\r\n\r\n<!-- {{ row[column.Property] }} -->","import { EntityViewModel, PagedList } from \"@dflat-core/web/core-model\";\nimport { SelectionContext } from \"../contexts/selection-context\";\n\n// selector \n// ajout de la ligne\n// intercepteur des modified entities\nexport class EntityUpdater<TData extends EntityViewModel> {\n\n constructor(\n private selection: SelectionContext<TData>,\n private datas: PagedList<TData> // dataGrid's dataset wrapper\n ) {}\n\n // update entities : dataset + selected //\n applyUpdates(updated: TData[]) {\n if (!updated || updated.length === 0) return;\n\n updated.forEach(u => {\n this.updateDataset(u);\n this.updateSelection(u);\n });\n }\n\n // add new entity and select it\n insertEntity(newEntity: TData, autoSelect = false) {\n this.datas.Values.push(newEntity);\n\n if (autoSelect) {\n this.selection.select([newEntity]);\n }\n }\n\n private updateDataset(item: TData) {\n const list = this.datas.Values;\n const idx = list.findIndex(x => x.Id === item.Id);\n if (idx !== -1) {\n // mutate, don't replace\n Object.assign(list[idx], item);\n }\n }\n\n private updateSelection(item: TData) {\n const selected = this.selection.getSelected();\n if (!selected || selected.length === 0) return;\n\n const idx = selected.findIndex(x => x.Id === item.Id);\n if (idx !== -1) {\n Object.assign(selected[idx], item);\n }\n }\n}","import { BehaviorSubject } from 'rxjs';\r\n\r\nexport class RowRegistry {\r\n\r\n private readySubject = new BehaviorSubject<boolean>(false);\r\n private map = new Map<string, HTMLElement>();\r\n private registeredCount = 0;\r\n private expectedCount = 0;\r\n public ready$ = this.readySubject.asObservable();\r\n\r\n\r\n unregisterRow(id: string) {\r\n if (this.map.delete(id)) {\r\n this.registeredCount = Math.max(0, this.registeredCount - 1);\r\n // if unregister happens while ready was true, mark not ready if mismatch\r\n if (this.registeredCount < this.expectedCount) this.readySubject.next(false);\r\n }\r\n }\r\n\r\n get(id: string): HTMLElement | undefined {\r\n return this.map.get(id);\r\n }\r\n\r\n setExpectedCount(count: number) {\r\n this.expectedCount = count || 0;\r\n this.registeredCount = 0;\r\n this.map.clear();\r\n this.readySubject.next(false);\r\n }\r\n\r\n registerRow(id: string, el: HTMLElement) {\r\n this.map.set(id, el);\r\n this.registeredCount++;\r\n if (this.registeredCount >= this.expectedCount && this.expectedCount >= 0) {\r\n this.readySubject.next(true);\r\n }\r\n }\r\n\r\n clear() {\r\n this.map.clear();\r\n }\r\n\r\n public notifyReady() {\r\n this.readySubject.next(true);\r\n }\r\n\r\n public notifyNotReady() {\r\n this.readySubject.next(false);\r\n }\r\n\r\n isReady(): boolean {\r\n return this.map.size > 0;\r\n }\r\n}\r\n","import { Utilities } from '@dflat-core/web/core';\nimport { EntityViewModel } from '@dflat-core/web/core-model';\nimport { Renderer2 } from '@angular/core';\nimport { RowRegistry } from './row-registry';\n\nexport class SelectionStyler<TData extends EntityViewModel> {\n \n constructor(private renderer: Renderer2, private registry: RowRegistry) {}\n\n private lastStyled = new Set<any>();\n\n applySelected(rows: TData[], guid: string) {\n const nextIds = new Set(rows.map((x) => x.Id));\n for (const id of this.lastStyled) {\n if (!nextIds.has(id)) {\n const el = this.registry.get(`${guid}-row-${id}`);\n if (el) {\n Array.from(el.getElementsByTagName('td')).forEach((td) =>\n this.renderer.removeClass(td, 'selected')\n );\n this.renderer.removeClass(el, 'selected');\n }\n }\n }\n\n for (const s of rows) {\n const el = this.registry.get(`${guid}-row-${s.Id}`);\n if (!el) return;\n this.renderer.addClass(el, 'selected');\n Array.from(el.getElementsByTagName('td')).forEach((td) =>\n this.renderer.addClass(td, 'selected')\n );\n }\n\n this.lastStyled = nextIds;\n }\n\n updateRowState(row: TData, guid: string) {\n const elt = this.registry.get(`${guid}-row-${row.Id}`);\n if (!elt) return;\n\n this.renderer.removeClass(elt, 'mw-invalid');\n this.renderer.removeClass(elt, 'mw-modified');\n this.renderer.removeClass(elt, 'mw-warning');\n\n if (\n this.isModified(row) &&\n !this.isInvalid(row) &&\n !this.isWarning(row)\n ) {\n this.renderer.addClass(elt, 'mw-modified');\n }\n\n if (this.isWarning(row) && !this.isInvalid(row)) {\n this.renderer.addClass(elt, 'mw-warning');\n }\n\n if (this.isInvalid(row)) {\n this.renderer.addClass(elt, 'mw-invalid');\n }\n }\n\n isNew(row: TData): boolean {\n return ! Utilities.IsNil(row) && row.Id < 0;\n }\n isModified(row: TData): boolean {\n return this.isNew(row) || (!Utilities.IsNil(row) && row['isTheSame'] === false);\n }\n\n isInvalid(row: TData): boolean {\n return (\n !Utilities.IsNil(row) &&\n (row['isValid'] === false || row['hasError'] === true)\n );\n }\n\n isWarning(row: TData): boolean {\n return !Utilities.IsNil(row) && row['hasWarning'] === true;\n }\n}\n","import { AfterViewInit, Directive, ElementRef, Host, Input, OnDestroy } from \"@angular/core\";\r\nimport { RowRegistry } from \"../models/utilities/row-registry\";\r\n\r\n/**\r\n * Hôte d'une directive rowRef, fourni par DataGridComponent.\r\n * La directive injecte ce jeton plutôt que DataGridComponent pour éviter un cycle d'imports\r\n * entre les deux fichiers, non supporté en compilation partielle (librairie).\r\n */\r\nexport abstract class RowRefHost {\r\n abstract readonly rowRegistry: RowRegistry;\r\n}\r\n\r\n@Directive({\r\n selector: '[rowRef]',\r\n standalone : true\r\n})\r\nexport class RowRefDirective implements AfterViewInit, OnDestroy {\r\n @Input('rowRef') rowId!: string;\r\n\r\n constructor(private el: ElementRef,\r\n @Host() private dataGrid: RowRefHost\r\n) {}\r\n\r\n ngAfterViewInit() {\r\n this.dataGrid.rowRegistry.registerRow(this.rowId, this.el.nativeElement);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.dataGrid.rowRegistry.unregisterRow(this.rowId);\r\n }\r\n}\r\n","import { ColumnDescriptor, EntityViewModel } from '@dflat-core/web/core-model';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { DataGridStyleContext } from '../models/contexts/data-grid-style-context';\n\n@Pipe({\n name: 'gridStyle',\n pure: true,\n})\nexport class GridStylePipe implements PipeTransform {\n transform(\n type: 'cell' | 'column' | 'header' | 'alternating' | 'rowstate',\n context: DataGridStyleContext,\n args: {\n row?: EntityViewModel;\n column?: ColumnDescriptor;\n index?: number;\n maxIndex?: number;\n hasAggregates?: boolean;\n } = {}\n ): string {\n if (!context) return '';\n const { row, column, index = 0, maxIndex = 0, hasAggregates = false } = args;\n switch (type) {\n case 'cell': {\n // let computedCellStyle = `${context.getAlternatingStyle?.(index) ?? ''} ${\n // column?.Display?.type ?? ''\n // }`;\n // let cellStyle = '';\n // const colStyle = context.getColumnStyle?.(row!, column);\n // if (!Utilities.IsNil(colStyle)) cellStyle = colStyle;\n\n // if (!Utilities.IsNil(column.Property)) {\n // const cellSpec = context.getCellStyle?.(row!, column, index);\n // if (!Utilities.IsNil(cellSpec)) cellStyle = `${cellStyle} ${cellSpec}`;\n // }\n // computedCellStyle = cellStyle\n // ? `${computedCellStyle} ${cellStyle}`\n // : computedCellStyle;\n\n // return computedCellStyle.trim();\n return context.getCellStyle?.(row!, column!,index!, maxIndex!, hasAggregates!) ?? '';\n }\n\n case 'column': {\n return context.getColumnStyle?.(row!, column!) ?? '';\n }\n\n case 'header': {\n return context.getHeaderStyle?.(column);\n }\n\n case 'alternating': {\n return context.getAlternatingStyle(index,maxIndex, hasAggregates,row) ?? '';\n }\n\n case 'rowstate': {\n return context.getRowStateStyle?.(row!);\n }\n\n default:\n return '';\n }\n }\n}\n","import { Utilities } from '@dflat-core/web/core';\nimport {\n AggregateFunction,\n AggregationValue,\n ColumnDescriptor,\n EntityViewModel,\n FilterRow,\n PagedList,\n PropertyEditorEvent\n} from '@dflat-core/web/core-model';\n\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n forwardRef,\n HostListener,\n Input,\n NgZone,\n OnInit,\n QueryList,\n Renderer2,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { SelectionType } from '@swimlane/ngx-datatable';\nimport { Guid } from 'guid-typescript';\n\nimport { AggregateDefinition, AggregateRequest } from '../../models/aggregation-model';\nimport { EntityFacade } from '../../models/entity-facade';\nimport { EntityFacadeRegistryService } from '../../services/entity-facade-registry.service';\nimport { EntityUpdater } from '../../models/utilities/entity-updater';\nimport { RowRegistry } from '../../models/utilities/row-registry';\nimport { SelectionStyler } from '../../models/utilities/selection-styler';\nimport { ValidationService } from '../../services/validation.service';\nimport {\n combineLatest,\n debounceTime,\n filter,\n map,\n Observable,\n shareReplay,\n Subject,\n switchMap,\n take,\n takeUntil\n} from 'rxjs';\nimport { DatagridCellComponent } from '../../../components/datagrid-custom/datagrid-cell/datagrid-cell.component';\nimport { DatagridOptions } from '../../../model/datagrid';\nimport { ImageService } from '../../../services/image.service';\nimport { RowRefDirective, RowRefHost } from '../../directives/row-ref.directive';\n\n@Component({\n selector: 'alg-data-grid',\n templateUrl: './data-grid.component.html',\n styleUrls: ['./data-grid.component.scss'],\n standalone: false,\n // viewProviders : avec @Host(), les directives du template ne voient que les viewProviders du composant hôte.\n viewProviders: [{ provide: RowRefHost, useExisting: forwardRef(() => DataGridComponent) }],\n // changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class DataGridComponent<TData extends EntityViewModel>\n implements OnInit, AfterViewInit {\n constructor(\n private elRef: ElementRef,\n private renderer: Renderer2,\n private imageService: ImageService,\n private cd: ChangeDetectorRef,\n private ngZone: NgZone,\n protected entityFacadeRegistryService: EntityFacadeRegistryService,\n public validationService: ValidationService,\n ) {\n // this.bsConfig.containerClass = 'theme-blue';\n // this.bsConfig.dateInputFormat = 'L';\n // this.bsConfig.showWeekNumbers = true;\n }\n\n @Input('datagridClass') datagridClass: string = 'datagrid-custom-container';\n @ViewChildren('rowRef') rowRefs!: QueryList<ElementRef>;\n @ViewChildren('thHeader') thHeaders: QueryList<ElementRef>;\n @ViewChildren('lastColumnHeader') lastColumnHeader: QueryList<ElementRef>;\n @ViewChildren('lastColumnFilter') lastColumnFilter: QueryList<ElementRef>;\n\n @ViewChild('datagridContainer') datagridContainer!: ElementRef<HTMLElement>;\n\n public data: PagedList<TData> = {\n TotalRowCount: 0,\n Values: [],\n };\n\n private options: Partial<DatagridOptions> = {\n columnMode: 'force',\n dataTableClass: 'dflat-datatable',\n footerHeight: 0,\n headerHeight: 'unset',\n selectionType: SelectionType.multi,\n rowHeight: 25,\n scrollbarH: true,\n scrollbarV: false,\n };\n\n @ViewChildren('dataGridCellComponent')\n dataGridCells: QueryList<DatagridCellComponent<TData>>;\n @ContentChild(DatagridCellComponent) cell: DatagridCellComponent<TData>;\n\n @Input() entityKey!: string;\n @Input() guid: Guid;\n\n get cellFocus(): boolean { return this.facade?.config?.cellFocus ?? false; }\n facade: EntityFacade<TData>;\n rowRegistry = new RowRegistry();\n private destroy$ = new Subject<void>();\n protected selectionStyler: SelectionStyler<TData>;\n private viewReady$: Observable<boolean>;\n private entityUpdater: EntityUpdater<TData>;\n\n @ViewChildren(RowRefDirective, { read: ElementRef })\n rowDirectives!: QueryList<ElementRef>;\n\n private columns: ColumnDescriptor[] = [];\n\n ngOnInit() {\n if (Utilities.IsNil(this.guid))\n this.guid = Guid.create();\n \n this.facade = this.entityFacadeRegistryService.getFacade<TData>(\n this.entityKey,\n this.guid\n );\n\n this.selectionStyler = new SelectionStyler<TData>(\n this.renderer,\n this.rowRegistry\n );\n\n this.entityUpdater = new EntityUpdater<TData>(\n this.facade.selection,\n this.data\n );\n\n this.facade.selection.setSelectionType(this.options.selectionType);\n\n this.bindColumns();\n }\n\n private bindData() {\n this.facade.data.data$.subscribe(res => {\n this.data = res as PagedList<TData>;\n this.facade.selection.setCurrentData(res.Values);\n this.rowRegistry.setExpectedCount(this.data?.Values?.length ?? 0);\n\n // aggregations\n this._aggregates = res?.Aggregates;\n if(!Utilities.IsNil(res?.Aggregates))\n this.hasAggregates = Object.keys(this._aggregates).length > 0;\n this.buildColumnAggregates();\n\n });\n\n this.facade.data.mutations$\n .pipe(takeUntil(this.destroy$))\n .subscribe(mutation => {\n this.data.Values.unshift(mutation);\n this.facade.selection.setCurrentData(this.data.Values);\n });\n\n this.facade.data.originalDataChange$\n .pipe(takeUntil(this.destroy$))\n .subscribe(item => {\n if (!item) return;\n\n const index = this.data.Values.findIndex(r => r.Id === item.Id);\n if (index === -1) return;\n\n this.data.Values[index] = item;\n this.facade.selection.setCurrentData(this.data.Values);\n });\n }\n\n ngAfterViewInit() {\n this.initViewReady();\n this.bindData();\n this.bindSelection();\n this.bindRowRendering();\n this.bindStyleUpdates();\n }\n\n private initViewReady() {\n this.viewReady$ = combineLatest([\n this.rowRegistry.ready$.pipe(filter(Boolean)),\n this.ngZone.onStable.pipe(take(1))\n ]).pipe(\n map(() => true),\n shareReplay(1)\n );\n }\n\n\n\n private bindColumns() {\n this.facade.config.columns$\n .pipe(takeUntil(this.destroy$))\n .subscribe(cols => {\n this.columns = cols\n console.log(cols);\n });\n }\n\n private bindSelection() {\n this.facade.selection.selected$\n .pipe(\n switchMap(items => this.viewReady$.pipe(take(1), map(() => items))),\n takeUntil(this.destroy$)\n )\n .subscribe(sel => {\n this.selectionStyler.applySelected(sel, this.guid.toString());\n });\n }\n\n private bindRowRendering() {\n this.rowDirectives.changes\n .pipe(\n debounceTime(0),\n switchMap(() => this.viewReady$.pipe(take(1))),\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n this.selectionStyler.applySelected(\n this.facade.selection.Selected,\n this.guid.toString()\n );\n });\n }\n\n private bindStyleUpdates() {\n this.facade.change.getStyleUpdated$()\n .pipe(\n filter(x => !Utilities.IsNil(x) && x.length > 0),\n takeUntil(this.destroy$)\n )\n .subscribe(updatedItems => {\n this.entityUpdater.applyUpdates(updatedItems);\n\n updatedItems.forEach(u =>\n this.selectionStyler.updateRowState(u, this.guid.toString())\n );\n\n this.cd.markForCheck();\n });\n }\n\n onRowMouseDown(row: TData, event: MouseEvent) {\n // Prevent text selection when shift-clicking\n event.preventDefault();\n }\n\n onRowMouseUp(row: TData, event: MouseEvent) {\n // Nothing here for now (reserved for drag-selection if needed)\n }\n\n onRowClick(row: TData, event: MouseEvent) {\n if (event.ctrlKey) {\n return this.facade.selection.toggle(row);\n }\n if (event.shiftKey) {\n return this.facade.selection.selectRange(row);\n }\n return this.facade.selection.select([row]);\n }\n\n patchUpdatedItems(updatedItems: TData[]) {\n updatedItems.forEach((elt) => {\n const idx = this.data.Values.findIndex((t) => elt.Id === t.Id);\n this.data.Values[idx] = elt;\n });\n }\n\n updateData(updatedItems: TData[]) {\n updatedItems.forEach((update) => {\n const item = this.data.Values.find((t) => t.Id === update.Id);\n if (item) Object.assign(item, update); // no structural change\n });\n }\n\n private applySelectionSafe(sel: TData[]) {\n if (!this.rowRegistry.isReady()) {\n queueMicrotask(() => this.applySelectionSafe(sel));\n return;\n }\n this.selectionStyler.applySelected(sel, this.guid.toString());\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n sortHeaderClick(property?: string): void {\n if (!property) return;\n this.facade.filter.setSorting(property as keyof TData);\n }\n\n isUndefined(val: any) {\n return Utilities.IsNil(val);\n }\n\n getEnumImageUrl(row: TData, column: ColumnDescriptor): string {\n return this.imageService.getEnumImageUrlForGrid(row, column);\n }\n\n getImageUrl(row: TData, column: ColumnDescriptor): string {\n return row[column.Property];\n }\n\n private getNextEditableColumn(fromIndex: number, entity: TData): ColumnDescriptor {\n for (let i = fromIndex + 1; i < this.columns.length; i++) {\n if (this.facade.editor.enableEdit(this.columns[i].Property, entity)) return this.columns[i];\n }\n return null;\n }\n\n private getPrevEditableColumn(fromIndex: number, entity: TData): ColumnDescriptor {\n for (let i = fromIndex - 1; i >= 0; i--) {\n if (this.facade.editor.enableEdit(this.columns[i].Property, entity)) return this.columns[i];\n }\n return null;\n }\n\n private getFirstEditableColumn(entity: TData): ColumnDescriptor {\n return this.columns.find((c) => this.facade.editor.enableEdit(c.Property, entity));\n }\n\n private getLastEditableColumn(entity: TData): ColumnDescriptor {\n for (let i = this.columns.length - 1; i >= 0; i--) {\n if (this.facade.editor.enableEdit(this.columns[i].Property, entity)) return this.columns[i];\n }\n return null;\n }\n\n private getNextEditableRow(fromIndex: number): TData {\n for (let i = fromIndex + 1; i < this.data.Values.length; i++) {\n if (this.data.Values[i].IsEditable) return this.data.Values[i];\n }\n return null;\n }\n\n private getPrevEditableRow(fromIndex: number): TData {\n for (let i = fromIndex - 1; i >= 0; i--) {\n if (this.data.Values[i].IsEditable) return this.data.Values[i];\n }\n return null;\n }\n\n private moveToCell(currentCell: DatagridCellComponent<TData>, targetColumn: ColumnDescriptor, targetRow: TData) {\n const rowChanged = targetRow.Id !== currentCell.entity.Id;\n\n this.emitOnEnter(currentCell);\n\n if (rowChanged) {\n this.updateSelected(targetRow.Id);\n currentCell.toViewMode(true);\n const targetCell = this.dataGridCells.find(\n (x) => x.property == targetColumn.Property && x.entity.Id == targetRow.Id\n );\n if (!Utilities.IsNil(targetCell)) targetCell.toEditMode();\n } else {\n const targetCell = this.dataGridCells.find(\n (x) => x.property == targetColumn.Property && x.entity.Id == targetRow.Id\n );\n if (!Utilities.IsNil(targetCell)) targetCell.toEditMode();\n currentCell.toViewMode(true);\n }\n }\n\n onKeyDown(event: KeyboardEvent) {\n const columns = this.columns;\n if (event.defaultPrevented) return;\n let _currentCell = this.dataGridCells.find((x) => x.mode === 'edit');\n let _currentRowIndex = this.data.Values.indexOf(_currentCell.entity);\n let _currentColumnIndex = columns\n .map((x) => x.Property)\n .indexOf(_currentCell.property);\n\n switch (event.key) {\n case 'Tab': {\n if (event.shiftKey) {\n const prevColumn = this.getPrevEditableColumn(_currentColumnIndex, _currentCell.entity);\n if (!Utilities.IsNil(prevColumn)) {\n this.moveToCell(_currentCell, prevColumn, _currentCell.entity);\n break;\n }\n\n const prevRow = this.getPrevEditableRow(_currentRowIndex);\n if (!Utilities.IsNil(prevRow)) {\n const lastColumn = this.getLastEditableColumn(prevRow);\n if (!Utilities.IsNil(lastColumn)) {\n this.moveToCell(_currentCell, lastColumn, prevRow);\n }\n }\n break;\n }\n\n const nextColumn = this.getNextEditableColumn(_currentColumnIndex, _currentCell.entity);\n if (!Utilities.IsNil(nextColumn)) {\n this.moveToCell(_currentCell, nextColumn, _currentCell.entity);\n break;\n }\n\n const nextRow = this.getNextEditableRow(_currentRowIndex);\n if (!Utilities.IsNil(nextRow)) {\n const firstColumn = this.getFirstEditableColumn(nextRow);\n if (!Utilities.IsNil(firstColumn)) {\n this.moveToCell(_currentCell, firstColumn, nextRow);\n }\n }\n break;\n }\n\n case 'Enter': {\n const nextColumn = this.getNextEditableColumn(_currentColumnIndex, _currentCell.entity);\n if (!Utilities.IsNil(nextColumn)) {\n this.moveToCell(_currentCell, nextColumn, _currentCell.entity);\n break;\n }\n\n const nextRow = this.getNextEditableRow(_currentRowIndex);\n if (!Utilities.IsNil(nextRow)) {\n const firstColumn = this.getFirstEditableColumn(nextRow);\n if (!Utilities.IsNil(firstColumn)) {\n this.moveToCell(_currentCell, firstColumn, nextRow);\n }\n }\n break;\n }\n case 'ArrowUp': {\n let _newRowIndex = _currentRowIndex;\n let _newRow = this.data.Values[_newRowIndex];\n\n do {\n let temp = this.data.Values[_newRowIndex - 1];\n this.data.Values.find((x) => x.IsEditable);\n if (!Utilities.IsNil(temp) && temp.IsEditable) {\n _newRow = temp;\n break;\n }\n _newRowIndex -= 1;\n } while (_newRowIndex > 0);\n\n if (_newRow.Id != _currentCell.entity.Id) {\n this.emitOnEnter(_currentCell);\n this.updateSelected(_newRow.Id);\n _currentCell.toViewMode(true);\n\n var _targetCell = this.dataGridCells.find(\n (x) =>\n x.property == _currentCell.property &&\n x.entity.Id == _newRow.Id\n );\n if (!Utilities.IsNil(_targetCell)) _targetCell.toEditMode();\n }\n break;\n }\n case 'ArrowDown': {\n let _newRowIndex = _currentRowIndex;\n let _newRow = this.data.Values[_newRowIndex];\n do {\n let temp = this.data.Values[_newRowIndex + 1];\n if (!Utilities.IsNil(temp) && temp.IsEditable) {\n _newRow = temp;\n break;\n }\n _newRowIndex += 1;\n } while (_newRowIndex < this.data.Values.length);\n\n if (_newRow.Id != _currentCell.entity.Id) {\n this.emitOnEnter(_currentCell);\n this.updateSelected(_newRow.Id);\n _currentCell.toViewMode(true);\n var _targetCell = this.dataGridCells.find(\n (x) =>\n x.entity.Id == _newRow.Id &&\n x.property == _currentCell.property\n );\n if (!Utilities.IsNil(_targetCell)) _targetCell.toEditMode();\n }\n break;\n }\n\n case 'l': {\n if (event.ctrlKey) {\n this.dataGridCells\n .filter((x) => x.entity.Id == _currentCell.entity.Id)\n .forEach((x) => x.toEditMode());\n }\n break;\n }\n case 'Escape': {\n this.emitOnEnter(_currentCell);\n this.dataGridCells\n .filter((x) => x.mode == 'edit')\n .forEach((cell) => cell.toViewMode(true));\n break;\n }\n default:\n return;\n }\n event.preventDefault();\n }\n\n updateSelected(id: number) {\n // this.facade.selection.clear();\n let row = this.data.Values.find((t) => t.Id === id);\n this.facade.selection.select([row]);\n }\n\n private rowForms = new Map<any, FormGroup>();\n\n getRowForm(row: any): FormGroup {\n if (!this.rowForms.has(row)) {\n const form = new FormGroup({});\n\n this.columns.forEach(col => {\n const field = this.facade.editor.getField(col.Property);\n const validators = this.validationService.getFieldValidators(field) ?? [];\n form.addControl(col.Property, new FormControl(row[col.Property], validators));\n });\n\n this.rowForms.set(row, form);\n }\n\n return this.rowForms.get(row)!;\n }\n\n\n emitOnEnter(currentCell: DatagridCellComponent<TData>) {\n if (Utilities.IsNil(currentCell) || Utilities.IsNil(currentCell.entity))\n return;\n\n const res: PropertyEditorEvent = {\n field: this.facade.editor.getField(currentCell.property),\n value: currentCell.entity[currentCell.property],\n type: 'value',\n };\n this.facade.change.updateSelected(res);\n }\n\n updateEntity(event, prop) {\n // let currentCell = this.dataGridCells.find((x) => x.entity.Id == event.Id && x.property == prop);\n // if (this.isUndefined(currentCell))\n // return;\n\n // if (this.isUndefined(currentCell.entity[currentCell.property]))\n // return;\n\n // const res: PropertyEditorEvent = {\n // // field: currentCell.property,\n // field: this.facade.editor.getField(currentCell.property),\n // value: currentCell.entity[currentCell.property],\n // type: 'value',\n // };\n\n // this.facade.change.updateSelected(res);\n }\n\n toggleDetail(row: TData) {\n // Effect pour ouvrir/fermer un dossier\n let tr = document.getElementById(row.Id + '_detail');\n let button = document.getElementById(row.Id + '_button');\n let dv = document.getElementById(row.Id + '_detail_div');\n\n // Afficher / masquer les sous dossiers\n if (tr.className.includes('toggleable-show')) {\n // Hide\n this.renderer.removeClass(tr, 'toggleable-show');\n this.renderer.removeClass(button, 'toggle-button-down');\n this.renderer.removeClass(dv, 'detail-div-show');\n } else {\n // Show\n this.renderer.addClass(tr, 'toggleable-show');\n this.renderer.addClass(button, 'toggle-button-down');\n this.renderer.addClass(dv, 'detail-div-show');\n }\n }\n\n addFilterQuery() {\n this.facade.filter.addNewQuery();\n }\n removeFilterQuery(index: number) {\n this.facade.filter.removeQueryAtIndex(index);\n }\n\n handleFilterChanged(event: any, filterRow: FilterRow, propertyName?: string) {\n\n\n\n }\n validateFilterChanged(event: any, filterRow: FilterRow, propertyName?: string) {\n this.facade.filter.applyAdditionalQuery();\n }\n\n contextMenuVisible = false;\n contextMenuPosition = { x: 0, y: 0 };\n selectedCell: DatagridCellComponent<TData> = null;\n openContextMenu(event: MouseEvent, cell: DatagridCellComponent<TData>) {\n event.preventDefault();\n this.contextMenuPosition = { x: event.clientX, y: event.clientY };\n this.selectedCell = cell;\n this.contextMenuVisible = true;\n }\n copyValue() {\n let value = this.getSelectedValue()\n navigator.clipboard.writeText(value);\n this.contextMenuVisible = false;\n }\n editValue() {\n var _targetCell = this.dataGridCells.find((x) => (x.entity.Id == this.selectedCell.entity.Id) && (x.property == this.selectedCell.property));\n if (!Utilities.IsNil(_targetCell))\n _targetCell.toEditMode();\n this.contextMenuVisible = false;\n }\n\n\n @HostListener('document:click')\n closeContextMenu() {\n this.contextMenuVisible = false;\n }\n getSelectedValue(): any {\n let valueToCopy = this.selectedCell.entity[this.selectedCell.property];\n if (typeof valueToCopy === 'string' && valueToCopy.startsWith('\"') && valueToCopy.endsWith('\"')) {\n valueToCopy = valueToCopy.slice(1, -1);\n }\n return valueToCopy;\n }\n searchValue() {\n let value = this.getSelectedValue();\n this.facade.filter.setKeyword(value);\n this.contextMenuVisible = false;\n }\n\n _aggregates: AggregationValue[] = [];\n hasAggregates = false;\n columnAggregates: Record<string, any[]> = {};\n activeAggregations: Record<string, string> = {};\n\n clearAggregation() {\n \n if (!this.selectedCell?.property) return;\n\n delete this.activeAggregations[this.selectedCell.property];\n\n this.applyAggregations();\n this.contextMenuVisible = false;\n }\n\n private buildColumnAggregates() {\n\n this.columnAggregates = {};\n\n if (!this._aggregates?.length)\n return;\n\n for (const agg of this._aggregates) {\n\n if (!agg.Key) continue;\n\n const parts = agg.Key.split('_');\n if (parts.length < 2) continue;\n\n const op = parts[0];\n const property = parts.slice(1).join('_');\n\n if (!this.columnAggregates[property])\n this.columnAggregates[property] = [];\n\n this.columnAggregates[property].push({\n op,\n value: agg.Value\n });\n }\n }\n\n setAggregation(op: string) {\n\n if (!this.selectedCell?.property) return;\n\n this.activeAggregations[this.selectedCell.property] = op.toUpperCase();\n\n this.applyAggregations();\n\n this.contextMenuVisible = false;\n }\n getColCurrency(column: ColumnDescriptor): string {\n \n if (column.Display?.currency) return column.Display.currency;\n\n const row = this.facade.selection.Selected[0];\n if (row && column.Display?.sourceProperty && row[column.Display.sourceProperty]) {\n return row[column.Display.sourceProperty];\n }\n\n return 'EUR';\n }\n\n private applyAggregations() {\n const aggregates: AggregateDefinition[] = [];\n\n Object.keys(this.activeAggregations).forEach(property => {\n const op = this.activeAggregations[property];\n \n aggregates.push({\n Field: property,\n Function: this.mapToEnum(op)\n });\n });\n\n const request: AggregateRequest = aggregates.length > 0\n ? { Aggregates: aggregates }\n : undefined;\n\n this.facade.filter.setAggregateClause(request);\n }\n\n private mapToEnum(op: string): AggregateFunction {\n\n switch (op.toUpperCase()) {\n case 'SUM': return AggregateFunction.Sum;\n case 'AVG': return AggregateFunction.Avg;\n case 'MIN': return AggregateFunction.Min;\n case 'MAX': return AggregateFunction.Max;\n case 'COUNT': return AggregateFunction.Count;\n default:\n throw new Error(`Unsupported aggregation operator: ${op}`);\n }\n }\n}\n\n","<div #datagridContainer [class]=\"this.datagridClass\">\r\n <ng-container>\r\n <table class=\"data-grid-datatable\">\r\n <ng-container *ngIf=\"this.facade.style as ctx\">\r\n <ng-container *ngIf=\"this.facade.config.columns$ | async as rcolumns\">\r\n <thead>\r\n <tr>\r\n <th class=\"header row-state\" (click)=\"addFilterQuery()\"></th>\r\n <th #thHeader *ngFor=\"let col of rcolumns;let i = index\"\r\n [attr.id]=\"guid.toString() + '-col-' + col.Property\"\r\n (click)=\"sortHeaderClick(col.Property)\"\r\n [ngClass]=\"{ sorting: this.facade.filter.isSorting(col.Property),\r\n sorting_asc: this.facade.filter.isAsc(col.Property),\r\n sorting_desc: this.facade.filter.isDesc(col.Property)}\"\r\n [attr.class]=\"'header' | gridStyle : ctx : { column : col }\">\r\n <label>{{ col.Name }}</label>\r\n </th>\r\n <th *ngIf=\"ctx.enableLastColumnResize\" #lastColumnHeader class=\"header last-column\"></th>\r\n\r\n </tr>\r\n <ng-container *ngIf=\"this.facade.filter.additionalQuery$ | async as additionalQuery\">\r\n <tr #thFilterRows *ngFor=\"let filterRow of additionalQuery.Rows;let i = index\" >\r\n <th class=\"filter-header row-state\" (click)=\"removeFilterQuery(i)\"></th>\r\n <th class=\"filter-header\" [ngClass]=\"{disabled: !col.IsFilterEnabled}\" *ngFor=\"let col of rcolumns;let i = index\"\r\n [attr.id]=\"guid.toString() + '-filter-' + i\">\r\n <input *ngIf=\"col.IsFilterEnabled\" type=\"text\"\r\n class=\"filter-header-input\"\r\n name=\"keyword\"\r\n #uniquename=\"ngModel\"\r\n [attr.id]=\"guid.toString() + '-filter-input-' + col.Property\"\r\n [(ngModel)]=\"filterRow.ClausesByPropertyName.get(col.Property).FilterValue\"\r\n (ngModelChange)=\"handleFilterChanged($event, filterRow, col.Property)\"\r\n (change)=\"validateFilterChanged($event, filterRow, col.Property)\"\r\n />\r\n </th>\r\n <ng-container>\r\n <th #lastColumnFilter class=\"filter-header last-column\"></th>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </thead>\r\n\r\n <tbody>\r\n <ng-container *ngIf=\"this.facade.data\">\r\n <ng-container *ngFor=\"let row of this.data.Values; let r = index;\">\r\n <tr\r\n [attr.class]=\"'alternating' | gridStyle : ctx : { row : row, index : r, maxIndex : this.data.Values.length, hasAggregates: hasAggregates }\"\r\n [attr.id]=\"guid.toString() + '-row-' + row.Id\"\r\n (mousedown)=\"onRowMouseDown(row, $event)\"\r\n (mouseup)=\"onRowMouseUp(row, $event)\"\r\n (click)=\"onRowClick(row, $event)\"\r\n\r\n [rowRef]=\"guid + '-row-' + row.Id\"\r\n >\r\n\r\n <th [attr.class]=\"'rowstate' | gridStyle : ctx : { row : row }\">\r\n <ng-container *ngIf=\"selectionStyler.isModified(row) && !selectionStyler.isInvalid(row) && !selectionStyler.isWarning(row)\">\r\n <div class=\"new-rowstate\"><span>...</span></div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectionStyler.isInvalid(row)\">\r\n <div> <img class=\"error-row-icon\" src=\"assets/images/error.svg\" /> </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectionStyler.isWarning(row) && !selectionStyler.isInvalid(row)\">\r\n <div> <img class=\"error-row-icon\" src=\"assets/images/warning.svg\" /> </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"ctx.displayDetail\">\r\n <button type=\"button\" [attr.id]=\"row.Id + '_button'\" class=\"toggle-button btn\" (click)=\"toggleDetail(row)\">\r\n <i class=\"fa fa-chevron-right fa-custom\"></i>\r\n </button>\r\n </ng-container>\r\n </th>\r\n\r\n <td *ngFor=\"let column of rcolumns; index as i\"\r\n [attr.class]=\"'cell' | gridStyle : ctx : { row : row,column : column,index : r }\">\r\n\r\n <alg-datagrid-cell #dataGridCellComponent\r\n class=\"gridcell-container\"\r\n [entity]=\"row\"\r\n [isEditable]=\"ctx.canEditCell(row,column)\"\r\n [property]=\"column.Property\"\r\n (keydown)=\"this.onKeyDown($event)\"\r\n (update)=\"this.updateEntity($event,column.Property)\"\r\n (contextmenu)=\"openContextMenu($event, dataGridCellComponent)\">\r\n\r\n <ng-template alg-editMode>\r\n <alg-field\r\n [field]=\"facade.editor.getField(column.Property)\"\r\n [form]=\"getRowForm(row)\"\r\n [showLabel]=\"false\"\r\n (propertyChanged)=\"dataGridCellComponent.onPropertyChanged($event)\"\r\n >\r\n <!-- [focusable]=\"cellFocus\" -->\r\n </alg-field>\r\n </ng-template>\r\n <ng-template alg-viewMode>\r\n\r\n <div [ngSwitch]=\"column.Display?.type\" *ngIf=\"!isUndefined(row[column.Property])\">\r\n <div *ngSwitchCase=\"'url'\">\r\n <a [routerLink]=\"[column.Display?.baseUrl,row[column.Property]]\">\r\n {{ row.Id || row[column.Property] }}\r\n </a>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'img'\" class=\"image\">\r\n <img *ngIf=\"column.Display?.imagePath?.length == 0\"\r\n [src]=\"(column.Display?.imgBase || '') + (column.Display?.sourceProperty ? row[column.Display?.sourceProperty] : row[column.Property])\" />\r\n\r\n <alg-image *ngIf=\"column.Display?.imagePath?.length != 0\"\r\n [imageUrl]=\"this.getEnumImageUrl(row,column)\" [imageHeight]=\"20\" [imageWidth]=\"20\">\r\n </alg-image>\r\n\r\n <div class=\"tool-tip\" *ngIf=\"!isUndefined(column.ToolTipProperty)\">\r\n {{ row[column.ToolTipProperty] }}\r\n </div>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'img-file'\" class=\"image\">\r\n\r\n <alg-image\r\n [imageUrl]=\"this.getImageUrl(row,column)\" [wide]=\"true\" [imageHeight]=\"40\" [imageWidth]=\"40\">\r\n </alg-image>\r\n\r\n <div class=\"tool-tip\" *ngIf=\"!isUndefined(column.ToolTipProperty)\">\r\n {{ row[column.ToolTipProperty] }}\r\n </div>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'wide-img'\" class=\"image\">\r\n <img *ngIf=\"column.Display?.imagePath?.length == 0\"\r\n [src]=\"(column.Display?.imgBase || '') + (column.Display?.sourceProperty ? row[column.Display?.sourceProperty] : row[column.Property])\" />\r\n\r\n <alg-image *ngIf=\"column.Display?.imagePath?.length != 0\" [wide]=\"true\"\r\n [imageUrl]=\"this.getEnumImageUrl(row,column)\" [imageHeight]=\"40\" [imageWidth]=\"40\">\r\n </alg-image>\r\n\r\n <div class=\"tool-tip\" *ngIf=\"!isUndefined(column.ToolTipProperty)\">\r\n {{ row[column.ToolTipProperty] }}\r\n </div>\r\n </div>\r\n\r\n <span *ngSwitchCase=\"'date'\">\r\n {{row[column.Property]| date: column.Display?.format || 'dd/MM/yyyy'}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'boolean'\">{{row[column.Property] ? 'OUI' : 'NON'}} </span>\r\n\r\n <span *ngSwitchCase=\"'datetime'\">{{row[column.Property] | date: column.Display?.format || 'dd/MM/yyyy HH:mm:ss'}}</span>\r\n\r\n <span *ngSwitchCase=\"'money'\"\r\n [class.red]=\"!row[column.Property] && column.Display?.handleError\"\r\n class=\"money\">\r\n {{\r\n row[column.Property]\r\n | currency: column.Display?.currency\r\n || (column.Display?.sourceProperty && row[column.Display?.sourceProperty] ? row[column.Display?.sourceProperty] : false)\r\n || 'EUR' : 'symbol'\r\n\r\n | todefine: column.Display?.handleError\r\n }}\r\n\r\n <div class=\"tool-tip\" *ngIf=\"ctx.showOnToolTip(row,column)\">\r\n {{ctx.showOnToolTip(row,column)}}\r\n </div>\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'percent'\"\r\n [class.red]=\"!row[column.Property] && column.Display?.handleError\">\r\n {{row[column.Property] * column.Display?.multiplier | percent : column.Display?.format\r\n || '1.0-2' | todefine: column.Display?.handleError}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'number'\"\r\n [class.red]=\"!row[column.Property] && column.Display?.handleError\">\r\n {{row[column.Property] * column.Display?.multiplier | number: column.Display?.format\r\n || '1.0-3' | todefine : column.Display?.handleError}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'fixedsizeinteger'\"\r\n [class.red]=\"!row[column.Property] && column.Display?.handleError\">\r\n {{row[column.Property] | tofixedsizeinteger : column.Display?.completingCaracter : column.Display?.width }}\r\n </span>\r\n <span *ngSwitchDefault [innerText]=\"column.Property == 'Id' ? (row[column.Property] < 0 ? '' : row[column.Property]) : row[column.Property]\">\r\n </span>\r\n </div>\r\n\r\n <div *ngIf=\"isUndefined(row[column.Property])\">\r\n <span *ngIf=\"!isUndefined(column.Display?.nullCaseText)\" class=\"mw-invalid\">\r\n {{ column.Display?.nullCaseText }}\r\n </span>\r\n\r\n <span *ngIf=\"isUndefined(column.Display?.nullCaseText)\">\r\n \r\n </span>\r\n </div>\r\n\r\n </ng-template>\r\n\r\n </alg-datagrid-cell>\r\n </td>\r\n <ng-container *ngIf=\"ctx.enableLastColumnResize\">\r\n <td></td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n\r\n <tfoot>\r\n <tr class=\"empty-row\" *ngIf=\"hasAggregates\">\r\n <td></td>\r\n </tr>\r\n <tr class=\"aggregation-row\" *ngIf=\"hasAggregates\">\r\n <td class=\"row-state\"></td>\r\n <td *ngFor=\"let column of rcolumns; index as i\" [attr.class]=\"'cell' | gridStyle : ctx : { column : column, index : i }\">\r\n\r\n <ng-container *ngFor=\"let agg of columnAggregates[column.Property]\">\r\n\r\n <span [ngSwitch]=\"column.Display?.type\">\r\n\r\n <span *ngSwitchCase=\"'money'\" class=\"money\">\r\n {{ agg.value | currency: getColCurrency(column) }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'date'\">\r\n {{agg.value | date: column.Display?.format || 'dd/MM/yyyy'}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'datetime'\">\r\n {{agg.value | date: column.Display?.format || 'dd/MM/yyyy HH:mm:ss'}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'number'\">\r\n {{agg.value | number: column.Display?.format || '1.0-3'}}\r\n </span>\r\n\r\n <span *ngSwitchDefault>\r\n {{agg.value}}\r\n </span>\r\n\r\n </span>\r\n\r\n </ng-container>\r\n\r\n </td>\r\n\r\n <ng-container *ngIf=\"ctx.enableLastColumnResize\">\r\n <td class=\"last-column\"></td>\r\n </ng-container>\r\n\r\n </tr>\r\n </tfoot>\r\n </ng-container>\r\n </ng-container>\r\n </table>\r\n </ng-container>\r\n</div>\r\n\r\n\r\n<div class=\"context-menu\"\r\n [ngStyle]=\"{ top: contextMenuPosition.y + 'px', left: contextMenuPosition.x + 'px' }\"\r\n *ngIf=\"contextMenuVisible\">\r\n <ul>\r\n <li (click)=\"copyValue()\">Copier</li>\r\n <li (click)=\"editValue()\">Modifier</li>\r\n <li (click)=\"searchValue()\" [title]=\"'Rechercher ' + getSelectedValue()\">\r\n Rechercher {{ this.getSelectedValue() }}\r\n </li>\r\n\r\n <li class=\"separator\"></li>\r\n\r\n <li (click)=\"setAggregation('SUM')\">Somme</li>\r\n <li (click)=\"setAggregation('AVG')\">Moyenne</li>\r\n <li (click)=\"setAggregation('COUNT')\">Count</li>\r\n <li (click)=\"setAggregation('MIN')\">Min</li>\r\n <li (click)=\"setAggregation('MAX')\">Max</li>\r\n <li (click)=\"clearAggregation()\">Supprimer agrégation</li>\r\n </ul>\r\n</div>\r\n","import { EntityViewModel, PagedList } from '@dflat-core/web/core-model';\n\nimport { AfterViewInit, ChangeDetectorRef, Component, Input, NgZone, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { SelectionType } from '@swimlane/ngx-datatable';\nimport { Guid } from 'guid-typescript';\nimport { isNil } from 'lodash-es';\nimport { combineLatest, Subject } from 'rxjs';\nimport { filter, map, switchMap, take, takeUntil } from 'rxjs/operators';\nimport { EntityFacade } from '../../models/entity-facade';\nimport { RowRegistry } from '../../models/utilities/row-registry';\nimport { SelectionStyler } from '../../models/utilities/selection-styler';\nimport { EntityFacadeRegistryService } from '../../services/entity-facade-registry.service';\n\n@Component({\n selector: 'alg-list-display',\n templateUrl: './data-list.component.html',\n styleUrls: ['./data-list.component.scss'],\n standalone: false,\n})\nexport class DataListComponent<TData extends EntityViewModel>\n implements OnInit, AfterViewInit, OnDestroy\n{\n @Input() entityKey!: string;\n @Input() guid: Guid;\n data!: PagedList<TData>;\n rowRegistry = new RowRegistry();\n destroy$ = new Subject<void>();\n private selectionStyler!: SelectionStyler<TData>;\n\n constructor(\n private entityFacadeRegistryService: EntityFacadeRegistryService,\n // private rowRegistry: any,\n private cd: ChangeDetectorRef,\n private ngZone: NgZone,\n private renderer: Renderer2\n ) {}\n\n facade: EntityFacade<TData>;\n\n ngOnInit() {\n this.facade = this.entityFacadeRegistryService.getFacade<TData>(\n this.entityKey,\n this.guid\n );\n this.selectionStyler = new SelectionStyler<TData>(\n this.renderer,\n this.rowRegistry\n );\n\n this.facade.change.getStyleUpdated$()\n .pipe(filter(x => !isNil(x) && x.length > 0), takeUntil(this.destroy$))\n .subscribe(updatedItems => {\n updatedItems.forEach(u => this.selectionStyler.updateRowState(u, 'list-display'));\n this.cd.markForCheck();\n });\n\n this.facade.change.getPropertyChanged$()\n .pipe(filter(x => !isNil(x) && !isNil(x.field)), takeUntil(this.destroy$))\n .subscribe(fv => {\n const selected = this.facade.selection.getSelected();\n selected.forEach(s => { s[fv.field.PropertyName] = fv.value; });\n this.cd.markForCheck();\n });\n\n this.facade.data.data$\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n this.data = res as PagedList<TData>;\n this.facade.selection.setCurrentData(res.Values);\n this.facade.selection.setSelectionType(SelectionType.single);\n this.rowRegistry.setExpectedCount(this.data?.Values?.length ?? 0);\n this.cd.markForCheck();\n });\n // this.facade.config.columns$\n // .pipe(takeUntil(this.destroy$))\n // .subscribe(cols => {\n // this.columns = cols;\n // });\n }\n\n // protected columns: ColumnDescriptor[] = [];\n\n ngAfterViewInit() {\n const viewReady$ = combineLatest([\n this.rowRegistry.ready$.pipe(filter((r: boolean) => r === true)),\n this.ngZone.onStable.pipe(take(1))\n ]).pipe(map(() => true));\n\n this.facade.selection.selected$\n .pipe(\n switchMap((items: TData[]) => viewReady$.pipe(take(1), map(() => items))),\n takeUntil(this.destroy$)\n )\n .subscribe((sel) => {\n this.selectionStyler.applySelected(sel, 'list-display');\n });\n }\n\n onRowClick(item: TData) {\n this.facade.selection.select([item]);\n this.cd.markForCheck();\n }\n\n isSelected(item: TData): boolean {\n return this.facade.selection\n .getSelected()\n ?.some((s: TData) => s.Id === item.Id);\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div class=\"list-container\">\r\n <ng-container *ngIf=\"this.facade.style as ctx\">\r\n\r\n <ng-container *ngIf=\"this.facade.config.columns$ | async as rcolumns\">\r\n <ng-container\r\n class=\"list-item\"\r\n *ngFor=\"let item of data?.Values; let i = index\"\r\n [class.selected]=\"isSelected(item)\"\r\n (click)=\"onRowClick(item)\"\r\n >\r\n <ng-container\r\n class=\"list-item\"\r\n *ngFor=\"let col of rcolumns; let r = index\"\r\n >\r\n <ng-content select=\"[itemTemplate]\"></ng-content>\r\n <ng-template alg-viewMode>\r\n <alg-cell-renderer\r\n [row]=\"item\"\r\n [column]=\"col\"\r\n [context]=\"ctx\"\r\n >\r\n </alg-cell-renderer>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <!-- <span>{{ item }}</span> -->\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n","import { Component, Input, ContentChild, TemplateRef } from \"@angular/core\";\r\nimport { TabHeadingDirective } from \"../../../directives/tab-heading\";\r\n\r\n@Component({\r\n selector: 'alg-editor-tab',\r\n template: `<ng-content *ngIf=\"active\"></ng-content>`,\r\n standalone: false\r\n})\r\nexport class EditorTabComponent {\r\n\r\n @Input() title!: string;\r\n @Input() active = false;\r\n @Input() disabled = false;\r\n @Input() hidden = false;\r\n @Input() iconUrl : string = 'assets/images/pencil.svg';\r\n @ContentChild(TabHeadingDirective, { static: false })\r\n heading?: TabHeadingDirective;\r\n\r\n @ContentChild(TemplateRef, { static: false })\r\n contentTemplate?: TemplateRef<any>;\r\n\r\n get headingTemplate(): TemplateRef<any> | null {\r\n return this.heading?.templateRef ?? null;\r\n }\r\n}\r\n","import { Component, ContentChildren, Input, QueryList } from '@angular/core';\r\nimport { EditorTabComponent } from '../editor-tab/editor-tab.component';\r\nimport type { SectionContext } from '../../models/contexts/section-context';\r\n\r\n@Component({\r\n selector: \"alg-editor-tabset\",\r\n templateUrl: \"./editor-tabset.component.html\",\r\n styleUrls: [\"./editor-tabset.component.scss\"],\r\n standalone: false\r\n})\r\nexport class EditorTabSetComponent {\r\n\r\n constructor(\r\n ) { }\r\n\r\n @Input() sectionContext!: SectionContext<any>;\r\n @Input() showNavs: boolean = false;\r\n @Input() pills: boolean = false;\r\n @Input() isVertical: boolean = false;\r\n\r\n @ContentChildren(EditorTabComponent) tabs!: QueryList<EditorTabComponent>;\r\n\r\n activate(tab: EditorTabComponent) {\r\n this.tabs.forEach(t => t.active = false);\r\n tab.active = true;\r\n }\r\n\r\n onTabClick(tabIndex: number){\r\n if(!this.tabs.toArray()[tabIndex].active)\r\n this.sectionContext.changeActiveSection(tabIndex);\r\n }\r\n\r\n activateByIndex(realIndex: number){\r\n this.tabs.forEach(t => (t.active = false));\r\n const tab : EditorTabComponent = this.tabs.toArray()[realIndex];\r\n if (tab && !tab.hidden) {\r\n tab.active = true;\r\n }\r\n }\r\n\r\n\r\n getNavClass() {\r\n let rc = 'nav';\r\n if (!this.showNavs && this.tabs.length == 1)\r\n rc += ' nav-none';\r\n else if (!this.pills)\r\n rc += ' nav-tabs';\r\n else\r\n rc += ' nav-pills';\r\n\r\n if (this.isVertical)\r\n rc += ' vertical-layout'\r\n\r\n return rc;\r\n }\r\n\r\n}\r\n","<!-- <div class=\"tabset nav-tabs-custom\">\r\n <div *ngFor=\"let tab of visibleTabs; let i = index\" class=\"tab-item\">\r\n\r\n <div\r\n class=\"tab-header\"\r\n [class.active]=\"tab.active\"\r\n (click)=\"onTabClick(i)\"\r\n >\r\n <button class=\"tab-btn\" [disabled]=\"tab.disabled\">\r\n <span [algTabTransclude]=\"tab.headingTemplate\">\r\n {{ tab.title }}\r\n </span>\r\n </button>\r\n </div>\r\n\r\n <div class=\"tab-content\" *ngIf=\"tab.active\">\r\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\r\n </div>\r\n\r\n </div>\r\n</div> -->\r\n\r\n<div class=\"tabset nav-tabs-custom\">\r\n <ul [ngClass]=\"getNavClass()\">\r\n <li role=\"presentation\" *ngFor=\"let tab of tabs;let i = index\" \r\n [class.active]=\"tab.active\" \r\n [class.hidden]=\"tab.hidden\">\r\n \r\n <a (click)=\"onTabClick(i)\" \r\n class=\"btn\" \r\n [class.disabled]=\"tab.disabled\" \r\n [class.btn-img]=\"tab.iconUrl\">\r\n <alg-image *ngIf=\"tab.iconUrl && tab.title\" [imageUrl]=\"tab.iconUrl\" [imageHeight]=\"15\" [imageWidth]=\"15\">\r\n </alg-image>\r\n <img *ngIf=\"!tab.title\" [src]=\"tab.iconUrl\" class=\"tabset-img\"/>\r\n <span *ngIf=\"tab.title\" [algTabTransclude]=\"tab.headingTemplate\">{{tab.title}}</span>\r\n </a>\r\n </li>\r\n </ul>\r\n <div class=\"tabset-content\" [class.empty-nav]=\"!this.showNavs && this.tabs.length == 1\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { Utilities } from '@dflat-core/web/core';\nimport {\n EntityViewModel,\n FilterDescriptor,\n FilterType,\n IFilterDescriptorExtra\n} from '@dflat-core/web/core-model';\nimport { Component, Input } from '@angular/core';\nimport { Guid } from 'guid-typescript';\nimport * as _ from 'lodash';\nimport { combineLatest, Subject, takeUntil } from 'rxjs';\nimport { EntityFacade } from '../../models/entity-facade';\nimport { FormWrapper } from '../../models/utilities/form-wrapper';\nimport { EntityFacadeRegistryService } from '../../services/entity-facade-registry.service';\nimport { PropertyChangeBus } from '../../services/property-change-bus.service';\nimport { ValidationService } from '../../services/validation.service';\n\n@Component({\n selector: 'alg-filter-summary-panel',\n templateUrl: './filter-summary.component.html',\n styleUrls: ['./filter-summary.component.scss'],\n standalone: false,\n})\nexport class FilterSummaryPanelComponent {\n\n @Input() entityKey!: string;\n @Input() guid: Guid;\n\n filterList: Array<IFilterDescriptorExtra> = [];\n\n isEmptyFilter(): boolean {\n return this.filterList.length == 0;\n }\n\n constructor(\n private validationService: ValidationService,\n private bus: PropertyChangeBus,\n private entityFacadeRegistryService: EntityFacadeRegistryService\n ) { }\n\n facade: EntityFacade<EntityViewModel>;\n protected wrapper: FormWrapper;\n ngOnInit(): void {\n this.facade = this.entityFacadeRegistryService.getFacade<EntityViewModel>(this.entityKey, this.guid);\n this.wrapper = new FormWrapper(this.validationService, this.bus, false);\n\n combineLatest([\n this.facade.criteria$,\n this.facade.config.filterDescriptors$\n ])\n .pipe(takeUntil(this.destroy$))\n .subscribe(([vm, fields]) => {\n const filters = fields.filter(x => x.PropertyName != 'Keywords' && x.PropertyName != 'Id');\n this.Fields = filters;\n this.currentCriteria = vm;\n this.wrapper.initialize(filters);\n this.wrapper.hookFormEntity(vm);\n this.updateSummary();\n });\n }\n\n filterType = FilterType;\n Fields: FilterDescriptor[] = [];\n DisplayFields = this.Fields;\n private currentCriteria: any = null;\n private destroy$ = new Subject<void>();\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n updateSummary() {\n const descriptors = this.Fields;\n if (descriptors) {\n this.filterList.splice(0, this.filterList.length);\n descriptors.forEach((field) => {\n this.updateFieldSummary(field);\n });\n }\n }\n\n updateFieldSummary(field: FilterDescriptor) {\n const displayedVal = this.getFilterSummaryValue(field);\n if (displayedVal !== null && displayedVal !== undefined) {\n this.filterList.push({ DisplayedValue: displayedVal, Field: field } as IFilterDescriptorExtra);\n }\n }\n\n getFilterSummaryValue(field: FilterDescriptor) {\n if (!field) return null;\n\n const fv = this.currentCriteria != null\n ? this.currentCriteria[field.PropertyName]\n : this.wrapper.form.get(field.PropertyName)?.value;\n\n if (Utilities.IsNil(fv) || fv === -1 || parseInt(fv) === -1 || Utilities.isEmptyString(fv))\n return;\n\n let displayedValue: string | null = null;\n\n if (field.FilterType === FilterType.ComboBox) {\n if (!Utilities.IsUndefined(field.OriginalData)) {\n const fld = field.OriginalData.find((p: any) => p[field.ValueMember] == fv);\n if (fld && fld.hasOwnProperty(field.DisplayMember)) {\n displayedValue = `${fld[field.DisplayMember]}`;\n }\n }\n } else if (field.FilterType === FilterType.String || field.FilterType === FilterType.Integer) {\n displayedValue = `${fv}`;\n } else {\n return null;\n }\n\n return displayedValue;\n }\n\n resetFormControl(field: FilterDescriptor) {\n if (!field.IsClearable) return;\n\n const currentValue = this.currentCriteria != null\n ? this.currentCriteria[field.PropertyName]\n : this.wrapper.form.get(field.PropertyName)?.value;\n\n if (Utilities.IsNil(currentValue) || currentValue === -1 || Utilities.isEmptyString(currentValue))\n return;\n\n let newValue: any;\n if (field.FilterType === FilterType.ComboBox) {\n newValue = field.Data?.find((d: any) => d[field.ValueMember] === -1) ? -1 : null;\n } else if (field.FilterType === FilterType.String) {\n newValue = '';\n } else {\n return;\n }\n\n this.wrapper.form.get(field.PropertyName).reset(newValue, { emitEvent: false });\n this.facade.filter.setFilter(this.wrapper.form.getRawValue());\n }\n\n resetFieldData(field: FilterDescriptor) {\n const fv = this.wrapper.form.get(field.PropertyName).value;\n field.Data = field.OriginalData.filter((p) => p[field.ValueMember] === -1 ||\n _.every(Object.keys(field.CurrentFilters), (name) => {\n return p[name] === fv;\n }));\n }\n\n}\n","<!-- <div class=\"clearfix\" *ngIf=\"!isEmptyFilter()\">\r\n <div class=\"filter-summary\">\r\n <div class=\"filter\" [formGroup]=\"wrapper.form\">\r\n <ng-container *ngIf=\"filterList\">\r\n \r\n <div *ngFor=\"let field of Fields\" class=\"option\">\r\n <div [ngSwitch]=\"field.FilterType\">\r\n <div *ngSwitchCase=\"filterType.String\" class=\"form-group\">\r\n <input\r\n class=\"form-control\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n [type]=\"field.InputType\"\r\n />\r\n </div>\r\n <div\r\n *ngSwitchCase=\"filterType.Integer\"\r\n class=\"form-group\"\r\n >\r\n <div>\r\n <input\r\n class=\"form-control\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n type=\"number\"\r\n focusable\r\n ng-pattern=\"/^[0-9]+$/\"\r\n tabindex=\"0\"\r\n />\r\n </div>\r\n <div *ngSwitchCase=\"filterType.ComboBox\" class=\"form-group\">\r\n <div>\r\n <ng-select\r\n appendTo=\"body\"\r\n placeholder=\"Sélectionner {{\r\n field.Label\r\n }}\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [items]=\"field.Data\"\r\n [multiple]=\"field.MultipleSelection\"\r\n [hideSelected]=\"field.HideSelected\"\r\n bindValue=\"{{ field.ValueMember }}\"\r\n [clearable]=\"field.IsClearable\"\r\n bindLabel=\"{{ field.DisplayMember }}\"\r\n [selectOnTab]=\"true\"\r\n [readonly]=\"field.ReadOnly\"\r\n >\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div> -->\r\n\r\n\r\n<div class=\"clearfix\" *ngIf=\"!isEmptyFilter()\">\r\n <div class=\"filter-summary\">\r\n <div class=\"filter\">\r\n <ng-container *ngIf=\"filterList\">\r\n <div *ngFor=\"let field of filterList\">\r\n <div class=\"option\" [class.clearable]=\"field.Field.IsClearable\" (click)=\"resetFormControl(field.Field)\">\r\n {{field.Field.Label + ' : '+ field.DisplayedValue}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n","import { EntityViewModel, EntityViewModelWithFields } from \"@dflat-core/web/core-model\";\nimport { EntityFacadeRegistryService } from \"./entity-facade-registry.service\";\nimport { Injectable } from \"@angular/core\";\nimport { Guid } from \"guid-typescript\";\nimport { Observable, filter, shareReplay, map, combineLatest, of, switchMap, merge } from \"rxjs\";\n\n\n@Injectable()\nexport class ViewModelLoaderService<TData extends EntityViewModel> {\n\n constructor(\n private facades: EntityFacadeRegistryService\n ) {}\n\n getViewModel$(\n entityKey: string,\n guid: Guid,\n isStandalone: boolean = true,\n id?: string | number\n ): Observable<EntityViewModelWithFields<TData>> {\n\n const facade = this.facades.getFacade<TData>(entityKey, guid);\n\n // Base configuration (FieldSections + skeleton ViewModel)\n const config$ = facade.config.viewModel$.pipe(\n filter(vm => !!vm?.FieldSections?.length),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n\n // ---------- CASE 1: Standalone NEW -----------------------\n if (isStandalone && (!id || id === '0')) {\n return config$.pipe(\n map(cfg => this.createNew(cfg)),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n }\n \n // ---------- CASE 2: Standalone EDIT (id provided) ----------\n if (isStandalone && id && id !== '0') {\n\n const selected$ = facade.selection.getSelectedById$(id as number);\n // const selected = facade.selection.getSelected();\n // if(!selected || !(selected.length > 0) ) {\n const apiViewModel$ = facade.config.getApiViewModel(id as number);\n return apiViewModel$;\n // }\n // else\n \n // return combineLatest([config$, selected$]).pipe(\n // switchMap(([cfg, selected]) => {\n\n // if (selected) {\n // // CASE A – entity already in selection context\n // return of({\n // ...cfg,\n // ViewModel: selected,\n // FieldSections: cfg.FieldSections\n // });\n // }\n\n // // CASE B – selection empty → load from API\n // return apiViewModel$\n // // .pipe(\n // // map(apiCfg => ({\n // // ...cfg,\n // // ViewModel: apiCfg.ViewModel,\n // // FieldSections: cfg.FieldSections\n // // }))\n // // );\n // }),\n // shareReplay({ bufferSize: 1, refCount: true })\n // );\n\n }\n\n // ---------- CASE 3: Right-Panel EDIT (non-standalone) ----\n // Use merge to handle both selection and cleared events\n // const selectionOrCleared$ = merge(\n // facade.selection.selected$.pipe(map(sel => ({ type: 'selected' as const, data: sel }))),\n // facade.selection.cleared$.pipe(map(() => ({ type: 'cleared' as const, data: null as any })))\n // );\n\n return combineLatest([config$, facade.selection.selected$]).pipe(\n map(([cfg, selection]) => {\n // // If selection was cleared, return config with empty ViewModel\n // if (selectionEvent.type === 'cleared') {\n // return {\n // ...cfg,\n // ViewModel: null,\n // FieldSections: cfg.FieldSections\n // };\n // }\n\n // // Otherwise, adapt the selection to the view model\n // const selected = selectionEvent.data;\n const adapted = facade.selection.adaptSelectionToViewModel(selection, cfg.FieldSections);\n return {\n ...cfg,\n ViewModel: adapted ?? cfg.ViewModel,\n FieldSections: cfg.FieldSections\n };\n }),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n }\n\n private createNew(baseVm: EntityViewModelWithFields<TData>) {\n const clone = { ...baseVm.ViewModel, Id: null };\n return {\n ...baseVm,\n ViewModel: clone,\n FieldSections: baseVm.FieldSections\n };\n }\n}\n","import { Utilities } from '@dflat-core/web/core';\nimport {\n ConditionalResults,\n CustomFieldTypes,\n EntityViewModel,\n EntityViewModelWithFields,\n ExtendedProperty,\n FieldDescriptor,\n FieldValidators,\n FilterDescriptor,\n FilterType,\n PropertyEditorEvent,\n Section\n} from '@dflat-core/web/core-model';\n\nimport {\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n ViewChild,\n ViewChildren,\n ViewContainerRef\n} from '@angular/core';\nimport {\n AbstractControl,\n FormControl,\n FormGroup\n} from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { Guid } from 'guid-typescript';\nimport * as _ from 'lodash';\nimport { ToastrService } from 'ngx-toastr';\nimport {\n Observable,\n Subject\n} from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport type { EntityFacade } from '../../models/entity-facade';\nimport { FormWrapper } from '../../models/utilities/form-wrapper';\nimport { EntityFacadeRegistryService } from '../../services/entity-facade-registry.service';\nimport { PropertyChangeBus } from '../../services/property-change-bus.service';\nimport { ValidationService } from '../../services/validation.service';\nimport { ViewModelLoaderService } from '../../services/view-model-loader.service';\nimport { EditorTabSetComponent } from '../editor-tabset/editor-tabset.component';\n\n@Component({\n selector: 'alg-property-editor',\n templateUrl: './property-editor.component.html',\n styleUrls: ['./property-editor.component.scss', '../actions-panel/action-panel.component.scss'],\n standalone: false,\n})\nexport class PropertyEditorComponent<TData extends EntityViewModel> implements OnInit, OnDestroy {\n @Input() validateAfterEachChange: boolean = true;\n @Input() entityKey!: string;\n @Input() guid: Guid;\n @Input() searchText: string = \"Rechercher une propriété...\";\n @Input() readonly: boolean = false;\n keyword: string;\n\n handleKeywordsChanged(event: any) {\n //this.facade.filter.setKeyword(event);\n }\n\n isFieldHidden(field: FieldDescriptor): boolean {\n return !(Utilities.IsNil(this.keyword) || field.Label.toUpperCase().includes(this.keyword.toUpperCase()));\n }\n\n isSectionHidden(section: Section): boolean {\n //return false;\n return !(Utilities.IsNil(this.keyword)\n || section.Name.toUpperCase().includes(this.keyword.toUpperCase())\n || section.FieldViewModels.some(f => !this.isFieldHidden(f)));\n }\n\n iconUrl: string;\n private fileChange$ = new Subject<PropertyEditorEvent>();\n private selectorChange$ = new Subject<PropertyEditorEvent>();\n private buttonClick$ = new Subject<PropertyEditorEvent>();\n\n viewModel$!: Observable<EntityViewModelWithFields<TData>>;\n allowValidation: boolean = false;\n ViewModel: EntityViewModelWithFields<TData>;\n propertyForm: FormGroup;\n filterTypes = FilterType;\n submitted = false;\n\n constructor(\n public elementRef: ElementRef,\n private toastrService: ToastrService,\n private validationService: ValidationService,\n private vmLoader: ViewModelLoaderService<TData>,\n private entityFacadeRegistryService: EntityFacadeRegistryService,\n private route: ActivatedRoute,\n private bus : PropertyChangeBus\n ) {\n this.iconUrl = 'pencil.svg';\n // this.bus.events$.pipe(takeUntil(this.destroy$))\n // .subscribe(evt => this.onPropertyChanged(evt));\n }\n\n get Fields(): FieldDescriptor[] {\n return (this.ViewModel?.FieldSections ?? [])\n .map(s => s.FieldViewModels)\n .reduce((a, b) => [...a, ...b], []);\n }\n\n facade: EntityFacade<TData>;\n //////////////////////////////////////////////////////////////////////////////\n // #region Hooks \n\n private hooked = false;\n destroy$ = new Subject<void>();\n protected wrapper: FormWrapper;\n \n ngOnInit() {\n this.facade = this.entityFacadeRegistryService.getFacade<TData>(this.entityKey, this.guid);\n\n const isStandalone = this.facade.editor.isStandaloneMode$.value;\n const id = this.route.snapshot.params['id'] ?? null;\n\n this.facade.config.viewModel$.pipe(takeUntil(this.destroy$)).subscribe((cfgVm) => {\n this.ViewModel = cfgVm as EntityViewModelWithFields<TData>;\n this.facade.sections.setViewModel(cfgVm);\n this.initForm(true);\n // this.hookFormControls();\n });\n \n this.viewModel$ = this.vmLoader.getViewModel$(this.entityKey, this.guid, isStandalone, id);\n this.viewModel$.pipe(takeUntil(this.destroy$))\n .subscribe((vm) => { this.onSelectionChanged(vm); });\n\n this.facade.sections.extendedProperties$.pipe(takeUntil(this.destroy$))\n .subscribe(res => this.applyExtendedProperties(res));\n\n this.facade.editor.readOnlyMode$.pipe(takeUntil(this.destroy$))\n .subscribe(v => {\n this.facadeReadOnly = v;\n this.updateReadonlyState();\n });\n\n // Handle selection cleared - reset form and dynamic sections\n this.facade.selection.cleared$.pipe(takeUntil(this.destroy$))\n .subscribe(() => this.onSelectionCleared());\n\n\n this.cascadeTrigger$.pipe(takeUntil(this.destroy$))\n .subscribe(fields => { fields.forEach(f => { \n this.alterFieldCascadeData(f);\n this.handleCascadeField(f);\n }); \n });\n\n this.facade.change.getStyleUpdated$().pipe(takeUntil(this.destroy$))\n .subscribe((entities) => { \n const entity = entities?.[0];\n if (!entity) return;\n\n this.patchFormFromEntity(entity);\n })\n }\n\n @ViewChildren('templateContainer', { read: ViewContainerRef })\n set dynamicTabsTemplates(content: QueryList<ViewContainerRef>) {\n if (content)\n this.facade.sections.registerDynamicContainers(content.toArray())\n }\n @ViewChild('tabs')\n set tabs(content: EditorTabSetComponent) {\n if (content)\n this.facade.sections.registerTabset(content);\n }\n\n private initForm(withValidators: boolean = false) {\n if (!this.propertyForm) {\n this.propertyForm = new FormGroup({});\n }\n this.Fields.forEach(field => {\n const validators = withValidators ? this.validationService.getFieldValidators(field) : [];\n const controlExists = this.propertyForm.contains(field.PropertyName);\n if (!controlExists) {\n const ctrl = new FormControl(null, validators);\n this.propertyForm.addControl(field.PropertyName, ctrl);\n } else {\n const ctrl = this.propertyForm.get(field.PropertyName);\n ctrl.setValidators(validators);\n ctrl.updateValueAndValidity({ emitEvent: false });\n }\n });\n\n\n this.facade.change.setForm(this.propertyForm);\n }\n\n private patchFormFromEntity(entity: EntityViewModel) {\n if (!this.propertyForm) return;\n this.propertyForm.patchValue(entity, {emitEvent : false});\n }\n\n /**\n * Handles selection cleared event\n * Resets form values and validators\n */\n private onSelectionCleared() {\n if (this.propertyForm) {\n this.propertyForm.reset();\n this.propertyForm.clearValidators();\n }\n }\n\n private cascadeTrigger$ = new Subject<FieldDescriptor[]>();\n triggerCascade(fields: FieldDescriptor[]) {\n this.cascadeTrigger$.next(fields);\n }\n\n private alterFieldCascadeData(field: FilterDescriptor) {\n\n if (Utilities.IsNil(field.CascadeDependency) || !field.CascadeDependency)\n return;\n \n if (!field.Data || field.Data.length == 0)\n return;\n \n if(field.OriginalData && field.OriginalData.length > 0)\n return;\n \n field.OriginalData = Object.assign([], field.Data);\n \n\n if (field.FilterDistinct) {\n field.Data = _.uniqBy(field.OriginalData, field.PropertyName);\n }\n }\n\n private onSelectionChanged(vm?: EntityViewModelWithFields<TData>) {\n if (!vm || !vm.ViewModel) {\n // Form is already cleared by onSelectionCleared()\n return;\n }\n\n this.ViewModel = vm;\n this.patchFormFromEntity(vm.ViewModel);\n this.applyLoadedExtendedProperties(vm.ViewModel);\n this.entityReadonly = ! Utilities.IsNil(vm.ViewModel['IsEditable']) && ! vm.ViewModel.IsEditable;\n this.updateReadonlyState();\n\n this.updateFields();\n this.updateValidation();\n if (!this.hooked) {\n this.hooked = true;\n }\n }\n\n private facadeReadOnly = false;\n private entityReadonly = false;\n private updateReadonlyState() {\n this.readonly = this.facadeReadOnly || this.entityReadonly;\n }\n\n private updateValidation() {\n this.Fields.forEach(field => {\n const ctrl = this.propertyForm.get(field.PropertyName);\n if (ctrl) {\n if (field.FilterType == FilterType.RadioButton || field.FilterType === FilterType.Custom || field.FilterType === FilterType.Date) {\n if (field.ReadOnly)\n ctrl.disable();\n else\n ctrl.enable();\n }\n ctrl.updateValueAndValidity({ emitEvent: false });\n }\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n this.facade.reset();\n }\n\n // #endregion\n //////////////////////////////////////////////////////////////////////////////\n\n fileEvent(e: Event, field: FieldDescriptor) {\n const file = (e.target as HTMLInputElement).files[0];\n this.fileChange$.next({\n field,\n value: file,\n type: 'file',\n });\n }\n\n onClick(field: FieldDescriptor) {\n this.buttonClick$.next({\n field,\n value: this.propertyForm.get(field.PropertyName).value,\n type: 'button',\n });\n }\n\n inputSelectorChanged(event: any, field: FieldDescriptor) {\n this.selectorChange$.next({\n field,\n value: event?.Id,\n type: 'selector',\n });\n }\n\n onPropertyChanged(event: PropertyEditorEvent) {\n \n event.field['isValid'] = this.propertyForm.valid;\n this.updateFields(event.field);\n this.handleCascadeField(event.field);\n\n const isStandAlone = this.facade.editor.isStandaloneMode$.value;\n if (isStandAlone) {\n this.facade.change.updateEntity(this.ViewModel.ViewModel, event);\n }\n else\n switch (event.type) {\n case 'pending':\n this.facade.change.markPendingChange(event);\n break;\n case 'button':\n this.facade.change.emitButtonClicked(event);\n break;\n // case 'selector':\n // this.facade.change.emitInputSelectorChanged(event);\n // break;\n default:\n this.facade.change.updateSelected(event);\n break;\n }\n }\n\n getFormattedValue(p: ExtendedProperty): any {\n if (p.FieldType == CustomFieldTypes.Checkbox) {\n const v = String(p.Value).toLowerCase();\n return v === 'true' || v === '1';\n }\n return p.Value;\n }\n\n //////////////////////////////////////////////////////////////////////////////\n // #region Form properties\n\n hasSelection() {\n return this.facade.selection.hasSelection();\n }\n\n resetFieldData(field: FilterDescriptor) {\n if (Utilities.IsNil(field.OriginalData))\n return;\n\n field.Data = field.OriginalData.filter(p => p[field.ValueMember] === -1\n || _.every(Object.keys(field.CurrentFilters),\n (name) => { return p[name] === this.propertyForm.get(name).value; }));\n }\n\n updateFields(field?: FilterDescriptor) {\n if (Utilities.IsNil(field)) {\n this.Fields.forEach((f) => {\n this.updateFields(f);\n });\n } else {\n if (field.IsConditioning) \n this.handleConditionalField(field);\n\n if (field.CascadeDependency === true && field.CascadeDependencyProperty)\n this.handleCascadeField(field);\n }\n }\n\n handleCascadeField(field: FilterDescriptor) {\n\n if (Utilities.IsNil(this.ViewModel.ViewModel)) return;\n if (!field.CascadeDependency || !field.CascadeDependencyProperty) return;\n let ctrl: AbstractControl = this.propertyForm.controls[field.PropertyName];\n if (Utilities.IsUndefined(ctrl) && Utilities.IsNil(field)) return;\n\n let val = this.propertyForm.get(field.PropertyName).getRawValue();\n let selectedValue = field.FilterType === FilterType.Integer\n ? Number(val)\n : val;\n\n let props = field.CascadeDependencyProperty.split(\";\");\n props.forEach(prop => {\n\n let dependingField = this.Fields.find(f => f.PropertyName === prop );\n if (!dependingField) return;\n\n if (!dependingField.OriginalData && dependingField.Data?.length) {\n dependingField.OriginalData = [...dependingField.Data];\n }\n\n dependingField.CurrentFilters = dependingField.CurrentFilters || {};\n\n if (Utilities.IsNil(selectedValue) || Utilities.isEmptyString(selectedValue))\n delete dependingField.CurrentFilters[field.PropertyName];\n // this.resetFieldData(dependingField);\n else\n dependingField.CurrentFilters[field.PropertyName] = true;\n\n dependingField.Data = [...(dependingField.OriginalData ?? [])];\n this.resetFieldData(dependingField);\n\n if (field.FilterDistinct) {\n dependingField.Data = _.uniqBy(dependingField.Data, dependingField.PropertyName);\n }\n\n });\n }\n\n handleConditionalField(conditionningField: FilterDescriptor) {\n const conditioningProperty = conditionningField.PropertyName;\n var conditionedFields = this.Fields.filter((_field) => _field.IsConditional && (_field.ConditioningField == conditioningProperty));\n if(!(conditionedFields.length > 0))\n return;\n const conditioningValue = this.propertyForm.get(conditioningProperty).value;\n for (let conditionedField of conditionedFields) {\n \n const conditionAccomplished = \n (!Utilities.IsNil(conditionedField.ConditioningFieldValue) \n && conditionedField.ConditioningFieldValue.filter(c => c === conditioningValue)?.length>0) \n || (Utilities.IsNil(conditioningValue) && !conditionedField.BoolConditioningFieldValue) \n || (conditionedField.BoolConditioningFieldValue === conditioningValue);\n \n if ( conditionedField.ConditionalResult == ConditionalResults.Hide )\n conditionedField.IsHidden = conditionAccomplished \n \n else if ( conditionedField.ConditionalResult == ConditionalResults.ReadOnly )\n conditionedField.ReadOnly = conditionAccomplished\n\n\n\n const control = this.propertyForm.controls[conditionedField.PropertyName];\n if (control) {\n if (conditionedField.IsHidden) {\n control.clearValidators();\n }\n else {\n this.addValidators(control as FormControl, conditionedField.FieldValidators);\n }\n\n if (this.validateAfterEachChange) {\n control.updateValueAndValidity({ emitEvent: false });\n }\n }\n }\n }\n\n addValidators(control: FormControl, validators: FieldValidators) {\n const validatorFns = this.validationService.getValidators(validators);\n control.setValidators(validatorFns);\n }\n\n // #endregion\n //////////////////////////////////////////////////////////////////////////////\n\n\n //////////////////////////////////////////////////////////////////////////////\n //#region Style icons\n showInformation(field: FieldDescriptor): boolean {\n return (\n !Utilities.IsNil(field.Description) &&\n field.Description.length > 0\n );\n }\n\n icon = 'circle-info-solid';\n getInfoIcon() {\n return `/assets/images/circle-info.svg`;\n }\n\n getRequiredIcon() {\n return `/assets/images/star-of-life-solid.svg`;\n }\n\n onInfoClick(field: FieldDescriptor) {\n // this.toast_class_override = {...this.toast_class_override2,toastClass : 'background-color :var(--main-bg-color) !important;color:black;'};\n this.toastrService.info(field.Description.replace('\\n', '<br>'), 'Information');\n }\n\n //#endregion\n /////////////////////////////////////////////////////////////////////////////\n\n\n //////////////////////////////////////////////////////////////////////////////\n //#region Section\n //////////////////////////////////////////////////////////////////////////////\n\n isLoadingExtended: boolean = false;\n private applyLoadedExtendedProperties(entity: EntityViewModel) {\n const props: ExtendedProperty[] = entity?.['ExtendedProperties'];\n if (!props?.length) return;\n\n for (const p of props) {\n if (Utilities.IsNil(p.Value)) continue;\n const value = this.getFormattedValue(p);\n entity[p.PropertyName] = value;\n const control = this.propertyForm.get(p.PropertyName);\n if (control) {\n control.setValue(value, { emitEvent: false });\n control.updateValueAndValidity({ emitEvent: false });\n }\n }\n }\n\n applyExtendedProperties(loadedProperties: ExtendedProperty[]) {\n const selected = this.facade.selection.Selected;\n const selectedCount = selected?.length || 0;\n\n this.isLoadingExtended = true;\n\n const grouped = new Map<string, ExtendedProperty[]>();\n for (const p of loadedProperties) {\n if (!grouped.has(p.PropertyName))\n grouped.set(p.PropertyName, []);\n grouped.get(p.PropertyName)!.push(p);\n }\n\n grouped.forEach((props, propName) => {\n const firstFormatted = this.getFormattedValue(props[0]);\n const isConsistent = props.length === selectedCount\n && props.every(p => this.getFormattedValue(p) === firstFormatted);\n\n const finalValue = isConsistent ? firstFormatted : null;\n this.ViewModel.ViewModel[propName] = finalValue;\n const control = this.propertyForm.get(propName);\n if (control) {\n control.setValue(finalValue, { emitEvent: false });\n control.updateValueAndValidity({ emitEvent: false });\n }\n });\n\n this.isLoadingExtended = false;\n }\n\n //#endregion\n //////////////////////////////////////////////////////////////////////////////\n}\n\n","<form class=\"propertyGridform\">\r\n <ng-container *ngIf=\"this.viewModel$ | async as vm\">\r\n <alg-editor-tabset #tabs class=\"property-grid-tabset\" [sectionContext]=\"facade.sections\">\r\n <alg-editor-tab [active]=\"1 == 1\">\r\n <div [attr.id]=\"'content-0'\" class=\"property-grid-tab\">\r\n <div class=\"property-container\">\r\n <ng-container *ngIf=\"propertyForm\">\r\n <ng-container\r\n *ngFor=\" let section of vm.FieldSections;let i = index\">\r\n <div class=\"property-section-container\"\r\n [hidden]=\"this.isSectionHidden(section)\">\r\n <div class=\"property-section-title\">\r\n {{ section.Name }}\r\n </div>\r\n\r\n <div class=\"property-section-content\">\r\n <ng-container\r\n *ngFor=\"let field of section.FieldViewModels;let j = index\">\r\n <!-- [class.property-row-center]=\"field.FilterType ==filterTypes.CheckBox\" -->\r\n <div class=\"property-row\"\r\n [hidden]=\"field.IsHidden ||this.isFieldHidden(field)\">\r\n <alg-field\r\n [field]=\"field\"\r\n [form]=\"propertyForm\"\r\n (propertyChanged)=\"onPropertyChanged($event)\"\r\n [readonly]=\"this.readonly\"\r\n >\r\n <!-- [readonly]=\"this.readonly\" -->\r\n </alg-field>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </alg-editor-tab>\r\n <ng-container *ngIf=\"facade.sections.sections$ | async as dynamicSections\">\r\n <ng-container *ngFor=\"let section of dynamicSections; let x = index\">\r\n <alg-editor-tab \r\n [title]=\"section.Name\" \r\n [active]=\"false\"\r\n [iconUrl]=\"section.IconUrl\"\r\n [hidden]=\"!section.IsVisible\">\r\n <ng-template #templateContainer></ng-template>\r\n </alg-editor-tab>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </alg-editor-tabset>\r\n </ng-container>\r\n</form>\r\n","import { Utilities } from '@dflat-core/web/core';\nimport {\n CustomFieldTypes,\n EntityConfig,\n EntityViewModel,\n EntityViewModelWithFields,\n ExtendedProperty,\n Notification,\n} from '@dflat-core/web/core-model';\n\nimport {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Guid } from 'guid-typescript';\nimport moment from 'moment';\n\nimport { BehaviorSubject, Observable, Subject, Subscription } from 'rxjs';\nimport { IIsCancel, IActionComponent, FieldDescriptorWithValue, Action } from '../../../model/model';\nimport { ApplicationService } from '../../../services/application.service';\nimport type { EntityFacade } from '../../models/entity-facade';\nimport type { PropertyEditorComponent } from '../property-editor/property-editor-component';\n\n@Component({\n selector: 'alg-editor',\n templateUrl: './new-editor.component.html',\n styleUrls: ['./new-editor.component.scss'],\n standalone: false,\n})\nexport class NewEditorComponent<TData extends EntityViewModel>\n implements OnInit, OnDestroy, IIsCancel, IActionComponent\n{\n constructor(\n protected app: ApplicationService,\n protected route: ActivatedRoute\n ) {}\n\n @Input() saveButtonLabel: string = 'Sauvegarder';\n @Input() IsTheMainComponent: boolean = true;\n @Input() showButtons: boolean = false;\n @Input() showBreadCrumb: boolean = false;\n @Input() entityKey!: string;\n @Input() guid: Guid;\n\n @ViewChild('propertyGridComponent')\n propertyEditorComponent!: PropertyEditorComponent<TData>;\n\n entityViewModel: EntityViewModelWithFields<TData> = {};\n actions: Action[];\n public dirty: boolean = false;\n public isCancel: boolean = false;\n loadEntityViewModelOnInit: boolean = true;\n enableNavigationHandler: boolean = true;\n id: any;\n public forceSaveButton: boolean = false;\n originalEntity: TData = null;\n loadedEntityViewModel: boolean = false;\n modified: TData[] = [];\n // editorContext!: EditorContext;\n\n facade: EntityFacade<TData>;\n\n notif: Subscription;\n private routeChangedSubscription: Subscription;\n extendedPropertiesLoaded: EventEmitter<any> = new EventEmitter();\n onClosedDialog: Subject<NewEditorComponent<TData>> = new Subject<\n NewEditorComponent<TData>\n >();\n public entityViewModelSubject =\n new BehaviorSubject<EntityViewModelWithFields<TData> | null>(null);\n config$ = new Observable<EntityConfig>(null);\n viewModel$!: Observable<EntityViewModelWithFields<EntityViewModel>>;\n private destroy$ = new Subject<void>();\n @Output() propertyChanged: EventEmitter<FieldDescriptorWithValue> =\n new EventEmitter();\n\n getEntityKey(): string {\n return this.entityKey;\n }\n\n public getTitle(withId: boolean): string {\n return '';\n }\n\n getPath(withId: boolean): string {\n return '';\n }\n\n getIcon(): string {\n return 'product-hunt';\n }\n\n ngOnInit(): void {\n moment.locale('fr');\n\n this.id = this.route.snapshot.params['id'];\n\n // this.editorContext = this.app.EditorContextService.getContext(this.getEntityKey());\n // this.guid=this.guid??Guid.create();\n this.facade = this.app.EntityFacadeRegistryService.getFacade<TData>(\n this.getEntityKey(), this.guid\n );\n if (!this.IsTheMainComponent || !Utilities.IsNil(this.id))\n this.facade.editor.setStandaloneMode(true);\n\n if (this.id > 0) {\n this.unsubscribeEntityNotification();\n this.subscribeEntityNotification();\n }\n\n this.facade.editor.isDirty$.subscribe((isDirty) => {\n this.dirty = isDirty;\n });\n }\n\n ngOnDestroy() {\n if (this.routeChangedSubscription) {\n this.routeChangedSubscription.unsubscribe();\n }\n if (this.IsTheMainComponent) {\n this.app.BreadcrumbService.clear();\n }\n this.unsubscribeEntityNotification();\n this.onClosedDialog.complete();\n this.destroy$.next();\n }\n\n subscribeEntityNotification() {\n this.notif = this.app.MQService.of(\n `${Utilities.GetChannel(this.getEntityKey())}-${this.id}`\n ).subscribe((n) => {\n this.onNotificationHandled(n);\n });\n }\n\n unsubscribeEntityNotification() {\n if (this.notif) {\n this.notif.unsubscribe();\n }\n }\n\n onNotificationHandled(notif: Notification) {}\n handleActionSearchKeywords(keyword: string) {}\n toggleFilterView(): void {}\n refresh(): void {}\n showHistory(): void {}\n\n //#region Change\n\n //#endregion\n\n OnLoadingComplete(entity: EntityViewModelWithFields<TData>) {\n this.loadedEntityViewModel = true;\n this.entityViewModelSubject.next(entity);\n }\n\n handleOriginalEntityChanged($event) {\n this.dirty = true;\n }\n\n // _isSaveDisabled : boolean = false;\n // isSaveDisabled() : boolean {\n // const s = this.facade.editor.isDirty$.value;\n // if(s!=this._isSaveDisabled){\n // console.log('isDisabled changed:',s)\n // this._isSaveDisabled = s;\n // }\n // return this._isSaveDisabled;\n // }\n\n handleDialogButtonClick(quit: boolean) {\n if (quit) return this.onCancel();\n\n // if (this.facade.editor.isDirty$.value) {\n this.save();\n // }\n }\n // _save(): void {\n // this.facade.actions.executeAction('save');\n // }\n save() {\n // const entity = this.propertyEditorComponent?.ViewModel?.ViewModel;\n const entity = this.facade.change.Modified?.[0];\n if (!entity) return;\n this.app.DataService.saveEntity<TData>(\n this.getEntityKey(),\n entity as TData\n ).subscribe(\n (res) => {\n if (res.Success) {\n entity.Id = res.Id;\n entity.RowVersion = res.RowVersion;\n\n this.entityViewModel.ViewModel = Object.assign({}, entity);\n\n if (this.IsTheMainComponent) this.goBack();\n else {\n this.isCancel = false;\n this.afterSave();\n }\n } else {\n if (!Utilities.IsNil(res.ErrorMessage))\n this.app.ToastrService.error(\n res.ErrorMessage,\n 'Erreur'\n );\n else\n this.app.ToastrService.error(\n 'Une erreur est survenue, merci de réessayer !',\n 'Erreur'\n );\n }\n },\n () => {},\n () => {\n this.onClosedDialog.next(this);\n }\n );\n }\n\n onCancel() {\n this.isCancel = true;\n this.onClosedDialog.next(this);\n this.goBack();\n }\n\n goBack() {\n this.facade.editor.setIsDirty(false);\n this.facade.editor.setStandaloneMode(false);\n if (this.IsTheMainComponent) {\n this.app.Location.back();\n } else this.callBackAction(this);\n }\n\n callBackAction: (component: IIsCancel) => void = () => {};\n\n afterSave() {\n this.callBackAction(this);\n }\n}\n","<div class=\"editor-container\">\r\n <div class=\"breadcrumb-panel\" *ngIf=\"(this.facade.editor.isStandaloneMode$| async)\">\r\n <alg-breadcrumb></alg-breadcrumb>\r\n </div>\r\n <!-- entityConfigLoader\r\n #configLoader=\"entityConfigLoader\"\r\n [entityKey]=\"getEntityKey()\" -->\r\n\r\n <ng-container\r\n >\r\n <div class=\"property-editor-container\" [class.show-buttons]=\"(this.facade.editor.isStandaloneMode$ | async)\">\r\n <alg-property-editor\r\n class=\"property-editor-container-inner\"\r\n #propertyGridComponent\r\n [entityKey]=\"this.getEntityKey()\"\r\n [guid]=\"this.guid\"\r\n >\r\n </alg-property-editor>\r\n </div>\r\n <div class=\"buttons-container\" *ngIf=\"(this.facade.editor.isStandaloneMode$ | async)\">\r\n <div class=\"footer-buttons\" >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-primary btn-flat\"\r\n [disabled]=\"!this.dirty\"\r\n (click)=\"handleDialogButtonClick(false)\">\r\n Sauvegarder\r\n </button>\r\n <!-- [disabled]=\"this.isSaveDisabled()\" -->\r\n <!-- [disabled]=\"this.isSaveDisabled()\" -->\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-secondary btn-flat\"\r\n (click)=\"handleDialogButtonClick(true)\">\r\n Annuler\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n","import { EntityViewModel } from '@dflat-core/web/core-model';\n\nimport { Component, Input } from '@angular/core';\nimport { Guid } from 'guid-typescript';\nimport { Subject } from 'rxjs';\nimport { EntityFacade } from '../../models/entity-facade';\nimport { EntityFacadeRegistryService } from '../../services/entity-facade-registry.service';\n\n@Component({\n selector: 'alg-new-paginator',\n templateUrl: './new-paginator.component.html',\n styleUrls: ['./new-paginator.component.scss'],\n standalone: false,\n})\nexport class NewPaginatorComponent<TData extends EntityViewModel> {\n @Input() guid: Guid;\n @Input() log: any;\n @Input() displayInfo: boolean = true;\n @Input() currentRowsPerPage: number = 25;\n public numberOfRowsPerPage: number[] = [25, 50, 100, 150, 250, 500];\n private destroy$ = new Subject<void>();\n\n selectOption(event: any) {\n this.currentRowsPerPage =\n this.numberOfRowsPerPage[event.target.options.selectedIndex];\n return this.currentRowsPerPage;\n }\n\n getImageUrl(icon: string) {\n return `/assets/images/${icon}.svg`;\n }\n\n @Input({ required: true }) entityKey!: string;\n\n protected facade: EntityFacade<TData>;\n\n constructor(private facadeService: EntityFacadeRegistryService, \n \n ) {}\n\n ngOnInit() {\n this.facade = this.facadeService.getFacade<TData>(this.entityKey, this.guid);\n\n // this.facade.sections.contextSubject$\n // .pipe(takeUntil(this.destroy$), filter(x=> x.sectionName == 'Requêtes')).subscribe( t=> {\n // this.log = t.log;\n // });\n }\n\n first() {\n this.updatePageNumber(1);\n }\n prev() {\n this.updatePageNumber(this.facade.filter.pageNumber$.value - 1);\n // // this.paging.previousPage();\n // this.facade.filter.paging$.value.previousPage();\n }\n\n next() {\n this.updatePageNumber(this.facade.filter.pageNumber$.value + 1);\n // this.facade.filter.paging$.value.nextPage();\n // this.paging.nextPage();\n }\n last() {\n this.updatePageNumber(this.facade.filter.totalPages$.value);\n // this.facade.filter.paging$.value.lastPage();\n // this.paging.lastPage();\n }\n\n updatePageNumber(page: number) {\n if (page < 1) page = 1;\n const total = this.facade.filter.totalPages$.value;\n if (page > total) page = total;\n this.facade.filter.setPage(isNaN(page) ? 1 : page);\n }\n\n onInputChange(event: any) {\n const val = Number(event.target.value);\n this.updatePageNumber(val);\n }\n\n onRowsChange(event: any) {\n const val = Number(event.target.value);\n // this.paging.updateRowsPerPage(val);\n this.facade.filter.setPageSize(val);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onAgentIdClick(item: any): void {\n\n if (item.indexOf('[') > -1) {\n let codeId: any = \"\";\n codeId = item.split(\"[\")[1].split(\"]\")[0];\n this.facade.facadeDeps.router.navigate([`edi/agentplugin/${codeId}`]);\n }\n\n }\n}\n","\r\n<div class=\"paginator-panel\">\r\n <div class=\"paginator-panel-left\">\r\n <ng-container *ngIf=\"this.log\">\r\n <table>\r\n <tr [ngClass]=\"log.class\">\r\n <!-- <td class = \"td2\">{{log.content[1]}}</td>\r\n <td *ngIf=\"log.content[2].indexOf('[') > -1\"\r\n style=\"cursor:pointer;\"\r\n (click)=\"onAgentIdClick(log.content[2])\" \r\n class = \"td3 td3over\">{{log.content[2]}}\r\n </td>\r\n <td *ngIf=\"log.content[2].indexOf('[') === -1\"\r\n style=\"cursor:text;\"\r\n (click)=\"onAgentIdClick(log.content[2])\" \r\n class = \"td3\">{{log.content[2]}}\r\n </td> -->\r\n <td class = \"td4\">{{log.content[3]}}</td>\r\n \r\n </tr>\r\n </table>\r\n </ng-container>\r\n </div>\r\n <div class=\"paginator-panel-right\">\r\n <ng-container>\r\n <button type=\"button\" class=\"btn btn-svg small action-btn\"\r\n title=\"Dernière page\"\r\n (click)=\"last()\">\r\n <img class=\"action-icon\" [src]=\"getImageUrl('step-forward')\" alt=\"Dernière page\">\r\n </button>\r\n\r\n <button type=\"button\" class=\"btn btn-svg small action-btn\"\r\n title=\"Page suivante\"\r\n (click)=\"next()\">\r\n <img class=\"action-icon\" [src]=\"getImageUrl('forward')\" alt=\"Page suivante\">\r\n </button>\r\n\r\n <!-- [ngModel]=\"p.pageNumber$.value\" -->\r\n <input class=\"pagenumber-input\" type=\"number\"\r\n [ngModel]=\"this.facade.filter.pageNumber$.value\"\r\n (change)=\"onInputChange($event)\"\r\n min=\"1\"\r\n [max]=\"this.facade.filter.totalPages$.value\" />\r\n\r\n <button type=\"button\" class=\"btn btn-svg small action-btn\"\r\n title=\"Page précédente\"\r\n (click)=\"prev()\">\r\n <img class=\"action-icon\" [src]=\"getImageUrl('backward')\" alt=\"Page précédente\">\r\n </button>\r\n\r\n <button type=\"button\" class=\"btn btn-svg small action-btn\"\r\n title=\"Première page\"\r\n (click)=\"first()\">\r\n <img class=\"action-icon\" [src]=\"getImageUrl('step-backward')\" alt=\"Première page\">\r\n </button>\r\n\r\n <div class=\"pagenumberrows\" title=\"Nombre de lignes du tableau\">\r\n <select (change)=\"onRowsChange($event)\" class=\"select\">\r\n <option *ngFor=\"let item of numberOfRowsPerPage\"\r\n [value]=\"item\"\r\n [selected]=\"item == this.facade.filter.rowsPerPage$.value\">\r\n {{item}}\r\n </option>\r\n </select>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"displayInfo\">\r\n <div class=\"total-span\">\r\n <ng-container *ngIf=\"this.facade.filter.totalPages$.value > 1\">\r\n {{this.facade.filter.totalItems$.value}} résultat(s) / {{this.facade.filter.totalPages$.value}} pages ({{ this.facade.filter.lastExecutionTime$.value }})\r\n </ng-container>\r\n <ng-container *ngIf=\"this.facade.filter.totalPages$.value <= 1\">\r\n {{this.facade.filter.totalItems$.value}} résultat(s) ({{ this.facade.filter.lastExecutionTime$.value }})\r\n </ng-container>\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","import { EntityFacade } from \"../models/entity-facade\";\r\nimport { DOCUMENT } from \"@angular/common\";\r\nimport { Directive, OnDestroy, Input, Inject, ElementRef } from \"@angular/core\";\r\nimport { Subject, fromEvent, takeUntil } from \"rxjs\";\r\n\r\n@Directive({\r\n selector: '[baseShortcuts]',\r\n exportAs : 'baseShortcuts',\r\n standalone : false\r\n})\r\nexport class BaseShortcutsDirective implements OnDestroy {\r\n\r\n @Input('facade') facade!: EntityFacade<any>;\r\n\r\n\r\n private destroy$ = new Subject<void>();\r\n isFocused: boolean;\r\n\r\n constructor(\r\n // @Inject(DOCUMENT) private document: Document,\r\n private el: ElementRef,\r\n ) {\r\n\r\n // Focus tracking\r\n fromEvent(this.el.nativeElement, 'focus')\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n // console.log('[DEBUG]' + this.facade.key + ' ==> FOCUS IN')\r\n this.isFocused = true\r\n });\r\n\r\n fromEvent(this.el.nativeElement, 'blur')\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n // console.log('[DEBUG]' + this.facade.key + ' ==> FOCUS OUT')\r\n this.isFocused = false\r\n }\r\n );\r\n\r\n\r\n fromEvent<KeyboardEvent>(this.el.nativeElement, 'keydown')\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(e => this.handleKeydown(e));\r\n }\r\n\r\n private handleKeydown(event: KeyboardEvent) {\r\n if (!this.facade || !this.isFocused || !event.ctrlKey ) return;\r\n// || !this.facade.layout.de\r\n const key = event.key.toLowerCase();\r\n\r\n switch (key) {\r\n case 's':\r\n event.preventDefault();\r\n this.execute('save');\r\n break;\r\n\r\n case 'a':\r\n event.preventDefault();\r\n this.execute('add');\r\n break;\r\n\r\n case 'r':\r\n event.preventDefault();\r\n this.execute('refresh');\r\n break;\r\n }\r\n }\r\n\r\n private execute(action: string) {\r\n if (!this.facade.actions?.hasAction(action)) \r\n return;\r\n this.facade.actions.executeAction(action, true);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","import { EntityViewModel } from '@dflat-core/web/core-model';\n\nimport {\n Component,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { Guid } from 'guid-typescript';\nimport { Subject } from 'rxjs';\nimport { ApplicationService } from '../../../services/application.service';\nimport { BaseShortcutsDirective } from '../../directives/base-shortcut.directive';\nimport { LayoutHandlerDirective } from '../../directives/layout-handler.directive';\nimport { EntityFacade } from '../../models/entity-facade';\n\n@Component({\n selector: 'alg-standard-page-layout',\n templateUrl: './standard-page-layout.component.html',\n styleUrls: ['./standard-page-layout.component.scss'],\n standalone: false,\n})\nexport class StandardPageLayoutComponent\n implements OnInit, OnDestroy {\n\n @Input() layoutKey!: string;\n @Input() entityKey!: string;\n @Input() guid: Guid;\n facade: EntityFacade<EntityViewModel>;\n\n @ViewChild(LayoutHandlerDirective)\n layoutHandlerDirective!: LayoutHandlerDirective;\n \n @ViewChild(BaseShortcutsDirective)\n baseShortcutsDirective!: BaseShortcutsDirective;\n\n @ViewChild('rightPanel')\n set rightPanelRef(ref: ElementRef<HTMLDivElement> | undefined) {\n if (ref) {\n this.layoutHandlerDirective.rightPanel = ref.nativeElement;\n this.layoutHandlerDirective.scheduleLayout();\n }\n }\n\n @ViewChild('separator')\n set separatorRef(ref: ElementRef<HTMLDivElement> | undefined) {\n if (ref) {\n this.layoutHandlerDirective._separator = ref.nativeElement;\n }\n }\n\n @ViewChild('middlePanel', { static: true })\n middlePanelRef!: ElementRef<HTMLDivElement>;\n\n constructor(\n private app: ApplicationService\n ) { }\n\n private destroy$ = new Subject<void>();\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n // Saves preferences before window closes\n @HostListener('window:beforeunload')\n onBeforeUnload() {\n this.facade?.layout?.layoutService?.saveLayoutPreferences();\n }\n\n ngOnInit() {\n this.facade = this.app.EntityFacadeRegistryService.getFacade<EntityViewModel>(this.entityKey, this.guid);\n }\n\n ngAfterViewInit(){\n this.layoutHandlerDirective.middlePanel = this.middlePanelRef.nativeElement;\n this.facade.layout.propertyPanelVisible$.subscribe(res=> {\n if(res == false)\n this.layoutHandlerDirective.hidePropertyGrid();\n if(res == true)\n this.layoutHandlerDirective.showPropertyGrid();\n })\n }\n\n\n toggleLayout() {\n this.facade.layout.layoutService.setIsVerticalLayout(this.layoutKey, !this.layoutHandlerDirective.isVerticalLayout);\n }\n}\n","<div class=\"page-container\"\r\n layoutHandler\r\n [entityKey]=\"this.layoutKey\"\r\n [layoutContext]=\"this.facade.layout\"\r\n [middlePanel]=\"middlePanel\"\r\n \r\n #layoutHandler=\"layoutHandler\"\r\n tabindex=\"0\"\r\n baseShortcuts\r\n [facade]=\"this.facade\"\r\n #baseShortcuts=\"baseShortcuts\"\r\n >\r\n <!-- [rightPanel]=\"rightPanel?.nativeElement\"\r\n [_separator]=\"separator?.nativeElement\"\r\n -->\r\n <div class=\"panel-container\" [id]=\"layoutKey\">\r\n <div class=\"middle-panel\" #middlePanel>\r\n\r\n <!-- <div \r\n *ngIf=\"this.facade.layout.showFilterPanel$ |async\" \r\n class=\"left-panel-container\" hideOnThreshold>\r\n <ng-content select=\"[leftContent]\"></ng-content>\r\n </div> -->\r\n <div class=\"middle-panel-content\">\r\n <ng-content class=\"action-panel\" select=\"[actionsContent]\"></ng-content>\r\n <div class=\"middle-panel-header\">\r\n <ng-content select=\"[middleHeader]\"></ng-content>\r\n </div>\r\n \r\n <div class=\"middle-panel-main\">\r\n <ng-content select=\"[middleContent]\"></ng-content>\r\n </div>\r\n <div class=\"middle-panel-footer\">\r\n <ng-content select=\"[middleFooter]\"></ng-content>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"facade.layout.propertyPanelVisible$ | async\" >\r\n <div class=\"separator-container\"\r\n (mousedown)=\"layoutHandler.startResizing($event)\"\r\n (mouseup)=\"layoutHandler.stopResizing($event)\"\r\n [id]=\"layoutHandler.entityKey\"\r\n #separator\r\n >\r\n <button type=\"button\" class=\"toggle-btn\"\r\n title=\"Affichage Horizontal/Vertical\"\r\n (click)=\"toggleLayout()\">\r\n <div class=\"arrow\"></div>\r\n </button>\r\n\r\n <!-- <button class=\"expand-btn\"\r\n (click)=\"layoutHandler.expandPropertyflexGrow($event)\">\r\n <div class=\"arrow\"></div>\r\n </button> -->\r\n </div>\r\n\r\n <div class=\"right-panel-container\" [id]=\"layoutHandler.entityKey\" #rightPanel>\r\n <ng-content select=\"[rightContent]\"></ng-content>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class TestService {\r\n constructor(){\r\n console.log(this)\r\n }\r\n test(loc: string){\r\n console.log(loc);\r\n }\r\n}","import { Utilities } from '@dflat-core/web/core';\nimport {\n EntityViewModel,\n FilterDescriptor,\n FilterType,\n PropertyEditorEvent\n} from '@dflat-core/web/core-model';\n\n\nimport {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport moment from 'moment';\nimport { defineLocale } from 'ngx-bootstrap/chronos';\nimport { BsDatepickerConfig, BsLocaleService } from 'ngx-bootstrap/datepicker';\nimport { frLocale } from 'ngx-bootstrap/locale';\nimport { Subject } from 'rxjs';\nimport { ValidationService } from '../../../services/validation.service';\n\n@Component({\n selector: 'alg-grid-field',\n templateUrl: './grid-field.component.html',\n styleUrls: ['./grid-field.component.scss'],\n standalone: false,\n})\nexport class GridFieldComponent implements OnInit {\n @Input() showLabel: boolean = true;\n @Input() entity: EntityViewModel;\n @Input() field: FilterDescriptor;\n \n @Input() form: FormGroup;\n @Input() horizontal: boolean = false;\n protected inputClass: string = 'form-control';\n allowValidation: boolean = true;\n\n @Output() propertyChanged: EventEmitter<PropertyEditorEvent> = new EventEmitter();\n \n _changeSubject = new Subject<PropertyEditorEvent>();\n Changes$ = this._changeSubject.asObservable()!;\n\n // @Output() radioButtonChanged: EventEmitter<any> = new EventEmitter();\n @ViewChild('horizSelect', { static: false }) horizSelect: any;\n\n filterType = FilterType;\n bsConfig: Partial<BsDatepickerConfig> = new BsDatepickerConfig();\n //bsValue = new Date();\n locale = 'fr';\n hidePassword: boolean = true;\n showPassword() {\n this.hidePassword = !this.hidePassword;\n }\n\n uploadForm = new FormGroup({ file1: new FormControl() });\n get isValid() {\n // return this.form.controls[this.field.DisplayMember].valid;\n return this.control.valid;\n }\n\n notlog: boolean = true;\n log(propname: string){\n if (this.notlog) {\n console.log(this.control.errors);\n this.notlog = false;\n }\n }\n constructor(\n public validationService: ValidationService,\n private localeService: BsLocaleService\n ) {\n //Setting DatePicker Configuration\n defineLocale('fr', frLocale);\n this.localeService.use('fr');\n this.bsConfig.containerClass = 'theme-blue';\n this.bsConfig.dateInputFormat = 'L';\n this.bsConfig.showWeekNumbers = true;\n }\n \n private internalForm: FormGroup;\n get control(): FormControl {\n return this.form?.get(this.field.PropertyName) as FormControl;\n }\n\n ngOnInit() {\n if (!this.form) {\n console.log(this.field.PropertyName)\n this.internalForm = new FormGroup({});\n this.form = this.internalForm;\n\n const validators = this.validationService.getFieldValidators(this.field) ?? [];\n const ctrl = new FormControl(null, validators);\n this.internalForm.addControl(this.field.PropertyName, ctrl);\n }\n }\n\n private destroy$ = new Subject<void>();\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onValueChanged(event: Event) {\n \n if(this.field.FilterType === FilterType.String)\n return;\n\n const evt: PropertyEditorEvent = {\n field: this.field,\n value: this.control.value,\n type : 'value'\n };\n\n this.form?.markAsTouched();\n this.propertyChanged.emit(evt);\n }\n \n onValueInput($event: Event) {\n const pending: PropertyEditorEvent = {\n field: this.field,\n value: this.control.value,\n type : 'value'\n };\n this.form?.markAsTouched();\n this.propertyChanged.emit(pending);\n }\n \n onBsValueChanged(event) {\n if (event && event != 'Invalid Date') {\n if (this.control.value != event) {\n this.control.setValue(event);\n\n const evt: PropertyEditorEvent = {\n field: this.field,\n value: this.control.value,\n type: 'value'\n };\n\n this.propertyChanged.emit(evt);\n this._changeSubject.next(evt);\n }\n }\n }\n\n filedata: any = null;\n\n fileEvent(e) {\n this.filedata = e.target.files[0];\n let event: PropertyEditorEvent = {\n field: this.field,\n value: this.filedata,\n type:'file'\n };\n // this.dropZone.emit(event ?? 0);\n this.propertyChanged.emit(event);\n this._changeSubject.next(event);\n }\n \n inputSelectorChanged(event: Event) {\n if (this.field) {\n const evt: PropertyEditorEvent = {\n field: this.field,\n value: event,\n type: 'selector'\n };\n \n this.propertyChanged.emit(evt);\n this._changeSubject.next(evt);\n this.form?.markAsDirty();\n }\n }\n onClick(field: FilterDescriptor) {\n let event: PropertyEditorEvent = {\n field: field,\n value: this.control.value,\n type :'button'\n };\n this.propertyChanged.emit(event);\n this._changeSubject.next(event);\n }\n\n getDateFormat(date: FormControl, format) {\n return moment.utc(date.value).format(format);\n }\n \n isImgPathDefined(field: FilterDescriptor, val: any) {\n return field.DisplayImage && this.isDefined(val?.ImagePath);\n }\n\n isDefined(val: any) {\n return !Utilities.IsNil(val);\n }\n\n getRadioButtonId(propName: string, indexOfData: number) {\n return propName + '-' + indexOfData.toString();\n }\n\n\n getRequiredIcon() {\n return `../../assets/images/star-of-life-solid.svg`;\n }\n\n hasValidationErrors(): boolean {\n return (\n this.allowValidation &&this.control&& !this.control.valid\n && this.getValidationErrors() != ''\n );\n }\n\n getValidationErrors(): string {\n const res = this.validationService.getValidationErrors(\n this.control,\n this.field\n );\n return res;\n }\n}\n","<div [formGroup]=\"form\" class=\"field-container\">\r\n <ng-container *ngIf=\"field\">\r\n <div [hidden]=\"!!field.IsHidden\" [ngSwitch]=\"field.FilterType\">\r\n <div class=\"label-group\" *ngIf=\"showLabel\">\r\n <label *ngIf=\"field.FilterType != filterType.CheckBox && field.FilterType != filterType.HorizComboBox\"\r\n [htmlFor]=\"field.PropertyName\">\r\n {{ field.Label }}\r\n </label>\r\n <img\r\n *ngIf=\"field.Required\"\r\n class=\"required-icon\"\r\n [src]=\"this.getRequiredIcon()\"\r\n alt=\"obligatoire\"\r\n />\r\n </div>\r\n\r\n <!--String Input-->\r\n <div *ngSwitchCase=\"filterType.String\" class=\"form-group\">\r\n <div>\r\n <input\r\n [class]=\"this.inputClass\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n [type]=\"field.InputType\"\r\n (change)=\"this.onValueChanged($event)\"\r\n (input)=\"onValueInput($event)\"\r\n focusable\r\n />\r\n <!-- [(ngModel)]=\"this.entity[field.PropertyName]\" -->\r\n </div>\r\n </div>\r\n\r\n <!--Number Input-->\r\n <div *ngSwitchCase=\"filterType.Integer\" class=\"form-group\">\r\n <div>\r\n <!-- [readonly]=\"field.ReadOnly\" -->\r\n <input\r\n [class]=\"this.inputClass\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n (change)=\"onValueChanged($event)\"\r\n (input)=\"onValueInput($event)\"\r\n type=\"number\"\r\n focusable ng-pattern=\"/^[0-9]+$/\" tabindex=\"0\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!--ComboBox Input-->\r\n <div *ngSwitchCase=\"filterType.ComboBox\" class=\"form-group\">\r\n <div>\r\n <ng-select\r\n appendTo=\"body\"\r\n placeholder=\"Sélectionner {{ field.Label }}\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [items]=\"field.Data\"\r\n [multiple]=\"field.MultipleSelection\"\r\n [hideSelected]=\"field.HideSelected\"\r\n bindValue=\"{{ field.ValueMember }}\"\r\n [clearable]=\"field.IsClearable\"\r\n bindLabel=\"{{ field.DisplayMember }}\"\r\n [selectOnTab]=\"true\"\r\n (change)=\"onValueChanged($event)\"\r\n [readonly]=\"field.ReadOnly\"\r\n >\r\n </ng-select>\r\n </div>\r\n </div>\r\n\r\n <!-- InputSelect -->\r\n <!-- <div *ngSwitchCase=\"this.filterType.Custom\" class=\"form-group input\">\r\n <alg-input-selector #inputSelector\r\n type=\"text\"\r\n (change)=\"onValueChanged($event)\"\r\n [id]=\"this.field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n [modalPropertyValue]=\"this.field.ModalPropertyValue\"\r\n [modalPropertyName]=\"this.field.ModalPropertyName\"\r\n [modalEntityKey]=\"this.field.ModalEntityKey\"\r\n [modalTitle]=\"this.field.ModalTitle\"\r\n [readonly]=\"this.field.ReadOnly\">\r\n </alg-input-selector>\r\n </div> -->\r\n\r\n <!-- InputSelector with button -->\r\n <ng-container *ngSwitchCase=\"this.filterType.Custom\">\r\n <!-- <alg-selector\r\n #inputSelector\r\n type=\"text\"\r\n (change)=\"this.inputSelectorChanged($event)\"\r\n [id]=\"field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n [modalPropertyValue]=\"field.ModalPropertyValue\"\r\n [modalPropertyName]=\"field.ModalPropertyName\"\r\n [modalEntityKey]=\"field.ModalEntityKey\"\r\n [modalTitle]=\"field.ModalTitle\">\r\n </alg-selector> -->\r\n\r\n <!-- *ngSwitchCase=\"filterType.Custom\" -->\r\n <ng-container *ngIf=\"field.ModalOnly\">\r\n <div class=\"pull-left input-select-default with-button\">\r\n <input\r\n class=\"form-control\"\r\n [readonly]=\"true\"\r\n [name]=\"this.field.PropertyName\"\r\n [id]=\"this.field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n />\r\n </div> \r\n </ng-container>\r\n\r\n <alg-selector\r\n [field]=\"field\"\r\n [control]=\"this.control\"\r\n (change)=\"this.inputSelectorChanged($event)\"\r\n \r\n >\r\n <!-- [control]=\"this.form.controls[field.PropertyName]\" -->\r\n </alg-selector>\r\n\r\n </ng-container>\r\n\r\n <!-- TreeSelector -->\r\n <ng-container *ngSwitchCase=\"this.filterType.TreeSelector\">\r\n <alg-input-tree-selector\r\n [items]=\"field.Data\"\r\n [id]=\"field.PropertyName\"\r\n [bindValue]=\"field.ValueMember\"\r\n [bindLabel]=\"field.DisplayMember\"\r\n childrenKey=\"children\"\r\n countKey=\"childrenCount\"\r\n [formControlName]=\"field.PropertyName\"\r\n placeholder=\"{{ field.Label }}\"\r\n (change)=\"onValueChanged($event)\"\r\n >\r\n </alg-input-tree-selector>\r\n </ng-container>\r\n\r\n <!-- TextWithbutton -->\r\n <ng-container\r\n *ngSwitchCase=\"this.filterType.TextWithButton\"\r\n class=\"form-group\"\r\n >\r\n <div class=\"input-with-button\">\r\n\r\n <input\r\n type=\"text\"\r\n class=\"form-control\"\r\n (change)=\"onValueChanged($event)\"\r\n [name]=\"this.field.PropertyName\"\r\n [id]=\"this.field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n [readonly]=\"this.field.ReadOnly\"\r\n />\r\n\r\n <button\r\n class=\"btn btn-secondary btn-32 btn-input-select\"\r\n (click)=\"onClick(field)\"\r\n >\r\n <span class=\"fa fa-ellipsis-h\"></span>\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <!--HorizComboBox Input-->\r\n <div *ngSwitchCase=\"filterType.HorizComboBox\" class=\"form-group\">\r\n <div>\r\n <ng-select\r\n appendTo=\"body\"\r\n class=\"horiz-combox-box\"\r\n placeholder=\"{{ field.Label }}\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [items]=\"field.Data\"\r\n [multiple]=\"field.MultipleSelection\"\r\n [hideSelected]=\"field.HideSelected\"\r\n bindValue=\"{{ field.ValueMember }}\"\r\n bindLabel=\"{{ field.DisplayMember }}\"\r\n (change)=\"onValueChanged($event)\"\r\n >\r\n </ng-select>\r\n </div>\r\n </div>\r\n\r\n <!--Boolean Input-->\r\n <div *ngSwitchCase=\"filterType.CheckBox\" class=\"form-group\">\r\n <div class=\"checkbox-container\">\r\n <label class=\"switch\" [htmlFor]=\"field.PropertyName\">\r\n <input\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n type=\"checkbox\"\r\n (change)=\"onValueChanged($event)\"\r\n />\r\n <span class=\"slider round\"></span>\r\n </label>\r\n <span class=\"checkbox-label\">{{ field.Label }}</span>\r\n </div>\r\n </div>\r\n\r\n <!--Enum Input-->\r\n <div *ngSwitchCase=\"filterType.RadioButton\" class=\"form-group\">\r\n <div class=\"radio-button-container\">\r\n <form [formGroup]=\"form\" class=\"radio-buttons\">\r\n <div\r\n *ngFor=\"let data of field.Data;let indexOfData = index\" class=\"radio-button\">\r\n <input\r\n type=\"radio\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"getRadioButtonId(field.PropertyName,indexOfData)\"\r\n [value]=\"indexOfData\"\r\n (change)=\"onValueChanged($event)\"\r\n />\r\n <!-- [formControl]=\"this.formControl\" -->\r\n <label class=\"radio-button-label\">{{ data }}</label>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <!-- Text zone with button -->\r\n <div *ngSwitchCase=\"filterType.TextZoneWithButton\"\r\n class=\"form-group\">\r\n <div class=\"text-zone-and-button\">\r\n <div class=\"text-zone-container\">\r\n <textarea\r\n #textarea\r\n type=\"text\"\r\n class=\"text-area\"\r\n spellcheck=\"false\"\r\n [formControlName]=\"field.ValueMember\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n (change)=\"onValueChanged($event)\"\r\n >\r\n </textarea>\r\n </div>\r\n <div class=\"feedback-and-button\">\r\n <div class=\"feedback\">\r\n <div\r\n class=\"feedback-green\"\r\n *ngIf=\"field.TextWithStyle.GreenText.length > 0\"\r\n >\r\n {{ field.TextWithStyle.GreenText }}\r\n </div>\r\n <div\r\n class=\"feedback-yellow\"\r\n *ngIf=\"\r\n field.TextWithStyle.YellowText.length > 0\r\n \"\r\n >\r\n {{ field.TextWithStyle.YellowText }}\r\n </div>\r\n <div\r\n class=\"feedback-red\"\r\n *ngIf=\"field.TextWithStyle.RedText.length > 0\"\r\n >\r\n {{ field.TextWithStyle.RedText }}\r\n </div>\r\n </div>\r\n <button\r\n type=\"button\"\r\n id=\"botton-compile\"\r\n class=\"btn btn-primary btn-flat pull-right button\"\r\n (click)=\"onClick(field)\"\r\n >\r\n {{ field.ButtonLabel }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--Date -->\r\n <div *ngSwitchCase=\"filterType.Date\" class=\"form-group\">\r\n <div>\r\n <input\r\n type=\"text\"\r\n [class]=\"this.inputClass\"\r\n placeholder=\"Sélectionner une date\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [bsConfig]=\"bsConfig\"\r\n (bsValueChange)=\"onBsValueChanged($event)\"\r\n bsDatepicker\r\n />\r\n <!-- (change)=\"onBsValueChanged($event)\" -->\r\n </div>\r\n </div>\r\n <!-- Text input -->\r\n <div *ngSwitchCase=\"filterType.DateTime\" class=\"form-group\">\r\n <div>\r\n <input\r\n [class]=\"this.inputClass\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n (change)=\"onValueChanged($event)\"\r\n [type]=\"field.InputType\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!-- Text input -->\r\n <div *ngSwitchCase=\"filterType.Text\" class=\"form-group\">\r\n <div>\r\n <textarea\r\n type=\"text\"\r\n rows=\"5\"\r\n [class]=\"this.inputClass\"\r\n [formControlName]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n (change)=\"onValueChanged($event)\"\r\n [id]=\"field.PropertyName\"\r\n >\r\n </textarea>\r\n </div>\r\n </div>\r\n\r\n <!-- DropFileZone -->\r\n <div\r\n *ngSwitchCase=\"filterType.DropFileZone\"\r\n class=\"form-group ml-4\"\r\n >\r\n <fieldset>\r\n <input\r\n [id]=\"field.PropertyName\"\r\n (change)=\"onValueChanged($event)\"\r\n type=\"file\"\r\n class=\"ml--3\"\r\n (change)=\"fileEvent($event)\"\r\n />\r\n </fieldset>\r\n </div>\r\n\r\n <!-- Password -->\r\n <div *ngSwitchCase=\"filterType.Password\" class=\"form-group\">\r\n <div class=\"d-flex\">\r\n <div class=\"w-100 ml-15px\">\r\n <input\r\n [type]=\"hidePassword ? 'password' : 'text'\"\r\n [formControl]=\"control\"\r\n (change)=\"onValueChanged($event)\"\r\n [id]=\"field.PropertyName\"\r\n [name]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n autocomplete=\"new-password\"\r\n />\r\n </div>\r\n <!-- btn-32 pull-right button -->\r\n <button class=\"btn btn-secondary\" (click)=\"showPassword()\">\r\n <i class=\"fa fa-eye\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"this.hasValidationErrors()\">\r\n <div class=\"validation-message\">\r\n {{ this.getValidationErrors() }}\r\n </div>\r\n <!-- <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('required')\">\r\n Ce champ est obligatoire\r\n </ng-container>\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('min')\">\r\n Minimum: {{field.FieldValidators.MinValue}}\r\n </ng-container>\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('max')\">\r\n Maximum: {{field.FieldValidators.MaxValue}}\r\n </ng-container>\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('maxLength')\">\r\n Longueur maximale: {{field.FieldValidators.MaxLength}} caractères\r\n </ng-container> -->\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n</div>\r\n","export interface OrderNumber {\r\n /** 1-based display order. Defaults to 1; must be >= 1. */\r\n order: number;\r\n}\r\n\r\nexport interface OrderableItem extends OrderNumber {\r\n /** Stable unique identifier — never changes between reorders. */\r\n id: string | number;\r\n}\r\n\r\nexport interface OrderableItemColumn<T extends OrderableItem> {\r\n /** Header label shown above the column. */\r\n label: string;\r\n /** Property key on T to display. */\r\n key: keyof T;\r\n /** Optional formatter: e.g. date pipes, currency symbols. */\r\n format?: (value: unknown) => string;\r\n}\r\n\r\nexport interface OrderableModalConfig<T extends OrderableItem> {\r\n /** Dialog title, e.g. \"Reorder Product Items\". */\r\n title: string;\r\n /** Optional subtitle shown beneath the title. */\r\n subtitle?: string;\r\n /** The full list of items to reorder. */\r\n items: T[];\r\n /**\r\n * Columns rendered in the source (left) panel.\r\n * Typically 2–4 meaningful display fields.\r\n */\r\n columns: OrderableItemColumn<T>[];\r\n /**\r\n * Label rendered in the ordered (right) panel header.\r\n * Defaults to \"New order\".\r\n */\r\n orderedPanelLabel?: string;\r\n /**\r\n * Primary display name resolver — used as the item title in the right panel.\r\n * If omitted the modal falls back to `item.id`.\r\n */\r\n displayName?: (item: T) => string;\r\n /** Confirm button label. Defaults to \"Apply order\". */\r\n confirmLabel?: string;\r\n}\r\n\r\nexport interface OrderableModalResult<T extends OrderableItem> {\r\n /** Re-ordered items, each with `.order` set to its new 1-based position. */\r\n orderedItems: T[];\r\n /** Convenience: just the IDs in their new order. */\r\n orderedIds: Array<T['id']>;\r\n}\r\n\r\n\r\nexport interface WorkingItem<T extends OrderableItem> {\r\n data: T;\r\n orderedPosition: number | null;\r\n}\r\n\r\n\r\nexport function normalisedOrder(raw: unknown): number {\r\n const n = Number(raw);\r\n if (!isFinite(n) || n < 1) return 1;\r\n return Math.max(1, Math.round(n));\r\n}\r\n","import { normalisedOrder, OrderableItem, OrderableModalConfig, OrderableModalResult, WorkingItem } from './orderable.interface';\r\nimport { CdkDragDrop, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n computed,\r\n signal\r\n} from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'app-orderable-modal',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [CommonModule, DragDropModule],\r\n templateUrl: './orderable-modal.component.html',\r\n styleUrls: ['./orderable-modal.component.scss'],\r\n})\r\nexport class OrderableModalComponent<T extends OrderableItem> implements OnInit, OnDestroy {\r\n @Input() config!: OrderableModalConfig<T>;\r\n @Input() isLoading = false;\r\n @Input() defaultOkLabel = 'Apply order';\r\n @Input() defaultCancelLabel = 'Cancel';\r\n\r\n @Output() readonly confirmed = new EventEmitter<OrderableModalResult<T>>();\r\n\r\n @Output() readonly cancelled = new EventEmitter<void>();\r\n\r\n _result$?: Subject<OrderableModalResult<T> | null>;\r\n\r\n protected sourceItems = signal<WorkingItem<T>[]>([]);\r\n protected orderedItems = signal<WorkingItem<T>[]>([]);\r\n\r\n private readonly movedIds = signal<Set<string | number>>(new Set());\r\n\r\n protected readonly visibleSourceItems = computed(() =>\r\n this.sourceItems().filter((wi) => !this.movedIds().has(wi.data.id))\r\n );\r\n\r\n protected readonly orderedPanelItems = computed(() => this.orderedItems());\r\n\r\n protected readonly allMoved = computed(\r\n () => this.movedIds().size === this.sourceItems().length\r\n );\r\n\r\n protected get confirmLabel(): string {\r\n return this.defaultOkLabel !== `Appliquer l'ordre`\r\n ? this.defaultOkLabel\r\n : (this.config?.confirmLabel ?? `Appliquer l'ordre`);\r\n }\r\n\r\n private readonly destroy$ = new Subject<void>();\r\n\r\n\r\n ngOnInit(): void {\r\n if (!this.config) {\r\n return;\r\n }\r\n\r\n const sorted = [...this.config.items].sort(\r\n (a, b) => normalisedOrder(a.order) - normalisedOrder(b.order)\r\n );\r\n\r\n this.sourceItems.set(\r\n sorted.map((item) => ({ data: item, orderedPosition: null }))\r\n );\r\n\r\n this.orderedItems.set(\r\n sorted.map((item) => ({\r\n data: item,\r\n orderedPosition: normalisedOrder(item.order),\r\n }))\r\n );\r\n this.movedIds.set(new Set(sorted.map((i) => i.id)));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n\r\n protected moveToOrdered(workingItem: WorkingItem<T>): void {\r\n const id = workingItem.data.id;\r\n if (this.movedIds().has(id)) return;\r\n this.orderedItems.update((list) => [\r\n ...list,\r\n { ...workingItem, orderedPosition: list.length + 1 },\r\n ]);\r\n this.movedIds.update((s) => new Set([...s, id]));\r\n this.recalcPositions();\r\n }\r\n\r\n protected removeFromOrdered(workingItem: WorkingItem<T>): void {\r\n const id = workingItem.data.id;\r\n this.orderedItems.update((list) => list.filter((wi) => wi.data.id !== id));\r\n this.movedIds.update((s) => {\r\n const next = new Set(s);\r\n next.delete(id);\r\n return next;\r\n });\r\n this.recalcPositions();\r\n }\r\n\r\n protected onDrop(event: CdkDragDrop<WorkingItem<T>[]>): void {\r\n if (event.previousIndex === event.currentIndex) return;\r\n this.orderedItems.update((list) => {\r\n const next = [...list];\r\n moveItemInArray(next, event.previousIndex, event.currentIndex);\r\n return next;\r\n });\r\n this.recalcPositions();\r\n }\r\n\r\n protected moveAll(): void {\r\n this.sourceItems().forEach((wi) => {\r\n if (!this.movedIds().has(wi.data.id)) this.moveToOrdered(wi);\r\n });\r\n }\r\n\r\n protected reset(): void {\r\n this.orderedItems.set([]);\r\n this.movedIds.set(new Set());\r\n }\r\n\r\n\r\n protected confirm(): void {\r\n if (this.isLoading || this.orderedPanelItems().length === 0) return;\r\n\r\n const ordered = this.orderedItems();\r\n const result: OrderableModalResult<T> = {\r\n orderedItems: ordered.map((wi, i) => ({ ...wi.data, order: i + 1 })),\r\n orderedIds: ordered.map((wi) => wi.data.id),\r\n };\r\n\r\n this.confirmed.emit(result);\r\n this._result$?.next(result);\r\n this._result$?.complete();\r\n }\r\n\r\n protected cancel(): void {\r\n this.cancelled.emit();\r\n this._result$?.next(null);\r\n this._result$?.complete();\r\n }\r\n\r\n\r\n protected displayName(item: T): string {\r\n return this.config.displayName ? this.config.displayName(item) : String(item.id);\r\n }\r\n\r\n protected cellValue(item: T, key: keyof T): string {\r\n const raw = item[key];\r\n const col = this.config.columns.find((c) => c.key === key);\r\n return col?.format ? col.format(raw) : String(raw ?? '—');\r\n }\r\n\r\n private recalcPositions(): void {\r\n this.orderedItems.update((list) =>\r\n list.map((wi, i) => ({ ...wi, orderedPosition: i + 1 }))\r\n );\r\n }\r\n}\r\n","<div class=\"om-header\">\r\n <div class=\"om-header__left\">\r\n <h4 class=\"om-title\">{{ config.title }}</h4>\r\n @if (config.subtitle) {\r\n <p class=\"om-subtitle\">{{ config.subtitle }}</p>\r\n }\r\n </div>\r\n <button class=\"om-icon-btn om-header__close\" (click)=\"cancel()\" aria-label=\"Close dialog\" type=\"button\">\r\n <span class=\"om-icon\">✕</span>\r\n </button>\r\n</div>\r\n\r\n<div class=\"om-body\">\r\n <div class=\"om-panels\">\r\n\r\n <div class=\"om-panel om-panel--source\">\r\n <div class=\"om-panel__header\">\r\n <span class=\"om-panel__label\">Les items disponibles</span>\r\n <button\r\n class=\"om-panel__action\"\r\n type=\"button\"\r\n (click)=\"moveAll()\"\r\n [disabled]=\"allMoved()\"\r\n title=\"Move all items to the ordered list\">\r\n Déplacer tous \r\n <span class=\"om-icon om-icon--sm\">»</span>\r\n </button>\r\n </div>\r\n\r\n <div class=\"om-source-table-wrap\">\r\n <table class=\"om-source-table\" aria-label=\"Source items\">\r\n <thead>\r\n <tr>\r\n @for (col of config.columns; track col.key) {\r\n <th>{{ col.label }}</th>\r\n }\r\n <th class=\"om-source-table__action-col\" aria-label=\"Add to order\"></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (wi of visibleSourceItems(); track wi.data.id) {\r\n <tr class=\"om-source-row\">\r\n @for (col of config.columns; track col.key) {\r\n <td>{{ cellValue(wi.data, col.key) }}</td>\r\n }\r\n <td class=\"om-source-table__action-col\">\r\n <button\r\n class=\"om-arrow-btn\"\r\n type=\"button\"\r\n (click)=\"moveToOrdered(wi)\"\r\n title=\"Add to order\"\r\n aria-label=\"Move to ordered list\">\r\n →\r\n </button>\r\n </td>\r\n </tr>\r\n }\r\n @empty {\r\n <tr>\r\n <td [attr.colspan]=\"config.columns.length + 1\" class=\"om-source-empty\">\r\n <span class=\"om-source-empty__icon\">✓</span>\r\n Tous les items sont placés dans la liste ordonnée\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n\r\n <div class=\"om-divider\" aria-hidden=\"true\">\r\n <span class=\"om-divider__icon\">⇄</span>\r\n </div>\r\n\r\n <div class=\"om-panel om-panel--ordered\">\r\n <div class=\"om-panel__header\">\r\n <span class=\"om-panel__label\">{{ config.orderedPanelLabel ?? 'Nouvel ordre' }}</span>\r\n <button\r\n class=\"om-panel__action\"\r\n type=\"button\"\r\n (click)=\"reset()\"\r\n title=\"Remove all items from this list\">\r\n Reset <span class=\"om-icon om-icon--sm\">↻</span>\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"om-ordered-list\"\r\n cdkDropList\r\n [cdkDropListData]=\"orderedPanelItems()\"\r\n (cdkDropListDropped)=\"onDrop($event)\"\r\n aria-label=\"Ordered items — drag to reorder\">\r\n\r\n @for (wi of orderedPanelItems(); track wi.data.id) {\r\n <div class=\"om-ordered-item\" cdkDrag [cdkDragData]=\"wi\">\r\n\r\n <div class=\"om-ordered-item__preview\" *cdkDragPreview>\r\n <span class=\"om-icon\">⇵</span>\r\n <span>{{ displayName(wi.data) }}</span>\r\n </div>\r\n\r\n <div class=\"om-ordered-item__placeholder\" *cdkDragPlaceholder></div>\r\n\r\n <span class=\"om-ordered-item__position\">{{ wi.orderedPosition }}</span>\r\n\r\n <span\r\n class=\"om-ordered-item__drag-handle\"\r\n cdkDragHandle\r\n aria-hidden=\"true\"\r\n title=\"Drag to reorder\">⇵</span>\r\n\r\n <span class=\"om-ordered-item__name\">{{ displayName(wi.data) }}</span>\r\n\r\n <button\r\n class=\"om-icon-btn om-ordered-item__remove\"\r\n type=\"button\"\r\n (click)=\"removeFromOrdered(wi)\"\r\n title=\"Remove from ordered list\"\r\n aria-label=\"Remove from ordered list\">\r\n ✕\r\n </button>\r\n </div>\r\n }\r\n\r\n @empty {\r\n <div class=\"om-ordered-empty\">\r\n <span class=\"om-ordered-empty__icon\">⇵</span>\r\n <p>Use the arrows on the left to add items, then drag to reorder.</p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n\r\n<div class=\"om-footer\">\r\n <span class=\"om-footer__count\">\r\n @if (orderedPanelItems().length > 0) {\r\n {{ orderedPanelItems().length }} de {{ config.items.length }} items ordonnés\r\n }\r\n </span>\r\n\r\n <div class=\"om-footer__actions\">\r\n <button class=\"om-btn om-btn--secondary\" type=\"button\" (click)=\"cancel()\">\r\n {{ defaultCancelLabel }}\r\n </button>\r\n\r\n <button\r\n class=\"om-btn om-btn--primary\"\r\n type=\"button\"\r\n (click)=\"confirm()\"\r\n [disabled]=\"orderedPanelItems().length === 0 || isLoading\">\r\n @if (isLoading) {\r\n <span class=\"om-spinner\" aria-hidden=\"true\"></span>\r\n }\r\n {{ confirmLabel }}\r\n </button>\r\n </div>\r\n</div>\r\n","import { OrderableItem, OrderableModalConfig, OrderableModalResult } from './orderable.interface';\r\nimport { OrderableModalComponent } from './orderable-modal.component';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { BsModalRef, BsModalService, ModalOptions } from 'ngx-bootstrap/modal';\r\nimport { Subject, firstValueFrom } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class OrderableModalService {\r\n private readonly modalService = inject(BsModalService);\r\n\r\n open<T extends OrderableItem>(\r\n config: OrderableModalConfig<T>,\r\n options: ModalOptions = {}\r\n ): Promise<OrderableModalResult<T> | null> {\r\n const result$ = new Subject<OrderableModalResult<T> | null>();\r\n\r\n const bsConfig = this.buildBsConfig(config, options, result$);\r\n const modalRef = this.modalService.show(OrderableModalComponent, bsConfig) as unknown as BsModalRef<OrderableModalComponent<T>>;\r\n\r\n this.wireResultEmitter(modalRef, result$);\r\n\r\n const hideSub = this.modalService.onHide\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n if (!result$.closed) {\r\n result$.next(null);\r\n result$.complete();\r\n }\r\n hideSub.unsubscribe();\r\n });\r\n\r\n return firstValueFrom(result$.pipe(take(1)));\r\n }\r\n\r\n // async reorder<T extends OrderableItem>(\r\n // config: OrderableModalConfig<T>,\r\n // options?: ModalOptions\r\n // ): Promise<T[]> {\r\n // const result = await this.open(config, options);\r\n // return result?.orderedItems ?? [];\r\n // }\r\n\r\n private buildBsConfig<T extends OrderableItem>(\r\n config: OrderableModalConfig<T>,\r\n options: ModalOptions,\r\n result$: Subject<OrderableModalResult<T> | null>\r\n ): ModalOptions {\r\n return {\r\n class: options.class ?? 'modal-xl',\r\n // backdrop: options.backdrop ?? 'static',\r\n keyboard: options.keyboard ?? true,\r\n animated: options.animated ?? true,\r\n // ignoreBackdropClick: true,\r\n initialState: {\r\n isLoading: false,\r\n canClose : true,\r\n defaultOkLabel: config.confirmLabel ?? 'Appliquer',\r\n defaultCancelLabel: 'Annuler',\r\n config,\r\n _result$: result$,\r\n },\r\n };\r\n }\r\n\r\n private wireResultEmitter<T extends OrderableItem>(\r\n modalRef: BsModalRef<OrderableModalComponent<T>>,\r\n result$: Subject<OrderableModalResult<T> | null>\r\n ): void {\r\n const component = modalRef.content;\r\n if (!component) return;\r\n\r\n component.confirmed\r\n .pipe(take(1))\r\n .subscribe((res) => {\r\n result$.next(res);\r\n result$.complete();\r\n modalRef.hide();\r\n });\r\n\r\n component.cancelled\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n result$.next(null);\r\n result$.complete();\r\n modalRef.hide();\r\n });\r\n }\r\n}\r\n","import { CoreModelModule, EntityViewModel } from '@dflat-core/web/core-model';\nimport { CommonModule } from '@angular/common';\nimport { Injector, LOCALE_ID, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { BsModalService, ModalModule } from 'ngx-bootstrap/modal';\nimport { ActionsContentComponent } from './components/actions/actions-content.component';\nimport { ActionsComponent } from './components/actions/actions.component';\nimport { BaseItemListComponent } from './components/base-item-list/base-item-list.component';\nimport { BreadcrumbComponent } from './components/breadcrumb/breadcrumb.component';\nimport { DatagridCellComponent } from './components/datagrid-custom/datagrid-cell/datagrid-cell.component';\nimport { DatagridCustomComponent } from './components/datagrid-custom/datagrid-custom.component';\n// import { DataPageComponent } from './components/datapage/old/old.datapage.component';\nimport { DynamicFieldComponent } from './components/dynamic-components/dynamic-field/dynamic-field.component';\nimport { DynamicFilterExtraComponent } from './components/dynamic-components/dynamic-filter/dynamic-filter-extra.component';\nimport { DynamicFilterPanel } from './components/dynamic-components/dynamic-filter/dynamic-filter-panel.component';\nimport { DynamicFilterComponent } from './components/dynamic-components/dynamic-filter/dynamic-filter.component';\nimport { DynamicFormComponent } from './components/dynamic-components/dynamic-form/dynamic-form.component';\nimport { FilterSummaryComponent } from './components/filtersummary/filtersummary.component';\nimport { GridRowComponent } from './components/grid-row/grid-row.component';\nimport { ImageComponent } from './components/image-display/image.component';\nimport { InputSelectorComponent } from './components/input-selector/input-selector.component';\nimport { LogsComponent } from './components/logs/logs.component';\nimport { MenuComponent } from './components/menu/menu.component';\nimport { PaginatorComponent } from './components/paginator/paginator.component';\nimport { ParameterFieldComponent } from './components/parameter-field/parameter-field.component';\nimport { BaseArrayParameterTypeComponent } from './components/parameter-field/parameter-types/base-array-parameter-type.component';\nimport { BaseParameterTypeComponent } from './components/parameter-field/parameter-types/base-parameter-type.component';\nimport { ParameterTypeBoolArrayComponent } from './components/parameter-field/parameter-types/parameter-type-bool-array/parameter-type-bool-array.component';\nimport { ParameterTypeBoolComponent } from './components/parameter-field/parameter-types/parameter-type-bool/parameter-type-bool.component';\nimport { ParameterTypeDateArrayComponent } from './components/parameter-field/parameter-types/parameter-type-date-array/parameter-type-date-array.component';\nimport { ParameterTypeDateComponent } from './components/parameter-field/parameter-types/parameter-type-date/parameter-type-date.component';\nimport { ParameterTypeNumberArrayComponent } from './components/parameter-field/parameter-types/parameter-type-number-array/parameter-type-number-array.component';\nimport { ParameterTypeNumberComponent } from './components/parameter-field/parameter-types/parameter-type-number/parameter-type-number.component';\nimport { ParameterTypePasswordComponent } from './components/parameter-field/parameter-types/parameter-type-password/parameter-type-password.component';\nimport { ParameterTypeTextArrayComponent } from './components/parameter-field/parameter-types/parameter-type-text-array/parameter-type-text-array.component';\nimport { ParameterTypeTextComponent } from './components/parameter-field/parameter-types/parameter-type-text/parameter-type-text.component';\nimport { PropertyGridComponent } from './components/property-grid/property-grid.component';\nimport { Tab } from './components/tab/tab.component';\nimport { Tabset } from './components/tabset/tabset.component';\nimport { TextViewerComponent } from './components/text-viewer/text-viewer.component';\nimport { TimePickerComponent } from './components/time-picker/time-picker.component';\nimport { ValidationErrorComponent } from './components/validation-error/validation-error.component';\nimport { WizardStepComponent } from './components/wizard/wizard-step/wizard-step.component';\nimport { WizardComponent } from './components/wizard/wizard.component';\nimport { AddclassDirective } from './directives/addclass.directive';\nimport { CollapseDirective } from './directives/collapse.directive';\nimport { DraggableDirective } from './directives/draggable.directive';\nimport { DroppableDirective } from './directives/droppable.directive';\nimport { EditModeDirective } from './directives/editMode.directive';\nimport { FocusableDirective } from './directives/focusable.directive';\nimport { InsertionDirective } from './directives/insertion.directive';\nimport { OnEnterDirective } from './directives/onEnter.directive';\nimport { TabHeadingDirective } from './directives/tab-heading';\nimport { TabTranscludeDirective } from './directives/tab-transclude';\nimport { TooltipDirective } from './directives/tooltip.directive';\nimport { ValidateOnEnterDirective } from './directives/validate-on-enter.directive';\nimport { ViewModeDirective } from './directives/viewMode.directive';\nimport { DefaultLayoutComponent } from './layout/default/default-layout';\nimport { LoginLayoutComponent } from './layout/login/login-layout';\nimport { ConfirmModalComponent } from './modals/confirm-modal/confirm-modal.component';\nimport { DialogComponent } from './modals/dialog/dialog.component';\nimport { ExportDataModalComponent } from './modals/export-data-modal/export-data-modal.component';\nimport { TrackRecordModalComponent } from './modals/track-record-modal/track-record-modal.component';\nimport { ValidationModalComponent } from './modals/validation-modal/validation-modal.component';\nimport { EuroPipe } from './pipes/euro.pipe';\nimport { ToDefinePipe } from './pipes/todefine.pipe';\nimport { ToFixedSizeIntegerPipe } from './pipes/tofixedsizeinteger.pipe';\nimport { AlertService } from './services/alert.service';\nimport { CanDeactivateGuard } from './services/can-deactivate-guard';\nimport { DragService } from './services/drag.service';\nimport { FireAuthService } from './services/fire-authentication.service';\nimport { ImageService } from './services/image.service';\nimport { ModalStateService } from './services/modal-state.service';\nimport { ModalService } from './services/modal.service';\n// import { TreeComponent } from './components/tree/tree.component';\nimport { ExtendedActionComponent } from './components/actions/extended-action/extended-action.component';\nimport { EXTENDED_ACTION_COMPONENT, TRACK_RECORD_MODAL_COMPONENT } from './modals/dialog-component.tokens';\nimport { FormPasswordComponent } from './components/form-password/form-password.component';\nimport { MenuDashboardComponent } from './components/menu-dashboard/menu-dashboard.component';\nimport { SearchResultsComponent } from './components/search-results/search-results.component';\nimport { ActionService } from './services/action.service';\nimport { LogService } from './log.service';\nimport { ApplicationService, ROOT_DEPS } from './services/application.service';\n\nimport { PageLayoutComponent } from './components/datapage/layout-page/page-layout.component';\nimport { OldDataPageComponent } from './components/datapage/old/old.datapage.component';\nimport { HideOnThresholdDirective } from './v2/directives/hide-on-threshold.directive';\nimport { LayoutHandlerDirective } from './v2/directives/layout-handler.directive';\n\nimport { InputTreeSelectorComponent } from './components/input-tree-selector/input-tree-selector.component';\nimport { FieldComponent } from './v2/components/field-descriptor/field.component';\n\n\nimport { DataService } from '@dflat-core/web/core-data';\nimport { AuthService, BreadcrumbService, FilterService, UserService } from '@dflat-core/web/core-services';\nimport { Location } from '@angular/common';\nimport { ToastrService } from 'ngx-toastr';\nimport { SelectorMapperServiceBase } from './services/selectorMapperBase.service';\nimport { ActionPanelComponent } from './v2/components/actions-panel/action-panel.component';\nimport { CellRendererComponent } from './v2/components/cell-renderer/cell-renderer.component';\nimport { DataGridComponent } from './v2/components/data-grid/data-grid.component';\nimport { DataListComponent } from './v2/components/data-list/data-list.component';\nimport { EditorTabComponent } from './v2/components/editor-tab/editor-tab.component';\nimport { EditorTabSetComponent } from './v2/components/editor-tabset/editor-tabset.component';\nimport { FilterFormModalComponent } from './v2/components/filter-form/filter-form.component';\nimport { FilterSummaryPanelComponent } from './v2/components/filter-summary/filter-summary.component';\nimport { NewEditorComponent } from './v2/components/new-editor/new-editor.component';\nimport { NewPaginatorComponent } from './v2/components/new-paginator/new-paginator.component';\nimport { PropertyEditorComponent } from './v2/components/property-editor/property-editor-component';\nimport { SelectorComponent } from './v2/components/selector/selector.component';\nimport { StandardPageLayoutComponent } from './v2/components/standard-page-layout/standard-page-layout.component';\nimport { BaseShortcutsDirective } from './v2/directives/base-shortcut.directive';\nimport { RowRefDirective } from './v2/directives/row-ref.directive';\nimport { GridStylePipe } from './v2/pipes/gridstyle.pipe';\nimport { EntityFacadeRegistryService } from './v2/services/entity-facade-registry.service';\nimport { FacadeModalService } from './v2/services/facade-modal.service';\nimport { PropertyChangeBus } from './v2/services/property-change-bus.service';\nimport { SelectionService } from './v2/services/selection.service';\nimport { TestService } from './v2/services/test.service';\nimport { ValidationService } from './v2/services/validation.service';\nimport { ViewModelLoaderService } from './v2/services/view-model-loader.service';\nimport { GridFieldComponent } from './v2/components/data-grid/grid-field-descriptor/grid-field.component';\nimport { LayoutService } from './v2/services/layout.service';\nimport { OldLayoutHandlerDirective } from './components/datapage/old-layout-handler.directive';\nimport { OrderableModalService } from './v2/components/orderable/orderable-modal.service';\nimport { FocusTrapDirective } from \"ngx-bootstrap/focus-trap\";\n\nvar components = [\n ActionsComponent,\n ActionsContentComponent,\n BreadcrumbComponent,\n CollapseDirective,\n ConfirmModalComponent,\n DatagridCustomComponent,\n DataGridComponent,\n // DataPageComponent,\n OldDataPageComponent,\n DefaultLayoutComponent,\n DialogComponent,\n DynamicFieldComponent,\n DynamicFilterComponent,\n DynamicFilterExtraComponent,\n DynamicFilterPanel,\n DynamicFormComponent,\n ImageComponent,\n ExportDataModalComponent,\n TrackRecordModalComponent,\n FilterSummaryComponent,\n GridRowComponent,\n DatagridCellComponent,\n InputSelectorComponent,\n InputTreeSelectorComponent,\n InsertionDirective,\n LoginLayoutComponent,\n LogsComponent,\n MenuComponent,\n MenuDashboardComponent,\n PaginatorComponent,\n PropertyGridComponent,\n Tab,\n TabHeadingDirective,\n Tabset,\n TabTranscludeDirective,\n ToDefinePipe,\n ToFixedSizeIntegerPipe,\n ValidateOnEnterDirective,\n ValidationErrorComponent,\n ValidationModalComponent,\n TextViewerComponent,\n EditModeDirective,\n ViewModeDirective,\n FocusableDirective,\n OnEnterDirective,\n TextViewerComponent,\n WizardComponent,\n WizardStepComponent,\n TooltipDirective,\n AddclassDirective,\n BaseItemListComponent,\n DroppableDirective,\n DraggableDirective,\n ParameterFieldComponent,\n BaseParameterTypeComponent,\n BaseArrayParameterTypeComponent,\n ParameterTypeTextComponent,\n ParameterTypeNumberComponent,\n ParameterTypeBoolComponent,\n ParameterTypeDateComponent,\n ParameterTypePasswordComponent,\n ParameterTypeTextArrayComponent,\n ParameterTypeNumberArrayComponent,\n ParameterTypeDateArrayComponent,\n ParameterTypeBoolArrayComponent,\n TimePickerComponent,\n ExtendedActionComponent,\n FormPasswordComponent,\n SearchResultsComponent,\n LayoutHandlerDirective,\n OldLayoutHandlerDirective,\n PageLayoutComponent,\n HideOnThresholdDirective,\n BaseShortcutsDirective,\n\n // Configuration for new editor & services\n NewEditorComponent,\n PropertyEditorComponent,\n FieldComponent,\n EditorTabSetComponent,\n EditorTabComponent,\n BreadcrumbComponent,\n NewPaginatorComponent,\n FilterSummaryPanelComponent,\n ActionPanelComponent,\n StandardPageLayoutComponent,\n DataListComponent,\n CellRendererComponent,\n SelectorComponent,\n CellRendererComponent,\n FilterFormModalComponent,\n GridFieldComponent\n]\n\n@NgModule({\n imports: [\n RouterModule,\n CommonModule,\n CoreModelModule,\n FormsModule,\n ReactiveFormsModule,\n NgSelectModule,\n BsDatepickerModule.forRoot(),\n ModalModule.forRoot(),\n ReactiveFormsModule,\n GridStylePipe,\n RowRefDirective,\n FocusTrapDirective\n],\n declarations: [\n ...components\n\n ],\n exports: [\n ...components\n ],\n providers: [\n \n // 1.LOCALE_ID provider\n {\n provide: LOCALE_ID,\n useValue: 'fr-FR',\n },\n\n // 2. ROOT_DEPS : InjectionToken defined in application\n // service with useFactory provider\n {\n provide: ROOT_DEPS,\n useFactory: (\n route: ActivatedRoute,\n router: Router,\n location: Location,\n toastr: ToastrService,\n alert: AlertService,\n modal: ModalService,\n layout: LayoutService,\n breadcrumb : BreadcrumbService,\n data: DataService,\n filter: FilterService,\n selector: SelectorMapperServiceBase,\n auth: AuthService,\n user: UserService,\n sel: SelectionService<EntityViewModel>,\n injector : Injector\n // test : TestService\n ) => ({\n nav: { route, router, location },\n ui: { toastr, alert, modal, layout, breadcrumb },\n data: { data, filter, selector },\n security: { auth, user },\n selection: sel,\n get test(){\n return injector.get(TestService)\n }\n }),\n deps: [\n ActivatedRoute, Router, Location,ToastrService, AlertService, ModalService,\n LayoutService,BreadcrumbService,DataService, FilterService, SelectorMapperServiceBase,\n AuthService, UserService, SelectionService,\n Injector\n ]\n },\n // Location,\n ModalService,\n ModalStateService,\n BsModalService,\n CanDeactivateGuard,\n AlertService,\n ImageService,\n FireAuthService,\n EuroPipe,\n TooltipDirective,\n DragService,\n ApplicationService,\n ActionService,\n { provide: EXTENDED_ACTION_COMPONENT, useValue: ExtendedActionComponent },\n { provide: TRACK_RECORD_MODAL_COMPONENT, useValue: TrackRecordModalComponent },\n LogService,\n LayoutService,\n SelectionService,\n ValidationService,\n ViewModelLoaderService,\n EntityFacadeRegistryService,\n TestService,\n FacadeModalService,\n PropertyChangeBus,\n OrderableModalService\n]\n\n})\nexport class CoreUxModule {}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ColumnDescriptor } from '@dflat-core/web/core-model';\n\nexport interface IPpService {\n /** Opens the column selector modal for Grid purpose. */\n openColumnSelector(config: { title: string; metaEntityKey: string; supplierId?: number | null; roleId?: number | null }): void;\n /** Opens the column selector modal for Export purpose. */\n openExportSelector(config: { title: string; metaEntityKey: string; supplierId?: number | null; roleId?: number | null }): void;\n /** Resolves the effective profile columns (default merged with user profile). */\n resolveColumns(config: { metaEntityKey: string; supplierId?: number | null; roleId?: number | null }): Observable<any[]>;\n /** Converts resolved PP columns to ColumnDescriptors for the data grid. */\n buildDescriptors(ppColumns: any[], backendDescriptors: ColumnDescriptor[]): ColumnDescriptor[];\n /** Splits columns into standard keys and custom-field ids (for export payloads). */\n splitForExport(columns: any[]): { columns: string[]; customFieldIds: number[] };\n /** Emits on every confirmed selection (grid + export). */\n selectionConfirmed$: Observable<{ purpose: number; columns: any[] }>;\n /** Emits columns only when the user confirms a Grid selection. */\n gridSelectionConfirmed$: Observable<any[]>;\n}\n\nexport const PP_SERVICE = new InjectionToken<IPpService>('PP_SERVICE');\n","import { nameof, Utilities } from '@dflat-core/web/core';\nimport { DataService } from '@dflat-core/web/core-data';\nimport { CustomFieldTypes, EntityViewModel, EntityViewModelWithFields, ExtendedProperty, Notification, SpecificSection } from '@dflat-core/web/core-model';\nimport { Directive, EventEmitter, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, Type, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport moment from 'moment';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { Action, FieldDescriptorWithValue, IActionComponent, IIsCancel, DflatBaseComponent } from '../../model/model';\nimport { ApplicationService } from '../../services/application.service';\nimport type { DflatBaseFilterComponent } from '../basefilter/basefilter.component';\nimport type { DynamicFormComponent } from '../dynamic-components/dynamic-form/dynamic-form.component';\nimport type { PropertyGridComponent } from '../property-grid/property-grid.component';\n\n\n\nexport interface BaseEditorInfo {\n baseIcon: string\n editIcon: string\n singularLabel: string\n pluralLabel: string\n}\n\n@Directive()\nexport abstract class BaseEditorComponent<TData extends EntityViewModel>\nextends DflatBaseComponent implements OnInit, OnDestroy, OnChanges, IIsCancel, IActionComponent {\n\n specificSections: SpecificSection[];\n\n public isCancel: boolean = false;\n @Input() saveButtonLabel : string = \"Sauvegarder\";\n\n\n //abstract getEntityKey(): string;\n //abstract getTitle(withId: boolean): string;\n //abstract getPath(withId: boolean): string;\n getEntityKey(): string { return '';}\n public getTitle(withId: boolean): string { return '';}\n getPath(withId: boolean): string { return '';}\n\n getIcon(): string {\n return 'product-hunt';\n }\n\n loadOnInit: boolean = true;\n loadEntityViewModelOnInit: boolean = true;\n enableNavigationHandler: boolean = true;\n id: any;\n entityViewModel: EntityViewModelWithFields<TData> = {};\n protected routeChangedSubscription: Subscription;\n notif: Subscription;\n\n @Input() isModal: boolean = false;\n @Input() viewModel: any = undefined;\n @Input() showButtons: boolean = true;\n @ViewChild('dynamicFrm', { static: false }) dynamicFrm: DynamicFormComponent;\n @ViewChild('propertyGridComponent', { static: false }) propertyGridComponent: PropertyGridComponent<TData>;\n\n\n\n extendedPropertiesLoaded: EventEmitter<any> = new EventEmitter();\n onClosedDialog: Subject<BaseEditorComponent<TData>> = new Subject<BaseEditorComponent<TData>>();\n\n\n constructor(\n protected app : ApplicationService,\n protected route: ActivatedRoute) {\n super(app);\n }\n\n actions: Action[];\n handleActionSearchKeywords(keyword: string) {}\n toggleFilterView(): void {}\n refresh(): void {}\n showHistory(): void {}\n\n\n onTextZoneButtonClicked(event : any) : void{\n }\n\n\n initBreadCrumb(data: any) {\n setTimeout(() => {\n if (!this.isModal) {\n this.breadServ.setCurrent(data);\n }\n });\n }\n\n ngOnInit(): void {\n\n moment.locale('fr');\n\n if (!this.isModal) {\n this.id = this.route.snapshot.params[\"id\"];\n\n }\n\n this.initBreadCrumb({\n description:'Editor '+this.id,\n display: true,\n levels:[\n {\n icon: 'first-order',\n link: [this.getPath(false)],\n title: this.getTitle(false)\n },\n {\n icon: this.getIcon(),\n link: [this.getPath(true) + '/' + this.id],\n title: this.getTitle(true)\n }\n ]\n });\n\n\n\n if (this.loadOnInit) {\n this.loadEntityViewModel();\n }\n\n if (this.id > 0) {\n this.unsubscribeEntityNotification();\n this.subscribeEntityNotification();\n }\n }\n\n ngOnDestroy() {\n if (this.routeChangedSubscription) {\n this.routeChangedSubscription.unsubscribe();\n }\n if (!this.isModal) {\n this.breadServ.clear();\n }\n\n this.unsubscribeEntityNotification();\n this.onClosedDialog.complete();\n }\n\n subscribeEntityNotification() {\n this.notif = this.mqService.of(`${Utilities.GetChannel(this.getEntityKey())}-${this.id}`).subscribe(n => {\n this.onNotificationHandled(n);\n });\n }\n\n unsubscribeEntityNotification() {\n if (this.notif) {\n this.notif.unsubscribe();\n }\n }\n\n // To override when notification is handled\n onNotificationHandled(notif: Notification) {\n }\n\n /**\n * fonction \"async\" liant le front(Angular) et le back(C#)\n\n * - Elle est appelée lorsque l'on cherche à afficher un Objet de type \"EntityViewModel\", dans le but de l'éditer (via 'Ajouter'-'Editer')\n * - Elle va s'abonner à l'observable renvoyé par la fonction {@link DataService.getEntityViewModel<TData>(entityKey, id)}\n * - qu'elle appel avec les paramettres {@link this.EntityKey\"} et {@link this.id\"} de sa classe {@link BaseEditorComponent}.\n * - Elle crée avec ce retour un {@link BaseEditorComponent} dans lequel elle stock toutes les données de l'observable\n *\n * @async\n * @method loadEntityViewModel()\n * @param\n * @return\n * @memberof BaseEditorComponent<TData>\n * @summary Demande les données d'une entité au back(C#) à travers \"getEntityViewModel\".\n * @see {@link src.app.dataService.getEntityViewModel<TData>(entityKey: string, id: number): Observable<EntityViewModelWithFields<TData>>} for more information\n * @throws\n */\n loadEntityViewModel() {\n this.id = this.id || 0;\n if (!Utilities.IsNil(this.id)) {\n this.loadViewModel()\n .subscribe(res => {\n\n if ( ! this.loadEntityViewModelOnInit) {\n let vm : TData = undefined;\n vm = this.entityViewModel.ViewModel;\n this.entityViewModel = res;\n this.entityViewModel.ViewModel = vm;\n }\n else\n this.entityViewModel = res;\n\n if (res) {\n\n\n\n // Get extended properties (attributs)\n let ids: number[] = [];\n ids.push(res.ViewModel['Id']);\n this.entityViewModel.ViewModel[\"ExtendedProperties\"] = [];\n\n // Remplir les extended properties\n this.loadExtendedProperties(ids).subscribe(res2 => {\n res2.forEach(p => {\n this.entityViewModel.ViewModel[p.PropertyName] = this.getFormattedValue(p);\n this.entityViewModel.ViewModel[\"ExtendedProperties\"].push(p);\n });\n // Notifier le changement à dynamic form\n this.extendedPropertiesLoaded.emit();\n\n this.additionalInit();\n this.OnLoadingComplete(res);\n });\n }\n\n });\n }\n }\n loadExtendedProperties(ids: number[]) : Observable<ExtendedProperty[]>{\n return this.dataService.getExtendedProperties(this.getEntityKey(), ids)\n }\n\n loadViewModel() : Observable<EntityViewModelWithFields<TData>>{\n return this.dataService.getEntityViewModel<TData>(this.getEntityKey(), this.id);\n }\n\n getFormattedValue(p: ExtendedProperty): any {\n if (p.FieldType == CustomFieldTypes.Checkbox) {\n if (p.Value == \"true\" || p.Value == \"1\")\n return true;\n else\n return false;\n }\n return p.Value\n ;\n }\n\n additionalInit() {\n if (!Utilities.IsNil(this.propertyGridComponent)) {\n this.propertyGridComponent.ViewModel = this.entityViewModel;\n\n let selected : TData[] = [];\n selected.push(this.entityViewModel.ViewModel);\n this.propertyGridComponent.onSelectionChanged(selected);\n }\n }\n\n OnLoadingComplete(entity: EntityViewModelWithFields<TData>) {\n }\n public forceSaveButton: boolean = false;\n public dirty: boolean = false;\n handleOriginalEntityChanged($event)\n {\n this.dirty = true;\n }\n propertyChanged(field: FieldDescriptorWithValue) {\n this.dirty = this.propertyGridComponent.isDirty;\n }\n\n onSave(quit: boolean)\n {\n this.handleDialogButtonClick(quit);\n }\n\n handleDialogButtonClick(quit: boolean) {\n if( quit )\n this.onCancel();\n else {\n if (! Utilities.IsNil(this.propertyGridComponent)) {\n if ( ! this.propertyGridComponent.isDirty && ! this.forceSaveButton)\n this.onCancel();\n else {\n this.propertyGridComponent.checkIsValid();\n if (this.propertyGridComponent.isValid()) {\n this.save(this.entityViewModel.ViewModel);\n }\n }\n }\n else if (! Utilities.IsNil(this.dynamicFrm)) {\n this.save(this.getFormRaw());\n }\n else {\n this.save(this.entityViewModel.ViewModel);\n }\n }\n }\n\n save(entity: any) {\n this.dataService.saveEntity<TData>(this.getEntityKey(), entity as TData).subscribe((res) => {\n if (res.Success) {\n\n entity.Id = res.Id;\n entity.RowVersion = res.RowVersion;\n\n this.entityViewModel.ViewModel = Object.assign({}, entity);\n\n if ( ! this.isModal )\n this.goBack();\n else\n {\n this.isCancel = false;\n this.afterSave();\n }\n } else {\n if ( ! Utilities.IsNil(res.ErrorMessage ) )\n this.toastrService.error(res.ErrorMessage, 'Erreur');\n else\n this.toastrService.error('Une erreur est survenue, merci de réessayer !', 'Erreur');\n }\n },\n ()=>{},\n ()=>{\n this.onClosedDialog.next(this);\n });\n }\n\n onCancel() {\n this.isCancel = true;\n this.onClosedDialog.next(this);\n this.goBack();\n }\n\n goBack() {\n if (!this.isModal) {\n this.location.back();\n }\n else\n this.callBackAction(this);\n }\n\n callBackAction: ((component: IIsCancel) => void) = () => { console.log(\"callBackAction de BaseEditor\") };\n afterSave() {\n this.callBackAction(this);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes[\"viewModel\"]) {\n this.viewModel = changes[\"viewModel\"].currentValue || {};\n this.entityViewModel.ViewModel = { ...<any>this.entityViewModel.ViewModel, ...this.viewModel };\n }\n }\n\n getFormRaw() {\n return <TData>this.dynamicFrm.form.getRawValue();\n }\n\n isDirty(): boolean {\n if (!Utilities.IsNil(this.dynamicFrm)) {\n const isDirty = !this.dynamicFrm.isValid();\n return isDirty;\n }\n return false;\n }\n\n getSpecificSectionContext(\n name: string,\n templateType: Type<any>,\n context?: any,\n filter?: any\n ) {\n let initialViewModel = {};\n\n initialViewModel[\n nameof(\n (component: DflatBaseFilterComponent<any, any>) =>\n component.isMainComponent\n )\n ] = false;\n initialViewModel[\n nameof(\n (component: DflatBaseFilterComponent<any, any>) =>\n component.isModal\n )\n ] = true;\n initialViewModel[\n nameof(\n (component: DflatBaseFilterComponent<any, any>) =>\n component.forceFilter\n )\n ] = true;\n initialViewModel[\n nameof(\n (component: DflatBaseFilterComponent<any, any>) =>\n component.applyFilterParameters\n )\n ] = false;\n\n if (filter) {\n initialViewModel[\n nameof(\n (component: DflatBaseFilterComponent<any, any>) =>\n component.Filter\n )\n ] = filter;\n }\n\n if (context) {\n initialViewModel = { ...initialViewModel, ...context };\n }\n\n let sectionToAdd: SpecificSection = {\n Name: name,\n Template: templateType,\n Context: initialViewModel,\n };\n\n return sectionToAdd;\n }\n\n}\n","import { Subscription } from 'rxjs';\r\n\r\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\n\r\nimport { ISorting } from '../../model/datagrid';\r\n\r\n@Component({\r\n selector: 'alg-column-sorter',\r\n template: `\r\n\r\n <a style=\"cursor: pointer\" (click)=\"sort()\" class=\"text-nowrap\">\r\n <ng-content></ng-content>\r\n <span *ngIf=\"sortDirection === 'asc'\" class=\"glyphicon glyphicon-triangle-top\" aria-hidden=\"true\"></span>\r\n <span *ngIf=\"sortDirection === 'desc'\" class=\"glyphicon glyphicon-triangle-bottom\" aria-hidden=\"true\"></span>\r\n </a>\r\n `,\r\n standalone: false\r\n})\r\n\r\nexport class SortableColumnComponent implements OnInit, OnDestroy {\r\n\r\n constructor() { }\r\n\r\n @Input('sortable-column')\r\n columnName: string;\r\n\r\n @Input('sort-direction')\r\n sortDirection: \"asc\" | \"desc\";\r\n\r\n @Output()\r\n public onSort: EventEmitter<ISorting<any>> = new EventEmitter(true);\r\n\r\n private columnSortedSubscription: Subscription;\r\n\r\n //@HostListener('click')\r\n sort() {\r\n this.sortDirection = this.sortDirection === \"asc\" ? \"desc\" : \"asc\";\r\n this.onSort.emit({\r\n direction: this.sortDirection,\r\n property : this.columnName\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngOnDestroy() { \r\n }\r\n}\r\n","import { Utilities } from '@dflat-core/web/core';\nimport { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { DraggableOptions } from '../../directives/draggable.directive';\nimport {\n DroppableEventObject,\n DroppableOptions,\n} from '../../directives/droppable.directive';\nimport { EntityViewModel } from '@dflat-core/web/core-model';\nimport { TreeItem } from '../../model/tree';\n\n@Directive()\nexport abstract class TreeComponent<T extends TreeItem<TData>, TData extends EntityViewModel> {\n @Input() rootItem: T;\n @Output() onSelectionChange: EventEmitter<T> =\n new EventEmitter<T>();\n @Output() onDisplayComponent: EventEmitter<boolean> =\n new EventEmitter<boolean>();\n displayComponent: boolean = false;\n selectedItem: T;\n modifiedEntities: T[] = [];\n draggableZones: string[] = [];\n isMenuExpanded: boolean = true;\n // flattedItems: T[] = [];\n\n ngOnInit() {\n if (Utilities.IsNil(this.rootItem)) {\n this.loadTreeItems();\n }\n }\n\n abstract loadTreeItems();\n abstract saveItem(item: T);\n abstract deleteTreeItem(item: T): void;\n abstract addItem(item: T): void;\n\n EntityKey: string;\n\n save() {\n if(!Utilities.IsNil(this.modifiedEntities) && this.modifiedEntities.length > 0 ){\n this.modifiedEntities.forEach((item)=>{\n this.saveItem(item);\n })\n };\n }\n\n selectItem(item: T) {\n if (\n Utilities.IsNil(this.selectedItem) ||\n (!Utilities.IsNil(this.selectedItem) &&\n this.selectedItem.Id != item.Id)\n ) {\n this.selectedItem = item;\n this.onSelectionChange.emit(item);\n }\n }\n\n hasSubItems(item: T): boolean {\n return item.SubItems != null && item.SubItems.length > 0;\n }\n\n\n\n //#region Hierarchical Struct methods\n\n // findParentItem(item: T): T {\n // if (Utilities.IsNil(item)) {\n // return null;\n // }\n // if (!Utilities.IsNil(item.ParentItemId)) {\n // const p = this.findItem(item.ParentItemId);\n // return p;\n // }\n // if (!(this.flattedItems.length > 0))\n // this.flattedItems = this.flattenItems(this.rootItem as TData);\n\n // var p = this.flattedItems.find(\n // (c) => c.Id === item['ParentCategoryId']\n // );\n // return p;\n // }\n\n // flattenItems(item: T): T[] {\n // let items = [item];\n // if (item.SubItems) {\n // for (const subitem of item.SubItems) {\n // items = items.concat(this.flattenItems(subitem as T));\n // }\n // }\n // return items;\n // }\n\n findItem(itemId: number,item: T = this.rootItem): T {\n if (item.Id === itemId) {\n return item;\n }\n\n if (item.SubItems && item.SubItems.length > 0) {\n for (const subItem of item.SubItems) {\n const foundItem = this.findItem(itemId,subItem as T);\n if (foundItem) {\n return foundItem;\n }\n }\n }\n\n return null;\n }\n\n //#endregion\n\n //#region Expand & Collapse\n\n toggleSubItems(item: T) {\n item.ShowSubItems = !item.ShowSubItems;\n }\n\n expandAll() {\n this.rootItem.SubItems.forEach((item) => {\n this.expandSubItems(item as T);\n });\n }\n\n expandSubItems(item: T) {\n item.ShowSubItems = true;\n if (this.hasSubItems(item))\n item.SubItems.forEach((subcat) => {\n this.expandSubItems(subcat as T);\n });\n }\n\n collapseAll() {\n this.rootItem.SubItems.forEach((item) => {\n this.collapseSubItems(item as T);\n });\n }\n\n collapseSubItems(item: T) {\n item.ShowSubItems = false;\n if (this.hasSubItems(item))\n item.SubItems.forEach((subcat) => {\n this.collapseSubItems(subcat as T);\n });\n }\n\n //#endregion\n\n //#region Drag & Drop\n\n getDroppableOption(element: T, initiateSubs : boolean = false): DroppableOptions {\n if (Utilities.IsNil(element))\n return { data: undefined, zone: 'drop-last' };\n if(initiateSubs)\n return { data: element, zone: 'drop-last-' + element.Id };\n return { data: element, zone: 'drop-' + element.Id };\n }\n\n getDraggableOption(element: T): DraggableOptions {\n return { data: element, zones: this.draggableZones };\n }\n\n onZoneDrop(event: DroppableEventObject) {\n const draggedItem: T = event.data;\n const targetItem: T = event.zone;\n\n if (!Utilities.IsNil(draggedItem)) {\n //remove draggedItem from parentDraggedItem subitems\n const parentDraggedItem = this.findItem(draggedItem.ParentItemId);\n const index = parentDraggedItem.SubItems.findIndex(\n (c) => c.Id === draggedItem.Id\n );\n parentDraggedItem.SubItems.splice(index, 1);\n\n if (!Utilities.IsNil(targetItem)) {\n // insert draggedItem in parentTargetItem at the right position (index)\n const parentTargetItem = this.findItem(targetItem.ParentItemId);\n const targetIndex = parentTargetItem.SubItems.findIndex(\n (x) => x.Id === targetItem.Id\n );\n const newIndex = targetIndex + 1;\n\n parentTargetItem.SubItems.splice(newIndex, 0, draggedItem);\n draggedItem.ParentItemId = parentTargetItem.Id;\n\n if (parentTargetItem.Id != parentDraggedItem.Id) {\n this.updateOrderNumbers(parentDraggedItem.SubItems as T[]);\n this.updateOrderNumbers(parentTargetItem.SubItems as T[]);\n }\n else {\n this.updateOrderNumbers(parentTargetItem.SubItems as T[]);\n }\n }\n }\n }\n\n updateOrderNumbers(subItems: T[]) {\n for (let i = 0; i < subItems.length; i++) {\n if(subItems[i].OrderNumber != i+1 ){\n subItems[i].OrderNumber = i + 1;\n const idx = this.modifiedEntities.findIndex((x) => x.Id === subItems[i].Id);\n if(idx !== -1)\n this.modifiedEntities.splice(idx, 0, subItems[i]);\n else\n this.modifiedEntities.push(subItems[i]);\n }\n }\n }\n\n fillDraggableZones(item: T) {\n if (this.hasSubItems(item)) {\n item.SubItems.forEach((subcat) => {\n this.fillDraggableZones(subcat as T);\n });\n }\n this.draggableZones.push('drop-last-' + item.Id);\n this.draggableZones.push('drop-' + item.Id);\n }\n\n createNewTree() {}\n\n //#endregion\n}\n","import { Utilities } from '@dflat-core/web/core';\nimport {\n EntityViewModel,\n FilterViewModel,\n Notification\n} from '@dflat-core/web/core-model';\nimport { AfterViewInit, Directive, inject, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\n\nimport { Subject, Subscription } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { ActivatedRoute } from '@angular/router';\nimport { Guid } from 'guid-typescript';\nimport { ApplicationService } from '../../../services/application.service';\nimport type { EntityFacade } from '../../models/entity-facade';\nimport type { NewEditorComponent } from '../new-editor/new-editor.component';\nimport type { PropertyEditorComponent } from '../property-editor/property-editor-component';\nimport { Action, DflatBaseComponent } from './../../../../lib/model/model';\nimport { PP_SERVICE } from '../../../services/presentation-profile.token';\n@Directive()\nexport abstract class BaseComponent<\n TFilter extends FilterViewModel,\n TData extends EntityViewModel\n >\n extends DflatBaseComponent\n implements OnInit, OnDestroy, AfterViewInit\n{\n abstract getEntityKey(): string;\n abstract getTitle(): string;\n abstract getPath(): string;\n abstract get PermissionKey(): string;\n\n\n sectionKey : string;\n get layoutKey() : string{\n return this.sectionKey ? `${this.getEntityKey()}::${this.sectionKey}` : this.getEntityKey();\n }\n\n\n notif: Subscription;\n HasFilter: boolean = true;\n loadDataOnNotification: boolean = false;\n displayComponent: boolean = false;\n public IsTheMainComponent: boolean = true;\n public actionBarSearchText: string = 'Rechercher...';\n\n @ViewChild('editor', { static: false }) newEditor: NewEditorComponent<TData>;\n // @ViewChild('filter', { static: false }) filterComponent: FilterFormComponent<TFilter,TData>;\n actionTitle: string = '';\n log: any;\n @Input() public loadDataOnInit?: boolean = true;\n @Input('baseComponentClass') baseComponentClass: string = 'basecomponent';\n @Input('propertyGridClass') propertyGridClass: string =\n 'property-container';\n get Filter(): TFilter {\n return <TFilter>this.facade.filter.filter$.value;\n }\n\n get DefaultFilter(): TFilter {\n return <TFilter>this.facade.filter.defaultFilter;\n }\n\n isCardVisible: boolean = false;\n\n protected filterInUrl: boolean = true;\n errorMessage: string;\n protected guid: Guid;\n public destroy$ = new Subject<void>();\n\n get propertyGridComponent(): PropertyEditorComponent<TData> {\n return this.newEditor.propertyEditorComponent;\n }\n FILE_SECTION: string = 'Fichiers';\n facade: EntityFacade<TData>;\n\n get selectedEntities(): TData[] {\n return this.facade.selection.Selected;\n }\n get modifiedEntities(): TData[] {\n return this.facade.change.Modified;\n }\n filterFn?: (selected: TData[]) => FilterViewModel;\n\n constructor(\n protected app: ApplicationService,\n protected route: ActivatedRoute\n ) {\n super(app);\n this.guid = Guid.create();\n this.facade = this.app.EntityFacadeRegistryService.getFacade<TData>(this.getEntityKey(), this.guid);\n this.facade.actions.setHandlerPath(this.getPath());\n }\n \n ngOnInit() {\n this.actionTitle = this.getTitle();\n\n if (this.IsTheMainComponent) {\n this.initBreadCrumb({\n description: this.getTitle(),\n display: true,\n header: this.getTitle(),\n levels: [\n {\n icon: this.getIcon(),\n link: [this.getPath()],\n title: this.getTitle(),\n },\n ],\n });\n }\n\n this.errorMessage = null;\n\n this.unsubscribeEntityNotification();\n this.subscribeEntityNotification();\n this.displayComponent = true;\n this.facade.data.setloadDataFn((criteria) =>\n this.dataService.search<TData>(this.getEntityKey(), criteria)\n );\n this.facade.editor.setStandaloneMode(false);\n this.registerSelectColumnsAction();\n }\n\n ngAfterViewInit(): void {\n this.facade.interceptor.markComponentInitReady();\n }\n\n getIcon(): string {\n return 'first-order';\n }\n\n subscribeEntityNotification() {\n this.notif = this.mqService\n .of(Utilities.GetChannel(this.getEntityKey()))\n .subscribe((notif) => {\n this.onNotificationHandled(notif);\n });\n }\n\n unsubscribeEntityNotification() {\n if (this.notif) {\n this.notif.unsubscribe();\n }\n }\n\n onNotificationHandled(notif: Notification) {\n // On rechercher l'élement dans la grille\n let oldItem = this.facade.data.getOriginal(notif.entityId);\n\n // Si l'élément n'existe pas, on ne fait rien\n if (!oldItem) {\n // On recharge la grille si le chargement à la notification est activé (loadDataOnNotification)\n if (this.loadDataOnNotification) this.loadData();\n return;\n }\n // Si l'élement est dans la grille, on recherche la dernière version\n // de l'entité en base et on met à jour la ligne dans la grille.\n this.dataService\n .getDetails<TData>(this.getEntityKey(), notif.entityId)\n .subscribe((item) => {\n // check if the data is not modified\n const modified = this.facade.change.getModified(item.Id);\n if (modified) {\n // otherwise we display a message\n console.log(\n `L'élément dont l'Id ${item.Id} est invalide, merci de raffraichir la page !`\n );\n } else {\n // On rechercher l'élemnt dans la grille\n let oldItem = this.facade.data.getOriginal(item.Id);\n \n if (!oldItem) return;\n\n // S'il existe on remplace la ligne actuelle par la nouvelle version\n this.facade.data.setOriginal(item);\n }\n });\n }\n\n public ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n this.onDispose();\n }\n\n private initBreadCrumb(data: any) {\n if (this.IsTheMainComponent) {\n // setTimeout(() => {\n this.breadServ.setCurrent(data);\n // });\n }\n }\n\n public refresh(): void {\n this.Search();\n }\n\n public Search(filter: any = {}, resetPage: boolean = true) {\n if (resetPage) filter.Offset = 0;\n\n // copy the filter properties\n this.CopyFilterProperties(filter);\n\n // split url route\n let urlAndParams = Utilities.splitInTwo(this.router.url, '?');\n\n // bind the parameters to url routing\n let requestParams = this.dataService.getFormattedParams(filter);\n const computedUrl = this.router\n .createUrlTree([urlAndParams.firstPart], {queryParams: requestParams,})\n .toString();\n \n if (!this.filterInUrl || computedUrl === this.router.url || !this.IsTheMainComponent\n ) {\n this.loadData();\n } else {\n // navigate to the the formatted url\n this.router.navigate([urlAndParams.firstPart], {\n queryParams: requestParams,\n });\n }\n }\n\n private CopyFilterProperties(filter: FilterViewModel) {\n Object.keys(filter).forEach((key) => (this.Filter[key] = filter[key]));\n }\n\n protected readonly ppService = inject(PP_SERVICE, { optional: true });\n\n private registerSelectColumnsAction(): void {\n if (!this.ppService || !this.getPpMetaEntityKey()) return;\n\n this.facade.actions.addAction(new Action(\n 'selectColumns',\n 'Colonnes',\n false, true, false,\n 'table-columns',\n 'bg-orange',\n () => this.openColumnSelector(),\n this.PermissionKey,\n ));\n\n this.ppService.resolveColumns(this.getPpConfig()).pipe(take(1)).subscribe(cols => {\n if (cols.length) this.applyProfileColumns(cols);\n });\n\n this.ppService.gridSelectionConfirmed$.pipe(takeUntil(this.destroy$)).subscribe(cols => {\n this.applyProfileColumns(cols);\n });\n }\n\n protected openColumnSelector(): void {\n this.ppService?.openColumnSelector({\n title: `Sélection des colonnes — ${this.getTitle()}`,\n ...this.getPpConfig(),\n });\n }\n\n protected getPpMetaEntityKey(): string | null {\n return null;\n }\n\n protected getPpConfig(): { metaEntityKey: string; supplierId?: number | null; roleId?: number | null } {\n return { metaEntityKey: this.getPpMetaEntityKey() ?? '' };\n }\n\n protected applyProfileColumns(ppColumns: any[]): void {\n this.facade.config.addAlterColumnsFunction(\n backendCols => this.ppService!.buildDescriptors(ppColumns, backendCols),\n );\n }\n\n loadData() {\n this.performLoadData();\n }\n\n performLoadData() {\n this.facade.sections.setSectionDirty();\n this.facade.filter.triggerSearch();\n }\n\n loadActionDescriptors() {}\n\n initCurrentTab(filter: FilterViewModel) {\n if (!Utilities.IsNil(this.facade)) {\n this.facade.filter.setFilter(filter);\n }\n }\n\n onDispose(): void {\n if (this.IsTheMainComponent) {\n this.breadServ.clear();\n }\n\n this.unsubscribeEntityNotification();\n }\n\n filterAction(actionName: string) {\n this.facade.actions.hideAction(actionName);\n }\n\n save() {\n this.facade.actions.executeAction('save',true);\n }\n\n delete() {\n this.facade.actions.executeAction('delete',true);\n }\n\n add(param : Partial<TData> = null){\n this.facade.actions.executeAction('add',true,param);\n }\n\n setLog(log: any){\n this.log = log;\n }\n}\n","import { SelectorConfig } from \"./selector.model\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class SelectorRegistry {\r\n\r\n private registry = new Map<string, SelectorConfig>();\r\n\r\n register(entityKey: string, config: SelectorConfig) {\r\n this.registry.set(entityKey, config);\r\n }\r\n\r\n resolve(entityKey: string): SelectorConfig {\r\n const cfg = this.registry.get(entityKey);\r\n if (!cfg) {\r\n throw new Error(`No selector registered for ${entityKey}`);\r\n }\r\n return cfg;\r\n }\r\n}\r\n","import { InputSelectorOptions } from \"../../../model/model\";\r\nimport { Observable, of, tap } from \"rxjs\";\r\n\r\nexport interface SelectorConfig {\r\n load: (req: SelectorRequest) => Observable<any[]>;\r\n options: InputSelectorOptions;\r\n pageSize: number;\r\n}\r\n\r\nexport interface SelectorRequest {\r\n term: string;\r\n page: number;\r\n pageSize: number;\r\n}\r\n\r\nexport class SelectorDataSource {\r\n\r\n private cache = new Map<string, any[]>();\r\n\r\n constructor(private config: SelectorConfig) {}\r\n\r\n load(term: string, page: number): Observable<any[]> {\r\n const key = `${term}|${page}`;\r\n\r\n if (this.cache.has(key)) {\r\n return of(this.cache.get(key)!);\r\n }\r\n\r\n return this.config.load({\r\n term,\r\n page,\r\n pageSize: this.config.pageSize\r\n }).pipe(\r\n tap(data => this.cache.set(key, data))\r\n );\r\n }\r\n\r\n clearCache() {\r\n this.cache.clear();\r\n }\r\n}\r\n","import {\n EntityConfig,\n EntityViewModel,\n FilterViewModel\n} from '@dflat-core/web/core-model';\nimport { Injectable } from '@angular/core';\nimport isEqual from 'lodash/isEqual';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n of,\n shareReplay,\n startWith\n} from 'rxjs';\nimport { ApplicationService } from '../../services/application.service';\n\ninterface ObservableCacheEntry {\n observable: Observable<EntityConfig>;\n timestamp: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AppConfigService {\n private memoryCache = new Map<string, ObservableCacheEntry>();\n private readonly ttl = 5 * 60 * 1000; // 5 minutes\n private readonly storagePrefix = 'entityConfigCache:';\n\n constructor(private app: ApplicationService) {\n this.initializeFromLocalStorage();\n }\n\n // private serializableObservableToConfig(\n // obs: Observable<EntityConfig>\n // ): Observable<any> {\n // return obs.pipe(\n // map((config) => ({\n // ...config,\n // })),\n // catchError((error) => {\n // console.error('Error serializing observable', error);\n // return of(null);\n // })\n // );\n // }\n\n private initializeFromLocalStorage(): void {\n try {\n const keys = Object.keys(localStorage).filter((key) =>\n key.startsWith(this.storagePrefix)\n );\n\n keys.forEach((key) => {\n try {\n const storedItem = localStorage.getItem(key);\n if (storedItem) {\n const parsedItem = JSON.parse(storedItem);\n\n if (Date.now() - parsedItem.timestamp < this.ttl) {\n const config$ = of(parsedItem.config).pipe(\n shareReplay(1)\n );\n\n this.memoryCache.set(\n key.replace(this.storagePrefix, ''),\n {\n observable: config$,\n timestamp: parsedItem.timestamp,\n }\n );\n } else {\n localStorage.removeItem(key);\n }\n }\n } catch (innerError) {\n console.error(\n 'Error parsing stored cache item:',\n innerError\n );\n localStorage.removeItem(key);\n }\n });\n } catch (error) {\n console.error('Error initializing cache from localStorage:', error);\n }\n }\n\n // getConfig(entityKey: string): Observable<EntityConfig> {\n // const now = Date.now();\n // // const cachedEntry = this.memoryCache.get(entityKey);\n // // if (cachedEntry && now - cachedEntry.timestamp < this.ttl) {\n // // return cachedEntry.observable;\n // // }\n\n // const config$ = this.loadConfig(entityKey).pipe(\n // tap((config) => {\n // const newEntry: ObservableCacheEntry = {\n // observable: of(config).pipe(shareReplay(1)),\n // timestamp: now,\n // };\n // this.memoryCache.set(entityKey, newEntry);\n // // this.saveToLocalStorage(entityKey, config);\n // }),\n // shareReplay(1)\n // );\n\n // return config$;\n // }\n\n private loadConfig(entityKey: string): Observable<EntityConfig> {\n return combineLatest({\n columns: this.app.DataService.getViewColumns(entityKey).pipe(\n startWith(null)\n ),\n viewModel: this.app.DataService.getEntityViewModel<EntityViewModel>(\n entityKey,\n 0\n ).pipe(startWith(null)),\n emptyFilter: this.app.DataService.getEmptyFilter<FilterViewModel>(\n entityKey\n ).pipe(startWith(null)),\n filterDescriptors: this.app.DataService.getViewFilterDescriptors(\n entityKey\n ).pipe(startWith(null)),\n actions: this.app.DataService.getExtendedActions(entityKey).pipe(\n startWith(null)\n ),\n });\n }\n\n private saveToLocalStorage(entityKey: string, config: EntityConfig): void {\n try {\n const cacheEntry = this.memoryCache.get(entityKey);\n if (!cacheEntry) return;\n\n const storableItem = {\n config,\n timestamp: cacheEntry.timestamp,\n };\n\n localStorage.setItem(\n `${this.storagePrefix}${entityKey}`,\n JSON.stringify(storableItem)\n );\n } catch (error) {\n console.error('Error saving to localStorage:', error);\n }\n }\n\n resetConfig(entityKey?: string): void {\n if (entityKey) {\n this.memoryCache.delete(entityKey);\n localStorage.removeItem(`${this.storagePrefix}${entityKey}`);\n } else {\n this.memoryCache.clear();\n Object.keys(localStorage)\n .filter((k) => k.startsWith(this.storagePrefix))\n .forEach((k) => localStorage.removeItem(k));\n }\n }\n\n getAllConfigs(): Map<string, Observable<EntityConfig>> {\n const now = Date.now();\n const validConfigs = new Map<string, Observable<EntityConfig>>();\n\n for (const [key, entry] of this.memoryCache.entries()) {\n if (now - entry.timestamp < this.ttl) {\n validConfigs.set(key, entry.observable);\n }\n }\n\n return validConfigs;\n }\n\n // reset(): void {\n // this.resetConfig(this.entityKey);\n // }\n\n // fix of config caching with shareReplay\n private configSubjects = new Map<\n string,\n BehaviorSubject<EntityConfig | null>\n >();\n\n\n getConfig$(entityKey: string): Observable<EntityConfig> {\n if (!this.configSubjects.has(entityKey)) {\n const subject = new BehaviorSubject<EntityConfig | null>(null);\n this.configSubjects.set(entityKey, subject);\n\n // Load config once, then cache\n this.loadConfig(entityKey).subscribe({\n next: (cfg) => subject.next(cfg),\n error: (err) => {\n console.error(`Error loading config for ${entityKey}`, err);\n subject.error(err);\n },\n });\n }\n return this.configSubjects.get(entityKey)!.pipe(\n filter((cfg): cfg is EntityConfig => !!cfg),\n distinctUntilChanged((a, b) => isEqual(a, b)),\n shareReplay({ refCount: true, bufferSize: 1 })\n );\n }\n\n /** Manual reload (e.g. after save or refresh) */\n reloadConfig(entityKey: string): void {\n const subject = this.configSubjects.get(entityKey);\n if (subject) {\n this.loadConfig(entityKey).subscribe((cfg) => subject.next(cfg));\n }\n }\n}\n","import { Utilities } from '@dflat-core/web/core';\nimport {\n ConditionalResults,\n FieldDescriptor,\n FilterType,\n} from '@dflat-core/web/core-model';\n\nimport {\n AbstractControl,\n FormBuilder,\n FormControl,\n FormGroup,\n} from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n shareReplay,\n} from 'rxjs/operators';\nimport { ValidationService } from '../../services/validation.service';\n\nexport abstract class BaseFormContext<TDescriptor extends FieldDescriptor> {\n form: FormGroup;\n // viewModel: any; // injected by subclass (PropertyEditor or Filters)\n entity: any; // injected by subclass (PropertyEditor or Filters)\n // @Input()\n fields: TDescriptor[] = [];\n constructor(\n private fb: FormBuilder,\n private validationService: ValidationService\n ) {}\n\n /** Initialize form from descriptors */\n // init(descriptors: TDescriptor[], viewModel?: any) {\n\n // this.viewModel = viewModel;\n // const controls: any = {};\n // for (const f of descriptors) {\n // controls[f.PropertyName] = this.fb.control(viewModel?.[f.PropertyName] ?? null,f.FieldValidators);\n // }\n\n // this.form = this.fb.group(controls);\n\n // // attach reactive rules\n // this.setupConditional(descriptors);\n // this.setupCascade(descriptors);\n\n // // fire initial pass\n // descriptors.forEach((d) => this.triggerField(d));\n\n // return this.form;\n // }\n\n private initPropertyForm(withValidators: boolean = false) {\n if (!this.fields) return;\n if (!this.form) {\n this.form = new FormGroup({});\n } else {\n this.form.reset();\n }\n\n // if (!this.ViewModel?.FieldSections?.length) return;\n\n // this.ViewModel.FieldSections.forEach((section) => {\n // section.FieldViewModels\n this.fields.forEach((field) => {\n const validators = withValidators\n ? this.validationService.getFieldValidators(field)\n : [];\n\n const controlValue =\n this.entity?.hasOwnProperty(field.PropertyName) &&\n this.entity[field.PropertyName] !== undefined\n ? this.entity[field.PropertyName]\n : null;\n\n if (!this.form.contains(field.PropertyName))\n this.form.addControl(\n field.PropertyName,\n new FormControl(controlValue, validators)\n );\n // });\n });\n\n if (this.entity) {\n this.form.patchValue(this.entity);\n }\n }\n\n /** Called manually for initial load */\n triggerField(desc: TDescriptor) {\n if (desc.IsConditioning) this.handleConditional(desc);\n if (desc.CascadeDependency) this.handleCascade(desc);\n }\n\n private setupCascade(descriptors: TDescriptor[]) {\n descriptors.forEach((desc) => {\n if (!desc.CascadeDependency || !desc.CascadeDependencyProperty)\n return;\n\n const ctrl = this.form.get(desc.PropertyName);\n ctrl?.valueChanges.subscribe(() => this.handleCascade(desc));\n });\n }\n\n private setupConditional(descriptors: TDescriptor[]) {\n descriptors.forEach((desc) => {\n if (!desc.IsConditioning) return;\n\n const ctrl = this.form.get(desc.PropertyName);\n ctrl?.valueChanges.subscribe(() => this.handleConditional(desc));\n });\n }\n\n /** Single observable for all changes with debounce */\n changes$(): Observable<any> {\n return this.form.valueChanges.pipe(\n debounceTime(50),\n distinctUntilChanged(),\n shareReplay(1)\n );\n }\n\n /** Optional: trackBy helper for template loops */\n trackByField = (_: number, d: TDescriptor) => d.PropertyName;\n\n /** Patch form with an object */\n patch(values: any) {\n this.form.patchValue(values, { emitEvent: true });\n }\n\n /** Convert current form to plain object */\n serialize(): any {\n return this.form.getRawValue();\n }\n\n protected abstract applyCascadeRules(descriptors: TDescriptor[]): void;\n\n protected abstract applyConditionalRules(descriptors: TDescriptor[]): void;\n\n /** --------------------------\n * CASCADE LOGIC\n * -------------------------- */\n protected handleCascade(field: TDescriptor) {\n const selectedValue = field.FilterType === FilterType.Integer\n ? Number(this.entity[field.PropertyName])\n : this.entity[field.PropertyName];\n\n const props = field.CascadeDependencyProperty.split(';');\n\n // const allFields = this.viewModel.FieldSections.flatMap(\n // (sec) => sec.FieldViewModels\n // );\n\n const dependentFields = this.fields.filter((f) => props.includes(f.PropertyName));\n\n for (const dependingField of dependentFields) {\n dependingField.CurrentFilters = dependingField.CurrentFilters || {};\n\n if (Utilities.IsNil(selectedValue) ||\n Utilities.isEmptyString(selectedValue)) {\n delete dependingField.CurrentFilters[field.PropertyName];\n } else {\n dependingField.CurrentFilters[field.PropertyName] = true;\n }\n\n this.resetFieldData(dependingField);\n\n if (field.FilterDistinct) {\n dependingField.Data = [\n ...new Map(\n dependingField.Data.map((item) => [\n item[dependingField.PropertyName],\n item,\n ])\n ).values(),\n ];\n }\n }\n }\n\n /** --------------------------\n * CONDITIONAL LOGIC\n * conditional logic\n * -------------------------- */\n protected handleConditional(field: TDescriptor) {\n const allFields =\n // this.viewModel.FieldSections.flatMap((sec) => sec.FieldViewModels)\n this.fields.filter(\n (f) => f.ConditioningField === field.PropertyName\n );\n\n const conditioningValue = this.form.get(field.PropertyName)?.value;\n\n for (let conditionedField of allFields) {\n const conditionMet =\n Utilities.IsNil(conditioningValue) ||\n conditionedField.ConditioningFieldValue.includes( conditioningValue) ||\n conditionedField.BoolConditioningFieldValue === conditioningValue;\n\n if (\n conditionedField.ConditionalResult === ConditionalResults.Hide\n ) {\n conditionedField.IsHidden = conditionMet;\n }\n\n if (\n conditionedField.ConditionalResult ===\n ConditionalResults.ReadOnly\n ) {\n conditionedField.ReadOnly = conditionMet;\n }\n\n const control = this.form.get(conditionedField.PropertyName);\n\n if (control) {\n if (conditionedField.IsHidden) {\n control.clearValidators();\n } else {\n const validators = this.validationService.getValidators(\n conditionedField.FieldValidators\n );\n this.updateControlValidators(control, validators);\n }\n }\n }\n }\n\n /** --------------------------\n * RESET FIELD DATA LOGIC\n * -------------------------- */\n private resetFieldData(field: TDescriptor) {\n if (Utilities.IsNil(field.OriginalData)) return;\n\n if (field.FilterType === FilterType.Integer) {\n field.Data = field.OriginalData.filter(\n (p) =>\n p[field.ValueMember] === -1 ||\n Object.keys(field.CurrentFilters).every(\n (name) => p[name] === this.entity[name]\n )\n );\n } else {\n field.Data = field.OriginalData.filter((p) =>\n Object.keys(field.CurrentFilters).every(\n (name) => p[name] === this.entity[name]\n )\n );\n }\n }\n\n protected updateControlValidators(\n ctrl: AbstractControl,\n validators: any[]\n ) {\n ctrl.setValidators(validators);\n ctrl.updateValueAndValidity({ emitEvent: false });\n }\n}\n","import { EntityViewModel } from \"@dflat-core/web/core-model\";\nimport { ISorting } from \"../../../model/datagrid\";\nimport { BehaviorSubject, Observable, distinctUntilChanged } from \"rxjs\";\n\nexport class SortingState<TData extends EntityViewModel> {\n readonly property$ = new BehaviorSubject<keyof TData>(' ' as keyof TData);\n readonly direction$ = new BehaviorSubject<'asc' | 'desc'>('desc');\n\n constructor(public readonly entityKey: string) {}\n\n get changes$(): Observable<ISorting<TData>> {\n return this.property$.pipe(\n distinctUntilChanged(),\n (source) =>\n new Observable<ISorting<TData>>((observer) => {\n const sub1 = this.property$.subscribe(() =>\n observer.next(this.snapshot())\n );\n const sub2 = this.direction$.subscribe(() =>\n observer.next(this.snapshot())\n );\n return () => {\n sub1.unsubscribe();\n sub2.unsubscribe();\n };\n })\n );\n }\n\n private snapshot(): ISorting<TData> {\n return {\n property: this.property$.value as keyof TData,\n direction: this.direction$.value,\n };\n }\n\n updateProperty(property: keyof TData) {\n if (this.property$.value === property) {\n this.toggleDirection();\n } else {\n this.property$.next(property);\n this.direction$.next('asc');\n }\n }\n\n private toggleDirection() {\n const next = this.direction$.value === 'asc' ? 'desc' : 'asc';\n this.direction$.next(next);\n }\n\n reset() {\n this.property$.next('' as keyof TData);\n this.direction$.next('asc');\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.InsertionDirective","i2.ModalStateService","i1.ModalService","i2","map","i1","i3.ActionService","i4.EntityFacadeRegistryService","i1.ApplicationService","debounceTime","switchMap","i2.SelectorMapperServiceBase","i3.FacadeModalService","i4","i5","i6","i3","i5.InputSelectorComponent","i6.InputTreeSelectorComponent","i1.ImageService","i2.ActionService","i3.LayoutService","i6.DynamicFieldComponent","i7.ImageComponent","takeUntil","filter","take","distinctUntilChanged","i1.DatagridCellComponent","i2.LayoutService","i3.SelectionService","i7","i8","i9.ImageComponent","i10.DatagridCellComponent","i11.EditModeDirective","i12.ViewModeDirective","i13.FocusableDirective","i14.OnEnterDirective","i15.ToDefinePipe","i16.ToFixedSizeIntegerPipe","i4.DynamicFieldComponent","i3.DynamicFieldComponent","i2.ImageComponent","i3.TabTranscludeDirective","i4.Tab","i5.Tabset","i3.ActionsComponent","i3.DynamicFormComponent","i1.LayoutService","i2.OldLayoutHandlerDirective","i3.HideOnThresholdDirective","observableForkJoin","i2.ParameterTypeTextComponent","i3.ParameterTypeNumberComponent","i4.ParameterTypeBoolComponent","i5.ParameterTypeDateComponent","i6.ParameterTypePasswordComponent","i7.ParameterTypeTextArrayComponent","i8.ParameterTypeNumberArrayComponent","i9.ParameterTypeDateArrayComponent","i10.ParameterTypeBoolArrayComponent","i8.InputSelectorComponent","i9.Tab","i10.Tabset","i11.ValidateOnEnterDirective","i12.FormPasswordComponent","i3.OldDataPageComponent","i1.DragService","i6.MenuComponent","i3.ModalService","i1.SelectorMapperServiceBase","i1.ValidationService","i7.FocusableDirective","i8.SelectorComponent","i1.PropertyChangeBus","i2.ValidationService","i5.LogsComponent","i6.FieldComponent","i3.FieldComponent","i4.PropertyChangeBus","i5.ValidationService","i6.EntityFacadeRegistryService","i10.FocusableDirective","i3.ImageComponent","i4.ToDefinePipe","i5.ToFixedSizeIntegerPipe","i2.EntityFacadeRegistryService","i3.ValidationService","i7.RowRefDirective","i8.ImageComponent","i9.DatagridCellComponent","i10.EditModeDirective","i11.ViewModeDirective","i12.FieldComponent","i13.GridStylePipe","i14.ToDefinePipe","i15.ToFixedSizeIntegerPipe","isNil","i1.EntityFacadeRegistryService","i3.ViewModeDirective","i4.CellRendererComponent","i2.PropertyChangeBus","i3.EntityFacadeRegistryService","i3.ViewModelLoaderService","i6.PropertyChangeBus","i9.FieldComponent","i10.EditorTabSetComponent","i11.EditorTabComponent","i4.BreadcrumbComponent","i5.PropertyEditorComponent","i3.LayoutHandlerDirective","i4.BaseShortcutsDirective","shareReplay"],"mappings":"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"}
|