@veloceapps/sdk 0.0.0-watch
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/README.md +7 -0
- package/cms/cms.actions.d.ts +12 -0
- package/cms/cms.default.d.ts +5 -0
- package/cms/cms.elements.d.ts +4 -0
- package/cms/components/element-children/element-children.component.d.ts +10 -0
- package/cms/components/element-children/element-children.module.d.ts +8 -0
- package/cms/components/element-renderer/element-renderer.component.d.ts +35 -0
- package/cms/components/element-renderer/element-renderer.module.d.ts +7 -0
- package/cms/components/element.component.d.ts +13 -0
- package/cms/components/index.d.ts +1 -0
- package/cms/components/plugin.component.d.ts +15 -0
- package/cms/components/preview/index.d.ts +2 -0
- package/cms/components/preview/preview.component.d.ts +34 -0
- package/cms/components/preview/preview.module.d.ts +11 -0
- package/cms/decorators/element.decorator.d.ts +2 -0
- package/cms/decorators/index.d.ts +1 -0
- package/cms/directives/custom-template.directive.d.ts +12 -0
- package/cms/engine/models/entity.d.ts +11 -0
- package/cms/engine/models/plugin.d.ts +5 -0
- package/cms/index.d.ts +11 -0
- package/cms/injection-tokens.d.ts +11 -0
- package/cms/launcher.module.d.ts +10 -0
- package/cms/modules/federated/default-options.d.ts +4 -0
- package/cms/modules/federated/export.d.ts +1 -0
- package/cms/modules/federated/federated.component.d.ts +26 -0
- package/cms/modules/federated/federated.module.d.ts +9 -0
- package/cms/modules/federated/federated.types.d.ts +30 -0
- package/cms/modules/federated/federated.utils.d.ts +1 -0
- package/cms/package.json +10 -0
- package/cms/plugins/configuration.plugin.d.ts +23 -0
- package/cms/plugins/io.plugin.d.ts +9 -0
- package/cms/plugins/script.plugin.d.ts +13 -0
- package/cms/services/dynamic-module.service.d.ts +15 -0
- package/cms/services/element-context.service.d.ts +8 -0
- package/cms/services/index.d.ts +3 -0
- package/cms/services/integration.state.d.ts +17 -0
- package/cms/services/io-provider.service.d.ts +15 -0
- package/cms/services/launcher.service.d.ts +18 -0
- package/cms/services/templates.service.d.ts +9 -0
- package/cms/types/common.types.d.ts +103 -0
- package/cms/types/configuration.types.d.ts +17 -0
- package/cms/types/elements.types.d.ts +2 -0
- package/cms/types/index.d.ts +5 -0
- package/cms/types/integration.types.d.ts +4 -0
- package/cms/types/path.types.d.ts +11 -0
- package/cms/utils/element.utils.d.ts +15 -0
- package/cms/utils/elements-resolver.d.ts +20 -0
- package/cms/utils/index.d.ts +3 -0
- package/cms/utils/path.utils.d.ts +5 -0
- package/cms/veloce-sdk-cms.d.ts +5 -0
- package/cms/vendor-map.d.ts +689 -0
- package/core/core.module.d.ts +8 -0
- package/core/index.d.ts +6 -0
- package/core/modules/configuration/configuration.module.d.ts +7 -0
- package/core/modules/configuration/helpers.d.ts +3 -0
- package/core/modules/configuration/index.d.ts +4 -0
- package/core/modules/configuration/services/configuration-runtime.service.d.ts +28 -0
- package/core/modules/configuration/services/configuration.service.d.ts +40 -0
- package/core/modules/configuration/services/runtime-context.service.d.ts +14 -0
- package/core/modules/configuration/types/configuration-runtime.types.d.ts +6 -0
- package/core/modules/flow-configuration/flow-configuration.module.d.ts +6 -0
- package/core/modules/flow-configuration/index.d.ts +4 -0
- package/core/modules/flow-configuration/services/flow-configuration.service.d.ts +37 -0
- package/core/modules/flow-configuration/services/flow-update.service.d.ts +12 -0
- package/core/modules/flow-configuration/types/update.types.d.ts +12 -0
- package/core/modules/index.d.ts +2 -0
- package/core/package.json +10 -0
- package/core/services/context.service.d.ts +17 -0
- package/core/services/index.d.ts +3 -0
- package/core/services/product-images.service.d.ts +12 -0
- package/core/services/quote-draft.service.d.ts +31 -0
- package/core/types/index.d.ts +3 -0
- package/core/types/quote-states.types.d.ts +6 -0
- package/core/types/runtime.types.d.ts +31 -0
- package/core/types/ui-definition.types.d.ts +26 -0
- package/core/utils/index.d.ts +2 -0
- package/core/utils/line-item.utils.d.ts +26 -0
- package/core/utils/line-item.worker.d.ts +12 -0
- package/core/veloce-sdk-core.d.ts +5 -0
- package/esm2015/cms/cms.actions.js +17 -0
- package/esm2015/cms/cms.default.js +6 -0
- package/esm2015/cms/cms.elements.js +29 -0
- package/esm2015/cms/components/element-children/element-children.component.js +23 -0
- package/esm2015/cms/components/element-children/element-children.module.js +18 -0
- package/esm2015/cms/components/element-renderer/element-renderer.component.js +143 -0
- package/esm2015/cms/components/element-renderer/element-renderer.module.js +16 -0
- package/esm2015/cms/components/element.component.js +31 -0
- package/esm2015/cms/components/index.js +2 -0
- package/esm2015/cms/components/plugin.component.js +16 -0
- package/esm2015/cms/components/preview/index.js +3 -0
- package/esm2015/cms/components/preview/preview.component.js +105 -0
- package/esm2015/cms/components/preview/preview.module.js +23 -0
- package/esm2015/cms/decorators/element.decorator.js +6 -0
- package/esm2015/cms/decorators/index.js +2 -0
- package/esm2015/cms/directives/custom-template.directive.js +25 -0
- package/esm2015/cms/engine/models/entity.js +18 -0
- package/esm2015/cms/engine/models/plugin.js +6 -0
- package/esm2015/cms/index.js +11 -0
- package/esm2015/cms/injection-tokens.js +8 -0
- package/esm2015/cms/launcher.module.js +23 -0
- package/esm2015/cms/modules/federated/default-options.js +5 -0
- package/esm2015/cms/modules/federated/export.js +2 -0
- package/esm2015/cms/modules/federated/federated.component.js +82 -0
- package/esm2015/cms/modules/federated/federated.module.js +19 -0
- package/esm2015/cms/modules/federated/federated.types.js +2 -0
- package/esm2015/cms/modules/federated/federated.utils.js +37 -0
- package/esm2015/cms/plugins/configuration.plugin.js +94 -0
- package/esm2015/cms/plugins/io.plugin.js +37 -0
- package/esm2015/cms/plugins/script.plugin.js +66 -0
- package/esm2015/cms/services/dynamic-module.service.js +33 -0
- package/esm2015/cms/services/element-context.service.js +10 -0
- package/esm2015/cms/services/index.js +4 -0
- package/esm2015/cms/services/integration.state.js +40 -0
- package/esm2015/cms/services/io-provider.service.js +51 -0
- package/esm2015/cms/services/launcher.service.js +57 -0
- package/esm2015/cms/services/templates.service.js +19 -0
- package/esm2015/cms/types/common.types.js +2 -0
- package/esm2015/cms/types/configuration.types.js +2 -0
- package/esm2015/cms/types/elements.types.js +2 -0
- package/esm2015/cms/types/index.js +6 -0
- package/esm2015/cms/types/integration.types.js +2 -0
- package/esm2015/cms/types/path.types.js +2 -0
- package/esm2015/cms/utils/element.utils.js +149 -0
- package/esm2015/cms/utils/elements-resolver.js +108 -0
- package/esm2015/cms/utils/index.js +4 -0
- package/esm2015/cms/utils/path.utils.js +67 -0
- package/esm2015/cms/veloce-sdk-cms.js +5 -0
- package/esm2015/cms/vendor-map.js +35 -0
- package/esm2015/core/core.module.js +18 -0
- package/esm2015/core/index.js +7 -0
- package/esm2015/core/modules/configuration/configuration.module.js +34 -0
- package/esm2015/core/modules/configuration/helpers.js +10 -0
- package/esm2015/core/modules/configuration/index.js +5 -0
- package/esm2015/core/modules/configuration/services/configuration-runtime.service.js +90 -0
- package/esm2015/core/modules/configuration/services/configuration.service.js +153 -0
- package/esm2015/core/modules/configuration/services/runtime-context.service.js +61 -0
- package/esm2015/core/modules/configuration/types/configuration-runtime.types.js +2 -0
- package/esm2015/core/modules/flow-configuration/flow-configuration.module.js +18 -0
- package/esm2015/core/modules/flow-configuration/index.js +5 -0
- package/esm2015/core/modules/flow-configuration/services/flow-configuration.service.js +90 -0
- package/esm2015/core/modules/flow-configuration/services/flow-update.service.js +114 -0
- package/esm2015/core/modules/flow-configuration/types/update.types.js +2 -0
- package/esm2015/core/modules/index.js +3 -0
- package/esm2015/core/services/context.service.js +44 -0
- package/esm2015/core/services/index.js +4 -0
- package/esm2015/core/services/product-images.service.js +30 -0
- package/esm2015/core/services/quote-draft.service.js +88 -0
- package/esm2015/core/types/index.js +4 -0
- package/esm2015/core/types/quote-states.types.js +2 -0
- package/esm2015/core/types/runtime.types.js +16 -0
- package/esm2015/core/types/ui-definition.types.js +2 -0
- package/esm2015/core/utils/index.js +3 -0
- package/esm2015/core/utils/line-item.utils.js +98 -0
- package/esm2015/core/utils/line-item.worker.js +19 -0
- package/esm2015/core/veloce-sdk-core.js +5 -0
- package/esm2015/index.js +2 -0
- package/esm2015/runtime/components/component-preview/component-preview.component.js +125 -0
- package/esm2015/runtime/components/index.js +5 -0
- package/esm2015/runtime/components/section-renderer/section-renderer.component.js +71 -0
- package/esm2015/runtime/components/ui-runtime/runtime.component.js +427 -0
- package/esm2015/runtime/components/ui-runtime-preview/runtime-preview.component.js +109 -0
- package/esm2015/runtime/execution/components/children-placeholder/children-placeholder.component.js +68 -0
- package/esm2015/runtime/execution/components/context-provider/context-provider.component.js +36 -0
- package/esm2015/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.js +72 -0
- package/esm2015/runtime/execution/components/federated/federated.component.js +81 -0
- package/esm2015/runtime/execution/components/velo-attribute/velo-attribute.component.js +65 -0
- package/esm2015/runtime/execution/components/velo-multiselect/velo-multiselect.component.js +136 -0
- package/esm2015/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.js +80 -0
- package/esm2015/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.js +101 -0
- package/esm2015/runtime/execution/components/velo-port-radio/velo-port-radio.component.js +150 -0
- package/esm2015/runtime/execution/components/velo-type/velo-type.component.js +121 -0
- package/esm2015/runtime/execution/directives/section-script.directive.js +242 -0
- package/esm2015/runtime/execution/directives/sf-query.directive.js +34 -0
- package/esm2015/runtime/execution/directives/velo-attribute.directive.js +86 -0
- package/esm2015/runtime/execution/directives/velo-port.directive.js +373 -0
- package/esm2015/runtime/execution/directives/vl-approval.directive.js +22 -0
- package/esm2015/runtime/execution/directives/vl-document-attachments.directive.js +35 -0
- package/esm2015/runtime/execution/directives/vl-document-templates.directive.js +59 -0
- package/esm2015/runtime/execution/directives/vl-quote.directive.js +41 -0
- package/esm2015/runtime/execution/directives/vl-ramp.directive.js +51 -0
- package/esm2015/runtime/execution/runtime-execution.module.js +163 -0
- package/esm2015/runtime/execution/utils/federated.util.js +37 -0
- package/esm2015/runtime/index.js +5 -0
- package/esm2015/runtime/runtime.module.js +104 -0
- package/esm2015/runtime/services/cart.service.js +28 -0
- package/esm2015/runtime/services/collapsible-state.service.js +34 -0
- package/esm2015/runtime/services/configuration.service.js +102 -0
- package/esm2015/runtime/services/current-state.service.js +17 -0
- package/esm2015/runtime/services/form-scope.service.js +30 -0
- package/esm2015/runtime/services/index.js +4 -0
- package/esm2015/runtime/services/product-model-cache.service.js +30 -0
- package/esm2015/runtime/services/runtime-context.service.js +56 -0
- package/esm2015/runtime/services/runtime-form.service.js +224 -0
- package/esm2015/runtime/services/runtime.service.js +108 -0
- package/esm2015/runtime/services/section-helper.service.js +27 -0
- package/esm2015/runtime/services/section-scope.service.js +36 -0
- package/esm2015/runtime/services/section-store.service.js +22 -0
- package/esm2015/runtime/services/section.service.js +124 -0
- package/esm2015/runtime/types/bound-data.types.js +7 -0
- package/esm2015/runtime/types/index.js +2 -0
- package/esm2015/runtime/types/runtime.types.js +2 -0
- package/esm2015/runtime/types/script-registry.types.js +51 -0
- package/esm2015/runtime/utils/line-item.util.js +273 -0
- package/esm2015/runtime/utils/section.utils.js +26 -0
- package/esm2015/runtime/utils/sections-binder.helper.js +105 -0
- package/esm2015/runtime/veloce-sdk-runtime.js +5 -0
- package/esm2015/src/components/dialog/dialog.component.js +30 -0
- package/esm2015/src/components/dialog/dialog.module.js +19 -0
- package/esm2015/src/components/dialog/dialog.types.js +2 -0
- package/esm2015/src/components/header/cart-overlay/cart-preview.component.js +116 -0
- package/esm2015/src/components/header/cart-overlay/cart-preview.module.js +23 -0
- package/esm2015/src/components/header/header.component.js +196 -0
- package/esm2015/src/components/header/header.module.js +23 -0
- package/esm2015/src/components/header/header.types.js +2 -0
- package/esm2015/src/constants.js +2 -0
- package/esm2015/src/flow-routing.module.js +97 -0
- package/esm2015/src/flow.component.js +35 -0
- package/esm2015/src/flow.module.js +52 -0
- package/esm2015/src/guards/context.guard.js +75 -0
- package/esm2015/src/guards/index.js +2 -0
- package/esm2015/src/guards/product-unload.guard.js +43 -0
- package/esm2015/src/guards/root.guard.js +41 -0
- package/esm2015/src/index.js +7 -0
- package/esm2015/src/pages/catalog/catalog.component.js +117 -0
- package/esm2015/src/pages/catalog/catalog.module.js +20 -0
- package/esm2015/src/pages/debug/debug.component.js +65 -0
- package/esm2015/src/pages/debug/debug.module.js +48 -0
- package/esm2015/src/pages/legacy-product/legacy-product.component.js +132 -0
- package/esm2015/src/pages/legacy-product/legacy-product.module.js +21 -0
- package/esm2015/src/pages/product/product.component.js +95 -0
- package/esm2015/src/pages/product/product.module.js +20 -0
- package/esm2015/src/pages/record-not-found/record-not-found.component.js +29 -0
- package/esm2015/src/pages/record-not-found/record-not-found.module.js +20 -0
- package/esm2015/src/pages/shopping-cart/shopping-cart.component.js +117 -0
- package/esm2015/src/pages/shopping-cart/shopping-cart.module.js +20 -0
- package/esm2015/src/resolvers/flow.resolver.js +58 -0
- package/esm2015/src/resolvers/quote.resolver.js +45 -0
- package/esm2015/src/services/flow-dialog.service.js +80 -0
- package/esm2015/src/services/flow-router.service.js +124 -0
- package/esm2015/src/services/flow.service.js +67 -0
- package/esm2015/src/services/index.js +2 -0
- package/esm2015/src/types/context-route.types.js +2 -0
- package/esm2015/src/types/flow-customization.types.js +3 -0
- package/esm2015/src/types/index.js +3 -0
- package/esm2015/src/types/route.types.js +2 -0
- package/esm2015/src/utils/flow.utils.js +12 -0
- package/esm2015/src/utils/index.js +2 -0
- package/esm2015/veloce-sdk.js +5 -0
- package/fesm2015/veloce-sdk-cms.js +1301 -0
- package/fesm2015/veloce-sdk-cms.js.map +1 -0
- package/fesm2015/veloce-sdk-core.js +837 -0
- package/fesm2015/veloce-sdk-core.js.map +1 -0
- package/fesm2015/veloce-sdk-runtime.js +3895 -0
- package/fesm2015/veloce-sdk-runtime.js.map +1 -0
- package/fesm2015/veloce-sdk.js +1635 -0
- package/fesm2015/veloce-sdk.js.map +1 -0
- package/index.d.ts +1 -0
- package/package.json +49 -0
- package/runtime/components/component-preview/component-preview.component.d.ts +27 -0
- package/runtime/components/index.d.ts +4 -0
- package/runtime/components/section-renderer/section-renderer.component.d.ts +25 -0
- package/runtime/components/ui-runtime/runtime.component.d.ts +53 -0
- package/runtime/components/ui-runtime-preview/runtime-preview.component.d.ts +27 -0
- package/runtime/execution/components/children-placeholder/children-placeholder.component.d.ts +30 -0
- package/runtime/execution/components/context-provider/context-provider.component.d.ts +14 -0
- package/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.d.ts +25 -0
- package/runtime/execution/components/federated/federated.component.d.ts +36 -0
- package/runtime/execution/components/velo-attribute/velo-attribute.component.d.ts +19 -0
- package/runtime/execution/components/velo-multiselect/velo-multiselect.component.d.ts +35 -0
- package/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.d.ts +22 -0
- package/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.d.ts +22 -0
- package/runtime/execution/components/velo-port-radio/velo-port-radio.component.d.ts +28 -0
- package/runtime/execution/components/velo-type/velo-type.component.d.ts +31 -0
- package/runtime/execution/directives/section-script.directive.d.ts +59 -0
- package/runtime/execution/directives/sf-query.directive.d.ts +15 -0
- package/runtime/execution/directives/velo-attribute.directive.d.ts +26 -0
- package/runtime/execution/directives/velo-port.directive.d.ts +74 -0
- package/runtime/execution/directives/vl-approval.directive.d.ts +10 -0
- package/runtime/execution/directives/vl-document-attachments.directive.d.ts +15 -0
- package/runtime/execution/directives/vl-document-templates.directive.d.ts +33 -0
- package/runtime/execution/directives/vl-quote.directive.d.ts +14 -0
- package/runtime/execution/directives/vl-ramp.directive.d.ts +15 -0
- package/runtime/execution/runtime-execution.module.d.ts +27 -0
- package/runtime/execution/utils/federated.util.d.ts +6 -0
- package/runtime/index.d.ts +4 -0
- package/runtime/package.json +10 -0
- package/runtime/runtime.module.d.ts +18 -0
- package/runtime/services/cart.service.d.ts +15 -0
- package/runtime/services/collapsible-state.service.d.ts +15 -0
- package/runtime/services/configuration.service.d.ts +19 -0
- package/runtime/services/current-state.service.d.ts +8 -0
- package/runtime/services/form-scope.service.d.ts +20 -0
- package/runtime/services/index.d.ts +3 -0
- package/runtime/services/product-model-cache.service.d.ts +14 -0
- package/runtime/services/runtime-context.service.d.ts +16 -0
- package/runtime/services/runtime-form.service.d.ts +24 -0
- package/runtime/services/runtime.service.d.ts +43 -0
- package/runtime/services/section-helper.service.d.ts +8 -0
- package/runtime/services/section-scope.service.d.ts +14 -0
- package/runtime/services/section-store.service.d.ts +11 -0
- package/runtime/services/section.service.d.ts +30 -0
- package/runtime/types/bound-data.types.d.ts +13 -0
- package/runtime/types/index.d.ts +1 -0
- package/runtime/types/runtime.types.d.ts +19 -0
- package/runtime/types/script-registry.types.d.ts +13 -0
- package/runtime/utils/line-item.util.d.ts +34 -0
- package/runtime/utils/section.utils.d.ts +2 -0
- package/runtime/utils/sections-binder.helper.d.ts +16 -0
- package/runtime/veloce-sdk-runtime.d.ts +5 -0
- package/src/components/dialog/dialog.component.d.ts +13 -0
- package/src/components/dialog/dialog.module.d.ts +9 -0
- package/src/components/dialog/dialog.types.d.ts +6 -0
- package/src/components/header/cart-overlay/cart-preview.component.d.ts +31 -0
- package/src/components/header/cart-overlay/cart-preview.module.d.ts +13 -0
- package/src/components/header/header.component.d.ts +48 -0
- package/src/components/header/header.module.d.ts +13 -0
- package/src/components/header/header.types.d.ts +19 -0
- package/src/constants.d.ts +1 -0
- package/src/flow-routing.module.d.ts +11 -0
- package/src/flow.component.d.ts +17 -0
- package/src/flow.module.d.ts +15 -0
- package/src/guards/context.guard.d.ts +18 -0
- package/src/guards/index.d.ts +1 -0
- package/src/guards/product-unload.guard.d.ts +16 -0
- package/src/guards/root.guard.d.ts +15 -0
- package/src/index.d.ts +6 -0
- package/src/pages/catalog/catalog.component.d.ts +32 -0
- package/src/pages/catalog/catalog.module.d.ts +10 -0
- package/src/pages/debug/debug.component.d.ts +27 -0
- package/src/pages/debug/debug.module.d.ts +14 -0
- package/src/pages/legacy-product/legacy-product.component.d.ts +37 -0
- package/src/pages/legacy-product/legacy-product.module.d.ts +10 -0
- package/src/pages/product/product.component.d.ts +30 -0
- package/src/pages/product/product.module.d.ts +10 -0
- package/src/pages/record-not-found/record-not-found.component.d.ts +11 -0
- package/src/pages/record-not-found/record-not-found.module.d.ts +9 -0
- package/src/pages/shopping-cart/shopping-cart.component.d.ts +32 -0
- package/src/pages/shopping-cart/shopping-cart.module.d.ts +10 -0
- package/src/resolvers/flow.resolver.d.ts +14 -0
- package/src/resolvers/quote.resolver.d.ts +18 -0
- package/src/services/flow-dialog.service.d.ts +20 -0
- package/src/services/flow-router.service.d.ts +35 -0
- package/src/services/flow.service.d.ts +17 -0
- package/src/services/index.d.ts +1 -0
- package/src/types/context-route.types.d.ts +5 -0
- package/src/types/flow-customization.types.d.ts +11 -0
- package/src/types/index.d.ts +2 -0
- package/src/types/route.types.d.ts +9 -0
- package/src/utils/flow.utils.d.ts +1 -0
- package/src/utils/index.d.ts +1 -0
- package/veloce-sdk.d.ts +5 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { FormGroup } from '@angular/forms';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { ScriptRegistry } from '../types/script-registry.types';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
// TODO ALE RENAME TO SESSION SCOPE
|
|
7
|
+
export class FormScopeService {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.scriptRegistry = new ScriptRegistry();
|
|
10
|
+
this.scriptSessionScope = {};
|
|
11
|
+
this.formSubmitSubject = new Subject();
|
|
12
|
+
this._form = new FormGroup({});
|
|
13
|
+
this.formSubmitEvent = this.formSubmitSubject.asObservable();
|
|
14
|
+
}
|
|
15
|
+
get form() {
|
|
16
|
+
return this._form;
|
|
17
|
+
}
|
|
18
|
+
set form(value) {
|
|
19
|
+
this._form = value;
|
|
20
|
+
}
|
|
21
|
+
publishFormUpdate(value) {
|
|
22
|
+
this.formSubmitSubject.next(value);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
FormScopeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FormScopeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
26
|
+
FormScopeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FormScopeService });
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FormScopeService, decorators: [{
|
|
28
|
+
type: Injectable
|
|
29
|
+
}], ctorParameters: function () { return []; } });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zY29wZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvcnVudGltZS9zZXJ2aWNlcy9mb3JtLXNjb3BlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7O0FBR2hFLG1DQUFtQztBQUNuQyxNQUFNLE9BQU8sZ0JBQWdCO0lBVTNCO1FBUEEsbUJBQWMsR0FBbUIsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUN0RCx1QkFBa0IsR0FBNkIsRUFBRSxDQUFDO1FBRTFDLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7UUFFOUMsVUFBSyxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBR2hDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLEtBQWdCO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFpQjtRQUNqQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7OzhHQXhCVSxnQkFBZ0I7a0hBQWhCLGdCQUFnQjs0RkFBaEIsZ0JBQWdCO2tCQUY1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXBkYXRlRGF0YSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IFNjcmlwdFJlZ2lzdHJ5IH0gZnJvbSAnLi4vdHlwZXMvc2NyaXB0LXJlZ2lzdHJ5LnR5cGVzJztcblxuQEluamVjdGFibGUoKVxuLy8gVE9ETyBBTEUgUkVOQU1FIFRPIFNFU1NJT04gU0NPUEVcbmV4cG9ydCBjbGFzcyBGb3JtU2NvcGVTZXJ2aWNlIHtcbiAgZm9ybVN1Ym1pdEV2ZW50OiBPYnNlcnZhYmxlPFVwZGF0ZURhdGE+O1xuXG4gIHNjcmlwdFJlZ2lzdHJ5OiBTY3JpcHRSZWdpc3RyeSA9IG5ldyBTY3JpcHRSZWdpc3RyeSgpO1xuICBzY3JpcHRTZXNzaW9uU2NvcGU6IHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXG4gIHByaXZhdGUgZm9ybVN1Ym1pdFN1YmplY3QgPSBuZXcgU3ViamVjdDxVcGRhdGVEYXRhPigpO1xuXG4gIHByaXZhdGUgX2Zvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmZvcm1TdWJtaXRFdmVudCA9IHRoaXMuZm9ybVN1Ym1pdFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgZm9ybSgpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLl9mb3JtO1xuICB9XG5cbiAgc2V0IGZvcm0odmFsdWU6IEZvcm1Hcm91cCkge1xuICAgIHRoaXMuX2Zvcm0gPSB2YWx1ZTtcbiAgfVxuXG4gIHB1Ymxpc2hGb3JtVXBkYXRlKHZhbHVlOiBVcGRhdGVEYXRhKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtU3VibWl0U3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { CurrentStateService } from './current-state.service';
|
|
2
|
+
export { RuntimeContextService } from './runtime-context.service';
|
|
3
|
+
export { RuntimeService } from './runtime.service';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9ydW50aW1lL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEN1cnJlbnRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2N1cnJlbnQtc3RhdGUuc2VydmljZSc7XG5leHBvcnQgeyBSdW50aW1lQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL3J1bnRpbWUtY29udGV4dC5zZXJ2aWNlJztcbmV4cG9ydCB7IFJ1bnRpbWVTZXJ2aWNlIH0gZnJvbSAnLi9ydW50aW1lLnNlcnZpY2UnO1xuIl19
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { shareReplay } from 'rxjs/operators';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@veloce/api";
|
|
5
|
+
export class ProductModelCacheService {
|
|
6
|
+
constructor(productModelApiService) {
|
|
7
|
+
this.productModelApiService = productModelApiService;
|
|
8
|
+
this.cachedModel = new Map();
|
|
9
|
+
}
|
|
10
|
+
getProductModel(currentModelId, version) {
|
|
11
|
+
if (!this.cachedModel.has(currentModelId) || version) {
|
|
12
|
+
this.clearCache();
|
|
13
|
+
this.cachedModel.set(currentModelId, this.productModelApiService.load(currentModelId, version).pipe(shareReplay(1)));
|
|
14
|
+
}
|
|
15
|
+
return this.cachedModel.get(currentModelId);
|
|
16
|
+
}
|
|
17
|
+
getCachedModel() {
|
|
18
|
+
const ids = Array.from(this.cachedModel.keys());
|
|
19
|
+
return this.cachedModel.get(ids[0]);
|
|
20
|
+
}
|
|
21
|
+
clearCache() {
|
|
22
|
+
this.cachedModel.clear();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
ProductModelCacheService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ProductModelCacheService, deps: [{ token: i1.ProductModelApiService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
26
|
+
ProductModelCacheService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ProductModelCacheService });
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ProductModelCacheService, decorators: [{
|
|
28
|
+
type: Injectable
|
|
29
|
+
}], ctorParameters: function () { return [{ type: i1.ProductModelApiService }]; } });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1tb2RlbC1jYWNoZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvcnVudGltZS9zZXJ2aWNlcy9wcm9kdWN0LW1vZGVsLWNhY2hlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUc3QyxNQUFNLE9BQU8sd0JBQXdCO0lBQ25DLFlBQW9CLHNCQUE4QztRQUE5QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBRTFELGdCQUFXLEdBQW9ELElBQUksR0FBRyxFQUFFLENBQUM7SUFGWixDQUFDO0lBSXRFLGVBQWUsQ0FBQyxjQUFzQixFQUFFLE9BQWdCO1FBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxPQUFPLEVBQUU7WUFDcEQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBRWxCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUNsQixjQUFjLEVBQ2QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUMvRSxDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBdUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsY0FBYztRQUNaLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRWhELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUF1QyxDQUFDO0lBQzVFLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDOztzSEExQlUsd0JBQXdCOzBIQUF4Qix3QkFBd0I7NEZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb2R1Y3RNb2RlbEFwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlL2FwaSc7XG5pbXBvcnQgeyBQcm9kdWN0TW9kZWxzQ29udGFpbmVyIH0gZnJvbSAnQHZlbG9jZS9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUHJvZHVjdE1vZGVsQ2FjaGVTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwcm9kdWN0TW9kZWxBcGlTZXJ2aWNlOiBQcm9kdWN0TW9kZWxBcGlTZXJ2aWNlKSB7fVxuXG4gIHByaXZhdGUgY2FjaGVkTW9kZWw6IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8UHJvZHVjdE1vZGVsc0NvbnRhaW5lcj4+ID0gbmV3IE1hcCgpO1xuXG4gIGdldFByb2R1Y3RNb2RlbChjdXJyZW50TW9kZWxJZDogc3RyaW5nLCB2ZXJzaW9uPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxQcm9kdWN0TW9kZWxzQ29udGFpbmVyPiB7XG4gICAgaWYgKCF0aGlzLmNhY2hlZE1vZGVsLmhhcyhjdXJyZW50TW9kZWxJZCkgfHwgdmVyc2lvbikge1xuICAgICAgdGhpcy5jbGVhckNhY2hlKCk7XG5cbiAgICAgIHRoaXMuY2FjaGVkTW9kZWwuc2V0KFxuICAgICAgICBjdXJyZW50TW9kZWxJZCxcbiAgICAgICAgdGhpcy5wcm9kdWN0TW9kZWxBcGlTZXJ2aWNlLmxvYWQoY3VycmVudE1vZGVsSWQsIHZlcnNpb24pLnBpcGUoc2hhcmVSZXBsYXkoMSkpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZWRNb2RlbC5nZXQoY3VycmVudE1vZGVsSWQpIGFzIE9ic2VydmFibGU8UHJvZHVjdE1vZGVsc0NvbnRhaW5lcj47XG4gIH1cblxuICBnZXRDYWNoZWRNb2RlbCgpOiBPYnNlcnZhYmxlPFByb2R1Y3RNb2RlbHNDb250YWluZXI+IHtcbiAgICBjb25zdCBpZHMgPSBBcnJheS5mcm9tKHRoaXMuY2FjaGVkTW9kZWwua2V5cygpKTtcblxuICAgIHJldHVybiB0aGlzLmNhY2hlZE1vZGVsLmdldChpZHNbMF0pIGFzIE9ic2VydmFibGU8UHJvZHVjdE1vZGVsc0NvbnRhaW5lcj47XG4gIH1cblxuICBjbGVhckNhY2hlKCkge1xuICAgIHRoaXMuY2FjaGVkTW9kZWwuY2xlYXIoKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { RuntimeModel, SectionPathUtil } from '@veloce/core';
|
|
3
|
+
import { RuntimeMode } from '@veloce/sdk/core';
|
|
4
|
+
import { map } from 'rxjs/operators';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@veloce/api";
|
|
7
|
+
import * as i2 from "primeng/api";
|
|
8
|
+
import * as i3 from "@veloce/sdk/core";
|
|
9
|
+
export class RuntimeContextService {
|
|
10
|
+
constructor(configurationApiService, messageService, contextService) {
|
|
11
|
+
this.configurationApiService = configurationApiService;
|
|
12
|
+
this.messageService = messageService;
|
|
13
|
+
this.contextService = contextService;
|
|
14
|
+
}
|
|
15
|
+
getRuntimeContext(productId, offeringId) {
|
|
16
|
+
return this.configurationApiService.getRuntimeDataByProductId(productId, offeringId).pipe(map(runtimeData => {
|
|
17
|
+
var _a;
|
|
18
|
+
const uiDefinition = this.getUIDefinition(runtimeData.uiDefinitions);
|
|
19
|
+
const runtimeModel = RuntimeModel.create(runtimeData.types, runtimeData.products);
|
|
20
|
+
const { productName, properties } = (_a = Array.from(runtimeModel.components.values()).find(c => c.productId === productId)) !== null && _a !== void 0 ? _a : {};
|
|
21
|
+
return {
|
|
22
|
+
modelId: runtimeData.modelId,
|
|
23
|
+
uiDefinition: uiDefinition,
|
|
24
|
+
runtimeModel: runtimeModel,
|
|
25
|
+
runtimeMode: RuntimeMode.PROD,
|
|
26
|
+
productId: productId,
|
|
27
|
+
productType: (properties === null || properties === void 0 ? void 0 : properties.displayName) || productName,
|
|
28
|
+
offeringId: offeringId,
|
|
29
|
+
properties: {
|
|
30
|
+
PricingEnabled: uiDefinition.pricingEnabled ? 'true' : 'false',
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
getUIDefinition(uiDefinitions = []) {
|
|
36
|
+
const { uiDefinitionId } = this.contextService.resolve();
|
|
37
|
+
const findByFn = (uiDef) => (uiDefinitionId ? uiDefinitionId === uiDef.id : uiDef.primary);
|
|
38
|
+
const uiDefinition = uiDefinitions.find(findByFn) || (uiDefinitions.length === 1 && Object.assign({}, uiDefinitions[0]));
|
|
39
|
+
if (!uiDefinition) {
|
|
40
|
+
const errMsg = `Unable to find ${uiDefinitionId ? uiDefinitionId : 'Default'} UI`;
|
|
41
|
+
this.messageService.add({
|
|
42
|
+
severity: 'error',
|
|
43
|
+
summary: 'ERROR',
|
|
44
|
+
});
|
|
45
|
+
throw new Error(errMsg);
|
|
46
|
+
}
|
|
47
|
+
SectionPathUtil.updateSectionsPath(uiDefinition.sections);
|
|
48
|
+
return uiDefinition;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
RuntimeContextService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: RuntimeContextService, deps: [{ token: i1.ConfigurationApiService }, { token: i2.MessageService }, { token: i3.ContextService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
52
|
+
RuntimeContextService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: RuntimeContextService });
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: RuntimeContextService, decorators: [{
|
|
54
|
+
type: Injectable
|
|
55
|
+
}], ctorParameters: function () { return [{ type: i1.ConfigurationApiService }, { type: i2.MessageService }, { type: i3.ContextService }]; } });
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1jb250ZXh0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9ydW50aW1lL3NlcnZpY2VzL3J1bnRpbWUtY29udGV4dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQWdCLE1BQU0sY0FBYyxDQUFDO0FBQzNFLE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHL0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQUlyQyxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQ1UsdUJBQWdELEVBQ2hELGNBQThCLEVBQzlCLGNBQThCO1FBRjlCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUNyQyxDQUFDO0lBRUosaUJBQWlCLENBQUMsU0FBaUIsRUFBRSxVQUFtQjtRQUN0RCxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUN2RixHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUU7O1lBQ2hCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEYsTUFBTSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsR0FDL0IsTUFBQSxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxtQ0FBSSxFQUFFLENBQUM7WUFFMUYsT0FBTztnQkFDTCxPQUFPLEVBQUUsV0FBVyxDQUFDLE9BQU87Z0JBQzVCLFlBQVksRUFBRSxZQUFZO2dCQUMxQixZQUFZLEVBQUUsWUFBWTtnQkFDMUIsV0FBVyxFQUFFLFdBQVcsQ0FBQyxJQUFJO2dCQUM3QixTQUFTLEVBQUUsU0FBUztnQkFDcEIsV0FBVyxFQUFFLENBQUEsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLFdBQVcsS0FBSSxXQUFXO2dCQUNuRCxVQUFVLEVBQUUsVUFBVTtnQkFDdEIsVUFBVSxFQUFFO29CQUNWLGNBQWMsRUFBRSxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU87aUJBQy9EO2FBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU8sZUFBZSxDQUFDLGdCQUFnQyxFQUFFO1FBQ3hELE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXpELE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLGNBQWMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFekcsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxzQkFBUyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQyxDQUFDO1FBRTdHLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDakIsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLGNBQWMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssQ0FBQztZQUVsRixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztnQkFDdEIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLE9BQU8sRUFBRSxPQUFPO2FBQ2pCLENBQUMsQ0FBQztZQUNILE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDekI7UUFFRCxlQUFlLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTFELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7O21IQW5EVSxxQkFBcUI7dUhBQXJCLHFCQUFxQjs0RkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbkFwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlL2FwaSc7XG5pbXBvcnQgeyBSdW50aW1lTW9kZWwsIFNlY3Rpb25QYXRoVXRpbCwgVUlEZWZpbml0aW9uIH0gZnJvbSAnQHZlbG9jZS9jb3JlJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlLCBSdW50aW1lTW9kZSB9IGZyb20gJ0B2ZWxvY2Uvc2RrL2NvcmUnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBMZWdhY3lSdW50aW1lQ29udGV4dCB9IGZyb20gJy4uL3R5cGVzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVDb250ZXh0U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvbkFwaVNlcnZpY2U6IENvbmZpZ3VyYXRpb25BcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICApIHt9XG5cbiAgZ2V0UnVudGltZUNvbnRleHQocHJvZHVjdElkOiBzdHJpbmcsIG9mZmVyaW5nSWQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPExlZ2FjeVJ1bnRpbWVDb250ZXh0PiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbkFwaVNlcnZpY2UuZ2V0UnVudGltZURhdGFCeVByb2R1Y3RJZChwcm9kdWN0SWQsIG9mZmVyaW5nSWQpLnBpcGUoXG4gICAgICBtYXAocnVudGltZURhdGEgPT4ge1xuICAgICAgICBjb25zdCB1aURlZmluaXRpb24gPSB0aGlzLmdldFVJRGVmaW5pdGlvbihydW50aW1lRGF0YS51aURlZmluaXRpb25zKTtcbiAgICAgICAgY29uc3QgcnVudGltZU1vZGVsID0gUnVudGltZU1vZGVsLmNyZWF0ZShydW50aW1lRGF0YS50eXBlcywgcnVudGltZURhdGEucHJvZHVjdHMpO1xuICAgICAgICBjb25zdCB7IHByb2R1Y3ROYW1lLCBwcm9wZXJ0aWVzIH0gPVxuICAgICAgICAgIEFycmF5LmZyb20ocnVudGltZU1vZGVsLmNvbXBvbmVudHMudmFsdWVzKCkpLmZpbmQoYyA9PiBjLnByb2R1Y3RJZCA9PT0gcHJvZHVjdElkKSA/PyB7fTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1vZGVsSWQ6IHJ1bnRpbWVEYXRhLm1vZGVsSWQsXG4gICAgICAgICAgdWlEZWZpbml0aW9uOiB1aURlZmluaXRpb24sXG4gICAgICAgICAgcnVudGltZU1vZGVsOiBydW50aW1lTW9kZWwsXG4gICAgICAgICAgcnVudGltZU1vZGU6IFJ1bnRpbWVNb2RlLlBST0QsXG4gICAgICAgICAgcHJvZHVjdElkOiBwcm9kdWN0SWQsXG4gICAgICAgICAgcHJvZHVjdFR5cGU6IHByb3BlcnRpZXM/LmRpc3BsYXlOYW1lIHx8IHByb2R1Y3ROYW1lLFxuICAgICAgICAgIG9mZmVyaW5nSWQ6IG9mZmVyaW5nSWQsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgUHJpY2luZ0VuYWJsZWQ6IHVpRGVmaW5pdGlvbi5wcmljaW5nRW5hYmxlZCA/ICd0cnVlJyA6ICdmYWxzZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFVJRGVmaW5pdGlvbih1aURlZmluaXRpb25zOiBVSURlZmluaXRpb25bXSA9IFtdKSB7XG4gICAgY29uc3QgeyB1aURlZmluaXRpb25JZCB9ID0gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCk7XG5cbiAgICBjb25zdCBmaW5kQnlGbiA9ICh1aURlZjogVUlEZWZpbml0aW9uKSA9PiAodWlEZWZpbml0aW9uSWQgPyB1aURlZmluaXRpb25JZCA9PT0gdWlEZWYuaWQgOiB1aURlZi5wcmltYXJ5KTtcblxuICAgIGNvbnN0IHVpRGVmaW5pdGlvbiA9IHVpRGVmaW5pdGlvbnMuZmluZChmaW5kQnlGbikgfHwgKHVpRGVmaW5pdGlvbnMubGVuZ3RoID09PSAxICYmIHsgLi4udWlEZWZpbml0aW9uc1swXSB9KTtcblxuICAgIGlmICghdWlEZWZpbml0aW9uKSB7XG4gICAgICBjb25zdCBlcnJNc2cgPSBgVW5hYmxlIHRvIGZpbmQgJHt1aURlZmluaXRpb25JZCA/IHVpRGVmaW5pdGlvbklkIDogJ0RlZmF1bHQnfSBVSWA7XG5cbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgIHN1bW1hcnk6ICdFUlJPUicsXG4gICAgICB9KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihlcnJNc2cpO1xuICAgIH1cblxuICAgIFNlY3Rpb25QYXRoVXRpbC51cGRhdGVTZWN0aW9uc1BhdGgodWlEZWZpbml0aW9uLnNlY3Rpb25zKTtcblxuICAgIHJldHVybiB1aURlZmluaXRpb247XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
|
+
import { EntityUtil, TypeValidators } from '@veloce/core';
|
|
4
|
+
import { isNull, isString, isUndefined, keys } from 'lodash';
|
|
5
|
+
import { BoundDataType } from '../types/bound-data.types';
|
|
6
|
+
import { LineItemUtil } from '../utils/line-item.util';
|
|
7
|
+
import { SectionsBinderHelper } from '../utils/sections-binder.helper';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export class RuntimeFormService {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.sections = [];
|
|
12
|
+
}
|
|
13
|
+
initForm(sections, solutionLineItem) {
|
|
14
|
+
this.sections = sections;
|
|
15
|
+
this.solutionLineItem = solutionLineItem;
|
|
16
|
+
const form = new FormGroup({});
|
|
17
|
+
sections
|
|
18
|
+
.filter(section => section.model && section.template && section.boundData)
|
|
19
|
+
.forEach(section => {
|
|
20
|
+
this.populateSectionValue(section);
|
|
21
|
+
this.populateSectionPrice(section);
|
|
22
|
+
this.populateFormControls(section, form);
|
|
23
|
+
});
|
|
24
|
+
return form;
|
|
25
|
+
}
|
|
26
|
+
populateSectionValue(section) {
|
|
27
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
28
|
+
let value;
|
|
29
|
+
let valueOptions = [];
|
|
30
|
+
let displayValues = {};
|
|
31
|
+
let properties = {};
|
|
32
|
+
if (FormServiceUtils.isPortSection(section)) {
|
|
33
|
+
const portDomain = (_a = section.model) === null || _a === void 0 ? void 0 : _a.portDomains[section.boundData.name];
|
|
34
|
+
valueOptions = (_b = portDomain === null || portDomain === void 0 ? void 0 : portDomain.domainTypes.map(dt => dt.name)) !== null && _b !== void 0 ? _b : [];
|
|
35
|
+
properties =
|
|
36
|
+
(_c = portDomain === null || portDomain === void 0 ? void 0 : portDomain.domainTypes.reduce(function (map, dt) {
|
|
37
|
+
map[dt.name] = dt.properties;
|
|
38
|
+
return map;
|
|
39
|
+
}, {})) !== null && _c !== void 0 ? _c : {};
|
|
40
|
+
displayValues =
|
|
41
|
+
(_d = portDomain === null || portDomain === void 0 ? void 0 : portDomain.domainTypes.reduce(function (map, dt) {
|
|
42
|
+
map[dt.name] = dt.displayName;
|
|
43
|
+
return map;
|
|
44
|
+
}, {})) !== null && _d !== void 0 ? _d : {};
|
|
45
|
+
value = (_e = section.model) === null || _e === void 0 ? void 0 : _e.lineItems.map(li => li.type);
|
|
46
|
+
}
|
|
47
|
+
if (FormServiceUtils.isAttributeSection(section)) {
|
|
48
|
+
const attribute = (_f = section.model) === null || _f === void 0 ? void 0 : _f.attributes.find(attr => attr.name.toLowerCase() === section.boundData.name.toLowerCase());
|
|
49
|
+
if (attribute) {
|
|
50
|
+
value = attribute.value;
|
|
51
|
+
}
|
|
52
|
+
const attributeDomain = (_g = section.model) === null || _g === void 0 ? void 0 : _g.attributeDomains[section.boundData.name];
|
|
53
|
+
if (!(attribute === null || attribute === void 0 ? void 0 : attribute.type.match('GENERIC|BOOLEAN')) && attributeDomain) {
|
|
54
|
+
const count = attribute && attribute.scale != null
|
|
55
|
+
? LineItemUtil.countAttributeValues(attribute.scale, attributeDomain)
|
|
56
|
+
: undefined;
|
|
57
|
+
if (attribute && attribute.scale != null && count && count <= 100) {
|
|
58
|
+
valueOptions = LineItemUtil.splitDomainToValues(attribute.scale, attributeDomain);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
valueOptions = attributeDomain;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else if (attributeDomain) {
|
|
65
|
+
valueOptions = attributeDomain;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (!EntityUtil.isPresent(value)) {
|
|
69
|
+
value = '';
|
|
70
|
+
}
|
|
71
|
+
section.sectionValue = {
|
|
72
|
+
value,
|
|
73
|
+
valueOptions,
|
|
74
|
+
displayValues,
|
|
75
|
+
properties,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
populateSectionPrice(section) {
|
|
79
|
+
var _a;
|
|
80
|
+
const priceValue = { priceOptions: {} };
|
|
81
|
+
if (FormServiceUtils.isPortSection(section)) {
|
|
82
|
+
const portDomain = (_a = section.model) === null || _a === void 0 ? void 0 : _a.portDomains[section.boundData.name];
|
|
83
|
+
if (portDomain) {
|
|
84
|
+
portDomain.domainTypes.forEach(dt => {
|
|
85
|
+
if (dt.recommendedPrices && dt.recommendedPrices.length > 0) {
|
|
86
|
+
priceValue.priceOptions[dt.name] = dt.recommendedPrices;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
delete priceValue.priceOptions[dt.name];
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
section.priceValue = priceValue;
|
|
95
|
+
}
|
|
96
|
+
populateFormControls(section, form) {
|
|
97
|
+
form.controls[section.id] = this.createFormControl(section);
|
|
98
|
+
if (FormServiceUtils.isPortSection(section) || FormServiceUtils.isTypeSection(section)) {
|
|
99
|
+
form.controls[section.id.concat('qty')] = this.createQtyControl(section);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
createFormControl(section) {
|
|
103
|
+
var _a;
|
|
104
|
+
const value = FormServiceUtils.isPortSection(section) ? void 0 : (_a = section.sectionValue) === null || _a === void 0 ? void 0 : _a.value;
|
|
105
|
+
return new FormControl(value, this.getFormControlValidators(section));
|
|
106
|
+
}
|
|
107
|
+
createQtyControl(section) {
|
|
108
|
+
var _a, _b, _c;
|
|
109
|
+
const isTypeSection = FormServiceUtils.isTypeSection(section);
|
|
110
|
+
const validators = [];
|
|
111
|
+
const maxAllowed = this.getMaxAllowed(section);
|
|
112
|
+
//TODO TEMPORARY SOLUTION (WILL BE DISABLED ONCE RADIO CONTROLS IMPLEMENTED)
|
|
113
|
+
if (maxAllowed > 0) {
|
|
114
|
+
validators.push(this.getQuantityValidator(maxAllowed, isTypeSection ? (_b = (_a = section.model) === null || _a === void 0 ? void 0 : _a.qty) !== null && _b !== void 0 ? _b : 0 : 0));
|
|
115
|
+
}
|
|
116
|
+
const qtyValue = isTypeSection ? (_c = section.model) === null || _c === void 0 ? void 0 : _c.qty : 1;
|
|
117
|
+
return new FormControl(qtyValue, validators);
|
|
118
|
+
}
|
|
119
|
+
getMaxAllowed(section) {
|
|
120
|
+
let lineItem = section.model;
|
|
121
|
+
let portName = section.boundData.name;
|
|
122
|
+
if (FormServiceUtils.isTypeSection(section)) {
|
|
123
|
+
if (section.model && EntityUtil.isPresent(section.model.parentId) && this.solutionLineItem) {
|
|
124
|
+
if (section.model.parentId) {
|
|
125
|
+
lineItem = LineItemUtil.findById(section.model.parentId, [this.solutionLineItem]);
|
|
126
|
+
}
|
|
127
|
+
portName = section.model.port;
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
return 0;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (!lineItem) {
|
|
134
|
+
return 0;
|
|
135
|
+
}
|
|
136
|
+
return SectionsBinderHelper.getMaxAllowed(lineItem, portName);
|
|
137
|
+
}
|
|
138
|
+
//TODO ALE TO SUPPORT EMPTY VALUES FOR INTERVAL ATTRIBUTES OUT OF DOMAIN
|
|
139
|
+
getFormControlValidators(section) {
|
|
140
|
+
if (!FormServiceUtils.isAttributeSection(section)) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
const validators = [];
|
|
144
|
+
const parentLineItem = section.model && this.solutionLineItem && FormServiceUtils.findParent(section.model.id, [this.solutionLineItem]);
|
|
145
|
+
const attribute = parentLineItem &&
|
|
146
|
+
parentLineItem.attributes.find(attr => attr.name.toLowerCase() === section.boundData.name.toLowerCase());
|
|
147
|
+
if (!attribute || !attribute.type) {
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
const primitiveTypesValidators = {
|
|
151
|
+
INT: TypeValidators.integerValidator(),
|
|
152
|
+
'DOUBLE|DECIMAL': TypeValidators.decimalValidator(10),
|
|
153
|
+
};
|
|
154
|
+
keys(primitiveTypesValidators).forEach(types => {
|
|
155
|
+
if (types.match(attribute.type)) {
|
|
156
|
+
const validator = primitiveTypesValidators[types];
|
|
157
|
+
validators.push(validator);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
if (!attribute.type.match('GENERIC|BOOLEAN|MULTIPLE')) {
|
|
161
|
+
const sectionLabel = section.label;
|
|
162
|
+
const intervalValidator = function (control) {
|
|
163
|
+
var _a;
|
|
164
|
+
if (isUndefined(control.value) || isNull(control.value) || isNaN(+control.value)) {
|
|
165
|
+
return { interval: { message: sectionLabel + ' is not in domain' } };
|
|
166
|
+
}
|
|
167
|
+
if (!isUndefined(control.value) && isString(control.value) && control.value.length === 0) {
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
const attributeDomain = (_a = section.model) === null || _a === void 0 ? void 0 : _a.attributeDomains[section.boundData.name];
|
|
171
|
+
const valid = attributeDomain === null || attributeDomain === void 0 ? void 0 : attributeDomain.some(valueOption => {
|
|
172
|
+
const min = +valueOption.min;
|
|
173
|
+
const max = +valueOption.max;
|
|
174
|
+
return +control.value <= max && +control.value >= min;
|
|
175
|
+
});
|
|
176
|
+
if (!valid) {
|
|
177
|
+
return { interval: { message: sectionLabel + ' is not in domain' } };
|
|
178
|
+
}
|
|
179
|
+
return null;
|
|
180
|
+
};
|
|
181
|
+
validators.push(intervalValidator);
|
|
182
|
+
}
|
|
183
|
+
if (section.required) {
|
|
184
|
+
validators.push(TypeValidators.requiredValidator(section.label + ' is required '));
|
|
185
|
+
}
|
|
186
|
+
return validators.length !== 0 ? validators : null;
|
|
187
|
+
}
|
|
188
|
+
getQuantityValidator(max, originalQty) {
|
|
189
|
+
return control => {
|
|
190
|
+
if (!control.value) {
|
|
191
|
+
return { quantity: { message: 'Required' } };
|
|
192
|
+
}
|
|
193
|
+
else if (isNaN(+control.value) || +control.value < 1) {
|
|
194
|
+
return { quantity: { message: 'Invalid value' } };
|
|
195
|
+
}
|
|
196
|
+
else if (+control.value > max + originalQty) {
|
|
197
|
+
return { quantity: { message: 'Max quantity ' + (max + originalQty) } };
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
return null;
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
RuntimeFormService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: RuntimeFormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
206
|
+
RuntimeFormService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: RuntimeFormService });
|
|
207
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: RuntimeFormService, decorators: [{
|
|
208
|
+
type: Injectable
|
|
209
|
+
}] });
|
|
210
|
+
export class FormServiceUtils {
|
|
211
|
+
static isPortSection(section) {
|
|
212
|
+
return section && section.boundData && section.boundData.entityType === BoundDataType[BoundDataType.PORT];
|
|
213
|
+
}
|
|
214
|
+
static isTypeSection(section) {
|
|
215
|
+
return section && section.boundData && section.boundData.entityType === BoundDataType[BoundDataType.TYPE];
|
|
216
|
+
}
|
|
217
|
+
static isAttributeSection(section) {
|
|
218
|
+
return section && section.boundData && section.boundData.entityType === BoundDataType[BoundDataType.ATTRIBUTE];
|
|
219
|
+
}
|
|
220
|
+
static findParent(parentId, lineItems) {
|
|
221
|
+
return EntityUtil.findByFieldHierarchically('id', parentId, lineItems, 'lineItems');
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1mb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9ydW50aW1lL3NlcnZpY2VzL3J1bnRpbWUtZm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFpQyxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekYsT0FBTyxFQUFjLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOztBQUd2RSxNQUFNLE9BQU8sa0JBQWtCO0lBRC9CO1FBRUUsYUFBUSxHQUFjLEVBQUUsQ0FBQztLQTRPMUI7SUF6T0MsUUFBUSxDQUFDLFFBQW1CLEVBQUUsZ0JBQTBCO1FBQ3RELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUV6QyxNQUFNLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUvQixRQUFRO2FBQ0wsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUM7YUFDekUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxvQkFBb0IsQ0FB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LENBQUM7SUFDSixDQUFDOztnSEE1T1Usa0JBQWtCO29IQUFsQixrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVTs7QUFnUFgsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixNQUFNLENBQUMsYUFBYSxDQUFDLE9BQWdCO1FBQ25DLE9BQU8sT0FBTyxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEtBQUssYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFnQjtRQUNuQyxPQUFPLE9BQU8sSUFBSSxPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxLQUFLLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxPQUFnQjtRQUN4QyxPQUFPLE9BQU8sSUFBSSxPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxLQUFLLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakgsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBZ0IsRUFBRSxTQUFxQjtRQUN2RCxPQUFPLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN0RixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEVudGl0eVV0aWwsIExpbmVJdGVtLCBQcmljZVZhbHVlLCBTZWN0aW9uLCBUeXBlVmFsaWRhdG9ycyB9IGZyb20gJ0B2ZWxvY2UvY29yZSc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5LCBpc051bGwsIGlzU3RyaW5nLCBpc1VuZGVmaW5lZCwga2V5cyB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBCb3VuZERhdGFUeXBlIH0gZnJvbSAnLi4vdHlwZXMvYm91bmQtZGF0YS50eXBlcyc7XG5pbXBvcnQgeyBMaW5lSXRlbVV0aWwgfSBmcm9tICcuLi91dGlscy9saW5lLWl0ZW0udXRpbCc7XG5pbXBvcnQgeyBTZWN0aW9uc0JpbmRlckhlbHBlciB9IGZyb20gJy4uL3V0aWxzL3NlY3Rpb25zLWJpbmRlci5oZWxwZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUnVudGltZUZvcm1TZXJ2aWNlIHtcbiAgc2VjdGlvbnM6IFNlY3Rpb25bXSA9IFtdO1xuICBzb2x1dGlvbkxpbmVJdGVtPzogTGluZUl0ZW07XG5cbiAgaW5pdEZvcm0oc2VjdGlvbnM6IFNlY3Rpb25bXSwgc29sdXRpb25MaW5lSXRlbTogTGluZUl0ZW0pOiBGb3JtR3JvdXAge1xuICAgIHRoaXMuc2VjdGlvbnMgPSBzZWN0aW9ucztcbiAgICB0aGlzLnNvbHV0aW9uTGluZUl0ZW0gPSBzb2x1dGlvbkxpbmVJdGVtO1xuXG4gICAgY29uc3QgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xuXG4gICAgc2VjdGlvbnNcbiAgICAgIC5maWx0ZXIoc2VjdGlvbiA9PiBzZWN0aW9uLm1vZGVsICYmIHNlY3Rpb24udGVtcGxhdGUgJiYgc2VjdGlvbi5ib3VuZERhdGEpXG4gICAgICAuZm9yRWFjaChzZWN0aW9uID0+IHtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZVNlY3Rpb25WYWx1ZShzZWN0aW9uKTtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZVNlY3Rpb25QcmljZShzZWN0aW9uKTtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZUZvcm1Db250cm9scyhzZWN0aW9uLCBmb3JtKTtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIGZvcm07XG4gIH1cblxuICBwcml2YXRlIHBvcHVsYXRlU2VjdGlvblZhbHVlKHNlY3Rpb246IFNlY3Rpb24pIHtcbiAgICBsZXQgdmFsdWU7XG4gICAgbGV0IHZhbHVlT3B0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgICBsZXQgZGlzcGxheVZhbHVlczogRGljdGlvbmFyeTxzdHJpbmc+ID0ge307XG4gICAgbGV0IHByb3BlcnRpZXM6IERpY3Rpb25hcnk8YW55PiA9IHt9O1xuXG4gICAgaWYgKEZvcm1TZXJ2aWNlVXRpbHMuaXNQb3J0U2VjdGlvbihzZWN0aW9uKSkge1xuICAgICAgY29uc3QgcG9ydERvbWFpbiA9IHNlY3Rpb24ubW9kZWw/LnBvcnREb21haW5zW3NlY3Rpb24uYm91bmREYXRhLm5hbWVdO1xuXG4gICAgICB2YWx1ZU9wdGlvbnMgPSBwb3J0RG9tYWluPy5kb21haW5UeXBlcy5tYXAoZHQgPT4gZHQubmFtZSkgPz8gW107XG4gICAgICBwcm9wZXJ0aWVzID1cbiAgICAgICAgcG9ydERvbWFpbj8uZG9tYWluVHlwZXMucmVkdWNlPERpY3Rpb25hcnk8YW55Pj4oZnVuY3Rpb24gKG1hcCwgZHQpIHtcbiAgICAgICAgICBtYXBbZHQubmFtZV0gPSBkdC5wcm9wZXJ0aWVzO1xuICAgICAgICAgIHJldHVybiBtYXA7XG4gICAgICAgIH0sIHt9KSA/PyB7fTtcbiAgICAgIGRpc3BsYXlWYWx1ZXMgPVxuICAgICAgICBwb3J0RG9tYWluPy5kb21haW5UeXBlcy5yZWR1Y2U8RGljdGlvbmFyeTxzdHJpbmc+PihmdW5jdGlvbiAobWFwLCBkdCkge1xuICAgICAgICAgIG1hcFtkdC5uYW1lXSA9IGR0LmRpc3BsYXlOYW1lO1xuICAgICAgICAgIHJldHVybiBtYXA7XG4gICAgICAgIH0sIHt9KSA/PyB7fTtcblxuICAgICAgdmFsdWUgPSBzZWN0aW9uLm1vZGVsPy5saW5lSXRlbXMubWFwKGxpID0+IGxpLnR5cGUpO1xuICAgIH1cblxuICAgIGlmIChGb3JtU2VydmljZVV0aWxzLmlzQXR0cmlidXRlU2VjdGlvbihzZWN0aW9uKSkge1xuICAgICAgY29uc3QgYXR0cmlidXRlID0gc2VjdGlvbi5tb2RlbD8uYXR0cmlidXRlcy5maW5kKFxuICAgICAgICBhdHRyID0+IGF0dHIubmFtZS50b0xvd2VyQ2FzZSgpID09PSBzZWN0aW9uLmJvdW5kRGF0YS5uYW1lLnRvTG93ZXJDYXNlKCksXG4gICAgICApO1xuICAgICAgaWYgKGF0dHJpYnV0ZSkge1xuICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZS52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXR0cmlidXRlRG9tYWluID0gc2VjdGlvbi5tb2RlbD8uYXR0cmlidXRlRG9tYWluc1tzZWN0aW9uLmJvdW5kRGF0YS5uYW1lXTtcblxuICAgICAgaWYgKCFhdHRyaWJ1dGU/LnR5cGUubWF0Y2goJ0dFTkVSSUN8Qk9PTEVBTicpICYmIGF0dHJpYnV0ZURvbWFpbikge1xuICAgICAgICBjb25zdCBjb3VudCA9XG4gICAgICAgICAgYXR0cmlidXRlICYmIGF0dHJpYnV0ZS5zY2FsZSAhPSBudWxsXG4gICAgICAgICAgICA/IExpbmVJdGVtVXRpbC5jb3VudEF0dHJpYnV0ZVZhbHVlcyhhdHRyaWJ1dGUuc2NhbGUsIGF0dHJpYnV0ZURvbWFpbilcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChhdHRyaWJ1dGUgJiYgYXR0cmlidXRlLnNjYWxlICE9IG51bGwgJiYgY291bnQgJiYgY291bnQgPD0gMTAwKSB7XG4gICAgICAgICAgdmFsdWVPcHRpb25zID0gTGluZUl0ZW1VdGlsLnNwbGl0RG9tYWluVG9WYWx1ZXMoYXR0cmlidXRlLnNjYWxlLCBhdHRyaWJ1dGVEb21haW4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbHVlT3B0aW9ucyA9IGF0dHJpYnV0ZURvbWFpbjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChhdHRyaWJ1dGVEb21haW4pIHtcbiAgICAgICAgdmFsdWVPcHRpb25zID0gYXR0cmlidXRlRG9tYWluO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghRW50aXR5VXRpbC5pc1ByZXNlbnQodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHNlY3Rpb24uc2VjdGlvblZhbHVlID0ge1xuICAgICAgdmFsdWUsXG4gICAgICB2YWx1ZU9wdGlvbnMsXG4gICAgICBkaXNwbGF5VmFsdWVzLFxuICAgICAgcHJvcGVydGllcyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBwb3B1bGF0ZVNlY3Rpb25QcmljZShzZWN0aW9uOiBTZWN0aW9uKSB7XG4gICAgY29uc3QgcHJpY2VWYWx1ZTogUHJpY2VWYWx1ZSA9IHsgcHJpY2VPcHRpb25zOiB7fSB9O1xuXG4gICAgaWYgKEZvcm1TZXJ2aWNlVXRpbHMuaXNQb3J0U2VjdGlvbihzZWN0aW9uKSkge1xuICAgICAgY29uc3QgcG9ydERvbWFpbiA9IHNlY3Rpb24ubW9kZWw/LnBvcnREb21haW5zW3NlY3Rpb24uYm91bmREYXRhLm5hbWVdO1xuXG4gICAgICBpZiAocG9ydERvbWFpbikge1xuICAgICAgICBwb3J0RG9tYWluLmRvbWFpblR5cGVzLmZvckVhY2goZHQgPT4ge1xuICAgICAgICAgIGlmIChkdC5yZWNvbW1lbmRlZFByaWNlcyAmJiBkdC5yZWNvbW1lbmRlZFByaWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBwcmljZVZhbHVlLnByaWNlT3B0aW9uc1tkdC5uYW1lXSA9IGR0LnJlY29tbWVuZGVkUHJpY2VzO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWxldGUgcHJpY2VWYWx1ZS5wcmljZU9wdGlvbnNbZHQubmFtZV07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZWN0aW9uLnByaWNlVmFsdWUgPSBwcmljZVZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3B1bGF0ZUZvcm1Db250cm9scyhzZWN0aW9uOiBTZWN0aW9uLCBmb3JtOiBGb3JtR3JvdXApIHtcbiAgICBmb3JtLmNvbnRyb2xzW3NlY3Rpb24uaWRdID0gdGhpcy5jcmVhdGVGb3JtQ29udHJvbChzZWN0aW9uKTtcblxuICAgIGlmIChGb3JtU2VydmljZVV0aWxzLmlzUG9ydFNlY3Rpb24oc2VjdGlvbikgfHwgRm9ybVNlcnZpY2VVdGlscy5pc1R5cGVTZWN0aW9uKHNlY3Rpb24pKSB7XG4gICAgICBmb3JtLmNvbnRyb2xzW3NlY3Rpb24uaWQuY29uY2F0KCdxdHknKV0gPSB0aGlzLmNyZWF0ZVF0eUNvbnRyb2woc2VjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGb3JtQ29udHJvbChzZWN0aW9uOiBTZWN0aW9uKTogRm9ybUNvbnRyb2wge1xuICAgIGNvbnN0IHZhbHVlID0gRm9ybVNlcnZpY2VVdGlscy5pc1BvcnRTZWN0aW9uKHNlY3Rpb24pID8gdm9pZCAwIDogc2VjdGlvbi5zZWN0aW9uVmFsdWU/LnZhbHVlO1xuXG4gICAgcmV0dXJuIG5ldyBGb3JtQ29udHJvbCh2YWx1ZSwgdGhpcy5nZXRGb3JtQ29udHJvbFZhbGlkYXRvcnMoc2VjdGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVRdHlDb250cm9sKHNlY3Rpb246IFNlY3Rpb24pOiBGb3JtQ29udHJvbCB7XG4gICAgY29uc3QgaXNUeXBlU2VjdGlvbiA9IEZvcm1TZXJ2aWNlVXRpbHMuaXNUeXBlU2VjdGlvbihzZWN0aW9uKTtcblxuICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBbXTtcblxuICAgIGNvbnN0IG1heEFsbG93ZWQgPSB0aGlzLmdldE1heEFsbG93ZWQoc2VjdGlvbik7XG5cbiAgICAvL1RPRE8gVEVNUE9SQVJZIFNPTFVUSU9OIChXSUxMIEJFIERJU0FCTEVEIE9OQ0UgUkFESU8gQ09OVFJPTFMgSU1QTEVNRU5URUQpXG4gICAgaWYgKG1heEFsbG93ZWQgPiAwKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2godGhpcy5nZXRRdWFudGl0eVZhbGlkYXRvcihtYXhBbGxvd2VkLCBpc1R5cGVTZWN0aW9uID8gc2VjdGlvbi5tb2RlbD8ucXR5ID8/IDAgOiAwKSk7XG4gICAgfVxuXG4gICAgY29uc3QgcXR5VmFsdWUgPSBpc1R5cGVTZWN0aW9uID8gc2VjdGlvbi5tb2RlbD8ucXR5IDogMTtcblxuICAgIHJldHVybiBuZXcgRm9ybUNvbnRyb2wocXR5VmFsdWUsIHZhbGlkYXRvcnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNYXhBbGxvd2VkKHNlY3Rpb246IFNlY3Rpb24pIHtcbiAgICBsZXQgbGluZUl0ZW0gPSBzZWN0aW9uLm1vZGVsO1xuICAgIGxldCBwb3J0TmFtZSA9IHNlY3Rpb24uYm91bmREYXRhLm5hbWU7XG5cbiAgICBpZiAoRm9ybVNlcnZpY2VVdGlscy5pc1R5cGVTZWN0aW9uKHNlY3Rpb24pKSB7XG4gICAgICBpZiAoc2VjdGlvbi5tb2RlbCAmJiBFbnRpdHlVdGlsLmlzUHJlc2VudChzZWN0aW9uLm1vZGVsLnBhcmVudElkKSAmJiB0aGlzLnNvbHV0aW9uTGluZUl0ZW0pIHtcbiAgICAgICAgaWYgKHNlY3Rpb24ubW9kZWwucGFyZW50SWQpIHtcbiAgICAgICAgICBsaW5lSXRlbSA9IExpbmVJdGVtVXRpbC5maW5kQnlJZChzZWN0aW9uLm1vZGVsLnBhcmVudElkLCBbdGhpcy5zb2x1dGlvbkxpbmVJdGVtXSk7XG4gICAgICAgIH1cbiAgICAgICAgcG9ydE5hbWUgPSBzZWN0aW9uLm1vZGVsLnBvcnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWxpbmVJdGVtKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gU2VjdGlvbnNCaW5kZXJIZWxwZXIuZ2V0TWF4QWxsb3dlZChsaW5lSXRlbSwgcG9ydE5hbWUpO1xuICB9XG5cbiAgLy9UT0RPIEFMRSBUTyBTVVBQT1JUIEVNUFRZIFZBTFVFUyBGT1IgSU5URVJWQUwgQVRUUklCVVRFUyBPVVQgT0YgRE9NQUlOXG4gIHByaXZhdGUgZ2V0Rm9ybUNvbnRyb2xWYWxpZGF0b3JzKHNlY3Rpb246IFNlY3Rpb24pOiBWYWxpZGF0b3JGbltdIHwgbnVsbCB7XG4gICAgaWYgKCFGb3JtU2VydmljZVV0aWxzLmlzQXR0cmlidXRlU2VjdGlvbihzZWN0aW9uKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdG9ycyA9IFtdO1xuICAgIGNvbnN0IHBhcmVudExpbmVJdGVtID1cbiAgICAgIHNlY3Rpb24ubW9kZWwgJiYgdGhpcy5zb2x1dGlvbkxpbmVJdGVtICYmIEZvcm1TZXJ2aWNlVXRpbHMuZmluZFBhcmVudChzZWN0aW9uLm1vZGVsLmlkLCBbdGhpcy5zb2x1dGlvbkxpbmVJdGVtXSk7XG4gICAgY29uc3QgYXR0cmlidXRlID1cbiAgICAgIHBhcmVudExpbmVJdGVtICYmXG4gICAgICBwYXJlbnRMaW5lSXRlbS5hdHRyaWJ1dGVzLmZpbmQoYXR0ciA9PiBhdHRyLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gc2VjdGlvbi5ib3VuZERhdGEubmFtZS50b0xvd2VyQ2FzZSgpKTtcblxuICAgIGlmICghYXR0cmlidXRlIHx8ICFhdHRyaWJ1dGUudHlwZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgcHJpbWl0aXZlVHlwZXNWYWxpZGF0b3JzOiBhbnkgPSB7XG4gICAgICBJTlQ6IFR5cGVWYWxpZGF0b3JzLmludGVnZXJWYWxpZGF0b3IoKSxcbiAgICAgICdET1VCTEV8REVDSU1BTCc6IFR5cGVWYWxpZGF0b3JzLmRlY2ltYWxWYWxpZGF0b3IoMTApLFxuICAgIH07XG5cbiAgICBrZXlzKHByaW1pdGl2ZVR5cGVzVmFsaWRhdG9ycykuZm9yRWFjaCh0eXBlcyA9PiB7XG4gICAgICBpZiAodHlwZXMubWF0Y2goYXR0cmlidXRlLnR5cGUpKSB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvciA9IHByaW1pdGl2ZVR5cGVzVmFsaWRhdG9yc1t0eXBlc107XG5cbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKHZhbGlkYXRvcik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoIWF0dHJpYnV0ZS50eXBlLm1hdGNoKCdHRU5FUklDfEJPT0xFQU58TVVMVElQTEUnKSkge1xuICAgICAgY29uc3Qgc2VjdGlvbkxhYmVsID0gc2VjdGlvbi5sYWJlbDtcblxuICAgICAgY29uc3QgaW50ZXJ2YWxWYWxpZGF0b3I6IFZhbGlkYXRvckZuID0gZnVuY3Rpb24gKGNvbnRyb2wpIHtcbiAgICAgICAgaWYgKGlzVW5kZWZpbmVkKGNvbnRyb2wudmFsdWUpIHx8IGlzTnVsbChjb250cm9sLnZhbHVlKSB8fCBpc05hTigrY29udHJvbC52YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4geyBpbnRlcnZhbDogeyBtZXNzYWdlOiBzZWN0aW9uTGFiZWwgKyAnIGlzIG5vdCBpbiBkb21haW4nIH0gfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoY29udHJvbC52YWx1ZSkgJiYgaXNTdHJpbmcoY29udHJvbC52YWx1ZSkgJiYgY29udHJvbC52YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZURvbWFpbiA9IHNlY3Rpb24ubW9kZWw/LmF0dHJpYnV0ZURvbWFpbnNbc2VjdGlvbi5ib3VuZERhdGEubmFtZV07XG5cbiAgICAgICAgY29uc3QgdmFsaWQgPSBhdHRyaWJ1dGVEb21haW4/LnNvbWUodmFsdWVPcHRpb24gPT4ge1xuICAgICAgICAgIGNvbnN0IG1pbiA9ICt2YWx1ZU9wdGlvbi5taW47XG4gICAgICAgICAgY29uc3QgbWF4ID0gK3ZhbHVlT3B0aW9uLm1heDtcblxuICAgICAgICAgIHJldHVybiArY29udHJvbC52YWx1ZSA8PSBtYXggJiYgK2NvbnRyb2wudmFsdWUgPj0gbWluO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgICAgcmV0dXJuIHsgaW50ZXJ2YWw6IHsgbWVzc2FnZTogc2VjdGlvbkxhYmVsICsgJyBpcyBub3QgaW4gZG9tYWluJyB9IH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH07XG5cbiAgICAgIHZhbGlkYXRvcnMucHVzaChpbnRlcnZhbFZhbGlkYXRvcik7XG4gICAgfVxuXG4gICAgaWYgKHNlY3Rpb24ucmVxdWlyZWQpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaChUeXBlVmFsaWRhdG9ycy5yZXF1aXJlZFZhbGlkYXRvcihzZWN0aW9uLmxhYmVsICsgJyBpcyByZXF1aXJlZCAnKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRvcnMubGVuZ3RoICE9PSAwID8gdmFsaWRhdG9ycyA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGdldFF1YW50aXR5VmFsaWRhdG9yKG1heDogbnVtYmVyLCBvcmlnaW5hbFF0eTogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiBjb250cm9sID0+IHtcbiAgICAgIGlmICghY29udHJvbC52YWx1ZSkge1xuICAgICAgICByZXR1cm4geyBxdWFudGl0eTogeyBtZXNzYWdlOiAnUmVxdWlyZWQnIH0gfTtcbiAgICAgIH0gZWxzZSBpZiAoaXNOYU4oK2NvbnRyb2wudmFsdWUpIHx8ICtjb250cm9sLnZhbHVlIDwgMSkge1xuICAgICAgICByZXR1cm4geyBxdWFudGl0eTogeyBtZXNzYWdlOiAnSW52YWxpZCB2YWx1ZScgfSB9O1xuICAgICAgfSBlbHNlIGlmICgrY29udHJvbC52YWx1ZSA+IG1heCArIG9yaWdpbmFsUXR5KSB7XG4gICAgICAgIHJldHVybiB7IHF1YW50aXR5OiB7IG1lc3NhZ2U6ICdNYXggcXVhbnRpdHkgICcgKyAobWF4ICsgb3JpZ2luYWxRdHkpIH0gfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZvcm1TZXJ2aWNlVXRpbHMge1xuICBzdGF0aWMgaXNQb3J0U2VjdGlvbihzZWN0aW9uOiBTZWN0aW9uKSB7XG4gICAgcmV0dXJuIHNlY3Rpb24gJiYgc2VjdGlvbi5ib3VuZERhdGEgJiYgc2VjdGlvbi5ib3VuZERhdGEuZW50aXR5VHlwZSA9PT0gQm91bmREYXRhVHlwZVtCb3VuZERhdGFUeXBlLlBPUlRdO1xuICB9XG5cbiAgc3RhdGljIGlzVHlwZVNlY3Rpb24oc2VjdGlvbjogU2VjdGlvbikge1xuICAgIHJldHVybiBzZWN0aW9uICYmIHNlY3Rpb24uYm91bmREYXRhICYmIHNlY3Rpb24uYm91bmREYXRhLmVudGl0eVR5cGUgPT09IEJvdW5kRGF0YVR5cGVbQm91bmREYXRhVHlwZS5UWVBFXTtcbiAgfVxuXG4gIHN0YXRpYyBpc0F0dHJpYnV0ZVNlY3Rpb24oc2VjdGlvbjogU2VjdGlvbikge1xuICAgIHJldHVybiBzZWN0aW9uICYmIHNlY3Rpb24uYm91bmREYXRhICYmIHNlY3Rpb24uYm91bmREYXRhLmVudGl0eVR5cGUgPT09IEJvdW5kRGF0YVR5cGVbQm91bmREYXRhVHlwZS5BVFRSSUJVVEVdO1xuICB9XG5cbiAgc3RhdGljIGZpbmRQYXJlbnQocGFyZW50SWQ6IHN0cmluZywgbGluZUl0ZW1zOiBMaW5lSXRlbVtdKTogTGluZUl0ZW0gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBFbnRpdHlVdGlsLmZpbmRCeUZpZWxkSGllcmFyY2hpY2FsbHkoJ2lkJywgcGFyZW50SWQsIGxpbmVJdGVtcywgJ2xpbmVJdGVtcycpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { RuntimeStep } from '@veloce/sdk/core';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { take } from 'rxjs/operators';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./configuration.service";
|
|
7
|
+
import * as i2 from "@veloce/sdk/core";
|
|
8
|
+
import * as i3 from "primeng/api";
|
|
9
|
+
export class RuntimeService {
|
|
10
|
+
constructor(configurationService, contextService, messageService) {
|
|
11
|
+
this.configurationService = configurationService;
|
|
12
|
+
this.contextService = contextService;
|
|
13
|
+
this.messageService = messageService;
|
|
14
|
+
this.solutionReadySubject = new Subject();
|
|
15
|
+
this.onSolutionReadyEvent = this.solutionReadySubject.asObservable();
|
|
16
|
+
this.solutionUpdateStartedSubject = new Subject();
|
|
17
|
+
this.onSolutionUpdateStartedEvent = this.solutionUpdateStartedSubject.asObservable();
|
|
18
|
+
this.solutionUpdatedSubject = new Subject();
|
|
19
|
+
this.onSolutionUpdatedEvent = this.solutionUpdatedSubject.asObservable();
|
|
20
|
+
this.solutionProcessedSubject = new Subject();
|
|
21
|
+
this.onSolutionProcessed = this.solutionProcessedSubject.asObservable();
|
|
22
|
+
this.solutionStopSubject = new Subject();
|
|
23
|
+
this.onSolutionStopEvent = this.solutionStopSubject.asObservable();
|
|
24
|
+
this.solutionCancelSubject = new Subject();
|
|
25
|
+
this.onSolutionCancelEvent = this.solutionCancelSubject.asObservable();
|
|
26
|
+
this.uiRefreshSubject = new Subject();
|
|
27
|
+
this.onUIRefreshEvent = this.uiRefreshSubject.asObservable();
|
|
28
|
+
}
|
|
29
|
+
displayErrorMessage(error) {
|
|
30
|
+
var _a;
|
|
31
|
+
this.messageService.add({
|
|
32
|
+
severity: 'error',
|
|
33
|
+
summary: ((_a = error.error) === null || _a === void 0 ? void 0 : _a.message) || error.message || JSON.stringify(error),
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
startRuntime(context, states, resolve) {
|
|
37
|
+
this.setRuntimeContext(context);
|
|
38
|
+
this.setRuntimeStep(RuntimeStep.START);
|
|
39
|
+
this.configurationService
|
|
40
|
+
.configure(context, states, resolve)
|
|
41
|
+
.pipe(take(1))
|
|
42
|
+
.subscribe(lineItem => {
|
|
43
|
+
this.solutionReadySubject.next(lineItem);
|
|
44
|
+
}, error => {
|
|
45
|
+
this.displayErrorMessage(error);
|
|
46
|
+
this.solutionUpdatedSubject.next(error);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
updateRuntime(states, configurationContextProperties) {
|
|
50
|
+
if (!this.runtimeContext) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
this.solutionUpdateStartedSubject.next();
|
|
54
|
+
this.setRuntimeStep(RuntimeStep.UPDATE);
|
|
55
|
+
this.updateRuntimeContext(configurationContextProperties);
|
|
56
|
+
this.configurationService
|
|
57
|
+
.configure(this.runtimeContext, states)
|
|
58
|
+
.pipe(take(1))
|
|
59
|
+
.subscribe(lineItem => {
|
|
60
|
+
const context = this.contextService.resolve();
|
|
61
|
+
this.updateRuntimeContext(context.properties);
|
|
62
|
+
this.solutionUpdatedSubject.next(lineItem);
|
|
63
|
+
}, error => {
|
|
64
|
+
this.displayErrorMessage(error);
|
|
65
|
+
this.solutionUpdatedSubject.next(error);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
stopRuntime(solutionLineItem) {
|
|
69
|
+
this.solutionStopSubject.next(solutionLineItem);
|
|
70
|
+
}
|
|
71
|
+
cancelRuntime() {
|
|
72
|
+
this.solutionCancelSubject.next();
|
|
73
|
+
}
|
|
74
|
+
setRuntimeContext(runtimeContext) {
|
|
75
|
+
this.runtimeContext = runtimeContext;
|
|
76
|
+
}
|
|
77
|
+
getRuntimeContext() {
|
|
78
|
+
return this.runtimeContext;
|
|
79
|
+
}
|
|
80
|
+
solutionProcessed(lineItem) {
|
|
81
|
+
this.solutionProcessedSubject.next(lineItem);
|
|
82
|
+
}
|
|
83
|
+
refreshUI(uiDefinition) {
|
|
84
|
+
if (!this.runtimeContext) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
this.runtimeContext = Object.assign(Object.assign({}, this.runtimeContext), { uiDefinition });
|
|
88
|
+
this.uiRefreshSubject.next();
|
|
89
|
+
}
|
|
90
|
+
updateRuntimeContext(configurationContextProperties) {
|
|
91
|
+
if (!this.runtimeContext || !configurationContextProperties) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
this.runtimeContext = Object.assign(Object.assign({}, this.runtimeContext), { properties: configurationContextProperties });
|
|
95
|
+
}
|
|
96
|
+
setRuntimeStep(runtimeStep) {
|
|
97
|
+
if (!this.runtimeContext) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
this.runtimeContext.invocationContext = Object.assign(Object.assign({}, this.runtimeContext.invocationContext), { runtimeStep });
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
RuntimeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: RuntimeService, deps: [{ token: i1.ConfigurationService }, { token: i2.ContextService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
104
|
+
RuntimeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: RuntimeService });
|
|
105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: RuntimeService, decorators: [{
|
|
106
|
+
type: Injectable
|
|
107
|
+
}], ctorParameters: function () { return [{ type: i1.ConfigurationService }, { type: i2.ContextService }, { type: i3.MessageService }]; } });
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvcnVudGltZS9zZXJ2aWNlcy9ydW50aW1lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQStCLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQUt0QyxNQUFNLE9BQU8sY0FBYztJQXdCekIsWUFDVSxvQkFBMEMsRUFDMUMsY0FBOEIsRUFDOUIsY0FBOEI7UUFGOUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBeEJoQyx5QkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBWSxDQUFDO1FBQ3ZELHlCQUFvQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV4RCxpQ0FBNEIsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQzNELGlDQUE0QixHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV4RSwyQkFBc0IsR0FBRyxJQUFJLE9BQU8sRUFBZ0MsQ0FBQztRQUM3RSwyQkFBc0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFNUQsNkJBQXdCLEdBQUcsSUFBSSxPQUFPLEVBQVksQ0FBQztRQUMzRCx3QkFBbUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFM0Qsd0JBQW1CLEdBQUcsSUFBSSxPQUFPLEVBQVksQ0FBQztRQUN0RCx3QkFBbUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFdEQsMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNwRCwwQkFBcUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFMUQscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUMvQyxxQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFNckQsQ0FBQztJQUVJLG1CQUFtQixDQUFDLEtBQVU7O1FBQ3BDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO1lBQ3RCLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLE9BQU8sRUFBRSxDQUFBLE1BQUEsS0FBSyxDQUFDLEtBQUssMENBQUUsT0FBTyxLQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7U0FDeEUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUE2QixFQUFFLE1BQW1CLEVBQUUsT0FBaUI7UUFDaEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxvQkFBb0I7YUFDdEIsU0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDO2FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDYixTQUFTLENBQ1IsUUFBUSxDQUFDLEVBQUU7WUFDVCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLENBQUMsRUFDRCxLQUFLLENBQUMsRUFBRTtZQUNOLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFtQixFQUFFLDhCQUE0RDtRQUM3RixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN4QixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLG9CQUFvQjthQUN0QixTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUM7YUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNiLFNBQVMsQ0FDUixRQUFRLENBQUMsRUFBRTtZQUNULE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFOUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLENBQUMsRUFDRCxLQUFLLENBQUMsRUFBRTtZQUNOLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVcsQ0FBQyxnQkFBMEI7UUFDcEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxjQUFvQztRQUNwRCxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxRQUFrQjtRQUNsQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxTQUFTLENBQUMsWUFBMEI7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDeEIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLGNBQWMsbUNBQ2QsSUFBSSxDQUFDLGNBQWMsS0FDdEIsWUFBWSxHQUNiLENBQUM7UUFDRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVPLG9CQUFvQixDQUFDLDhCQUE0RDtRQUN2RixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLDhCQUE4QixFQUFFO1lBQzNELE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxjQUFjLG1DQUFRLElBQUksQ0FBQyxjQUFjLEtBQUUsVUFBVSxFQUFFLDhCQUE4QixHQUFFLENBQUM7SUFDL0YsQ0FBQztJQUVPLGNBQWMsQ0FBQyxXQUF3QjtRQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN4QixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixtQ0FDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsS0FDeEMsV0FBVyxHQUNaLENBQUM7SUFDSixDQUFDOzs0R0FoSVUsY0FBYztnSEFBZCxjQUFjOzRGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpbmVJdGVtLCBVSURlZmluaXRpb24gfSBmcm9tICdAdmVsb2NlL2NvcmUnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UsIFF1b3RlU3RhdGVzLCBSdW50aW1lU3RlcCB9IGZyb20gJ0B2ZWxvY2Uvc2RrL2NvcmUnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTGVnYWN5UnVudGltZUNvbnRleHQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4vY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBydW50aW1lQ29udGV4dDogTGVnYWN5UnVudGltZUNvbnRleHQgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBzb2x1dGlvblJlYWR5U3ViamVjdCA9IG5ldyBTdWJqZWN0PExpbmVJdGVtPigpO1xuICBvblNvbHV0aW9uUmVhZHlFdmVudCA9IHRoaXMuc29sdXRpb25SZWFkeVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSBzb2x1dGlvblVwZGF0ZVN0YXJ0ZWRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgb25Tb2x1dGlvblVwZGF0ZVN0YXJ0ZWRFdmVudCA9IHRoaXMuc29sdXRpb25VcGRhdGVTdGFydGVkU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHNvbHV0aW9uVXBkYXRlZFN1YmplY3QgPSBuZXcgU3ViamVjdDxMaW5lSXRlbSB8IEh0dHBFcnJvclJlc3BvbnNlPigpO1xuICBvblNvbHV0aW9uVXBkYXRlZEV2ZW50ID0gdGhpcy5zb2x1dGlvblVwZGF0ZWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgc29sdXRpb25Qcm9jZXNzZWRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8TGluZUl0ZW0+KCk7XG4gIG9uU29sdXRpb25Qcm9jZXNzZWQgPSB0aGlzLnNvbHV0aW9uUHJvY2Vzc2VkU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHNvbHV0aW9uU3RvcFN1YmplY3QgPSBuZXcgU3ViamVjdDxMaW5lSXRlbT4oKTtcbiAgb25Tb2x1dGlvblN0b3BFdmVudCA9IHRoaXMuc29sdXRpb25TdG9wU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHNvbHV0aW9uQ2FuY2VsU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIG9uU29sdXRpb25DYW5jZWxFdmVudCA9IHRoaXMuc29sdXRpb25DYW5jZWxTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgdWlSZWZyZXNoU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIG9uVUlSZWZyZXNoRXZlbnQgPSB0aGlzLnVpUmVmcmVzaFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICkge31cblxuICBwcml2YXRlIGRpc3BsYXlFcnJvck1lc3NhZ2UoZXJyb3I6IGFueSk6IHZvaWQge1xuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgc3VtbWFyeTogZXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyb3IubWVzc2FnZSB8fCBKU09OLnN0cmluZ2lmeShlcnJvciksXG4gICAgfSk7XG4gIH1cblxuICBzdGFydFJ1bnRpbWUoY29udGV4dDogTGVnYWN5UnVudGltZUNvbnRleHQsIHN0YXRlczogUXVvdGVTdGF0ZXMsIHJlc29sdmU/OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5zZXRSdW50aW1lQ29udGV4dChjb250ZXh0KTtcbiAgICB0aGlzLnNldFJ1bnRpbWVTdGVwKFJ1bnRpbWVTdGVwLlNUQVJUKTtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlXG4gICAgICAuY29uZmlndXJlKGNvbnRleHQsIHN0YXRlcywgcmVzb2x2ZSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICBsaW5lSXRlbSA9PiB7XG4gICAgICAgICAgdGhpcy5zb2x1dGlvblJlYWR5U3ViamVjdC5uZXh0KGxpbmVJdGVtKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuZGlzcGxheUVycm9yTWVzc2FnZShlcnJvcik7XG4gICAgICAgICAgdGhpcy5zb2x1dGlvblVwZGF0ZWRTdWJqZWN0Lm5leHQoZXJyb3IpO1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVJ1bnRpbWUoc3RhdGVzOiBRdW90ZVN0YXRlcywgY29uZmlndXJhdGlvbkNvbnRleHRQcm9wZXJ0aWVzPzogeyBbaW5kZXg6IHN0cmluZ106IHN0cmluZyB9KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJ1bnRpbWVDb250ZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zb2x1dGlvblVwZGF0ZVN0YXJ0ZWRTdWJqZWN0Lm5leHQoKTtcbiAgICB0aGlzLnNldFJ1bnRpbWVTdGVwKFJ1bnRpbWVTdGVwLlVQREFURSk7XG4gICAgdGhpcy51cGRhdGVSdW50aW1lQ29udGV4dChjb25maWd1cmF0aW9uQ29udGV4dFByb3BlcnRpZXMpO1xuICAgIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2VcbiAgICAgIC5jb25maWd1cmUodGhpcy5ydW50aW1lQ29udGV4dCwgc3RhdGVzKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIGxpbmVJdGVtID0+IHtcbiAgICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCk7XG5cbiAgICAgICAgICB0aGlzLnVwZGF0ZVJ1bnRpbWVDb250ZXh0KGNvbnRleHQucHJvcGVydGllcyk7XG4gICAgICAgICAgdGhpcy5zb2x1dGlvblVwZGF0ZWRTdWJqZWN0Lm5leHQobGluZUl0ZW0pO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5kaXNwbGF5RXJyb3JNZXNzYWdlKGVycm9yKTtcbiAgICAgICAgICB0aGlzLnNvbHV0aW9uVXBkYXRlZFN1YmplY3QubmV4dChlcnJvcik7XG4gICAgICAgIH0sXG4gICAgICApO1xuICB9XG5cbiAgc3RvcFJ1bnRpbWUoc29sdXRpb25MaW5lSXRlbTogTGluZUl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLnNvbHV0aW9uU3RvcFN1YmplY3QubmV4dChzb2x1dGlvbkxpbmVJdGVtKTtcbiAgfVxuXG4gIGNhbmNlbFJ1bnRpbWUoKTogdm9pZCB7XG4gICAgdGhpcy5zb2x1dGlvbkNhbmNlbFN1YmplY3QubmV4dCgpO1xuICB9XG5cbiAgc2V0UnVudGltZUNvbnRleHQocnVudGltZUNvbnRleHQ6IExlZ2FjeVJ1bnRpbWVDb250ZXh0KSB7XG4gICAgdGhpcy5ydW50aW1lQ29udGV4dCA9IHJ1bnRpbWVDb250ZXh0O1xuICB9XG5cbiAgZ2V0UnVudGltZUNvbnRleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMucnVudGltZUNvbnRleHQ7XG4gIH1cblxuICBzb2x1dGlvblByb2Nlc3NlZChsaW5lSXRlbTogTGluZUl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLnNvbHV0aW9uUHJvY2Vzc2VkU3ViamVjdC5uZXh0KGxpbmVJdGVtKTtcbiAgfVxuXG4gIHJlZnJlc2hVSSh1aURlZmluaXRpb246IFVJRGVmaW5pdGlvbikge1xuICAgIGlmICghdGhpcy5ydW50aW1lQ29udGV4dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucnVudGltZUNvbnRleHQgPSB7XG4gICAgICAuLi50aGlzLnJ1bnRpbWVDb250ZXh0LFxuICAgICAgdWlEZWZpbml0aW9uLFxuICAgIH07XG4gICAgdGhpcy51aVJlZnJlc2hTdWJqZWN0Lm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUnVudGltZUNvbnRleHQoY29uZmlndXJhdGlvbkNvbnRleHRQcm9wZXJ0aWVzPzogeyBbaW5kZXg6IHN0cmluZ106IHN0cmluZyB9KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJ1bnRpbWVDb250ZXh0IHx8ICFjb25maWd1cmF0aW9uQ29udGV4dFByb3BlcnRpZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJ1bnRpbWVDb250ZXh0ID0geyAuLi50aGlzLnJ1bnRpbWVDb250ZXh0LCBwcm9wZXJ0aWVzOiBjb25maWd1cmF0aW9uQ29udGV4dFByb3BlcnRpZXMgfTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UnVudGltZVN0ZXAocnVudGltZVN0ZXA6IFJ1bnRpbWVTdGVwKSB7XG4gICAgaWYgKCF0aGlzLnJ1bnRpbWVDb250ZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5ydW50aW1lQ29udGV4dC5pbnZvY2F0aW9uQ29udGV4dCA9IHtcbiAgICAgIC4uLnRoaXMucnVudGltZUNvbnRleHQuaW52b2NhdGlvbkNvbnRleHQsXG4gICAgICBydW50aW1lU3RlcCxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { EntityUtil, PricingUtils } from '@veloce/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class SectionHelperService {
|
|
5
|
+
static findSectionForValue(section, valueOption) {
|
|
6
|
+
if (!EntityUtil.isPresent(section) || !EntityUtil.isPresent(section.children) || EntityUtil.isBlank(valueOption)) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
const found = EntityUtil.filterHierarchically(section.children, 'children', ({ model }) => model && model.type.toLowerCase() === valueOption.toLowerCase());
|
|
10
|
+
return found && found.pop();
|
|
11
|
+
}
|
|
12
|
+
getTotalPrices(section) {
|
|
13
|
+
if (!section || !section.model || !section.model.chargeGroupItems) {
|
|
14
|
+
return new Map();
|
|
15
|
+
}
|
|
16
|
+
return PricingUtils.sumPriceByProperty(section.model.chargeGroupItems, 'netPrice', [
|
|
17
|
+
'chargeMethod',
|
|
18
|
+
'sellingFrequency',
|
|
19
|
+
]);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
SectionHelperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SectionHelperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
23
|
+
SectionHelperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SectionHelperService });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SectionHelperService, decorators: [{
|
|
25
|
+
type: Injectable
|
|
26
|
+
}] });
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi1oZWxwZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3J1bnRpbWUvc2VydmljZXMvc2VjdGlvbi1oZWxwZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFXLE1BQU0sY0FBYyxDQUFDOztBQUdqRSxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFnQixFQUFFLFdBQW1CO1FBQzlELElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNoSCxPQUFPO1NBQ1I7UUFFRCxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsb0JBQW9CLENBQzNDLE9BQU8sQ0FBQyxRQUFRLEVBQ2hCLFVBQVUsRUFDVixDQUFDLEVBQUUsS0FBSyxFQUFXLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FDeEYsQ0FBQztRQUVGLE9BQU8sS0FBSyxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQWdCO1FBQzdCLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRTtZQUNqRSxPQUFPLElBQUksR0FBRyxFQUFFLENBQUM7U0FDbEI7UUFFRCxPQUFPLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBRTtZQUNqRixjQUFjO1lBQ2Qsa0JBQWtCO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7O2tIQXhCVSxvQkFBb0I7c0hBQXBCLG9CQUFvQjs0RkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRW50aXR5VXRpbCwgUHJpY2luZ1V0aWxzLCBTZWN0aW9uIH0gZnJvbSAnQHZlbG9jZS9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNlY3Rpb25IZWxwZXJTZXJ2aWNlIHtcbiAgc3RhdGljIGZpbmRTZWN0aW9uRm9yVmFsdWUoc2VjdGlvbjogU2VjdGlvbiwgdmFsdWVPcHRpb246IHN0cmluZyk6IFNlY3Rpb24gfCB1bmRlZmluZWQge1xuICAgIGlmICghRW50aXR5VXRpbC5pc1ByZXNlbnQoc2VjdGlvbikgfHwgIUVudGl0eVV0aWwuaXNQcmVzZW50KHNlY3Rpb24uY2hpbGRyZW4pIHx8IEVudGl0eVV0aWwuaXNCbGFuayh2YWx1ZU9wdGlvbikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmb3VuZCA9IEVudGl0eVV0aWwuZmlsdGVySGllcmFyY2hpY2FsbHkoXG4gICAgICBzZWN0aW9uLmNoaWxkcmVuLFxuICAgICAgJ2NoaWxkcmVuJyxcbiAgICAgICh7IG1vZGVsIH06IFNlY3Rpb24pID0+IG1vZGVsICYmIG1vZGVsLnR5cGUudG9Mb3dlckNhc2UoKSA9PT0gdmFsdWVPcHRpb24udG9Mb3dlckNhc2UoKSxcbiAgICApO1xuXG4gICAgcmV0dXJuIGZvdW5kICYmIGZvdW5kLnBvcCgpO1xuICB9XG5cbiAgZ2V0VG90YWxQcmljZXMoc2VjdGlvbjogU2VjdGlvbik6IE1hcDxzdHJpbmcsIG51bWJlcj4ge1xuICAgIGlmICghc2VjdGlvbiB8fCAhc2VjdGlvbi5tb2RlbCB8fCAhc2VjdGlvbi5tb2RlbC5jaGFyZ2VHcm91cEl0ZW1zKSB7XG4gICAgICByZXR1cm4gbmV3IE1hcCgpO1xuICAgIH1cblxuICAgIHJldHVybiBQcmljaW5nVXRpbHMuc3VtUHJpY2VCeVByb3BlcnR5KHNlY3Rpb24ubW9kZWwuY2hhcmdlR3JvdXBJdGVtcywgJ25ldFByaWNlJywgW1xuICAgICAgJ2NoYXJnZU1ldGhvZCcsXG4gICAgICAnc2VsbGluZ0ZyZXF1ZW5jeScsXG4gICAgXSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class SectionScopeService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.indent = 1;
|
|
7
|
+
this.templates = new BehaviorSubject([]);
|
|
8
|
+
}
|
|
9
|
+
get section() {
|
|
10
|
+
return this._section;
|
|
11
|
+
}
|
|
12
|
+
set section(value) {
|
|
13
|
+
this._section = value;
|
|
14
|
+
this.indent = this.getIndent(value);
|
|
15
|
+
}
|
|
16
|
+
getIndent(section) {
|
|
17
|
+
if (!section || !section.parentId) {
|
|
18
|
+
return 1;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
let current = section;
|
|
22
|
+
let indent = 1;
|
|
23
|
+
while (current && current.parent) {
|
|
24
|
+
current = current.parent;
|
|
25
|
+
indent++;
|
|
26
|
+
}
|
|
27
|
+
return indent;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
SectionScopeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SectionScopeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
32
|
+
SectionScopeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SectionScopeService });
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SectionScopeService, decorators: [{
|
|
34
|
+
type: Injectable
|
|
35
|
+
}] });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi1zY29wZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvcnVudGltZS9zZXJ2aWNlcy9zZWN0aW9uLXNjb3BlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUV4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUd2QyxNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBVUUsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUdKLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBcUIsRUFBRSxDQUFDLENBQUM7S0FtQmhFO0lBOUJDLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsS0FBYztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQU1PLFNBQVMsQ0FBQyxPQUFnQjtRQUNoQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNqQyxPQUFPLENBQUMsQ0FBQztTQUNWO2FBQU07WUFDTCxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFFdEIsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBRWYsT0FBTyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtnQkFDaEMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBRXpCLE1BQU0sRUFBRSxDQUFDO2FBQ1Y7WUFFRCxPQUFPLE1BQU0sQ0FBQztTQUNmO0lBQ0gsQ0FBQzs7aUhBOUJVLG1CQUFtQjtxSEFBbkIsbUJBQW1COzRGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VjdGlvbiB9IGZyb20gJ0B2ZWxvY2UvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNlY3Rpb25TY29wZVNlcnZpY2Uge1xuICBnZXQgc2VjdGlvbigpOiBTZWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fc2VjdGlvbjtcbiAgfVxuXG4gIHNldCBzZWN0aW9uKHZhbHVlOiBTZWN0aW9uKSB7XG4gICAgdGhpcy5fc2VjdGlvbiA9IHZhbHVlO1xuICAgIHRoaXMuaW5kZW50ID0gdGhpcy5nZXRJbmRlbnQodmFsdWUpO1xuICB9XG4gIGluZGVudCA9IDE7XG4gIHByaXZhdGUgX3NlY3Rpb24hOiBTZWN0aW9uO1xuXG4gIHB1YmxpYyB0ZW1wbGF0ZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmPGFueT5bXT4oW10pO1xuXG4gIHByaXZhdGUgZ2V0SW5kZW50KHNlY3Rpb246IFNlY3Rpb24pOiBudW1iZXIge1xuICAgIGlmICghc2VjdGlvbiB8fCAhc2VjdGlvbi5wYXJlbnRJZCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBjdXJyZW50ID0gc2VjdGlvbjtcblxuICAgICAgbGV0IGluZGVudCA9IDE7XG5cbiAgICAgIHdoaWxlIChjdXJyZW50ICYmIGN1cnJlbnQucGFyZW50KSB7XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudDtcblxuICAgICAgICBpbmRlbnQrKztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluZGVudDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|