{"version":3,"file":"shell/shell.js?cacheBreaker=509dc2b6bb6425126404","mappings":"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AER,CACCvpI,MAAO,cACPlkD,KAAM,eACNytL,KAAM,CAAC,YAER,CACCvpI,MAAO,iBACPlkD,KAAM,WACNytL,KAAM,CAAC,YAER,CACCvpI,MAAO,wBACPlkD,KAAM,kBACNytL,KAAM,CAAC,YAER,CACCvpI,MAAO,mBACPlkD,KAAM,aACNytL,KAAM,CAAC,YAER,CACCvpI,MAAO,cACPlkD,KAAM,QACNytL,KAAM,CAAC,YAER,CACCvpI,MAAO,gBACPlkD,KAAM,aACNytL,KAAM,CAAC,YAER,CACCvpI,MAAO,gBACPlkD,KAAM,UACNytL,KAAM,CAAC,YAER,CACCvpI,MAAO,kBACPlkD,KAAM,4BACNytL,KAAM,CAAC,QAER,CACCvpI,MAAO,eACPlkD,KAAM,iBACNytL,KAAM,CAAC,MAAO,UAEf,CACCvpI,MAAO,sBACPlkD,KAAM,wBACNytL,KAAM,CAAC,MAAO,UAEf,CACCvpI,MAAO,oBACPlkD,KAAM,eACNytL,KAAM,CAAC,MAAO,UAEf,CACCvpI,MAAO,2BACPlkD,KAAM,mBACNytL,KAAM,CAAC,UAER,CACCvpI,MAAO,mBACPlkD,KAAM,4BACNytL,KAAM,CAAC,QAER,CACCvpI,MAAO,mBACPlkD,KAAM,aACNytL,KAAM,CAAC,QAER,CACCvpI,MAAO,oCACPlkD,KAAM,gBACNytL,KAAM,CAAC,SAAU,SAElB,CACCvpI,MAAO,eACPlkD,KAAM,SACNytL,KAAM,CAAC,SAAU,SAElB,CACCvpI,MAAO,2BACPlkD,KAAM,6BACNytL,KAAM,CAAC,YAER,CACCvpI,MAAO,8BACPlkD,KAAM,4BACNytL,KAAM,CAAC,WAER,CACCvpI,MAAO,wBACPlkD,KAAM,qBACNytL,KAAM,CAAC,WAER,CACCvpI,MAAO,yBACPlkD,KAAM,sBACNytL,KAAM,CAAC,WAER,CACCvpI,MAAO,aACPlkD,KAAM,4BACNytL,KAAM,CAAC,UAER,CACCvpI,MAAO,2CACPlkD,KAAM,qCACNytL,KAAM,CAAC,WAER,CACCvpI,MAAO,gCACPlkD,KAAM,oCACNytL,KAAM,CAAC,WAER,CACCvpI,MA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J9FsPT/qB,EAAe+qB,IAAI,yH+FtPV,qsB/FuPT/qB,EAAe+qB,IAAI,iHgGvPV,wvDhGwPT/qB,EAAe+qB,IAAI,+FiGxPV,k2DjGyPT/qB,EAAe+qB,IAAI,6GkGzPV,iclG0PT/qB,EAAe+qB,IAAI,uGmG1PV,sPnG2PT/qB,EAAe+qB,IAAI,wHoG3PV,0kBpG4PT/qB,EAAe+qB,IAAI,mHqG5PV,miCrG6PT/qB,EAAe+qB,IAAI,qGsG7PV,k/HtG8PT/qB,EAAe+qB,IAAI,gGuG9PV,yqDvG+PT/qB,EAAe+qB,IAAI,kFwG/PV,4vCxGgQT/qB,EAAe+qB,IAAI,oFyGhQV,0/BzGiQT/qB,EAAe+qB,IAAI,wG0GjQV,qvB1GkQT/qB,EAAe+qB,IAAI,oG2GlQV,m3D3GmQT/qB,EAAe+qB,IAAI,4F4GnQV,wgD5GoQT/qB,EAAe+qB,IAAI,qG6GpQV,kiC7GqQT/qB,EAAe+qB,IAAI,sH8GrQV,wW9GsQT/qB,EAAe+qB,IAAI,mH+GtQV,upF/GuQT/qB,EAAe+qB,IAAI,sHgHvQV,o3BhHwQT/qB,EAAe+qB,IAAI,6HiHxQV,guBjHyQT/qB,EAAe+qB,IAAI,yHkHzQV,4oBlH0QT/qB,EAAe+qB,IAAI,oHmH1QV,k3BnH2QT/qB,EAAe+qB,IAAI,+HoH3QV,8iCpH4QT/qB,EAAe+qB,IAAI,qHqH5QV,mSrH6QT/qB,EAAe+qB,IAAI,2GsH7QV,2etH8QT/qB,EAAe+qB,IAAI,+GuH9QV,uiBvH+QT/qB,EAAe+qB,IAAI,sGwH/QV,qlExHgRT/qB,EAAe+qB,IAAI,wGyHhRV,gzJzHiRT/qB,EAAe+qB,IAAI,uF0HjRV,mnB1HkRT/qB,EAAe+qB,IAAI,yF2HlRV,80G3HmRT/qB,EAAe+qB,IAAI,8E4HnRV,mkC5HoRT/qB,EAAe+qB,IAAI,sG6HpRV,2P7HqRT/qB,EAAe+qB,IAAI,8F8HrRV,23B9HsRT/qB,EAAe+qB,IAAI,yF+HtRV,ktB/HuRT/qB,EAAe+qB,IAAI,0FgIvRV,s2ChIwRT/qB,EAAe+qB,IAAI,oFiIxRV,65CjIyRT/qB,EAAe+qB,IAAI,wEkIzRV,swBlI0RT/qB,EAAe+qB,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","sources":["webpack://@dwp/solution-builder/./packages/ObjectDetailsPage/object-details-page/object-details-page.js","webpack://@dwp/solution-builder/./packages/ObjectDetailsPage/object-details-page/object-details-page.html","webpack://@dwp/solution-builder/./packages/ObjectDetailsPage/object-details-page.module.js","webpack://@dwp/solution-builder/./packages/ResetPassword/resetPasswordForm/resetPasswordForm.component.js","webpack://@dwp/solution-builder/./packages/ResetPassword/resetPasswordForm/resetPasswordForm.component.html","webpack://@dwp/solution-builder/./packages/ResetPassword/resetPasswordVerification/resetPasswordVerification.component.js","webpack://@dwp/solution-builder/./packages/ResetPassword/resetPasswordVerification/resetPasswordVerification.component.html","webpack://@dwp/solution-builder/./packages/ResetPassword/resetPassword.service.js","webpack://@dwp/solution-builder/./packages/ResetPassword/confirmPasswordForm/confirmPasswordForm.component.js","webpack://@dwp/solution-builder/./packages/ResetPassword/confirmPasswordForm/confirmPasswordForm.component.html","webpack://@dwp/solution-builder/./packages/ResetPassword/resetPassword.module.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/core/services/mx-data-provider-registry.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/core/services/mx-lazy-load-cfg-provider.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/core/utils/mx-disable-watchers-if.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/core/utils/mx-recursion.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/core/utils/mx-tinymce/mx-tinymce-utils.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/core/utils/mx-update-on-enter.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/directives/mx-bind-html-compile/mx-bind-html-compile.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/directives/mx-bind-html-trusted/mx-bind-html-trusted.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/directives/mx-drag-n-drop/mx-drag-n-drop.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/directives/mx-form-validation/mx-form-validation.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/directives/mx-hover-class/mx-hover-class.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/directives/mx-lazy-load/mx-lazy-load.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/directives/mx-on-outside-click/mx-on-outside-click.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/directives/mx-prevent-menu-close/mx-prevent-menu-close.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/directives/mx-repeater-complete/mx-repeater-complete.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/directives/mx-repeater-item/mx-repeater-item.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/directives/mx-resizable/mx-resizable.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/directives/mx-right-click/mx-right-click.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/directives/mx-transclude/mx-transclude.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/directives/mx-ui-accessibility/mx-ui-accessibility.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-attachments/mx-zoom.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-button/mx-button.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-checkbox/mx-checkbox.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-choice/mx-choice.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-color-picker/mx-color-picker.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-config-reader/mx-config-reader.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-container/mx-container.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-currency/mx-currency.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-current-element/mx-current-element.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-datasource-search-panel/mx-datasource-search-panel.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-date-time-picker/mx-date-time.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-dropdown-menu/mx-dropdown-menu.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-file-uploader/mx-file-uploader.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-form-errors/mx-form-errors.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-form-errors/mx-form-message.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-form/mx-form-control-base.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-form/mx-form.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-grid/mx-grid-color-picker.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-grid/mx-grid-currency.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-grid/mx-grid-date-time-picker.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-grid/mx-grid-edit-form-field.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-grid/mx-grid-edit-form.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-grid/mx-grid-icon-picker.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-grid/mx-grid-numeric-edit.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-grid/mx-grid-select.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-grid/mx-grid.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-icon-picker/mx-icon-picker-dropdown.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-icon-picker/mx-icon-picker.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-icon/mx-icon.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-iframe/mx-iframe.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-image-preview/mx-image-preview.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-list/mx-list.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-literals/mx-literal.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-numeric-edit/mx-numeric-edit.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-rating/mx-rating.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-repeater/mx-repeater.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-search-input/mx-search-input.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-stepper/mx-stepper.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-tabs/mx-tabs.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-text-area/mx-text-area.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-text-box/mx-text-box.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-timeline/mx-timeline-lazy.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-timeline/mx-timeline.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-treeview/mx-treeview.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/actions/delete-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/actions/design-widget.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/actions/edit-dashboard.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/actions/edit-in-workflow-studio.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/actions/new-from-action.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/actions/new.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/actions/report-from-action.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/actions/visual-tracking-workflow-studio.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/literals/mx-multi-schema-link.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/literals/mx-object-link.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/literals/mx-schema-link.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/m42-dashboard-widget-custom/m42-dashboard-widget-custom.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-audience-info/mx-audience-info.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-broken-control-stub/mx-broken-control-stub.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-call-service-button/mx-call-service-button.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-carousel/mx-carousel.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-charts/mx-area-chart.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-charts/mx-bar-chart.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-charts/mx-column-chart.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-charts/mx-line-chart.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-charts/mx-pie-chart.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-charts/mx-stacked-bar-chart.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-charts/mx-stacked-column-chart.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-concurrency-merge/mx-concurrency-merge.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-boolean.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-enum-reference.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-expression.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-number.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-object-reference.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-object-references.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-string.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/model/Condition.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/model/ConditionsBuilder.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/model/Group.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/model/conditions-builder-enums.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/model/conditions-builder-helper.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/mx-compliance-rule-condition-builder/compliance-rule-enums.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/mx-compliance-rule-condition-builder/mx-compliance-rule-conditions-builder.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/mx-condition-group.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/mx-condition.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/mx-conditions-builder.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/mx-definition-condition-builder/mx-definition-conditions-builder.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/mx-definition-condition-builder/mx-definition-conditions-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-search-page-custom-form.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-content-widget-view/mx-content-widget-view-dialog-page.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-content-widget-view/mx-content-widget-view-non-visual.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-content-widget-view/mx-content-widget-view.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-custom-content-widget/mx-custom-content-widget.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-custom-control/mx-custom-control.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-dashboard-editor/mx-dashboard-editor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-data-control-panel/mx-data-control-panel.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-data-control-settings-panel/mx-data-control-settings-panel.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-ensure-unique/mx-ensure-unique.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-expression-validator/mx-expression-validator.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-grid/file-selection-tab.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-grid/mx-grid-object-picker.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-grouping-board/mx-grouping-board.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-image-picker/mx-image-picker.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-image-view/mx-image-view.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-journal/mx-journal.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-favourites-items-panel/mx-favourites-items-panel.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-recent-items-panel/mx-recent-items-panel.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-view-links-panel/mx-view-links-panel.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-widgets-panel/mx-widgets-panel.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-widgets-panel/widgets/mx-widget-navigation-item.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-widgets-panel/widgets/mx-widget-navigation.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-localization-editor/mix-flags.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-localization-editor/mx-custom-localization-input.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-localization-editor/mx-localization-editor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-object-picker/mx-multi-object-picker.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-object-picker/mx-object-hierarchy-picker.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-object-rating/mx-object-rating.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-panel-title/mx-panel-title.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-property-binding-mapper/mx-property-binding-mapper.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-quick-start-panel/mx-quick-start-panel.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-readonly-form/mx-readonly-form.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-recalculate-actions/mx-recalculate-actions.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-control/mx-search-control.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-builder/mx-search-query-group-custom.directive.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-boolean.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-date.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-decimal.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-enum-reference.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-expression.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-float.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-object-reference.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-string.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-condition/mx-search-query-condition-operator.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-condition/mx-search-query-condition.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-service-context/mx-service-context.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-setting-viewhelp-editor/mx-setting-viewhelp-editor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-side-panel/mx-side-panel-tab-body.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-side-panel/mx-side-panel.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-supported-widget-types/mx-supported-widget-types.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-translation-editor/mx-translation-editor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/wizard/mx-extra-wizard.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/wizard/mx-postaction-wizard.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/wizard/mx-validate-wizard.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/wizard/mx-wizard-manager.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/wizard/mx-wizard-page-validate.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/wizard/mx-wizard-view.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/context-selection-view/context-selection-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/help-article-page/help-article-page.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/hierarchy-view/hierarchy-view.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/wizard/wizard-page-controller.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/model/data-model/data-model-base-objects.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/model/data-model/data-model-calculated-property.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/model/data-model/data-model-helper.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/model/data-model/data-model-profiler.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/model/localizable-resource.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/model/mx-localization-property.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/model/search-context.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/model/search-query/search-query-operators.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/entity-service.ts","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-action/mx-action.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-actions-dropdown/mx-actions-dropdown.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-command-palette/mx-command-palette.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-common-actions/mx-common-actions.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-extra-panel/mx-extra-panel-ctrl.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-horizontal-action-list/mx-horizontal-action-list.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-main-content-zone/mx-main-content-zone.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-relink-event/mx-relink-event.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-avatar/mx-shell-avatar.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-info-panel/mx-shell-info-panel.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-left-sidebar/mx-shell-left-sidebar.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-operation-monitor/mx-shell-operation-monitor.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-search/mx-search-keyboard-manager.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-sidebar/mx-shell-sidebar.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-toolbar/mx-shell-toolbar-app-switcher-controller.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-user-menu/mx-shell-user-menu.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-side-layout/mx-side-layout.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-toolbar-actions/mx-toolbar-actions.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-view/mx-view.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-wizard/mx-wizard-roadmap.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-wizard/mx-wizard.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/layouts/page-not-found/page-not-found-controller.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/layouts/unauthorized/unauthorized.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/model/display-modes.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/model/enumerations.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/model/search-context.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/model/wizard/wizard-button.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/model/wizard/wizard-page.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/model/wizard/wizard-roadmap-step.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/model/wizard/wizard-roadmap.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/model/wizard/wizard.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/core/module/mx-components.module.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/directives/mx-mask/masks/mx-mask.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/directives/mx-mask/masks/mx-mask-base.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/directives/mx-mask/masks/mx-color-mask.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/directives/mx-mask/masks/mx-interval-mask.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/directives/mx-mask/masks/mx-regexp-mask.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/directives/mx-mask/masks/mx-numeric-mask.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/directives/mx-mask/mx-mask.directive.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/model/process-item.ts","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-attachments/mx-attachment.component.ts","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-attachments/mx-attachments.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-grid/mx-grid-helper.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-hierarchy-picker/mx-hierarchy-picker.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-attachments/mx-drop-zone.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-datasource-paging-panel/mx-datasource-paging-panel.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-hierarchy-picker/mx-hierarchy-picker.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-item-chooser/mx-item-chooser.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-picker/mx-picker-base-controller.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-picker/mx-multi-picker.controller.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-picker/mx-picker-properties.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-picker/mx-multi-picker.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-picker/mx-multi-picker.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-picker/mx-picker.controller.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-picker/mx-clear-picker-btn.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-picker/mx-sglclick.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-picker/mx-picker.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-picker/mx-picker.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-picker/mx-select.controller.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-picker/mx-select.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-picker/mx-select.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-quick-filter/mx-quick-filter.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/index.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/model/view.ts","webpack://@dwp/solution-builder/./packages/Shell/Pandora/model/details-view.ts","webpack://@dwp/solution-builder/./packages/Shell/Pandora/shell.module.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-extra-panel/mx-extra-panel-manager.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-breadcrumbs/mx-shell-breadcrumbs.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-left-sidebar/mx-shell-left-sidebar-service.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-search/mx-shell-search.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-background-processes/mx-shell-background-processes.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-breadcrumbs/mx-shell-breadcrumbs.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-info-panel/mx-shell-info-panel-service.ts","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-toolbar/mx-shell-toolbar-manager.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-toolbar/mx-shell-toolbar.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-search-grouped-context-list/mx-search-grouped-context-list.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-search-grouped-context-list/mx-search-grouped-context-list.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-unified-search/mx-shell-unified-search.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-unified-search/bg-svg.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-unified-search/mx-shell-unified-search.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-unified-search/mx-global-search-manager.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell/mx-shell.component.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell/mx-shell.component.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-toolbar-actions/mx-try-new-look-action/mx-try-new-look-action.ts","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-toolbar-actions/mx-try-new-look-action/mx-try-new-look-action.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/model/object.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/mx-action-executor-service.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/model/wizard/wizard-view.ts","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/mx-action-manager-service.ts","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/mx-action-provider-service.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/mx-application-provider-service.ts","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/mx-background-process-provider.ts","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/mx-tracked-process-provider.ts","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/mx-background-processes-service.ts","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/mx-context-service.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/mx-download-help-service.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/mx-feedback-provider-service.ts","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/mx-injector-service.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/mx-keyboard-navigation.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/mx-object-mapper.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/mx-search-provider-service.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/mx-side-layout-service.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/mx-side-panel-actions-service.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/mx-side-panel-service.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/mx-sidebar-service.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/shell-app.initializer.service.ts","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/mx-routing-configuration-service.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/index.ts","webpack://@dwp/solution-builder/./packages/Shell/Pandora/index.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/module.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/model/filterExpressionUtils.ts","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/literals/mx-enum-literal.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/model/entity-class-request.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/literals/mx-related-objects-link.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/literals/mx-objects-link.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-advanced-search/mx-advanced-search-query.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-advanced-search/mx-advanced-search-query.component.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-advanced-search/mx-advanced-search-query-custom.directive.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-advanced-search/mx-advanced-search.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-calendar/mx-calendar-resource/mx-calendar-resource.controller.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-advanced-search/mx-advanced-search.component.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-calendar/mx-calendar-resource/mx-calendar-resource.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-calendar/mx-calendar-resource/mx-calendar-resource.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-calendar/mx-calendar.controller.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-calendar/mx-calendar.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-calendar/mx-calendar.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-charts/mx-base-chart.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-date.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/mx-compliance-rule-condition-builder/mx-compliance-rule-conditions-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-charts/mx-combo-chart.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/mx-azure-ad-conditions-builder/azure-ad-conditions-builder.directive.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/mx-azure-ad-conditions-builder/azure-ad-conditions-builder.directive.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/mx-azure-ad-conditions-builder/azure-ad-conditions.service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/dataset-row-identity.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-data-query-list.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-board.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-calendar.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-grid.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-list.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-tiles.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-control-property-editor/mx-control-property-editor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-control-property-editor/mx-control-property-editor.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-dataset-view-manager/mx-dataset-view-manager.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-enum-picker/mx-enum-picker.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-datasource-order-panel/mx-datasource-order-panel.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-help/mx-help.directive.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-favourites-items-panel/mx-favourites-items-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-recent-items-panel/mx-recent-items-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-view-link/mx-view-link.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-widgets-panel/mx-widgets-factory.ts","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-widgets-panel/mx-widgets-panel-service.ts","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-load-file/mx-load-file.ts","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-load-file/mx-load-file.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-object-journal/mx-object-journal.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-localization-editor/mx-localization-editor-form.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-object-image/mx-object-image.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-object-picker/mx-multi-object-relation-picker.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-object-picker/mx-object-picker.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-query-filter-toolbar/mx-query-filter-toolbar.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-quick-link/mx-quick-link.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-rich-text-box/mx-rich-text-box.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-builder/mx-search-query-builder.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-state/mx-search-state.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-side-panel/mx-side-panel-ui-actions.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-query-filter-toolbar/mx-query-filter-toolbar.component.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-quick-link/mx-quick-link.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-rich-text-box/index.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-rich-text-box/mx-rich-text-box.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-schema-picker/mx-schema-picker.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-builder/mx-search-query-builder.component.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-builder/mx-search-query-group.directive.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-builder/mx-search-query-group.directive.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-state/mx-search-state.component.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-side-panel/mx-side-panel-tab-header.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-side-panel/mx-side-panel-ui-actions.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-styles-editor/mx-styles-editor.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-styles-editor/mx-styles-editor.component.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/model/data-model/data-model.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/edit-form/edit-form.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/edit-form/edit-form.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-treeview/mx-multi-fragment-treeview.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-ui-manager/mx-ui-manager.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-view-group-by/grouping-panel.service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-view-group-by/mx-view-group-by.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-dependency-visualizer/mx-dependency-visualizer.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-dependency-visualizer/mx-dependency-visualizer-lazy.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-view-group-by/index.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-dependency-visualizer/mx-dependency-visualizer.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/context-selection-view/context-selection-view.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/edit-form/EditFormView.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/edit-form/EditFormViewLocals.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/edit-form/edit-form-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/global-search/global-search.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/image-selection-view/image-selection-view.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/wizard/wizard-controller.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/model/data-model/data-model-descriptor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/model/data-model/module.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/model/data-model/extend-deep.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/model/search-query/search-query-condition.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/model/search-query/search-query-group.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/model/search-query/search-query.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/action-coru-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/api-token.service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/cache-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/column-definition-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/concurrency-tracking-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/content-widget-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/control-descriptor-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/dashboard-data-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/data-model-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/data-query-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/filter-expression-service.ts","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/data-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/deep-linking-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/designer-opener-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/dialog-localization-mode-helper.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/dialog-opener-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/embedded-view-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/external-service-manager.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/help-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/journal-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/mx-holidays-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/mx-mixed-action-helper.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/mx-translation-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/mx-view-help-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/preprocessors/mx-base-preprocessor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/preprocessors/ms-structure-preprocessor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/preprocessors/mx-column-definition-preprocessor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/preprocessors/mx-date-range-preprocessor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/preprocessors/mx-quick-filter-preprocessor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/preprocessors/mx-service-request-params-preprocessor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/preprocessors/mx-sorting-preprocessor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/preprocessors/mx-sorting-grid-preprocessor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/preprocessors/mx-paging-preprocessor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/preprocessors/mx-search-preprocessor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/preprocessors/mx-grouping-preprocessor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/preprocessors/mx-client-query-executor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/preprocessors/mx-data-query-executor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/preprocessors/mx-odata-query-executor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/schema-service.ts","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/schema-service-enums.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/search-query-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/widget-manager.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/wizard-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/model/styles/mx-styles-item.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/model/styles/system-styles.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/mx-styles-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/agent-telemetry-service.ts","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/index.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/index.js","webpack://@dwp/solution-builder/./packages/Shell/shell.templates.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-attachments/mx-attachment.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-attachments/mx-attachments.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-attachments/mx-image-template.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-button/mx-button.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-checkbox/mx-checkbox.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-choice/mx-choice.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-color-picker/mx-color-picker.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-currency/mx-currency.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-datasource-paging-panel/mx-datasource-paging-panel.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-datasource-search-panel/mx-datasource-search-panel.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-date-time-picker/mx-date-time.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-dropdown-menu/mx-dropdown-menu.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-file-uploader/mx-file-uploader.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-form-errors/mx-form-errors.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-grid/mx-grid-column-filters/mx-grid-column-filter.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-grid/mx-grid-edit-form-field.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-grid/mx-grid-edit-form.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-grid/mx-grid-gridmenu-item.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-grid/mx-grid-gridmenu.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-grid/mx-grid-header-cell.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-grid/mx-grid-menu-button.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-grid/mx-grid-pager.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-grid/mx-grid-search.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-grid/mx-grid-viewport.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-grid/mx-grid.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-icon-picker/mx-icon-picker-dropdown.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-icon-picker/mx-icon-picker.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-image-preview/mx-image-preview.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-item-chooser/mx-item-chooser-grid-template.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-item-chooser/mx-item-chooser-list-template.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-item-chooser/mx-item-chooser.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-numeric-edit/mx-numeric-edit.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-rating/mx-rating.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-repeater/mx-repeater.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-search-input/mx-search-input.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-stepper/mx-stepper.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-tabs/mx-tabs.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-text-area/mx-text-area.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraComponents/mx-treeview/mx-treeview.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-action/mx-action.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-actions-dropdown/mx-actions-dropdown.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-command-palette/mx-command-palette.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-common-actions/mx-common-actions.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-extra-panel/mx-extra-panel.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-horizontal-action-list/mx-horizontal-action-list.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-main-content-zone/mx-main-content-zone.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-avatar/mx-shell-avatar.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-background-processes/mx-shell-background-processes.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-left-sidebar/mx-shell-left-sidebar.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-operation-monitor/mx-shell-operation-monitor.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-search/mx-shell-search.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-sidebar/mx-shell-sidebar.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-toolbar/mx-shell-toolbar.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-shell-user-menu/mx-shell-user-menu.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-side-layout/mx-side-layout.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-toolbar-actions/mx-toolbar-actions.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-wizard/mx-wizard-roadmap.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/components/mx-wizard/mx-wizard.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/layouts/page-not-found/404.html","webpack://@dwp/solution-builder/./packages/Shell/Pandora/layouts/unauthorized/401.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-audience-info/mx-audience-info.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-call-service-button/mx-call-service-button.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-carousel/mx-carousel.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-charts/mx-charts.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-concurrency-merge/mx-concurrency-merge.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-boolean.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-date.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-enum-reference.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-expression.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-number.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-object-reference.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-object-references.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-string.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/mx-condition-group.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/mx-condition.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-condition-builder/mx-conditions-builder.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view--no-filtered-data.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view--only-filtered.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-board.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-calendar.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-grid.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-list.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-tiles.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-search-page-custom-form.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-custom-content-widget/mx-custom-content-widget.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-dashboard-editor/mx-dashboard-editor.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-data-control-panel/mx-data-control-panel.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-data-control-settings-panel/mx-data-control-settings-panel.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-datasource-order-panel/mx-datasource-order-panel.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-grid/file-selection-tab.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-grouping-board/mx-grouping-board.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-image-picker/mx-image-picker.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-image-view/mx-image-view.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-journal/mx-journal.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-favourites-items-panel/mx-favourites-items-panel.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-recent-items-panel/mx-recent-items-panel.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-view-link/mx-view-link.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-view-links-panel/mx-view-links-panel.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-widgets-panel/mx-widgets-panel.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-widgets-panel/widgets/mx-widget-navigation-item.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-widgets-panel/widgets/mx-widget-navigation.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-localization-editor/mx-localization-editor-form.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-localization-editor/mx-localization-editor.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-object-image/mx-object-image.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-object-rating/mx-object-rating.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-property-binding-mapper/mx-property-binding-mapper.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-quick-start-panel/mx-quick-start-page-template.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-quick-start-panel/mx-quick-start-panel.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-builder/mx-line-search-query-group.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-boolean.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-date.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-decimal.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-enum-reference.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-expression.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-float.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-object-reference.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-string.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-condition/mx-line-search-query-condition.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-condition/mx-search-query-condition-operator.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-search-query-condition/mx-search-query-condition.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-setting-viewhelp-editor/mx-setting-viewhelp-editor.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-side-panel/mx-side-panel-tab-body.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-side-panel/mx-side-panel-tab-header.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-side-panel/mx-side-panel.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-supported-widget-types/mx-supported-widget-types.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-translation-editor/mx-translation-editor.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-treeview/mx-multi-fragment-treeview.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-view-group-by/mx-view-group-by-items.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-view-group-by/mx-view-group-by.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/wizard/mx-wizard-view.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/context-selection-view/context-selection-view.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/global-search/global-search.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/help-article-page/help-article-page.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/help-article-page/help-article-popup.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/hierarchy-view/hierarchy-view-tree-items.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/hierarchy-view/hierarchy-view.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/image-selection-view/image-selection-view.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/ExtensionGallery/mx-extension-gallery.service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/ExtensionGallery/mx-extension-gallery.module.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/PushNotifications/push-notifications.service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/PushNotifications/mx-push-notifications-panel/mx-push-notifications-panel.service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/PushNotifications/mx-push-notifications-monitor/mx-push-notifications-monitor.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/PushNotifications/mx-push-notifications-monitor/mx-push-notifications-monitor.component.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/PushNotifications/mx-push-notifications-panel/mx-push-notifications-panel.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/PushNotifications/mx-push-notifications-panel/mx-push-notifications-panel.component.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/PushNotifications/module.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DialogPage/dialog-view/dialog-view.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DialogPage/dialog-view/dialog-view.component.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DialogPage/dialog-factory.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DialogPage/dialog-content/dialog-content.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DialogPage/dialog-content/dialog-content.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DialogPage/mx-dialog-container/mx-dialog-container.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DialogPage/mx-dialog-container/mx-dialog-container.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DialogPage/mx-dialog-manager/mx-dialog-manager.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DialogPage/dialog-view.module.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/preprocessors/BasePreprocessor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/preprocessors/ColumnSearchPreprocessor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/preprocessors/PagingPreprocessor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/DataQueryEnumerations.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/preprocessors/SortingPreprocessor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/requests/BaseQueryRequester.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/requests/ClientDataRequester.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/requests/DataDefinitionRequester.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/requests/RelationsRequester.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/requests/DataDefinitionRequestOptions.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/requests/MultiFragmentRequester.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/requests/ServiceRequester.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/DataQueryColumn.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/DataQueryDefinition.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/DataQueryExecutor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/DataQueryRow.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/column-filters/filters/base-filter.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/column-filters/filters/base-inline-filter.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/column-filters/filters/string-filter.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/column-filters/filters/string-filter.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/column-filters/filters/boolean-filter.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/column-filters/filters/boolean-filter.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/column-filters/filters/number-filter.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/column-filters/filters/number-filter.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/column-filters/filters/date-filter.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/column-filters/filters/date-filter.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/column-filters/filters/select-filter.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/column-filters/filters/select-filter.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/column-filters/filters/pickup-filter.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/column-filters/filters/pickup-filter.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/column-filters/filters/guid-filter.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/column-filters/mx-grid-column-filters-factory.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/column-filters/mx-grid-column-filter-operators-factory.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/module.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/preprocessors/AdvanceSearchPreprocessor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/DataQueryModel/preprocessors/SearchPreprocessor.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/multiselection-tab/SelectionGrid.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/multiselection-tab/multiselection-tab.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/multiselection-tab/SelectionView.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/multiselection-tab/multiselection-tab.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/multiselection-tab/SelectionViewLocals.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/multiselection-tab/multiselection-tab.service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/multiselection-tab/multiselection-tab.module.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/edit-form/edit-form.module.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/search-page/search-page.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/search-page/search-page.component.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/search-page/search-page.module.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/landing-page/landing-page.component.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/landing-page/landing-page.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/landing-page/landing-page-content.component.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/landing-page/landing-page-content.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/layouts/landing-page/landing-page.module.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/mx-grid-actions-panel/mx-grid-actions-panel.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/mx-grid-actions-panel/mx-grid-actions-panel.component.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/mx-generic-grid/mx-generic-grid.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/mx-generic-grid/mx-generic-grid.component.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/mx-executor-grid.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/mx-executor-grid.component.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/mx-grid-helper.service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/GridEnums.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/mx-grid-control-panel/mx-grid-control-panel.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/mx-grid-control-panel/mx-grid-control-panel.component.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/mx-grid-render/mx-grid-render.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/mx-grid-render/mx-grid-render.component.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/mx-grid-selection-picker/mx-grid-selection-picker.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/mx-grid-selection-picker/mx-grid-selection-picker.component.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/grids/mx-base-grid.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/grids/mx-dynamic-grid.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/grids/mx-multifragment-grid.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/grids/mx-objects-grid.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/grids/mx-objects-grid-deprecated.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/grids/mx-relations-grid.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/mx-executor-grid.module.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/mx-grid-settings-panel/mx-grid-settings-panel.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-executor-grid/mx-grid-settings-panel/mx-grid-settings-panel.component.html","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/Ownership/ownership.service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/Ownership/ownership.module.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/Attachment/mx-providers/mx-attachment-default-provider.ts","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/Attachment/mx-attachment.service.ts","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/Attachment/mx-object-attachments/mx-object-attachments.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/Attachment/mx-object-attachments/mx-attachments-picker.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/Attachment/mx-attachment-process.service.ts","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/Attachment/mx-attachment.module.ts","webpack://@dwp/solution-builder/./packages/Shell/Navigation/navigation-items-loader-service.js","webpack://@dwp/solution-builder/./packages/Shell/Navigation/navigation-item-configuration-actions-service.js","webpack://@dwp/solution-builder/./packages/Shell/Navigation/components/mx-shell-nav-item/mx-shell-nav-item.js","webpack://@dwp/solution-builder/./packages/Shell/Navigation/components/mx-shell-nav-item/mx-shell-nav-item.html","webpack://@dwp/solution-builder/./packages/Shell/Navigation/components/mx-shell-navigation-panel/mx-shell-navigation-panel.js","webpack://@dwp/solution-builder/./packages/Shell/Navigation/components/mx-shell-navigation-panel/mx-shell-navigation-panel.html","webpack://@dwp/solution-builder/./packages/Shell/Navigation/mx-shell-nav-manager.ts","webpack://@dwp/solution-builder/./packages/Shell/Navigation/mx-navigation-provider-service.js","webpack://@dwp/solution-builder/./packages/Shell/Navigation/mx-navigation-service.js","webpack://@dwp/solution-builder/./packages/Shell/Navigation/components/mx-shell-toolbar-navigation--popup-item/mx-shell-toolbar-navigation--popup-item.js","webpack://@dwp/solution-builder/./packages/Shell/Navigation/components/mx-shell-toolbar-navigation--popup-item/mx-shell-toolbar-navigation--popup-item.html","webpack://@dwp/solution-builder/./packages/Shell/Navigation/components/mx-shell-toolbar-navigation--popup/mx-shell-toolbar-navigation--popup.js","webpack://@dwp/solution-builder/./packages/Shell/Navigation/components/mx-shell-toolbar-navigation--popup/mx-shell-toolbar-navigation--popup.html","webpack://@dwp/solution-builder/./packages/Shell/Navigation/components/mx-shell-toolbar-navigation/mx-shell-toolbar-navigation.js","webpack://@dwp/solution-builder/./packages/Shell/Navigation/components/mx-shell-toolbar-navigation/mx-shell-toolbar-navigation.html","webpack://@dwp/solution-builder/./packages/Shell/Navigation/mx-shell-toolbar-navigation-service.js","webpack://@dwp/solution-builder/./packages/Shell/Navigation/navigation.module.js","webpack://@dwp/solution-builder/./packages/Shell/Navigation/model/navigation-item.ts","webpack://@dwp/solution-builder/./packages/Shell/agent-app-initializer.service.ts","webpack://@dwp/solution-builder/./packages/Shell/PublicModule/public.service.ts","webpack://@dwp/solution-builder/./packages/Shell/PublicModule/public.module.ts","webpack://@dwp/solution-builder/./packages/Shell/shell.js","webpack://@dwp/solution-builder/./packages/SignUp/signupForm/signup.component.js","webpack://@dwp/solution-builder/./packages/SignUp/signupForm/signup.component.html","webpack://@dwp/solution-builder/./packages/SignUp/signupVerification/signupFormVerification.component.js","webpack://@dwp/solution-builder/./packages/SignUp/signupVerification/signupFormVerification.component.html","webpack://@dwp/solution-builder/./packages/SignUp/signup.service.js","webpack://@dwp/solution-builder/./packages/SignUp/signup.module.js","webpack://@dwp/solution-builder/./packages/UserRegistration/registrationForm/registrationForm.component.js","webpack://@dwp/solution-builder/./packages/UserRegistration/registrationForm/registrationForm.component.html","webpack://@dwp/solution-builder/./packages/UserRegistration/user-registration-lazy.module.js"],"sourcesContent":["'use strict';\r\n\r\nimport template from './object-details-page.html';\r\n\r\nexport const ObjectDetailsPageComponent = {\r\n\tbindings: {},\r\n\tcontroller: ObjectDetailsPageController,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n};\r\n\r\nObjectDetailsPageController.$inject = [\r\n\t'$stateParams',\r\n\t'mx.shell.ToolbarManager',\r\n\t'mx.shell.LeftSidebarService',\r\n\t'mx.shell.SideLayout',\r\n\t'mx.shell.DetailsView',\r\n\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n\t'mx.SolutionBuilderAgent.DialogOpenerService',\r\n\t'mx.shell.Config',\r\n\t'$timeout',\r\n\t'mx.shell.AppsService',\r\n\t'mx.SolutionBuilderAgent.WidgetManager',\r\n\t'mx.shell.EventService',\r\n\t'$q',\r\n];\r\nexport function ObjectDetailsPageController(\r\n\t$stateParams,\r\n\tmxToolbarManager,\r\n\tleftSidebarService,\r\n\tmxSideLayout,\r\n\tDetailsView,\r\n\tcontentWidgetService,\r\n\tdialogOpener,\r\n\tmxConfig,\r\n\t$timeout,\r\n\tappService,\r\n\twidgetManager,\r\n\teventService,\r\n\t$q\r\n) {\r\n\tvar context = angular.copy($stateParams);\r\n\tvar vm = this;\r\n\r\n\tif (context.print === '1') {\r\n\t\tmxToolbarManager.setToolbarVisibility(false);\r\n\t\tleftSidebarService.isVisible = false;\r\n\r\n\t\tprintPreview(vm, widgetManager, DetailsView, context, $timeout, eventService);\r\n\t} else {\r\n\t\tvar appName = '';\r\n\r\n\t\tvar applicationsPromise = appService.getCurrentApplication().then(function () {\r\n\t\t\treturn appService.getApplications();\r\n\t\t});\r\n\r\n\t\tvar viewsPromise = contentWidgetService.getAllAppViewsUncached(context._type);\r\n\r\n\t\t$q.all([applicationsPromise, viewsPromise]).then(function (result) {\r\n\t\t\tvar applications = result[0];\r\n\t\t\tvar widgets = result[1];\r\n\r\n\t\t\treturn (\r\n\t\t\t\twidgets\r\n\t\t\t\t\t.filter(function (widget) {\r\n\t\t\t\t\t\t//TODO: get from widget-manager?\r\n\t\t\t\t\t\treturn (!context.widgetId || context.widgetId === widget.Id) && widget.WidgetType === 3;\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.sort(function (widget1, widget2) {\r\n\t\t\t\t\t\treturn widget2.Priority - widget1.Priority;\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.some(function (widget) {\r\n\t\t\t\t\t\tvar viewApps = widget.Applications ? widget.Applications.toLowerCase() : '';\r\n\r\n\t\t\t\t\t\tvar appFound =\r\n\t\t\t\t\t\t\tviewApps &&\r\n\t\t\t\t\t\t\tapplications.some(function (app) {\r\n\t\t\t\t\t\t\t\tif (viewApps.indexOf(app.value.toLowerCase()) > -1) {\r\n\t\t\t\t\t\t\t\t\tappName = app.name;\r\n\t\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (appFound) {\r\n\t\t\t\t\t\t\tcontext.widgetId = widget.Id;\r\n\t\t\t\t\t\t\topenView(context, mxConfig.settings.basePath, appName);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn appFound;\r\n\t\t\t\t\t}) || openView(context, mxConfig.settings.basePath)\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nfunction openView(context, appBasePath, appName) {\r\n\tvar options = JSON.stringify({\r\n\t\tobjectId: context._id,\r\n\t\tdialogId: context.widgetId,\r\n\t\tarchived: context._archived === '1' ? '1' : '0',\r\n\t\ttype: context._type,\r\n\t\tviewType: 'preview',\r\n\t});\r\n\r\n\tvar appPart = appName ? 'app-' + appName : '';\r\n\r\n\twindow.location = appBasePath + appPart + '/?view-options=' + options;\r\n}\r\n\r\nasync function printPreview(vm, widgetManager, DetailsView, context, $timeout, eventService) {\r\n\tcontext._archived = context._archived === '1';\r\n\r\n\tvm.view = await widgetManager.getPreviewView(context, context.widgetId);\r\n\r\n\teventService.subscribeOnce(mx.shell.EventCodes.AllAjaxComplete, function () {\r\n\t\tprint();\r\n\t\tclose();\r\n\t});\r\n}\r\n","// Module\nvar code = \"
\";\n// Exports\nexport default code;","'use strict';\r\n\r\nimport { ObjectDetailsPageComponent } from './object-details-page/object-details-page';\r\nimport { objectDetailsPageState } from './object-details-page.states';\r\n\r\nexport const ObjectDetailsPageModule = angular.module('mx.sb.ObjectDetailsPage', []).component(objectDetailsPageState.component, ObjectDetailsPageComponent);\r\n","'use strict';\r\n\r\nimport template from './resetPasswordForm.component.html';\r\nimport { resetPasswordVerificationState } from '../resetPassword.states';\r\n\r\nexport const ResetPasswordFormComponent = {\r\n\tbindings: {},\r\n\tcontroller: ResetPasswordFormComponentCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n};\r\n\r\nResetPasswordFormComponentCtrl.$inject = ['$state', 'mx.sb.ResetPasswordService', 'mx.internationalization'];\r\n\r\nexport function ResetPasswordFormComponentCtrl($state, resetPasswordService, i18n) {\r\n\tconst vm = this;\r\n\r\n\tvm.resetPassword = async function (email) {\r\n\t\tvm.submitted = true;\r\n\t\tvm.errorMsg = '';\r\n\t\ttry {\r\n\t\t\tawait resetPasswordService.resetPassword(email);\r\n\t\t\t$state.go(resetPasswordVerificationState.name, { email }, { reload: false });\r\n\t\t} catch (e) {\r\n\t\t\tvm.errorMsg = i18n.get(e?.data?.Message) || e?.data?.Message;\r\n\t\t\tvm.submitted = false;\r\n\t\t}\r\n\t};\r\n}\r\n","// Module\nvar code = \"
\\r\\n\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\\"\\\"\\r\\n\\r\\n\\t\\t

{{ ::'resetPassword.title' | mxi18n}}

\\r\\n\\t\\t

{{ ::'resetPassword.descr' | mxi18n}}

\\r\\n\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t
{{vm.errorMsg}}
\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{ ::'components.common.next' | mxi18n}}\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\r\\n\\t
\\r\\n\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","'use strict';\r\n\r\nimport template from './resetPasswordVerification.component.html';\r\n\r\nexport const ResetPasswordVerificationComponent = {\r\n\tbindings: {},\r\n\tcontroller: ResetPasswordVerificationComponentCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n};\r\n\r\nResetPasswordVerificationComponentCtrl.$inject = ['mx.sb.ResetPasswordService', '$timeout'];\r\nexport function ResetPasswordVerificationComponentCtrl(resetPasswordService, $timeout) {\r\n\tconst vm = this;\r\n\tconst minIntervalBetweenClicks = 30 * 1000;\r\n\tconst maxResendClicked = 3;\r\n\r\n\tlet latestClickTime = Date.now();\r\n\tlet resendClicked = 0;\r\n\tupdateScopeTimeout();\r\n\r\n\tvm.isResendDisabled = function () {\r\n\t\treturn resendClicked >= maxResendClicked || Date.now() - latestClickTime < minIntervalBetweenClicks;\r\n\t};\r\n\r\n\tvm.resendEmail = function () {\r\n\t\tresendClicked++;\r\n\t\tlatestClickTime = Date.now();\r\n\t\tupdateScopeTimeout();\r\n\t\tresetPasswordService.resendEmail();\r\n\t};\r\n\r\n\tfunction updateScopeTimeout() {\r\n\t\t$timeout(() => {}, minIntervalBetweenClicks);\r\n\t}\r\n}\r\n","// Module\nvar code = \"
\\r\\n\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t
\\r\\n\\t
\\r\\n\\r\\n\\t\\t\\\"\\\"\\r\\n\\r\\n\\t\\t

{{ ::'resetPassword.verificationTitle' | mxi18n}}

\\r\\n\\t\\t

{{ ::'resetPassword.verificationDescr' | mxi18n}}

\\r\\n\\t\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t{{ ::'resetPassword.verificationQuestion' | mxi18n}}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ ::'resetPassword.resend' | mxi18n}}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t
{{vm.errorMsg}}
\\r\\n\\r\\n\\t
\\r\\n\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","'use strict';\r\n\r\nexport class ResetPasswordService {\r\n\tstatic $inject = ['mx.SolutionBuilderAgent.Http'];\r\n\r\n\tconstructor(http) {\r\n\t\tthis.http = http;\r\n\t}\r\n\r\n\tasync resetPassword(email) {\r\n\t\tthis._email = email;\r\n\t\treturn this.http.post('/api/signupuser/password/resetrequest', JSON.stringify(email));\r\n\t}\r\n\r\n\tasync resendEmail() {\r\n\t\treturn this.resetPassword(this._email);\r\n\t}\r\n\r\n\tasync confirmNewPassword(AccountId, NewPassword) {\r\n\t\treturn this.http.post('/api/signupuser/password/reset', { AccountId, NewPassword });\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nimport template from './confirmPasswordForm.component.html';\r\n\r\nexport const ConfirmPasswordFromComponent = {\r\n\tcontroller: ConfirmPasswordFromComponentCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n};\r\n\r\nConfirmPasswordFromComponentCtrl.$inject = ['$q', 'mx.SolutionBuilderAgent.WizardService', 'mx.shell.UserProfileService', 'mx.shell.AuthService', 'mx.internationalization'];\r\nexport function ConfirmPasswordFromComponentCtrl($q, wizardService, userProfileService, authService, i18n) {\r\n\tconst vm = this;\r\n\tvm.isPasswordInvalid = true;\r\n\r\n\tvm.view = wizardService.getWizardView({\r\n\t\twidgetId: '2515ee90-a40f-c8b1-ea47-08d9275d7d1e',\r\n\t\twizardMode: mx.SolutionBuilderAgent.WizardMode.Default,\r\n\t\tdisplayName: i18n.get('resetPassword.title'),\r\n\t\tselectedObjects: [],\r\n\t});\r\n\r\n\tvm.view.finishDefer = $q.defer();\r\n\r\n\tvm.view.finishDefer.promise.then(() => {\r\n\t\thideForm();\r\n\t\tauthService.logout();\r\n\t});\r\n\r\n\tfunction hideForm() {\r\n\t\tconst form = document.getElementById('confirm-password-form');\r\n\t\tform.style.display = 'none';\r\n\t}\r\n\r\n\tvm.confirmPasswordRequest = async function () {\r\n\t\tvm.view.locals.wizard.finishWizard();\r\n\t};\r\n\r\n\tvm.cancel = async function () {\r\n\t\tauthService.logout();\r\n\t};\r\n}\r\n","// Module\nvar code = \"
\\r\\n\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t
\\r\\n\\t
\\r\\n\\r\\n\\t\\t\\\"\\\"\\r\\n\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t
{{vm.errorMsg}}
\\r\\n\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t\\t{{'shell.common.cancel' | mxi18n}}\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{ ::'components.common.next' | mxi18n}}\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\r\\n\\t
\\r\\n\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","'use strict';\r\n\r\nimport { confirmPasswordState, resetPasswordState, resetPasswordVerificationState } from './resetPassword.states';\r\nimport { ResetPasswordFormComponent } from './resetPasswordForm/resetPasswordForm.component';\r\nimport { ResetPasswordVerificationComponent } from './resetPasswordVerification/resetPasswordVerification.component';\r\nimport { ResetPasswordService } from './resetPassword.service';\r\nimport { ConfirmPasswordFromComponent } from './confirmPasswordForm/confirmPasswordForm.component';\r\n\r\nexport const signUpModule = angular\r\n\t.module('mx.sb.ResetPassword', [])\r\n\t.component(resetPasswordState.component, ResetPasswordFormComponent)\r\n\t.component(resetPasswordVerificationState.component, ResetPasswordVerificationComponent)\r\n\t.component(confirmPasswordState.component, ConfirmPasswordFromComponent)\r\n\t.service('mx.sb.ResetPasswordService', ResetPasswordService);\r\n","// This Privider is Obsolete.\r\n// It is not removed because third-part Workspaces/Extentions use it as injection.\r\n// (It was present in Workspace Files Template that we provide)\r\n\r\nangular.module('mx.components').provider('mx.components.DataProviderRegistry', function dataProviderRegistryProvider() {\r\n\tconst vm = this;\r\n\r\n\tfunction errorMessage() {\r\n\t\tconsole.error(\r\n\t\t\t'The provider \"mx.components.DataProviderRegistry\" / \"mx.components.DataProviderRegistryProvider\" is outdated and not in use anymore. Don\\'t use it in your Workspaces/Extentions.'\r\n\t\t);\r\n\t}\r\n\r\n\tvm.register = () => errorMessage();\r\n\r\n\tvm.$get = [\r\n\t\tfunction () {\r\n\t\t\terrorMessage();\r\n\t\t\treturn {\r\n\t\t\t\tget: () => errorMessage(),\r\n\t\t\t\tgetData: () => errorMessage(),\r\n\t\t\t};\r\n\t\t},\r\n\t];\r\n});\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc service\r\n\t * @name mx.components.LazyLoadCfg\r\n\t *\r\n\t * @description\r\n\t * `LazyLoadCfg` allows to set components dir, where modules/js-files that should be loaded on demand are places.\r\n\t * This approach allows to set `componentsDir` via 'mx.components.LazyLoadCfgProvider' on config phase\r\n\t * as well as via 'mx.components.LazyLoadCfg' on executing phase.\r\n\t *\r\n\t * Default dir is: 'bower_components/'.\r\n\t *\r\n\t * To configure components Dir make like this:\r\n\t *\r\n\t * For config phase:\r\n\t * ```js\r\n\t * .config(['mx.components.LazyLoadCfgProvider', function (lazyLoadCfgProvider) {\r\n\t * \t\tlazyLoadCfgProvider.setComponentsDir('my_components_root/');\r\n\t * \t}])\r\n\t * ```\r\n\t *\r\n\t * For executing phase:\r\n\t * ```js\r\n\t * .run('myCtrl', ['mx.components.LazyLoadCfg', function (lazyLoadCfg) {\r\n\t * \t\tlazyLoadCfg.componentsDir = 'my_components_root/';\r\n\t * \t}]);\r\n\t * ```\r\n\t */\r\n\tangular.module('mx.components').provider('mx.components.LazyLoadCfg', function lazyLoadCfgProvider() {\r\n\t\tvar _componentsDir = 'node_modules/';\r\n\t\tthis.setComponentsDir = function (dir) {\r\n\t\t\t_componentsDir = dir;\r\n\t\t};\r\n\t\tthis.$get = function () {\r\n\t\t\treturn {\r\n\t\t\t\tcomponentsDir: _componentsDir,\r\n\t\t\t};\r\n\t\t};\r\n\t});\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.components').directive('mxDisableWatchersIf', [\r\n\t\tfunction mxDisableWatchersIfDirective() {\r\n\t\t\treturn {\r\n\t\t\t\trestrict: 'A',\r\n\t\t\t\tscope: true,\r\n\t\t\t\tlink: function (scope, element, attrs) {\r\n\t\t\t\t\tscope.$parent.$watch(attrs.mxDisableWatchersIf, function (disable, oldDisable) {\r\n\t\t\t\t\t\tif (typeof disable !== 'boolean' || disable === oldDisable) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvar pendingChildHeads = [scope];\r\n\t\t\t\t\t\tvar currentScope;\r\n\t\t\t\t\t\twhile (pendingChildHeads.length) {\r\n\t\t\t\t\t\t\tcurrentScope = pendingChildHeads.shift();\r\n\t\t\t\t\t\t\twhile (currentScope) {\r\n\t\t\t\t\t\t\t\tif (disable === true && currentScope.$$watchers && currentScope.$$watchers.length > 0) {\r\n\t\t\t\t\t\t\t\t\tcurrentScope.__mx__$$watchers = currentScope.$$watchers;\r\n\t\t\t\t\t\t\t\t\tcurrentScope.$$watchers = [];\r\n\t\t\t\t\t\t\t\t\tif (currentScope.__mx__$$watchers.$$digestWatchIndex) {\r\n\t\t\t\t\t\t\t\t\t\tcurrentScope.$$watchers.$$digestWatchIndex = currentScope.__mx__$$watchers.$$digestWatchIndex;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (disable === false && currentScope.__mx__$$watchers) {\r\n\t\t\t\t\t\t\t\t\tcurrentScope.$$watchers = currentScope.__mx__$$watchers;\r\n\t\t\t\t\t\t\t\t\tdelete currentScope.__mx__$$watchers;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tpendingChildHeads.push(currentScope.$$childHead);\r\n\t\t\t\t\t\t\t\tcurrentScope = currentScope.$$nextSibling;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\telement[disable ? 'addClass' : 'removeClass']('ng-hide');\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t},\r\n\t]);\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.components').factory('mx.components.Recursion', [\r\n\t\t'$compile',\r\n\t\tfunction recursionFactory($compile) {\r\n\t\t\treturn {\r\n\t\t\t\t/**\r\n\t\t\t\t * Manually compiles the element, fixing the recursion loop.\r\n\t\t\t\t * @param element\r\n\t\t\t\t * @param [link] A post-link function, or an object with function(s) registered via pre and post properties.\r\n\t\t\t\t * @returns An object containing the linking functions.\r\n\t\t\t\t */\r\n\t\t\t\tcompile: function (element, link) {\r\n\t\t\t\t\t// Normalize the link parameter\r\n\t\t\t\t\tif (angular.isFunction(link)) {\r\n\t\t\t\t\t\tlink = { post: link };\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Break the recursion loop by removing the contents\r\n\t\t\t\t\tvar contents = element.contents().remove();\r\n\t\t\t\t\tvar compiledContents;\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tpre: link && link.pre ? link.pre : null,\r\n\t\t\t\t\t\t/**\r\n\t\t\t\t\t\t * Compiles and re-adds the contents\r\n\t\t\t\t\t\t */\r\n\t\t\t\t\t\tpost: function (scope, element) {\r\n\t\t\t\t\t\t\t// Compile the contents\r\n\t\t\t\t\t\t\tif (!compiledContents) {\r\n\t\t\t\t\t\t\t\tcompiledContents = $compile(contents);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// Re-add the compiled contents to the element\r\n\t\t\t\t\t\t\tcompiledContents(scope, function (clone) {\r\n\t\t\t\t\t\t\t\telement.append(clone);\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t// Call the post-linking function, if any\r\n\t\t\t\t\t\t\tif (link && link.post) {\r\n\t\t\t\t\t\t\t\tlink.post.apply(null, arguments);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t},\r\n\t]);\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.components').factory('mx.components.TinymceUtils', [\r\n\t\t'mx.internationalization',\r\n\t\t'mx.shell.Config',\r\n\t\tfunction tinymceUtils(mxI18n, mxConfig) {\r\n\t\t\treturn {\r\n\t\t\t\tgetMceI18nOptions: getMceI18nOptions,\r\n\t\t\t\textendMissingI18n: extendMissingI18n,\r\n\t\t\t};\r\n\r\n\t\t\tfunction getMceI18nOptions() {\r\n\t\t\t\tconst lang2Letters = (mxI18n.language || 'en').substring(0, 2).toLowerCase();\r\n\t\t\t\tconst localeID = mxI18n.getLocale().localeID;\r\n\t\t\t\t// if 'en' - do nothing, because it's by default\r\n\t\t\t\tif (localeID === 'en_US') {\r\n\t\t\t\t\treturn {};\r\n\t\t\t\t}\r\n\t\t\t\tvar langSufix = '';\r\n\t\t\t\tvar availableMceI18n = [\r\n\t\t\t\t\t'af_ZA',\r\n\t\t\t\t\t'ar',\r\n\t\t\t\t\t'az',\r\n\t\t\t\t\t'be',\r\n\t\t\t\t\t'bg_BG',\r\n\t\t\t\t\t'bn_BD',\r\n\t\t\t\t\t'ca',\r\n\t\t\t\t\t'cs',\r\n\t\t\t\t\t'cs_CZ',\r\n\t\t\t\t\t'cy',\r\n\t\t\t\t\t'da',\r\n\t\t\t\t\t'de',\r\n\t\t\t\t\t'de_AT',\r\n\t\t\t\t\t'dv',\r\n\t\t\t\t\t'el',\r\n\t\t\t\t\t'en_GB',\r\n\t\t\t\t\t'en_CA',\r\n\t\t\t\t\t'es',\r\n\t\t\t\t\t'es_MX',\r\n\t\t\t\t\t'et',\r\n\t\t\t\t\t'eu',\r\n\t\t\t\t\t'fa_IR',\r\n\t\t\t\t\t'fi',\r\n\t\t\t\t\t'fr_FR',\r\n\t\t\t\t\t'ga',\r\n\t\t\t\t\t'gl',\r\n\t\t\t\t\t'he_IL',\r\n\t\t\t\t\t'hr',\r\n\t\t\t\t\t'hu_HU',\r\n\t\t\t\t\t'id',\r\n\t\t\t\t\t'it',\r\n\t\t\t\t\t'ja',\r\n\t\t\t\t\t'ka_GE',\r\n\t\t\t\t\t'kab',\r\n\t\t\t\t\t'kk',\r\n\t\t\t\t\t'km_KH',\r\n\t\t\t\t\t'ko_KR',\r\n\t\t\t\t\t'lt',\r\n\t\t\t\t\t'lv',\r\n\t\t\t\t\t'nb_NO',\r\n\t\t\t\t\t'nl',\r\n\t\t\t\t\t'pl',\r\n\t\t\t\t\t'pt_PT',\r\n\t\t\t\t\t'pt_BR',\r\n\t\t\t\t\t'ro',\r\n\t\t\t\t\t'ru',\r\n\t\t\t\t\t'sk',\r\n\t\t\t\t\t'sl_SI',\r\n\t\t\t\t\t'sr',\r\n\t\t\t\t\t'sv_SE',\r\n\t\t\t\t\t'ta',\r\n\t\t\t\t\t'ta_IN',\r\n\t\t\t\t\t'th_TH',\r\n\t\t\t\t\t'tr',\r\n\t\t\t\t\t'tr_TR',\r\n\t\t\t\t\t'ug',\r\n\t\t\t\t\t'uk',\r\n\t\t\t\t\t'uk_UA',\r\n\t\t\t\t\t'uz',\r\n\t\t\t\t\t'vi_VN',\r\n\t\t\t\t\t'zh_CN',\r\n\t\t\t\t\t'zh_TW',\r\n\t\t\t\t];\r\n\r\n\t\t\t\tif (availableMceI18n.indexOf(localeID) !== -1) {\r\n\t\t\t\t\tlangSufix = localeID;\r\n\t\t\t\t} else if (availableMceI18n.indexOf(lang2Letters) !== -1) {\r\n\t\t\t\t\tlangSufix = lang2Letters;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlangSufix = availableMceI18n.find((code) => code.indexOf(lang2Letters + '_') === 0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn langSufix ? { language: langSufix, language_url: mxConfig.settings.basePath + 'node_modules/tinymce-i18n/langs/' + langSufix + '.js' } : {};\r\n\t\t\t}\r\n\r\n\t\t\tfunction extendMissingI18n(editor) {\r\n\t\t\t\tif (editor.settings.language && editor.settings.language.indexOf('en') !== 0) {\r\n\t\t\t\t\teditor.editorManager.addI18n(editor.settings.language, {\r\n\t\t\t\t\t\t'Insert/edit media': mxI18n.get('solutionBuilderAgent.components.tinyMCE.insertEditMedia'),\r\n\t\t\t\t\t\t'Table of Contents': mxI18n.get('solutionBuilderAgent.components.tinyMCE.tableOfContents'),\r\n\t\t\t\t\t\t'Insert/Edit code sample': mxI18n.get('solutionBuilderAgent.components.tinyMCE.codeSampleBtn'),\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t]);\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t// Was created because of IE bug\r\n\t// https://stackoverflow.com/questions/32176130/angular-update-input-value-on-enter-keypress-and-work-in-ie/32949801#32949801\r\n\r\n\tangular.module('mx.components').directive('mxUpdateOnEnter', [\r\n\t\tfunction mxUpdateOnEnterDirective() {\r\n\t\t\treturn {\r\n\t\t\t\trestrict: 'A',\r\n\t\t\t\tpriority: -10,\r\n\t\t\t\trequire: 'ngModel',\r\n\t\t\t\tlink: function (scope, element, attrs, ctrl) {\r\n\t\t\t\t\telement.bind('keydown', function (ev) {\r\n\t\t\t\t\t\tif (ev.keyCode === 13) {\r\n\t\t\t\t\t\t\tctrl.$commitViewValue();\r\n\t\t\t\t\t\t\tscope.$apply(function () {\r\n\t\t\t\t\t\t\t\tctrl.$setTouched();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t},\r\n\t]);\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.components').directive('mxBindHtmlCompile', mxBindHtmlCompile);\r\n\r\n\tmxBindHtmlCompile.$inject = ['$compile'];\r\n\r\n\tfunction mxBindHtmlCompile($compile) {\r\n\t\treturn {\r\n\t\t\trestrict: 'A',\r\n\t\t\tlink: function (scope, element, attrs) {\r\n\t\t\t\tscope.$watch(\r\n\t\t\t\t\tfunction () {\r\n\t\t\t\t\t\treturn scope.$eval(attrs.mxBindHtmlCompile);\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfunction (value) {\r\n\t\t\t\t\t\telement.html(value);\r\n\t\t\t\t\t\t$compile(element.contents())(scope);\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n})();\r\n","'use strict';\r\n\r\nangular.module('mx.components').directive('mxBindHtmlTrusted', function mxBindHtmlTrustedDirective() {\r\n\treturn {\r\n\t\trestrict: 'A',\r\n\t\tbindToController: {\r\n\t\t\tmxBindHtmlTrusted: '<',\r\n\t\t},\r\n\t\tscope: {},\r\n\t\tcontroller: MxBindHtmlTrustedController,\r\n\t};\r\n});\r\n\r\nMxBindHtmlTrustedController.$inject = ['$scope', '$element'];\r\nfunction MxBindHtmlTrustedController($scope, $element) {\r\n\tthis.$onChanges = (changes) => {\r\n\t\tif (changes.mxBindHtmlTrusted) {\r\n\t\t\t$element.html(changes.mxBindHtmlTrusted.currentValue);\r\n\t\t}\r\n\t};\r\n}\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('mx.components')\r\n\r\n\t\t/**\r\n\t\t * @ngdoc directive\r\n\t\t * @name mx.components:mxDraggable\r\n\t\t * @module mx.components\r\n\t\t * @restrict A\r\n\t\t *\r\n\t\t * @description\r\n\t\t * Enables possibility to drag element.\r\n\t\t *\r\n\t\t * `mxDraggable` gets string.\r\n\t\t * If it's `false` then element-dragging will disabled.\r\n\t\t * If it's JSON - it will be passed to droppable element.\r\n\t\t *\r\n\t\t * Example 1:\r\n\t\t * ```html\r\n\t\t *
\r\n\t\t *
\r\n\t\t * ```\r\n\t\t *\r\n\t\t * Example 2:\r\n\t\t * ```html\r\n\t\t *
\r\n\t\t *
\r\n\t\t * ```\r\n\t\t *\r\n\t\t **/\r\n\t\t.directive('mxDraggable', [\r\n\t\t\t'mx.components.DragNDropUtils',\r\n\t\t\tfunction mxDraggableDirective(dragNDropUtils) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\trestrict: 'A',\r\n\t\t\t\t\tlink: function (scope, element, attrs) {\r\n\t\t\t\t\t\tvar dragstartHandler = function (event) {\r\n\t\t\t\t\t\t\tvar dropAttrVal, data;\r\n\t\t\t\t\t\t\tif (event && event.target) {\r\n\t\t\t\t\t\t\t\tdropAttrVal = $(event.target).closest('[mx-draggable]').attr('mx-draggable');\r\n\t\t\t\t\t\t\t\tdata = JSON.parse(dropAttrVal);\r\n\t\t\t\t\t\t\t\tif (data) {\r\n\t\t\t\t\t\t\t\t\tdragNDropUtils.setDropData(event, data);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tvar handleDragging = function () {\r\n\t\t\t\t\t\t\tvar mxDragVal = attrs.mxDraggable;\r\n\t\t\t\t\t\t\tif (mxDragVal.toLowerCase() !== 'false') {\r\n\t\t\t\t\t\t\t\telement.attr('draggable', true).on('dragstart', dragstartHandler);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\telement.removeAttr('draggable').off('dragstart', dragstartHandler);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\thandleDragging();\r\n\t\t\t\t\t\tattrs.$observe('mxDraggable', handleDragging);\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t])\r\n\r\n\t\t/**\r\n\t\t * @ngdoc directive\r\n\t\t * @name mx.components:mxDroppable\r\n\t\t * @module mx.components\r\n\t\t * @restrict A\r\n\t\t *\r\n\t\t * @description\r\n\t\t * Enables possibility to drop on this element another draggable element.\r\n\t\t *\r\n\t\t * `mxDroppable` gets string.\r\n\t\t * If it's `false` then dropping will be disallowed.\r\n\t\t * If it's some method then it will be executed.\r\n\t\t *\r\n\t\t * Example 1:\r\n\t\t * ```html\r\n\t\t *
\r\n\t\t *
\r\n\t\t * ```\r\n\t\t *\r\n\t\t * Example 2:\r\n\t\t * ```html\r\n\t\t *
\r\n\t\t *
\r\n\t\t * ```\r\n\t\t *\r\n\t\t **/\r\n\t\t.directive('mxDroppable', [\r\n\t\t\t'$parse',\r\n\t\t\tfunction mxDroppableDirective($parse) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\trestrict: 'A',\r\n\t\t\t\t\tlink: function (scope, element, attrs) {\r\n\t\t\t\t\t\tvar dropHandler = function (event) {\r\n\t\t\t\t\t\t\tvar draggableAttr;\r\n\t\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t\telement.removeClass('mx-drag-hover');\r\n\t\t\t\t\t\t\tif (event && event.target) {\r\n\t\t\t\t\t\t\t\tdraggableAttr = $(event.target).closest('[mx-droppable]').attr('mx-droppable');\r\n\t\t\t\t\t\t\t\tif (draggableAttr) {\r\n\t\t\t\t\t\t\t\t\t$parse(draggableAttr || '')(scope, { $event: event });\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tvar dragoverHandler = function (event) {\r\n\t\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t\telement.addClass('mx-drag-hover');\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tvar dragleaveHandler = function (event) {\r\n\t\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t\telement.removeClass('mx-drag-hover');\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tvar handleDropping = function () {\r\n\t\t\t\t\t\t\tvar mxDropVal = attrs.mxDroppable;\r\n\t\t\t\t\t\t\tif (mxDropVal && mxDropVal.toLowerCase() !== 'false') {\r\n\t\t\t\t\t\t\t\telement.attr('allow-drop', true).on('drop', dropHandler).on('dragover', dragoverHandler).on('dragleave', dragleaveHandler);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\telement.removeAttr('allow-drop').off('drop', dropHandler).off('dragover', dragoverHandler).off('dragleave', dragleaveHandler);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\t//handleDropping();\r\n\t\t\t\t\t\tattrs.$observe('mxDroppable', handleDropping);\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t])\r\n\r\n\t\t/**\r\n\t\t * @ngdoc service\r\n\t\t * @name mx.components.DragNDropUtils\r\n\t\t * @module mx.components\r\n\t\t *\r\n\t\t * @description\r\n\t\t * Allows to pass data from draggable to droppable element.\r\n\t\t * It has 2 methods: `getDropData()` and `setDropData()`\r\n\t\t *\r\n\t\t **/\r\n\t\t.factory('mx.components.DragNDropUtils', [\r\n\t\t\t'mx.internationalization',\r\n\t\t\tfunction dragNDropUtils(internationalization) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tgetDropData: getDropData,\r\n\t\t\t\t\tsetDropData: setDropData,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tfunction getDropData(event) {\r\n\t\t\t\t\tvar dataTransfer = event.dataTransfer || (event.originalEvent && event.originalEvent.dataTransfer);\r\n\t\t\t\t\tif (dataTransfer) {\r\n\t\t\t\t\t\treturn JSON.parse(dataTransfer.getData('text'));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow new Error(internationalization.get('components.errors.can_no_access_data_transfer_object'));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction setDropData(event, value) {\r\n\t\t\t\t\tvar dataTransfer = event.dataTransfer || (event.originalEvent && event.originalEvent.dataTransfer);\r\n\t\t\t\t\tif (dataTransfer) {\r\n\t\t\t\t\t\tdataTransfer.setData('text', JSON.stringify(value));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow new Error(internationalization.get('components.errors.can_no_access_data_transfer_object'));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t]);\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.components').component('mxFormValidation', {\r\n\t\trequire: {\r\n\t\t\tmxFormCtrl: '?^mxForm',\r\n\t\t},\r\n\t\tbindings: {\r\n\t\t\tvalid: '=?',\r\n\t\t},\r\n\t\ttemplate: '',\r\n\t\tcontroller: MxFormValidationCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t});\r\n\r\n\tfunction MxFormValidationCtrl() {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$postLink = function () {\r\n\t\t\tvar form = vm.mxFormCtrl || {};\r\n\r\n\t\t\tObject.defineProperty(vm, 'valid', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn form.valid;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t};\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc directive\r\n\t * @name mx.components:hoverClass\r\n\t * @module mx.components\r\n\t * @restrict 'A'\r\n\t * @description\r\n\t * Add?remove class to an element on mouseenter/mouseleave\r\n\t *\r\n\t * @param {string} hoverClass= - Class which will be added\r\n\t *\r\n\t * @usage \r\n\t */\r\n\r\n\tangular.module('mx.components').directive('mxHoverClass', function mxHoverClassDirective() {\r\n\t\treturn {\r\n\t\t\trestrict: 'A',\r\n\t\t\tscope: {\r\n\t\t\t\tmxHoverClass: '@',\r\n\t\t\t},\r\n\t\t\tlink: function (scope, element) {\r\n\t\t\t\telement.on('mouseenter', function () {\r\n\t\t\t\t\telement.addClass(scope.mxHoverClass);\r\n\t\t\t\t});\r\n\t\t\t\telement.on('mouseleave', function () {\r\n\t\t\t\t\telement.removeClass(scope.mxHoverClass);\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t};\r\n\t});\r\n})();\r\n","(function (w) {\r\n\t'use strict';\r\n\r\n\t// TODO: seems not in used. If so - maybe it's better to remove it.\r\n\r\n\tfunction LazyLoad(src) {\r\n\t\tvar script = document.createElement('script');\r\n\t\tscript.type = 'text/javascript';\r\n\t\tscript.async = true;\r\n\t\tscript.src = '/' + src;\r\n\t\tvar first = document.getElementsByTagName('script')[0];\r\n\t\tfirst.parentNode.insertBefore(script, first);\r\n\t}\r\n\r\n\tw.mx = w.mx || {};\r\n\tw.mx.components = w.mx.components || {};\r\n\tw.mx.components.LazyLoad = LazyLoad;\r\n\r\n\tangular.module('mx.components').directive('mxLazyLoad', function mxLazyLoadDirective() {\r\n\t\treturn {\r\n\t\t\trestrict: 'A',\r\n\t\t\tscope: false,\r\n\t\t};\r\n\t});\r\n})(window);\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.components').directive('mxOnClickOutside', MxOnClickOutside);\r\n\r\n\tMxOnClickOutside.$inject = ['$window', '$parse'];\r\n\tfunction MxOnClickOutside($window, $parse) {\r\n\t\treturn {\r\n\t\t\tlink: function (scope, el, attr) {\r\n\t\t\t\tif (!attr.mxOnClickOutside) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar nakedEl = el[0];\r\n\t\t\t\tvar fn = $parse(attr.mxOnClickOutside);\r\n\r\n\t\t\t\tvar handler = function (e) {\r\n\t\t\t\t\t// if Panel contains md-calendars or other md-dropdowns\r\n\t\t\t\t\t// then we should not close it while user select something from those extra-dropdown panels.\r\n\t\t\t\t\tvar extraPanel = $('.md-pane-open:visible');\r\n\t\t\t\t\tvar extraSelectPanel = $('.md-select-menu-container:visible');\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tnakedEl === e.target ||\r\n\t\t\t\t\t\tnakedEl.contains(e.target) ||\r\n\t\t\t\t\t\t$(e.target).hasClass('md-scroll-mask') ||\r\n\t\t\t\t\t\t(extraPanel.length && extraPanel[0].contains(e.target)) ||\r\n\t\t\t\t\t\t(extraSelectPanel.length && extraSelectPanel[0].contains(e.target))\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tscope.$apply(fn);\r\n\t\t\t\t};\r\n\r\n\t\t\t\t$window.addEventListener('mousedown', handler, true);\r\n\r\n\t\t\t\tscope.$on('$destroy', function () {\r\n\t\t\t\t\t$window.removeEventListener('mousedown', handler, true);\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc directive\r\n\t * @name mx.components:mxPreventMenuClose\r\n\t * @module mx.components\r\n\t * @restrict 'AC'\r\n\t * @description\r\n\t *\r\n\t * This directive is used to prevent closing of md-menu.\r\n\t * If any element inside md-menu-content has ng-click handler and doesn't have attribute 'md-prevent-menu-close' then md-menu will be closed after click on such element.\r\n\t * For simple elements (ex. 'button') it is possible just to add attribute 'md-prevent-menu-close' to it.\r\n\t * But for complex components it is impossible to add such attribute for every clickable child, mxPreventMenuClose can be used so for such cases.\r\n\t *\r\n\t * mxPreventMenuClose will add 'md-prevent-menu-close' for all static children.\r\n\t * Also it adds handler for md-menu to detect new dynamic clickable children inside element with 'mx-prevent-menu-close'\r\n\t *\r\n\t * @usage \r\n\t */\r\n\tangular.module('mx.components').directive('mxPreventMenuClose', function mxPreventMenuCloseDirective() {\r\n\t\treturn {\r\n\t\t\trestrict: 'A',\r\n\t\t\tcontroller: MxPreventMenuCloseController,\r\n\t\t};\r\n\t});\r\n\r\n\tMxPreventMenuCloseController.$inject = ['$scope', '$element', '$mdUtil'];\r\n\tfunction MxPreventMenuCloseController($scope, $element, $mdUtil) {\r\n\t\tvar vm = this;\r\n\t\tvar containers = [];\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\t/* evalAsync is used to wait creating of parent-container */\r\n\t\t\t$scope.$evalAsync(function () {\r\n\t\t\t\tvar mdMenuContent = $($mdUtil.getClosest($element, 'MD-MENU-CONTENT'));\r\n\t\t\t\tif (!mdMenuContent) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tsetPreventAttributesForAllClickableChildren($element);\r\n\r\n\t\t\t\tvar mdMenuContentParent = mdMenuContent.parent()[0];\r\n\r\n\t\t\t\t/* all mx-prevent-menu-close directives should create only one handler for md-menu-content with array of containers */\r\n\t\t\t\tif (!mdMenuContentParent._mxMenuPreventCloseHandler) {\r\n\t\t\t\t\tmdMenuContentParent._mxMenuPreventCloseHandler = mxMenuPreventCloseHandler;\r\n\t\t\t\t\tmdMenuContentParent.addEventListener('click', mxMenuPreventCloseHandler, true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (mdMenuContentParent._mxMenuPreventCloseContainers) {\r\n\t\t\t\t\tcontainers = mdMenuContentParent._mxMenuPreventCloseContainers;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmdMenuContentParent._mxMenuPreventCloseContainers = containers;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontainers.push($element[0]);\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tfunction mxMenuPreventCloseHandler(event) {\r\n\t\t\tvar target = event.target;\r\n\t\t\tvar hasNotPreventedClickHandler = false;\r\n\r\n\t\t\tdo {\r\n\t\t\t\tif (target.tagName === 'MD-MENU-CONTENT') {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (target.hasAttribute('ng-click') && !target.hasAttribute('md-prevent-menu-close')) {\r\n\t\t\t\t\thasNotPreventedClickHandler = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (containers.indexOf(target) >= 0) {\r\n\t\t\t\t\tif (hasNotPreventedClickHandler) {\r\n\t\t\t\t\t\tsetPreventAttributesForAllClickableChildren(target);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\ttarget = target.parentNode;\r\n\t\t\t} while (target);\r\n\t\t}\r\n\r\n\t\tfunction setPreventAttributesForAllClickableChildren(target) {\r\n\t\t\t$(target)\r\n\t\t\t\t.find('[ng-click]')\r\n\t\t\t\t.each(function () {\r\n\t\t\t\t\t$(this).attr('md-prevent-menu-close', '');\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.components').directive('mxRepeaterComplete', [\r\n\t\t'$timeout',\r\n\t\t'$parse',\r\n\t\tfunction mxRepeaterCompleteDirective($timeout, $parse) {\r\n\t\t\treturn {\r\n\t\t\t\trestrict: 'A',\r\n\t\t\t\tlink: function (scope, element, attr) {\r\n\t\t\t\t\tif (scope.$last === true) {\r\n\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\t$parse(attr.mxRepeaterComplete)(scope);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t},\r\n\t]);\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.components').directive('mxRepeaterItem', mxRepeaterItem);\r\n\r\n\tfunction mxRepeaterItem() {\r\n\t\treturn {\r\n\t\t\trestrict: 'A',\r\n\t\t\tbindToController: {\r\n\t\t\t\titem: '=mxRepeaterItem',\r\n\t\t\t},\r\n\t\t\ttemplate: '',\r\n\t\t\tcontroller: function () {},\r\n\t\t};\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc directive\r\n\t * @name mx.components:mxResizable\r\n\t * @module mx.components\r\n\t * @restrict 'A'\r\n\t * @description\r\n\t * The mx-resizable directive is used to allow some panel be resizable. direction:\r\n\t * Currently support just 'right' and 'left' `directive`.\r\n\t * If `localStorageWidthKey` isn't set then it will not be stored.\r\n\t *\r\n\t * @usage
\r\n\t *\r\n\t */\r\n\r\n\tangular.module('mx.components').directive('mxResizable', function mxResizableDirective() {\r\n\t\treturn {\r\n\t\t\trestrict: 'A',\r\n\t\t\tcontroller: MxResizableCtrl,\r\n\t\t\tbindToController: {\r\n\t\t\t\tmxResizable: '<',\r\n\t\t\t},\r\n\t\t};\r\n\t});\r\n\r\n\tMxResizableCtrl.$inject = ['$element', '$document', '$scope', 'mx.shell.InternationalizationService'];\r\n\r\n\tfunction MxResizableCtrl($element, $document, $scope, i18nService) {\r\n\t\tconst vm = this;\r\n\t\tconst htmlEL = $('html');\r\n\t\tconst HALF_DRAGSTRAP_WIDTH = 3;\r\n\t\tconst minWidth = 200;\r\n\t\tconst isRightToLeftTextMode = i18nService.currentLanguage.isRightToLeft;\r\n\t\tlet containerEl;\r\n\t\tlet dragStrapEl;\r\n\t\tlet enableResizeMode = false;\r\n\t\tlet resizePlaceholder;\r\n\t\tlet oppositeSideOffset = 0;\r\n\t\tlet currentWidth = 300;\r\n\t\tlet windowWidth;\r\n\r\n\t\tvar options = {\r\n\t\t\tdirection: 'right',\r\n\t\t\tlocalStorageWidthKey: undefined,\r\n\t\t};\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\t$.extend(options, vm.mxResizable);\r\n\t\t};\r\n\r\n\t\tvm.$postLink = function () {\r\n\t\t\tcontainerEl = $($element);\r\n\r\n\t\t\tcurrentWidth = (localStorage && options.localStorageWidthKey && parseInt(localStorage.getItem(options.localStorageWidthKey), 10)) || containerEl.width();\r\n\r\n\t\t\tdragStrapEl = $('
');\r\n\t\t\tcontainerEl.append(dragStrapEl);\r\n\t\t\tdragStrapEl.on('mousedown', startResize);\r\n\t\t\t$document.on('mouseup', stopResize);\r\n\r\n\t\t\tsetWidth(currentWidth);\r\n\t\t};\r\n\r\n\t\tvm.$onDestroy = function () {\r\n\t\t\tdragStrapEl.remove();\r\n\t\t\t$document.off('mouseup', stopResize);\r\n\t\t};\r\n\r\n\t\tfunction startResize(event) {\r\n\t\t\twindowWidth = mx.components.Utils.windowSize().width;\r\n\t\t\tenableResizeMode = true;\r\n\t\t\t$document.on('mousemove', handleResize);\r\n\t\t\thtmlEL.addClass('is-resizing');\r\n\t\t\tresizePlaceholder = angular.element('
');\r\n\t\t\tresizePlaceholder.prependTo('body');\r\n\r\n\t\t\tconst isLogicalRightDirection = (options.direction === 'right' && !isRightToLeftTextMode) || (options.direction === 'left' && isRightToLeftTextMode);\r\n\t\t\tconst leftOffset = containerEl.offset().left;\r\n\t\t\toppositeSideOffset = (isLogicalRightDirection && leftOffset) || (!isLogicalRightDirection && windowWidth - leftOffset - containerEl.width());\r\n\t\t\tresizePlaceholder.css((options.direction === 'right' && 'inset-inline-start') || (options.direction === 'left' && 'inset-inline-end'), oppositeSideOffset + 'px');\r\n\r\n\t\t\thandleResize(event);\r\n\t\t}\r\n\r\n\t\tfunction handleResize(event) {\r\n\t\t\tif (!enableResizeMode) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst logicalClientX = isRightToLeftTextMode ? windowWidth - event.clientX : event.clientX;\r\n\r\n\t\t\tcurrentWidth = Math.max(\r\n\t\t\t\tminWidth,\r\n\t\t\t\t(options.direction === 'right' && logicalClientX - oppositeSideOffset - HALF_DRAGSTRAP_WIDTH) ||\r\n\t\t\t\t\t(options.direction === 'left' && windowWidth - logicalClientX - oppositeSideOffset + HALF_DRAGSTRAP_WIDTH)\r\n\t\t\t);\r\n\t\t\tresizePlaceholder.width(currentWidth + (options.direction === 'right' ? 2 * HALF_DRAGSTRAP_WIDTH : 0));\r\n\t\t}\r\n\r\n\t\tfunction stopResize() {\r\n\t\t\tif (!enableResizeMode) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tenableResizeMode = false;\r\n\t\t\t$document.off('mousemove', handleResize);\r\n\t\t\tif (localStorage && options.localStorageWidthKey) {\r\n\t\t\t\tlocalStorage.setItem(options.localStorageWidthKey, currentWidth);\r\n\t\t\t}\r\n\t\t\thtmlEL.removeClass('is-resizing');\r\n\t\t\tresizePlaceholder.remove();\r\n\t\t\tsetWidth(currentWidth);\r\n\t\t\tif (options.onChange) {\r\n\t\t\t\toptions.onChange();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction setWidth(width) {\r\n\t\t\t$scope.$evalAsync(function () {\r\n\t\t\t\tcontainerEl.width(width);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.components').directive('mxRightClick', mxRightClick);\r\n\r\n\tmxRightClick.$inject = ['$parse'];\r\n\r\n\tfunction mxRightClick($parse) {\r\n\t\treturn function (scope, element, attrs) {\r\n\t\t\telement.bind('contextmenu', function (event) {\r\n\t\t\t\tscope.$apply(function () {\r\n\t\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\t\tvar fn = $parse(attrs.mxRightClick);\r\n\t\t\t\t\tfn(scope, { $event: event, $scope: scope });\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t};\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.components').directive('mxTransclude', function mxTranscludeDirective() {\r\n\t\treturn {\r\n\t\t\trestrict: 'A',\r\n\t\t\tcompile: function (tElem, tAttrs, transclude) {\r\n\t\t\t\treturn function (scope, elem) {\r\n\t\t\t\t\ttransclude(scope, function (clone) {\r\n\t\t\t\t\t\telem.append(clone);\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t};\r\n\t});\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc directive\r\n\t * @name mx.components:mxUiAccessibility\r\n\t * @module mx.components\r\n\t * @restrict 'A'\r\n\t * @description\r\n\t * The mx-ui-accessibility directive is used to set read-only or disabled attribute for some container in mx-form.\r\n\t *\r\n\t * The example below demonstrates some of the attributes you may use with the mxUiAccessibility control:\r\n\t * @param {boolean} disabled= - The disabled property sets whether all controls of container with mx-ui-accessibility should be disabled, or not.\r\n\t * @param {boolean} readOnly= - The readOnly property sets whether all controls of container with mx-ui-accessibility should be read-only.\r\n\t *\r\n\t * @usage \r\n\t */\r\n\r\n\tangular.module('mx.components').directive('mxUiAccessibility', function mxUiAccessibilityDirective() {\r\n\t\treturn {\r\n\t\t\trestrict: 'A',\r\n\t\t\trequire: ['mxUiAccessibility'],\r\n\t\t\tlink: function (scope, element, attrs, ctrls) {\r\n\t\t\t\tvar vm = ctrls[0];\r\n\r\n\t\t\t\tObject.defineProperty(vm, 'readOnly', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn attrs.readOnly === 'true';\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\r\n\t\t\t\tObject.defineProperty(vm, 'disabled', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn attrs.disabled === 'true';\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\ttemplate: '',\r\n\t\t\tcontroller: function () {},\r\n\t\t};\r\n\t});\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.components').directive('mxZoom', mxZoom);\r\n\r\n\tmxZoom.$inject = ['$mdDialog'];\r\n\r\n\tfunction mxZoom($mdDialog) {\r\n\t\treturn {\r\n\t\t\tlink: link,\r\n\t\t};\r\n\r\n\t\tfunction link(scope, element, attrs) {\r\n\t\t\telement.on('click', onClick);\r\n\t\t\tscope.$on('$destroy', cleanUp);\r\n\r\n\t\t\tfunction onClick() {\r\n\t\t\t\t$mdDialog.show({\r\n\t\t\t\t\tclickOutsideToClose: true,\r\n\t\t\t\t\tcontrollerAs: 'vm',\r\n\t\t\t\t\tcontroller: [\r\n\t\t\t\t\t\t'$mdDialog',\r\n\t\t\t\t\t\tfunction ($mdDialog) {\r\n\t\t\t\t\t\t\tvar vm = this;\r\n\t\t\t\t\t\t\tvm.url = attrs.src;\r\n\r\n\t\t\t\t\t\t\tvm.cancel = function () {\r\n\t\t\t\t\t\t\t\t$mdDialog.cancel();\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t],\r\n\t\t\t\t\ttemplate: [\r\n\t\t\t\t\t\t'
',\r\n\t\t\t\t\t\t'',\r\n\t\t\t\t\t\t'Close',\r\n\t\t\t\t\t\t'
',\r\n\t\t\t\t\t].join(''),\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfunction cleanUp() {\r\n\t\t\t\telement.off('click', onClick);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc component\r\n\t * @name mx.components:mxButton\r\n\t * @module mx.components\r\n\t * @restrict 'E'\r\n\t * @scope {}\r\n\t * @description Custom button component\r\n\t * @param {string} label@ - Text to be displayed on button\r\n\t * @param {string} icon@ - Name of Material Design icon to be displayed on button\r\n\t * @param {string} styles@ - Styles to be applied to button
Default: md-raised md-primary\r\n\t * @param {bool} focused@ - If true, a button should have input focus when the page loads
Default: false\r\n\t * @param {function} click& - Button click handler\r\n\t * @param {boolean} isDisabled=? - Specifies if button is disabled\r\n\t * @usage \r\n\t */\r\n\tangular.module('mx.components').component('mxButton', {\r\n\t\tbindings: {\r\n\t\t\tlabel: '@',\r\n\t\t\ticon: '@',\r\n\t\t\tstyles: '@',\r\n\t\t\tclick: '&',\r\n\t\t\tfocused: '@',\r\n\t\t\tisDisabled: '\r\n\t * \r\n\t * \r\n\t * \r\n\t */\r\n\r\n\tangular\r\n\t\t.module('mx.components')\r\n\t\t.component('mxChoice', {\r\n\t\t\trequire: {\r\n\t\t\t\tmxForm: '?^^mxForm',\r\n\t\t\t\tmxUiAccessibility: '?^^mxUiAccessibility',\r\n\t\t\t\tform: '?^^form',\r\n\t\t\t\trepeaterItem: '?^^mxRepeaterItem',\r\n\t\t\t},\r\n\t\t\tbindings: {\r\n\t\t\t\tpanels: '<',\r\n\t\t\t\tselectedPanelName: '=?',\r\n\t\t\t\tparentControllerAs: '@',\r\n\t\t\t\tviewModeParam: '@?viewMode',\r\n\t\t\t\tdisabled: '<',\r\n\t\t\t\tdirection: '@',\r\n\t\t\t\tdirectionHorizontalButtonsWidth: '@',\r\n\t\t\t\thiddenPanels: '@',\r\n\t\t\t},\r\n\t\t\ttemplateUrl: 'mx-choice/mx-choice.html',\r\n\t\t\tcontroller: MxChoiceCtrl,\r\n\t\t\tcontrollerAs: '__$vm',\r\n\t\t})\r\n\t\t.filter('hidePanels', function hidePanelsFilter() {\r\n\t\t\treturn function (input, hiddenPanels) {\r\n\t\t\t\t// Add commas to simplify validation\r\n\t\t\t\thiddenPanels = ',' + hiddenPanels + ',';\r\n\t\t\t\treturn input.filter(function (panel) {\r\n\t\t\t\t\treturn hiddenPanels.indexOf(',' + panel.name + ',') === -1;\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t})\r\n\t\t.value('mxChoiceNormalizeViewModeValue', function mxChoiceNormalizeViewModeValue(value) {\r\n\t\t\t// There was property called vm.showSwitchButtons {Boolean} till 11.0.0\r\n\t\t\t// but now it is renamed to vm.viewMode {Enum} with values: 'radio_buttons_with_panels', 'radio_buttons_without_panels', 'selected_panel_without_radio_buttons'\r\n\t\t\t// Here we map obsolete old values to new ones for Backward Compatibility\r\n\t\t\tif (['radio_buttons_with_panels', 'radio_buttons_without_panels', 'selected_panel_without_radio_buttons'].some((v) => v === value)) {\r\n\t\t\t\treturn value;\r\n\t\t\t} else if (value === false || (value || '').toLowerCase?.() === 'false') {\r\n\t\t\t\treturn 'selected_panel_without_radio_buttons';\r\n\t\t\t} else {\r\n\t\t\t\t// here `value` could be true/\"True\"/undefined/\"\"\r\n\t\t\t\treturn 'radio_buttons_with_panels';\r\n\t\t\t}\r\n\t\t});\r\n\r\n\tMxChoiceCtrl.$inject = ['$scope', '$filter', '$templateCache', 'mxChoiceNormalizeViewModeValue'];\r\n\tfunction MxChoiceCtrl($scope, $filter, $templateCache, mxChoiceNormalizeViewModeValue) {\r\n\t\tvar vm = this;\r\n\t\tvm.uniqueClassName = mx.components.Utils.genElemId('mx-choice-');\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.direction = vm.direction || 'column';\r\n\t\t\tvm.viewMode = mxChoiceNormalizeViewModeValue(vm.viewModeParam);\r\n\t\t\tvm.panels.sort(function (a, b) {\r\n\t\t\t\treturn a.position - b.position;\r\n\t\t\t});\r\n\t\t\tvm._panels = [];\r\n\r\n\t\t\tif (typeof vm.selectedPanelName === 'undefined' && vm.panels.length > 0 && vm.panels[0].disabled) {\r\n\t\t\t\tvm.panels.some(function (panel) {\r\n\t\t\t\t\tif (!panel.disabled) {\r\n\t\t\t\t\t\tvm.selectedPanelName = panel.name;\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tinitScope();\r\n\t\t};\r\n\r\n\t\t$scope.$watchGroup(['__$vm.panels', '__$vm.hiddenPanels'], function () {\r\n\t\t\tvm._panels = $filter('orderBy')(\r\n\t\t\t\t$filter('hidePanels')(\r\n\t\t\t\t\tvm.panels.filter(function (t) {\r\n\t\t\t\t\t\treturn t.visible === undefined || t.visible;\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tvm.hiddenPanels\r\n\t\t\t\t),\r\n\t\t\t\t'position'\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\t$scope.$watch('__$vm.selectedPanelName', function () {\r\n\t\t\tvm._currentPanel = vm.panels.filter(function (panel) {\r\n\t\t\t\treturn '' + panel.name === '' + vm.selectedPanelName; // To string\r\n\t\t\t})[0];\r\n\t\t});\r\n\r\n\t\t// Avoid using not existing template URLs because it can crash whole all with loading 404 and a lot of its requests\r\n\t\tvm.validateTemplateUrl = function (panelId) {\r\n\t\t\treturn panelId && (panelId.indexOf('.html') !== -1 || $templateCache.get(panelId)) ? panelId : '';\r\n\t\t};\r\n\r\n\t\t//TODO: should we display any default panel if `selectedPanelName` not set ?\r\n\r\n\t\tfunction initScope() {\r\n\t\t\tif (vm.parentControllerAs) {\r\n\t\t\t\t$scope[vm.parentControllerAs] = getParent($scope, vm.parentControllerAs);\r\n\t\t\t} else {\r\n\t\t\t\t$scope.dataModel = $scope.$parent;\r\n\t\t\t}\r\n\r\n\t\t\tif (vm.repeaterItem) {\r\n\t\t\t\t$scope.item = vm.repeaterItem.item;\r\n\t\t\t}\r\n\r\n\t\t\tfunction getParent(scope, key) {\r\n\t\t\t\treturn scope.$parent && (scope.$parent[key] || getParent(scope.$parent, key));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.components').directive('mxColorPicker', function mxColorPickerDirective() {\r\n\t\tconst directive = new mx.components.FormControlBase(MxColorPickerCtrl, 'mx-color-picker/mx-color-picker.html');\r\n\t\tangular.extend(directive.bindToController, {\r\n\t\t\tlegacy: '<',\r\n\t\t\tonBlur: '&',\r\n\t\t});\r\n\t\treturn directive;\r\n\t});\r\n\r\n\tMxColorPickerCtrl.$inject = ['$timeout', '$scope', '$element'];\r\n\r\n\tfunction MxColorPickerCtrl($timeout, $scope, $element) {\r\n\t\tvar vm = this;\r\n\t\tvar colorPickerOpened = false;\r\n\t\tconst defaultPickerColor = '#000000';\r\n\r\n\t\tvm.isColorPickerSupported = $('')[0].type === 'color';\r\n\r\n\t\tvar textInputtingColor = '';\r\n\t\tObject.defineProperty(vm, 'textInputtingColor', {\r\n\t\t\tget: () => textInputtingColor,\r\n\t\t\tset: setColorModel,\r\n\t\t});\r\n\r\n\t\tvar mousePickingColor = defaultPickerColor;\r\n\t\tObject.defineProperty(vm, 'mousePickingColor', {\r\n\t\t\tget: () => mousePickingColor,\r\n\t\t\tset: setColorModel,\r\n\t\t});\r\n\r\n\t\t$scope.$watch('vm.model', function (newValue) {\r\n\t\t\tif (vm.legacy && typeof newValue === 'string') {\r\n\t\t\t\tnewValue = newValue.replace(/0xff/i, '#');\r\n\t\t\t}\r\n\r\n\t\t\tif (newValue !== vm.textInputtingColor) {\r\n\t\t\t\tvm.textInputtingColor = newValue;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tmx.components.FormControlControllerBase.call(vm, $timeout);\r\n\t\t\tif (vm.legacy) {\r\n\t\t\t\tvm._readonly = true;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvm.$postLink = function () {\r\n\t\t\tvm.setHintHandlers($element.find('mx-text-box input'));\r\n\t\t};\r\n\r\n\t\tvm.blurText = blurText;\r\n\t\tvm.focusColor = focusColor;\r\n\t\tvm.onColorPickerClick = onColorPickerClick;\r\n\t\tvm.setColorModel = setColorModel;\r\n\r\n\t\treturn vm;\r\n\r\n\t\tfunction setColorModel(color) {\r\n\t\t\ttextInputtingColor = color;\r\n\t\t\tif (isValidColor(color)) {\r\n\t\t\t\tmousePickingColor = color;\r\n\t\t\t\tif (vm.legacy && typeof color === 'string') {\r\n\t\t\t\t\tcolor = color.replace('#', '0xFF');\r\n\t\t\t\t}\r\n\t\t\t\tif (vm.model !== color) {\r\n\t\t\t\t\tvm.model = color;\r\n\t\t\t\t}\r\n\t\t\t} else if (color === null || (typeof color === 'string' && color.trim() === '')) {\r\n\t\t\t\tmousePickingColor = defaultPickerColor;\r\n\t\t\t\tvm.model = null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction isValidColor(color) {\r\n\t\t\treturn /^#[\\da-f]{6}$/i.test(color);\r\n\t\t}\r\n\r\n\t\tfunction blurText() {\r\n\t\t\t$timeout(function () {\r\n\t\t\t\tif (!colorPickerOpened) {\r\n\t\t\t\t\tvm.onBlur();\r\n\t\t\t\t}\r\n\t\t\t}, 200);\r\n\t\t}\r\n\r\n\t\tfunction focusColor() {\r\n\t\t\tif (colorPickerOpened) {\r\n\t\t\t\tcolorPickerOpened = false;\r\n\t\t\t\t$timeout(function () {\r\n\t\t\t\t\tvm.onBlur();\r\n\t\t\t\t}, 100);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onColorPickerClick() {\r\n\t\t\tcolorPickerOpened = true;\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.components').directive('mxConfigReader', function mxConfigReaderDirective() {\r\n\t\treturn {\r\n\t\t\trestrict: 'E',\r\n\t\t\tcontroller: MxConfigReaderCtrl,\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t\tscope: {},\r\n\t\t\tbindToController: {\r\n\t\t\t\tpath: '@',\r\n\t\t\t\tvalue: '=',\r\n\t\t\t},\r\n\t\t};\r\n\t});\r\n\r\n\tMxConfigReaderCtrl.$inject = ['mx.shell.Config'];\r\n\r\n\tfunction MxConfigReaderCtrl(mxConfig) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.value = mxConfig.get(vm.path);\r\n\t\t};\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.components').directive('mxContainer', function mxContainerDirective() {\r\n\t\treturn {\r\n\t\t\trequire: {\r\n\t\t\t\tmxParentContainerCtrl: '?^^mxContainer',\r\n\t\t\t},\r\n\t\t\trestrict: 'A',\r\n\t\t\tscope: false,\r\n\t\t\tbindToController: true,\r\n\t\t\tpriority: 1000, // higher than for `ng-if`\r\n\r\n\t\t\tcontroller: [\r\n\t\t\t\t'$scope',\r\n\t\t\t\t'$element',\r\n\t\t\t\t'$attrs',\r\n\t\t\t\tfunction ($scope, $element, $attrs) {\r\n\t\t\t\t\tconst vm = this;\r\n\t\t\t\t\tlet mxContainerEl;\r\n\r\n\t\t\t\t\tconst innerVisibleChildren = [];\r\n\t\t\t\t\tlet isVisibleState = true;\r\n\t\t\t\t\tconst hiddenWrapperHtmlClass = 'mx-container-wrapper--hide-if-empty--hidden';\r\n\t\t\t\t\tconst hiddenContainerHtmlClass = 'mx-container--hide-if-empty--hidden';\r\n\r\n\t\t\t\t\tconst hasNgIf = !!$attrs.ngIf; // means if property `Visibility` is set\r\n\r\n\t\t\t\t\tconst _debouncedHandleVisibility = $.debounce(200, () => _handleVisibility());\r\n\r\n\t\t\t\t\tif (hasNgIf) {\r\n\t\t\t\t\t\tif ($attrs.ngIf === 'false') {\r\n\t\t\t\t\t\t\t// for optimization\r\n\t\t\t\t\t\t\t_hideWrappers();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t$scope.$watch($attrs.ngIf, (ngIfValue) => {\r\n\t\t\t\t\t\t\t\tif (ngIfValue) {\r\n\t\t\t\t\t\t\t\t\t_showWrappers();\r\n\t\t\t\t\t\t\t\t\t// In a case this mxContainer has ng-if then $element will be html-comment (like this: \"\", means not like this: \"
\")\r\n\t\t\t\t\t\t\t\t\t// and because of mxContainer directive has higher priority than ngIf divective\r\n\t\t\t\t\t\t\t\t\t// for this moment ngIf has not created \"
\" element yet\r\n\t\t\t\t\t\t\t\t\t// so we have to wait next cycle using `$evalAsync`\r\n\t\t\t\t\t\t\t\t\t// and then get real element (like \"
\") using method next().\r\n\t\t\t\t\t\t\t\t\t$scope.$evalAsync(() => {\r\n\t\t\t\t\t\t\t\t\t\tmxContainerEl = $element.next(`[ng-if=\"${$attrs.ngIf}\"]`);\r\n\t\t\t\t\t\t\t\t\t\tvm.hideIfEmpty = _isHideIfEmpty(mxContainerEl);\r\n\t\t\t\t\t\t\t\t\t\tmxContainerEl.__mxContainerRegistrationId = _generateContainerId($element);\r\n\t\t\t\t\t\t\t\t\t\t_init(mxContainerEl);\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t_hideWrappers(mxContainerEl);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tmxContainerEl = $element;\r\n\t\t\t\t\t\tvm.hideIfEmpty = _isHideIfEmpty(mxContainerEl);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvm.$onInit = function () {\r\n\t\t\t\t\t\tif (!hasNgIf) {\r\n\t\t\t\t\t\t\t/* if doesn't have ng-if because $element would be html-comment (like \"\"). Its registration not here but in ngIf $watcher */\r\n\t\t\t\t\t\t\t_init(mxContainerEl);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// Handle this Container visibility on Children init and destroy\r\n\t\t\t\t\t// param: \"idObject\" (identifying object) is a $scope or an $element (if component doesn't have own $scope)\r\n\t\t\t\t\t//\t\t which is needed for identifying and for observing $destroy events\r\n\t\t\t\t\tvm.registerChild = function (idObject) {\r\n\t\t\t\t\t\tidObject.__mxContainerRegistrationId = _generateContainerId(idObject);\r\n\t\t\t\t\t\tvm.setChildVisibility(idObject, true);\r\n\t\t\t\t\t\t(idObject.$on || idObject.on || function () {}).call(idObject, '$destroy', function () {\r\n\t\t\t\t\t\t\tvm.setChildVisibility(idObject, false);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// method for manual setting of any changes in child visibility\r\n\t\t\t\t\tvm.setChildVisibility = function (idObject, isChildVisible) {\r\n\t\t\t\t\t\tif (vm.hideIfEmpty) {\r\n\t\t\t\t\t\t\tconst childElementId = idObject.__mxContainerRegistrationId;\r\n\t\t\t\t\t\t\tlet i;\r\n\t\t\t\t\t\t\tconst wasEmpty = innerVisibleChildren.length === 0;\r\n\t\t\t\t\t\t\t// Register child if new\r\n\t\t\t\t\t\t\tif (isChildVisible && innerVisibleChildren.indexOf(childElementId) === -1) {\r\n\t\t\t\t\t\t\t\tinnerVisibleChildren.push(childElementId);\r\n\t\t\t\t\t\t\t} else if (!isChildVisible && (i = innerVisibleChildren.indexOf(childElementId)) !== -1) {\r\n\t\t\t\t\t\t\t\tinnerVisibleChildren.splice(i, 1);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tconst isEmpty = innerVisibleChildren.length === 0;\r\n\r\n\t\t\t\t\t\t\tif (vm.mxParentContainerCtrl && wasEmpty !== isEmpty) {\r\n\t\t\t\t\t\t\t\tvm.mxParentContainerCtrl.setChildVisibility(mxContainerEl, !(vm.hideIfEmpty && innerVisibleChildren.length === 0 && !_hasVisibleControls()));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t_debouncedHandleVisibility();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tfunction _init(mxContainerEl) {\r\n\t\t\t\t\t\tif (vm.mxParentContainerCtrl) {\r\n\t\t\t\t\t\t\tvm.mxParentContainerCtrl.registerChild(mxContainerEl);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// to avoid blinking check if probably not visible\r\n\t\t\t\t\t\tif (vm.hideIfEmpty && mxContainerEl.find('[data-visual-type]:not(mx-search-control):not(mx-prominent-search-control)').length === 0) {\r\n\t\t\t\t\t\t\tisVisibleState = true;\r\n\t\t\t\t\t\t\t_handleVisibility();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfunction _handleVisibility() {\r\n\t\t\t\t\t\tlet visibleControlsAmount;\r\n\t\t\t\t\t\tif (!isVisibleState && (innerVisibleChildren.length || (visibleControlsAmount = _hasVisibleControls()))) {\r\n\t\t\t\t\t\t\t_showPanel();\r\n\t\t\t\t\t\t} else if (\r\n\t\t\t\t\t\t\tvm.hideIfEmpty &&\r\n\t\t\t\t\t\t\tisVisibleState &&\r\n\t\t\t\t\t\t\tinnerVisibleChildren.length === 0 &&\r\n\t\t\t\t\t\t\t(visibleControlsAmount === 0 || (visibleControlsAmount === undefined && !_hasVisibleControls()))\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t_hidePanel();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfunction _showPanel() {\r\n\t\t\t\t\t\tisVisibleState = true;\r\n\t\t\t\t\t\tmxContainerEl.removeClass(hiddenContainerHtmlClass);\r\n\t\t\t\t\t\t_showWrappers();\r\n\t\t\t\t\t\tif (vm.mxParentContainerCtrl) {\r\n\t\t\t\t\t\t\tvm.mxParentContainerCtrl.setChildVisibility(mxContainerEl, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfunction _hidePanel() {\r\n\t\t\t\t\t\tisVisibleState = false;\r\n\t\t\t\t\t\tmxContainerEl.addClass(hiddenContainerHtmlClass);\r\n\t\t\t\t\t\t_hideWrappers();\r\n\t\t\t\t\t\tif (vm.mxParentContainerCtrl) {\r\n\t\t\t\t\t\t\tvm.mxParentContainerCtrl.setChildVisibility(mxContainerEl, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfunction _hasVisibleControls() {\r\n\t\t\t\t\t\treturn !!mxContainerEl.has(\r\n\t\t\t\t\t\t\t'input,' +\r\n\t\t\t\t\t\t\t\t'textarea,' +\r\n\t\t\t\t\t\t\t\t'[data-visual-type=\"edit-control\"],' +\r\n\t\t\t\t\t\t\t\t'[data-visual-type=\"control\"]:not(.mx-literal):not(.mx-literal):not(mx-related-objects-link):not(mx-repeater):not(mx-search-control):not(mx-prominent-search-control),' +\r\n\t\t\t\t\t\t\t\t'.mx-control--avoid-hiding'\r\n\t\t\t\t\t\t).length;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfunction _showWrappers() {\r\n\t\t\t\t\t\tconst wrappingMxRow = $element.parent('[mx-row]');\r\n\t\t\t\t\t\twrappingMxRow.removeClass(hiddenWrapperHtmlClass);\r\n\t\t\t\t\t\twrappingMxRow.parent('[mx-rows-container]').removeClass(hiddenWrapperHtmlClass);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfunction _hideWrappers(ngIfElement) {\r\n\t\t\t\t\t\tconst wrapper1 = $element.parent();\r\n\t\t\t\t\t\tconst isWrapper1MxRow = wrapper1.is('[mx-row]');\r\n\t\t\t\t\t\tconst siblingsInWrapper1 = isWrapper1MxRow ? wrapper1.children(`:not(.${hiddenContainerHtmlClass})`) : undefined;\r\n\r\n\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\tisWrapper1MxRow &&\r\n\t\t\t\t\t\t\t(siblingsInWrapper1.length === 0 || (siblingsInWrapper1.length === 1 && ngIfElement && siblingsInWrapper1[0] === ngIfElement[0])) // the case when mxContainerEl is hiding by `ng-if` letter, not on init (after it had been present in the DOM)\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\twrapper1.addClass(hiddenWrapperHtmlClass);\r\n\t\t\t\t\t\t\tconst wrapper2 = wrapper1.parent();\r\n\t\t\t\t\t\t\tconst isWrapper2MxRowsContainer = wrapper2.is('[mx-rows-container]');\r\n\t\t\t\t\t\t\tconst siblingsInWrapper2 = isWrapper2MxRowsContainer ? wrapper2.children(`:not(.${hiddenWrapperHtmlClass})`).length : undefined;\r\n\t\t\t\t\t\t\tif (isWrapper2MxRowsContainer && siblingsInWrapper2 === 0) {\r\n\t\t\t\t\t\t\t\twrapper2.addClass(hiddenWrapperHtmlClass);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfunction _isHideIfEmpty(mxContainerEl) {\r\n\t\t\t\t\t\treturn mxContainerEl.attr('data-behavior') === 'hide-empty';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfunction _generateContainerId(idObject) {\r\n\t\t\t\t\t\tidObject.__mxContainerRegistrationId = idObject.__mxContainerRegistrationId || mx.components.Utils.genElemId('mx-container-child-');\r\n\t\t\t\t\t\treturn idObject.__mxContainerRegistrationId;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t};\r\n\t});\r\n})();\r\n","'use strict';\r\n\r\nMxCurrencyController.$inject = ['$element', '$q', '$timeout', 'mx.internationalization', '$scope'];\r\n\r\n// TODO: In future globalization.defaultCurrencyCode should be defined in ServiceStore.\r\n// TODO: New mx-object-currency should be created in SolutionBuilderAgent were it will be used to fill defaultCurrencyCode in this object.\r\nfunction MxCurrencyController($element, $q, $timeout, i18n, $scope) {\r\n\tvar vm = this;\r\n\r\n\tvm.$onInit = function () {\r\n\t\t$scope.$applyAsync(() => {\r\n\t\t\tvm.inputContainer = $element.find('md-input-container.mx-currency');\r\n\t\t\tvm.valueInput = $element.find('input.mx-currency--value');\r\n\t\t\tvm.codeSelect = $element.find('select.mx-currency--cc');\r\n\r\n\t\t\tif (vm.focusOnInit) {\r\n\t\t\t\tvm.valueInput.focus();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tmx.components.FormControlControllerBase.call(vm, $timeout);\r\n\r\n\t\tvm.display = vm.display || 'default';\r\n\t\tif (vm.display === 'default') {\r\n\t\t\tvm.display = vm.config && (vm.config.showCurrencyCode === true || vm.config.showCurrencyCode === 'true') ? 'code' : 'symbol';\r\n\t\t}\r\n\t\tvm.allowmulti = (vm.allowmulti || 'false').toLowerCase();\r\n\r\n\t\tvm.default = { Value: null, CC: vm.defaultCc || (vm.config && vm.config.default) || '' };\r\n\t\tvm.model = $.isEmptyObject(vm.model) ? vm.default : vm.model;\r\n\t\tif (!vm.model.CC) {\r\n\t\t\tvm.model.CC = vm.default.CC;\r\n\t\t}\r\n\t\tvm.initializedCurrencyCode = vm.model.CC;\r\n\r\n\t\tvm.fieldWidth = vm.fieldWidth || 155;\r\n\r\n\t\tObject.defineProperty(vm, 'value', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn vm.model ? getModel(vm.model).Value : null;\r\n\t\t\t},\r\n\t\t\tset: function (value = null) {\r\n\t\t\t\tconst obj = vm.model ? getModel(vm.model) : { CC: vm.initializedCurrencyCode };\r\n\t\t\t\tif (obj.Value !== value) {\r\n\t\t\t\t\tobj.Value = value;\r\n\t\t\t\t\tvm.model = { Value: obj.Value, CC: obj.CC }; // important to change model\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(vm, 'currencyCode', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn vm.model ? getModel(vm.model).CC : vm.initializedCurrencyCode;\r\n\t\t\t},\r\n\t\t\tset: function (cc) {\r\n\t\t\t\tvar obj = vm.model ? getModel(vm.model) : {};\r\n\t\t\t\tvm.model = { Value: obj.Value, CC: cc }; // important to change model\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(vm, 'currencySymbol', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn getSymbolByCode(vm.currencyCode || vm.initializedCurrencyCode) || vm.currencyCode || vm.initializedCurrencyCode;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tgetCurrencies().then((items) => (vm.currencies = items));\r\n\r\n\t\tsetLabelOffset();\r\n\t};\r\n\r\n\tvm.$postLink = function () {\r\n\t\tvm.setHintHandlers($element.find('input'));\r\n\t};\r\n\r\n\t$scope.$watch('vm.externalCustomValidation.IsValid', () => checkValidation());\r\n\t$scope.$watch('vm.model', () => checkValidation(), true);\r\n\r\n\tvm.$onChanges = (changes) => {\r\n\t\tif (changes.required || changes.externalCustomValidation) {\r\n\t\t\tcheckValidation();\r\n\t\t}\r\n\t};\r\n\r\n\tvm.onSelectBlur = onSelectBlur;\r\n\tvm.onSelectFocus = onSelectFocus;\r\n\tvm.onInputBlur = onInputBlur;\r\n\r\n\tfunction setLabelOffset() {\r\n\t\tsetTimeout(function () {\r\n\t\t\tconst labelEl = $element.find('.mx-currency--label');\r\n\t\t\tconst offset = Math.round($element.find('.mx-currency--code-container').width());\r\n\t\t\tlabelEl.css('left', -offset);\r\n\t\t\t$element.find('.mx-currency--field').css('max-width', `calc(100% - ${offset}px - 1px)`);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction onInputBlur($event) {\r\n\t\tif ($event.relatedTarget === vm.codeSelect[0]) {\r\n\t\t\t$event.stopImmediatePropagation();\r\n\t\t}\r\n\t\tvm.onExternalBlur();\r\n\t}\r\n\r\n\tfunction onSelectBlur($event) {\r\n\t\tif ($event.relatedTarget !== vm.valueInput[0]) {\r\n\t\t\tvm.inputContainer.removeClass('md-input-focused');\r\n\t\t\tvm.onExternalBlur();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction onSelectFocus() {\r\n\t\tvm.inputContainer.addClass('md-input-focused');\r\n\t}\r\n\r\n\tfunction getModel(model) {\r\n\t\treturn typeof model === 'object' && model !== null ? model : { Value: model, CC: vm.initializedCurrencyCode };\r\n\t}\r\n\r\n\tfunction getSymbolByCode(code) {\r\n\t\tif (vm.config && vm.config.availableCurrencies) {\r\n\t\t\tvar item = _.filter(vm.config.availableCurrencies, function (i) {\r\n\t\t\t\treturn i.code === code;\r\n\t\t\t})[0];\r\n\r\n\t\t\tif (item) {\r\n\t\t\t\treturn item.symbol;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction getCurrencies() {\r\n\t\tvar deferred = $q.defer();\r\n\r\n\t\tsetTimeout(function () {\r\n\t\t\tif (vm.config && vm.config.availableCurrencies) {\r\n\t\t\t\tvar result = vm.config.availableCurrencies.map(function (item) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tDisplayString: vm.display === 'code' ? item.code : item.symbol,\r\n\t\t\t\t\t\tValue: item.code,\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdeferred.resolve(result);\r\n\t\t\t} else {\r\n\t\t\t\tdeferred.reject(null);\r\n\t\t\t}\r\n\t\t}, 5);\r\n\r\n\t\treturn deferred.promise;\r\n\t}\r\n\r\n\tfunction hasValue() {\r\n\t\treturn Boolean(vm.model && vm.model.Value);\r\n\t}\r\n\r\n\tfunction validate() {\r\n\t\tif (vm.required && !hasValue()) {\r\n\t\t\treturn {\r\n\t\t\t\tIsValid: false,\r\n\t\t\t\tErrorMessage: i18n.get('components.form-validation.required'),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn vm.externalCustomValidation;\r\n\t}\r\n\r\n\tfunction checkValidation() {\r\n\t\tconst validation = validate();\r\n\r\n\t\tif (!angular.equals(validation, vm.customValidation)) {\r\n\t\t\tvm.customValidation = { IsValid: true };\r\n\t\t\t$timeout(function () {\r\n\t\t\t\tvm.customValidation = validation;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\treturn vm;\r\n}\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name mx.components:mxCurrency\r\n * @module mx.components\r\n * @restrict 'E'\r\n * @description\r\n * The mx-currency control is used to display currency input field with currency code displayed.\r\n *\r\n * The control extends {@ref mx.components:FormControlBase FormControlBase} directive.\r\n *\r\n * @param {string} currencyCode@ - Currency code to be displayed.\r\n * @usage \r\n */\r\nangular.module('mx.components').directive('mxCurrency', function mxCurrencyDirective() {\r\n\tconst directive = new mx.components.FormControlBase(MxCurrencyController, 'mx-currency/mx-currency.html');\r\n\tangular.extend(directive.bindToController, {\r\n\t\tallowmulti: '@',\r\n\t\tdisplay: '@',\r\n\t\tconfig: '=?',\r\n\t\tdefaultCc: '@',\r\n\t\trequired: '`\r\n\t *\r\n\t */\r\n\tangular.module('mx.components').directive('mxDateTimePicker', function mxDateTimePickerDirective() {\r\n\t\tvar directive = new mx.components.FormControlBase(MxDateTimeCtrl, 'mx-date-time-picker/mx-date-time.html');\r\n\t\tangular.extend(directive.bindToController, {\r\n\t\t\tminDate: '<',\r\n\t\t\tmaxDate: '<',\r\n\t\t\tdisplayMode: '@',\r\n\t\t\tisoString: '@',\r\n\t\t\tonBlur: '<',\r\n\t\t});\r\n\t\treturn directive;\r\n\t});\r\n\r\n\tMxDateTimeCtrl.$inject = ['mx.app.DeviceService', '$timeout', '$scope', 'mx.internationalization', '$mdDateLocale', '$element'];\r\n\r\n\tfunction MxDateTimeCtrl(DeviceService, $timeout, $scope, mxI18n, $mdDateLocale, $element) {\r\n\t\tvar vm = this;\r\n\t\tvar _value;\r\n\r\n\t\tvm._formatWithZero = _formatWithZero;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.displayMode = vm.displayMode || 'full';\r\n\t\t\tvm.isoString = vm.isoString && vm.isoString.toLowerCase() !== 'false';\r\n\t\t\tvm.minDate = vm.minDate ? new Date(vm.minDate) : vm.minDate;\r\n\t\t\tvm.maxDate = vm.maxDate ? new Date(vm.maxDate) : vm.maxDate;\r\n\t\t\tvm.DeviceService = DeviceService;\r\n\r\n\t\t\tvar dateFormats = mxI18n.getLocale().DATETIME_FORMATS;\r\n\r\n\t\t\tvm.ampmMode = dateFormats.shortTime.indexOf('a') !== -1;\r\n\t\t\t$mdDateLocale.firstDayOfWeek = (dateFormats.FIRSTDAYOFWEEK !== null ? dateFormats.FIRSTDAYOFWEEK : 6) + (1 % 7);\r\n\r\n\t\t\tObject.defineProperty(vm, 'value', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\tif (typeof _value === 'undefined') {\r\n\t\t\t\t\t\t_value = null;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Round to minutes\r\n\t\t\t\t\tif (_value && _value.setMilliseconds) {\r\n\t\t\t\t\t\t_value.setSeconds(0, 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn _value;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (value) {\r\n\t\t\t\t\tsetModel(value);\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tvm.placeholder = mxI18n.getDateFormatString();\r\n\r\n\t\t\tmx.components.FormControlControllerBase.call(vm, $timeout);\r\n\r\n\t\t\tif (vm.model) {\r\n\t\t\t\tvm.value = new Date(vm.model);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvm.$postLink = function () {\r\n\t\t\t$element.on('blur', '.md-datepicker-input', function (ev) {\r\n\t\t\t\tev.target.value = mx.components.Utils.convertDateFrom6or8Digits(ev.target.value);\r\n\t\t\t});\r\n\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tvm.setHintHandlers($element.find('select, input, [tabindex=0], button'));\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t// for the case when model is updated outside after awhile\r\n\t\t$scope.$watch('vm.model', function () {\r\n\t\t\tvar newDate = new Date(vm.model);\r\n\t\t\tvar newHours = newDate.getHours();\r\n\t\t\tif (\r\n\t\t\t\tvm.model &&\r\n\t\t\t\t(typeof vm.hours === 'undefined' ||\r\n\t\t\t\t\tvm.hours === null ||\r\n\t\t\t\t\tisNaN(vm.hours) ||\r\n\t\t\t\t\ttypeof vm.minutes === 'undefined' ||\r\n\t\t\t\t\tvm.minutes === null ||\r\n\t\t\t\t\tisNaN(vm.minutes) ||\r\n\t\t\t\t\tvm.minutes !== newDate.getMinutes() ||\r\n\t\t\t\t\t(vm.ampmMode && vm.isPM !== newHours >= 12) ||\r\n\t\t\t\t\tvm.hours !== _getHoursConsideringAMPM(newHours))\r\n\t\t\t) {\r\n\t\t\t\tvm.value = new Date(vm.model);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$scope.$watch('vm.hours', function (newHours, oldHours) {\r\n\t\t\tif (newHours !== oldHours) {\r\n\t\t\t\tvar minutesWasSet = vm.minutes !== undefined;\r\n\t\t\t\t_value = _prepareValue();\r\n\t\t\t\tvar hoursToBeSet = newHours;\r\n\t\t\t\tif (vm.ampmMode && vm.isPM) {\r\n\t\t\t\t\thoursToBeSet += 12;\r\n\t\t\t\t}\r\n\t\t\t\t_value.setHours(hoursToBeSet);\r\n\t\t\t\tif (!minutesWasSet) {\r\n\t\t\t\t\tvar _tempVal = new Date(_value);\r\n\t\t\t\t\t_tempVal.setMinutes(0);\r\n\t\t\t\t\tif (_tempVal >= vm.minDate || _tempVal <= vm.maxDate) {\r\n\t\t\t\t\t\t_value.setMinutes(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tsetModel(_value);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$scope.$watch('vm.minutes', function (newMinutes, oldMinutes) {\r\n\t\t\tif (newMinutes !== oldMinutes) {\r\n\t\t\t\t_value = _prepareValue();\r\n\t\t\t\t_value.setMinutes(newMinutes);\r\n\t\t\t\tsetModel(_value);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$scope.$watch('vm.isPM', function (newIsPM, oldIsPM) {\r\n\t\t\tif (vm.ampmMode && newIsPM !== oldIsPM) {\r\n\t\t\t\t_value = _prepareValue();\r\n\t\t\t\tvar _hours = _value.getHours();\r\n\t\t\t\tif ((newIsPM && _hours < 12) || (!newIsPM && _hours >= 12)) {\r\n\t\t\t\t\t_value.setHours(newIsPM ? _hours + 12 : _hours - 12);\r\n\t\t\t\t\tsetModel(_value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tfunction setModel(value) {\r\n\t\t\tif (vm.minDate && vm.minDate instanceof Date && value instanceof Date && vm.minDate > value) {\r\n\t\t\t\tvalue = new Date(vm.minDate);\r\n\t\t\t}\r\n\t\t\tif (vm.maxDate && vm.maxDate instanceof Date && value instanceof Date && vm.maxDate < value) {\r\n\t\t\t\tvalue = new Date(vm.maxDate);\r\n\t\t\t}\r\n\t\t\t_value = value;\r\n\t\t\tvm.model = vm.isoString && value ? value.toISOString() : value;\r\n\t\t\tsetTimeVars(_value);\r\n\t\t}\r\n\r\n\t\tfunction setTimeVars(time) {\r\n\t\t\tif (time) {\r\n\t\t\t\tvar _hours = time.getHours();\r\n\t\t\t\tvm.isPM = _hours >= 12;\r\n\t\t\t\tvm.hours = _getHoursConsideringAMPM(_hours);\r\n\t\t\t\tvm.minutes = time.getMinutes();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction _prepareValue() {\r\n\t\t\tif (!_value) {\r\n\t\t\t\tvar newVal = new Date();\r\n\t\t\t\tnewVal.setHours(0);\r\n\t\t\t\tnewVal.setMinutes(0);\r\n\t\t\t\tnewVal.setSeconds(0, 0);\r\n\t\t\t\tsetModel(newVal);\r\n\t\t\t}\r\n\t\t\treturn _value;\r\n\t\t}\r\n\r\n\t\tfunction _getHoursConsideringAMPM(hours24) {\r\n\t\t\t// in AM/PM mode if vm.hours === 0 it means `12` for easier calculations\r\n\t\t\treturn vm.ampmMode ? hours24 % 12 : hours24;\r\n\t\t}\r\n\r\n\t\tfunction _formatWithZero(val) {\r\n\t\t\treturn (val < 10 ? '0' : '') + val;\r\n\t\t}\r\n\r\n\t\tthis.onValueChanging = function (newVal) {\r\n\t\t\t_value = (typeof newVal === 'string' && vm.isoString) || newVal instanceof Date ? new Date(newVal) : newVal;\r\n\t\t\treturn newVal;\r\n\t\t};\r\n\r\n\t\t$scope.$watch('vm.minDate', function () {\r\n\t\t\tif (vm.minDate && typeof vm.minDate === 'string') {\r\n\t\t\t\tvm.minDate = new Date(vm.minDate);\r\n\t\t\t}\r\n\t\t});\r\n\t\t$scope.$watch('vm.maxDate', function () {\r\n\t\t\tif (vm.maxDate && typeof vm.maxDate === 'string') {\r\n\t\t\t\tvm.maxDate = new Date(vm.maxDate);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n})(window);\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc component\r\n\t * @name mx.components:mxDropdownMenu\r\n\t * @module mx.components\r\n\t *\r\n\t * @description\r\n\t * Implement a button with dropdown menu for some actions\r\n\t *\r\n\t * The following example shows hot to use mxDropdownMenu.\r\n\t * mxDropdownMenu expects next attributes:\r\n\t * 1) icon - font icon for button which opens dropdown menu.\r\n\t * Value must be the name of the icon in a ligature-based icon font ( https://material.angularjs.org/latest/#/api/material.components.icon/directive/mdIcon )\r\n\t * 2) icon-src - source for the icon for button which opens dropdown menu.\r\n\t * Value must be either the icon URL (full or a path on the same server) or a name of an icon (possibly with an icon set name) registered via $mdIconProvider\r\n\t * (same as md-svg-src attribure of md-icon). Ignored if icon attribute is set.\r\n\t * 3) items - an array of objects with keys: 'icon', 'label', 'onItemClick', 'htmlClass'\r\n\t * 3.1) icon - an icon on item (not mandatory)\r\n\t * 3.2) iconSrc - an icon source (URL or registered icon name, not mandatory)\r\n\t * 3.3) label - a text label on item (not mandatory)\r\n\t * 3.4) onItemClick - a function, which will be executed when item is selected in dropdown menu\r\n\t * 3.5) htmlClass - can be used if we need to identify dropdown-item in DOM-model (not mandatory)\r\n\t * 3.6) hidden - hide if `true`\r\n\t * 4) expanded - if pass 'true' - then dropdown menu will be opened automatically. It's also possible to read value to get know if dropdown menu is expanded.\r\n\t * 5) hideButton - if 'true' - open-button will be hidden (for example if we want to trigger dropdown menu expanding by some other event)\r\n\t *\r\n\t * Example 1:\r\n\t * Assume we have an array of items like this:\r\n\t * ```js\r\n\t * vm.menuItems = [{\r\n\t *\t\ticon: 'save',\r\n\t *\t\tlabel: 'Save',\r\n\t *\t\tonItemClick: function() {alert('saved!'); }\r\n\t *\t}, {\r\n\t *\t\ticon: 'social:android',\r\n\t *\t\tlabel: 'Load on phone',\r\n\t *\t\tonItemClick: function() {alert('Loaded!'); }\r\n\t *\t}, {\r\n\t *\t\ticonSrc: '/path/to/icon.svg?v=1.1',\r\n\t *\t\tlabel: 'Do something',\r\n\t *\t\tonItemClick: function() {alert('Done!'); }\r\n\t *\t},\r\n\t * ...\r\n\t * ];\r\n\t *```\r\n\t *\r\n\t * Then html will be like this:\r\n\t * ```html\r\n\t * \r\n\t * \r\n\t * ```\r\n\t * If \"context\" attribute is passed, then \"onItemClick\" will be executed in this passed context.\r\n\t *\r\n\t * Example 2:\r\n\t * ```html\r\n\t * \r\n\t * ...\r\n\t * \r\n\t * \r\n\t * ```\r\n\t *\r\n\t **/\r\n\r\n\tangular.module('mx.components').component('mxDropdownMenu', {\r\n\t\tbindings: {\r\n\t\t\ticon: '@',\r\n\t\t\ticonSrc: '@',\r\n\t\t\titems: '<',\r\n\t\t\texpanded: '=?', // here 2-way binding is important because login of closing dropdown-menu placed inside this directive\r\n\t\t\thideButton: '@',\r\n\t\t\tcontext: '<',\r\n\t\t\tloadItems: '&',\r\n\t\t\tevent: '<',\r\n\t\t\tdisabled: '<',\r\n\t\t},\r\n\t\tcontroller: MxListCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'mx-dropdown-menu/mx-dropdown-menu.html',\r\n\t});\r\n\r\n\tMxListCtrl.$inject = ['$q', '$document', '$scope', '$element', '$mdUtil'];\r\n\r\n\tfunction MxListCtrl($q, $document, $scope, $element, $mdUtil) {\r\n\t\tvar vm = this;\r\n\t\tvar itemsLoaded = false;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.hideButton = (vm.hideButton || 'false').toLowerCase();\r\n\t\t\tvm.handleClick = handleClick;\r\n\t\t};\r\n\r\n\t\t$scope.$on('$mdMenuClose', function () {\r\n\t\t\twindow.setTimeout(function () {\r\n\t\t\t\t$($document[0].documentElement).removeClass('grid-menu-opened');\r\n\t\t\t\tvm.expanded = false;\r\n\t\t\t}, 250);\r\n\t\t\tif (menuContainer) {\r\n\t\t\t\tmenuContainer.removeEventListener('click', _menuClickHandler, true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$scope.$watch('vm.expanded', function () {\r\n\t\t\tif (vm.expanded && !vm.__preventSecondOpening) {\r\n\t\t\t\twindow.setTimeout(function () {\r\n\t\t\t\t\tvar clickEvent = new $.Event('click');\r\n\t\t\t\t\tvar pos = $element.offset();\r\n\t\t\t\t\t$element.find('.mx-dropdown-menu-open-button').trigger(\r\n\t\t\t\t\t\t$.extend(clickEvent, {\r\n\t\t\t\t\t\t\tclientX: Math.round(pos.left),\r\n\t\t\t\t\t\t\tclientY: Math.round(pos.top),\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t} else if (!vm.expanded) {\r\n\t\t\t\tvm.__preventSecondOpening = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar menuContent = $element.find('.mx-dropdown-menu-list')[0];\r\n\t\tvar menuContainer;\r\n\r\n\t\tfunction _menuClickHandler(e) {\r\n\t\t\tvar target = e.target;\r\n\t\t\tif (target === menuContent) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar menuItem = $mdUtil.getClosest(target, 'md-menu-item');\r\n\t\t\tif (menuItem.classList.contains('disable-menu-closing')) {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tangular.element(target).triggerHandler('click');\r\n\t\t\t}\r\n\t\t\t$scope.$evalAsync(function () {\r\n\t\t\t\tvm.expanded = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvm.openMenu = function ($mdOpenMenu, $event) {\r\n\t\t\t$mdOpenMenu();\r\n\t\t\t_prepareItems();\r\n\t\t\t_setMenuPosition($event);\r\n\t\t\tif (!vm.expanded) {\r\n\t\t\t\t// It means the dropdown-menu was opened by clicking on button in template,\r\n\t\t\t\t// but not by changing `vm.expanded` to `true` programmatically.\r\n\t\t\t\t// So we need to prevent second opening\r\n\t\t\t\tvm.__preventSecondOpening = true;\r\n\t\t\t\tvm.expanded = true;\r\n\t\t\t}\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tif (menuContainer) {\r\n\t\t\t\t\tmenuContainer = menuContent.parentElement;\r\n\t\t\t\t\tmenuContainer.addEventListener('click', _menuClickHandler, true);\r\n\t\t\t\t}\r\n\t\t\t}, 200);\r\n\t\t};\r\n\r\n\t\tfunction _prepareItems() {\r\n\t\t\tif (!itemsLoaded) {\r\n\t\t\t\titemsLoaded = true;\r\n\t\t\t\tvar items = vm.loadItems({ context: vm.context });\r\n\t\t\t\tif (items) {\r\n\t\t\t\t\t$q.when(items).then(function (items) {\r\n\t\t\t\t\t\tvm.items = items;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction _setMenuPosition($event) {\r\n\t\t\tvar event = vm.event || $event;\r\n\t\t\t$($document[0].documentElement).addClass('grid-menu-opened');\r\n\t\t\tif (event && event.clientX) {\r\n\t\t\t\tvar head = $($document[0].head);\r\n\t\t\t\tvar style = $('.grid-menu-position')[0];\r\n\t\t\t\tif (!style) {\r\n\t\t\t\t\tstyle = $('' +\r\n\t\t\t'
    ' +\r\n\t\t\t'\t
  • ' +\r\n\t\t\t'\t\t
    ' +\r\n\t\t\t'\t\t\t#ITEM-TEMPLATE# ' +\r\n\t\t\t'\t\t
    ' +\r\n\t\t\t'\t\t ' +\r\n\t\t\t'\t\t ' +\r\n\t\t\t'\t
  • ' +\r\n\t\t\t'
' +\r\n\t\t\t_listFooterTpl +\r\n\t\t\t'
'\r\n\t\t);\r\n\t}\r\n\r\n\tvar mxTiles = a.copy(componentOpts);\r\n\ta.module('mx.components').component(\r\n\t\t'mxTiles',\r\n\t\ta.extend(mxTiles, {\r\n\t\t\ttemplate: getTileTemplate()\r\n\t\t\t\t.split('#ITEM-TEMPLATE#')\r\n\t\t\t\t.join(\r\n\t\t\t\t\t'
{{:: item[__$vm._titleKey] }}
' +\r\n\t\t\t\t\t\t'
{{:: item[__$vm._descriptionKey] }}
'\r\n\t\t\t\t),\r\n\t\t\tbindings: a.extend(mxTiles.bindings, {\r\n\t\t\t\tcolumns: '<',\r\n\t\t\t\tspaceBetween: '@',\r\n\t\t\t\ttileRatio: '@',\r\n\t\t\t\ttileHeight: '@',\r\n\t\t\t\ttileWidth: '@',\r\n\t\t\t\tidKey: '@',\r\n\t\t\t}),\r\n\t\t})\r\n\t);\r\n\r\n\tvar mxTemplateTiles = a.copy(componentOpts);\r\n\ta.module('mx.components').component(\r\n\t\t'mxTemplateTiles',\r\n\t\ta.extend(mxTemplateTiles, {\r\n\t\t\ttransclude: true,\r\n\t\t\ttemplate: [\r\n\t\t\t\t'$attrs',\r\n\t\t\t\tfunction ($attrs) {\r\n\t\t\t\t\treturn getTileTemplate()\r\n\t\t\t\t\t\t.split('#ITEM-TEMPLATE#')\r\n\t\t\t\t\t\t.join($attrs.templateId ? '
' : '
');\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t\tbindings: a.extend(mxTemplateTiles.bindings, {\r\n\t\t\t\ttemplateId: '@',\r\n\t\t\t\tcolumns: '<',\r\n\t\t\t\tspaceBetween: '@',\r\n\t\t\t\ttileRatio: '@',\r\n\t\t\t\ttileHeight: '@',\r\n\t\t\t\ttileWidth: '@',\r\n\t\t\t\tidKey: '@',\r\n\t\t\t}),\r\n\t\t})\r\n\t);\r\n})(window, angular);\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc directive\r\n\t * @name mx.components:mxLiteral\r\n\t * @module mx.components\r\n\t * @restrict 'E'\r\n\t * @scope {}\r\n\t * @description Displays the value.\r\n\t * if attribute `designer-mode` is set then One-time-binding will be applied. while scope.value === 'undefined' One-time-binder will be waiting until it get some other value.\r\n\t * If it's need to set value as \"not set \"\"- set it as `null`\r\n\t *\r\n\t * @param {string} label@ - Optional. Label of the control.\r\n\t * @param {value} value= - Value to display.\r\n\t * @param {string} type@ - Optional. Type of the value.\r\n\t * @param {string} format@ - Optional. Data format to be displayed (example: short date: 5/20/16 10:32 AM)\r\n\t * @param {boolean} singleLine@ - Optional. Text to be displayed in single or multi line\r\n\t * @param {boolean} hideOnEmptyValue@ - Optional. Hide control if value is empty\r\n\t * @param {string} icon@ - Optional. Icon to be displayed.\r\n\t * @param {boolean} reserveIconSpace@ - Optional. Reserve empty space for icon.\r\n\t * @param {boolean} designerMode@ - Optional.\r\n\t * @param {boolean} labelPosition@ - Optional. Position of label to be displayed (example: top, bottom). Default: left\r\n\t * @usage \r\n\t */\r\n\tangular.module('mx.components').directive('mxLiteral', [\r\n\t\t'$filter',\r\n\t\t'$sce',\r\n\t\t'mx.internationalization',\r\n\t\t'mx.shell.Config',\r\n\t\tfunction mxLiteralDirective($filter, $sce, i18n, mxConfig) {\r\n\t\t\tvar notSetLabel = i18n.get('components.mx-literal.notSet');\r\n\t\t\tvar notSetAriaLabel = i18n.get('components.mx-literal.ARIA-valueIsNotSet');\r\n\t\t\tvar yesLabel = i18n.get('components.common.yes');\r\n\t\t\tvar noLabel = i18n.get('components.common.no');\r\n\t\t\tvar config = mxConfig.get('currency');\r\n\t\t\tconst displayLinksCount = 3;\r\n\r\n\t\t\tfunction getOptimizer(attrs) {\r\n\t\t\t\treturn attrs.designerMode !== undefined && ('' + attrs.designerMode).toLowerCase() !== 'false' ? '' : '::';\r\n\t\t\t}\r\n\r\n\t\t\tfunction mxLiteralTpl(elem, attr) {\r\n\t\t\t\tvar optimizer = getOptimizer(attr);\r\n\r\n\t\t\t\tvar literalResized = attr.valueMinWidth !== undefined || attr.labelMinWidth !== undefined || attr.labelMaxWidth !== undefined ? 'mx-literal-resize' : '';\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\t`` +\r\n\t\t\t\t\t`
${\r\n\t\t\t\t\t\tgetIconTemplate(attr, optimizer) + getLabelTemplate(attr, optimizer) + getTemplateByType(attr, optimizer)\r\n\t\t\t\t\t}
` +\r\n\t\t\t\t\t`
`\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tfunction getTemplateByType(attr, optimizer) {\r\n\t\t\t\tvar template;\r\n\t\t\t\tvar ngValueStyle = ngStyleTmpl(attr, 'color:valueColor, minWidth:valueMinWidth', optimizer);\r\n\t\t\t\tvar singleLineClass = attr.singleLine === 'true' ? 'single-line' : '';\r\n\r\n\t\t\t\tvar linkFunc = function (idx, notLast) {\r\n\t\t\t\t\tvar value = 'value';\r\n\t\t\t\t\tvar ngIf = '';\r\n\t\t\t\t\tvar showComma = '';\r\n\r\n\t\t\t\t\tif (idx !== undefined) {\r\n\t\t\t\t\t\tvalue = `value[${idx}]`;\r\n\t\t\t\t\t\tngIf = ` ng-if=\"${optimizer}${value}\"`;\r\n\t\t\t\t\t\tshowComma = `;${notLast ? ' ' : ' …'}`;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn `{{${optimizer}${value}.text}}${showComma}`;\r\n\t\t\t\t};\r\n\r\n\t\t\t\tswitch (attr.type) {\r\n\t\t\t\t\tcase 'link':\r\n\t\t\t\t\t\ttemplate = linkFunc();\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'links':\r\n\t\t\t\t\t\ttemplate = `
`;\r\n\t\t\t\t\t\tfor (var i = 0; i < displayLinksCount; i++) {\r\n\t\t\t\t\t\t\ttemplate += linkFunc(i, i < displayLinksCount - 1);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'html':\r\n\t\t\t\t\t\tvar bindType = attr.compileHtml === 'true' ? 'mx-bind-html-trusted' : 'ng-bind-html';\r\n\t\t\t\t\t\ttemplate = `
.`;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'bool':\r\n\t\t\t\t\t\ttemplate =\r\n\t\t\t\t\t\t\t`` +\r\n\t\t\t\t\t\t\t`{{${optimizer}value ? \"${yesLabel}\":\"${noLabel}\"}}` +\r\n\t\t\t\t\t\t\t`
` +\r\n\t\t\t\t\t\t\t`{{${optimizer}value ? \"${yesLabel}\":\"${noLabel}\"}}.`;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tvar style = ngStyleTmpl(attr, 'minWidth:valueMinWidth', optimizer);\r\n\t\t\t\t\t\tswitch (attr.textType) {\r\n\t\t\t\t\t\t\tcase 'phone':\r\n\t\t\t\t\t\t\t\ttemplate =\r\n\t\t\t\t\t\t\t\t\t`
` +\r\n\t\t\t\t\t\t\t\t\t`
` +\r\n\t\t\t\t\t\t\t\t\t`` +\r\n\t\t\t\t\t\t\t\t\t`phone_forwarded` +\r\n\t\t\t\t\t\t\t\t\t`` +\r\n\t\t\t\t\t\t\t\t\t`
` +\r\n\t\t\t\t\t\t\t\t\t`
` +\r\n\t\t\t\t\t\t\t\t\t`
`;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'email':\r\n\t\t\t\t\t\t\t\ttemplate =\r\n\t\t\t\t\t\t\t\t\t`` +\r\n\t\t\t\t\t\t\t\t\t`{{${optimizer}value}}` +\r\n\t\t\t\t\t\t\t\t\t`
`;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\ttemplate =\r\n\t\t\t\t\t\t\t\t\t`` +\r\n\t\t\t\t\t\t\t\t\t`` +\r\n\t\t\t\t\t\t\t\t\t`

{{${optimizer}ariaValue || formattedValue}} .

`;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn template.replace(/##ngclass##/g, `ng-class=\"${optimizer}label ? 'with-label': 'without-label'\"`);\r\n\t\t\t}\r\n\r\n\t\t\tfunction getIconTemplate(attr, optimizer) {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t`` +\r\n\t\t\t\t\t`` +\r\n\t\t\t\t\t``\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tfunction getLabelTemplate(attr, optimizer) {\r\n\t\t\t\tvar ngLabelStyle = ngStyleTmpl(attr, 'color:labelColor, minWidth:labelMinWidth, maxWidth:labelMaxWidth', optimizer);\r\n\t\t\t\tvar classes = attr.singleLine === 'true' ? ' class=\"single-line\"' : '';\r\n\t\t\t\tvar isLinkType = attr.type === 'link' || attr.type === 'links';\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\t`` +\r\n\t\t\t\t\t`{{${optimizer}label}}` +\r\n\t\t\t\t\t`` +\r\n\t\t\t\t\t(isLinkType ? `` : `,`) // ARIA: small pause when reading\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\t// This function exclude not needed styles from template\r\n\t\t\tfunction ngStyleTmpl(attr, styleStr, optimizer) {\r\n\t\t\t\tvar styles = styleStr\r\n\t\t\t\t\t.split(',')\r\n\t\t\t\t\t.map(function (strStyle) {\r\n\t\t\t\t\t\tvar value = strStyle.split(':')[1].trim();\r\n\t\t\t\t\t\treturn attr[value] !== undefined ? strStyle : '';\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.filter(function (st) {\r\n\t\t\t\t\t\treturn st;\r\n\t\t\t\t\t});\r\n\t\t\t\treturn styles.length ? `ng-style=\"${optimizer} { ${styles.join(', ')} }\"` : '';\r\n\t\t\t}\r\n\r\n\t\t\tfunction mxLiteralCtrl(scope, element, attrs) {\r\n\t\t\t\tvar optimizer = getOptimizer(attrs);\r\n\r\n\t\t\t\tscope.hasValue = true;\r\n\t\t\t\tscope.show = true;\r\n\t\t\t\tscope.formattedLabel = scope.label;\r\n\t\t\t\tscope.formattedHideOnEmptyValue = (scope.hideOnEmptyValue || '').toLowerCase() === 'true';\r\n\t\t\t\tscope.formattedReserveIconSpace = (scope.reserveIconSpace || '').toLowerCase() === 'true';\r\n\t\t\t\tscope.$watch(optimizer + 'labelPosition', function () {\r\n\t\t\t\t\tcalcPositionLayout();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvar type = (scope.type || '').toLowerCase();\r\n\t\t\t\tvar isDateType = type === 'date' || type === 'datetime';\r\n\t\t\t\tvar isCurrency = type === 'currency';\r\n\t\t\t\tvar isHtml = type === 'html';\r\n\t\t\t\tvar isNumeric = type === 'numeric';\r\n\t\t\t\tvar isTimeSpan = type === 'timespan';\r\n\r\n\t\t\t\tif (type === 'link' || type === 'links') {\r\n\t\t\t\t\tvar isLinks = type === 'links';\r\n\r\n\t\t\t\t\tscope.$watch(\r\n\t\t\t\t\t\toptimizer + (type === 'link' ? 'value.text' : 'value[0]'),\r\n\t\t\t\t\t\tfunction () {\r\n\t\t\t\t\t\t\tvar val = scope.value;\r\n\r\n\t\t\t\t\t\t\tif (isLinks && Array.isArray(val)) {\r\n\t\t\t\t\t\t\t\tval = val.length ? val[0] : undefined;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvar newText = val ? val.text : undefined;\r\n\t\t\t\t\t\t\tif ((angular.isDefined(newText) && newText !== notSetLabel) || (angular.isUndefined(newText) && val === null)) {\r\n\t\t\t\t\t\t\t\tif (val) {\r\n\t\t\t\t\t\t\t\t\tif (val.onClick) {\r\n\t\t\t\t\t\t\t\t\t\tscope.onClick = function (event, indx) {\r\n\t\t\t\t\t\t\t\t\t\t\tvar val = scope.value;\r\n\t\t\t\t\t\t\t\t\t\t\tif (Array.isArray(val)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tval = val[indx];\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tval.onClick();\r\n\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (!isLinks && !scope.value.href) {\r\n\t\t\t\t\t\t\t\t\t\t\tscope.value.href = '#';\r\n\t\t\t\t\t\t\t\t\t\t} else if (isLinks) {\r\n\t\t\t\t\t\t\t\t\t\t\tscope.value.forEach((value) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.href ??= '#';\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tscope.show = true;\r\n\t\t\t\t\t\t\t\t\tscope.showText = scope.value.isText;\r\n\t\t\t\t\t\t\t\t\tif (scope.value.text === '') {\r\n\t\t\t\t\t\t\t\t\t\tval.text = notSetLabel;\r\n\t\t\t\t\t\t\t\t\t\tval.ariaValue = notSetAriaLabel;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tscope.hasValue = val.text !== '';\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tscope.hasValue = false;\r\n\t\t\t\t\t\t\t\t\tscope.show = !scope.formattedHideOnEmptyValue;\r\n\t\t\t\t\t\t\t\t\tif (scope.show) {\r\n\t\t\t\t\t\t\t\t\t\tscope.showText = true;\r\n\t\t\t\t\t\t\t\t\t\tscope.value = { text: notSetLabel, ariaValue: notSetAriaLabel };\r\n\t\t\t\t\t\t\t\t\t\tif (isLinks) {\r\n\t\t\t\t\t\t\t\t\t\t\tscope.value = [scope.value];\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t// for Not Watchable case: fulfill not set items by empty values not to update on change\r\n\t\t\t\t\t\t\t\tif (isLinks && optimizer === '::' && scope.value?.[0] && scope.value.length < displayLinksCount + 1) {\r\n\t\t\t\t\t\t\t\t\tfor (let i = 0; i < displayLinksCount + 1; i++) {\r\n\t\t\t\t\t\t\t\t\t\tscope.value[i] ??= { text: '', href: '#' };\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tscope.show = !scope.formattedHideOnEmptyValue;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tscope.informContainerOwnVisibility(scope.show);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tisLinks\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar rmValueWatcher = scope.$watch(\r\n\t\t\t\t\t\tfunction (_scope) {\r\n\t\t\t\t\t\t\tvar val = isCurrency ? _scope.value?.CC + _scope.value?.Value : _scope.value;\r\n\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\toptimizer === '::' &&\r\n\t\t\t\t\t\t\t\t(typeof val !== 'undefined' || (isCurrency && typeof _scope.value?.CC !== 'undefined' && typeof _scope.value?.Value !== 'undefined'))\r\n\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\trmValueWatcher();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn val;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfunction (newValue, oldValue, scope) {\r\n\t\t\t\t\t\t\tsetValue(newValue, oldValue, scope, {\r\n\t\t\t\t\t\t\t\ttype: type,\r\n\t\t\t\t\t\t\t\tisDateType: isDateType,\r\n\t\t\t\t\t\t\t\tisCurrency: isCurrency,\r\n\t\t\t\t\t\t\t\tisHtml: isHtml,\r\n\t\t\t\t\t\t\t\tisNumeric: isNumeric,\r\n\t\t\t\t\t\t\t\tisTimeSpan: isTimeSpan,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar textType = (scope.textType || '').toLowerCase();\r\n\t\t\t\tif (textType === 'phone') {\r\n\t\t\t\t\tscope.getPurePhone = function (phone) {\r\n\t\t\t\t\t\tif (phone && phone.replace) {\r\n\t\t\t\t\t\t\treturn phone.replace(/[^0-9+]/g, '');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn phone;\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isNumeric) {\r\n\t\t\t\t\tscope.valueType = attrs.valueType || '';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction calcPositionLayout() {\r\n\t\t\t\t\tscope.position = scope.labelPosition === 'bottom' ? 2 : scope.labelPosition === 'top' ? 1 : 0;\r\n\t\t\t\t\tscope.layout = scope.position === 0 ? 'row' : 'column';\r\n\t\t\t\t\tscope.formattedLabelPosition = scope.labelPosition || 'left';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction setValue(newValue, oldValue, scope, params) {\r\n\t\t\t\t\tvar _value = scope.value;\r\n\r\n\t\t\t\t\t// while scope.value === 'undefined' One-time-binder will be waiting until it get some other value.\r\n\t\t\t\t\t// If you need to set value as not set - set it as `null`\r\n\t\t\t\t\tif (typeof _value !== 'undefined') {\r\n\t\t\t\t\t\tconst isRealNumber = (value) => typeof value === 'number' && !isNaN(value) && isFinite(value);\r\n\r\n\t\t\t\t\t\tscope.hasValue =\r\n\t\t\t\t\t\t\t(params.isNumeric && isRealNumber(_value)) ||\r\n\t\t\t\t\t\t\t(params.isCurrency && _value && isRealNumber(_value.Value)) ||\r\n\t\t\t\t\t\t\t(Boolean(_value) && !params.isNumeric && !params.isCurrency);\r\n\r\n\t\t\t\t\t\tif (scope.hasValue) {\r\n\t\t\t\t\t\t\tswitch (true) {\r\n\t\t\t\t\t\t\t\tcase params.isDateType:\r\n\t\t\t\t\t\t\t\t\tscope.formattedValue = i18n.formatUTCDate(_value, scope.format);\r\n\t\t\t\t\t\t\t\t\tscope.ariaValue = i18n.formatUTCDate(_value, 'LLL');\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\tcase params.isCurrency:\r\n\t\t\t\t\t\t\t\t\tscope.formattedValue = i18n.formatCurrency(_value, _value.CC, !config.showCurrencyCode);\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\tcase params.isHtml:\r\n\t\t\t\t\t\t\t\t\tscope.formattedValue = mx.components.Utils.isolateLocalStyles(_value);\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\tcase params.isNumeric:\r\n\t\t\t\t\t\t\t\t\tscope.formattedValue = i18n.formatNumber(_value, scope.valueType, scope.format);\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\tcase params.isTimeSpan:\r\n\t\t\t\t\t\t\t\t\tscope.formattedValue = i18n.formatTimeDuration(_value);\r\n\t\t\t\t\t\t\t\t\tscope.ariaValue = i18n.formatTimeDuration(_value, true);\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\t\tscope.formattedValue = _value;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tscope.show = Boolean(scope.formattedValue);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tscope.show = !scope.formattedHideOnEmptyValue;\r\n\t\t\t\t\t\t\tif (scope.show) {\r\n\t\t\t\t\t\t\t\tscope.formattedValue = notSetLabel;\r\n\t\t\t\t\t\t\t\tscope.ariaValue = notSetAriaLabel;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tscope.show = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tscope.informContainerOwnVisibility(scope.show);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\trequire: {\r\n\t\t\t\t\tmxContainerCtrl: '?^^mxContainer',\r\n\t\t\t\t},\r\n\t\t\t\tlink: function (scope, el, attrs, ctrls) {\r\n\t\t\t\t\tscope.informContainerOwnVisibility = function () {};\r\n\t\t\t\t\tif (ctrls.mxContainerCtrl) {\r\n\t\t\t\t\t\tctrls.mxContainerCtrl.registerChild(scope);\r\n\t\t\t\t\t\tscope.informContainerOwnVisibility = ctrls.mxContainerCtrl.setChildVisibility.bind(null, scope);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\trestrict: 'E',\r\n\t\t\t\treplace: true,\r\n\t\t\t\tscope: {\r\n\t\t\t\t\tlabel: '@',\r\n\t\t\t\t\tvalue: '<',\r\n\t\t\t\t\ttype: '@',\r\n\t\t\t\t\tformat: '@',\r\n\t\t\t\t\tsingleLine: '@',\r\n\t\t\t\t\thideOnEmptyValue: '@',\r\n\t\t\t\t\ticon: '@',\r\n\t\t\t\t\treserveIconSpace: '@',\r\n\t\t\t\t\t// while scope.value === 'undefined' One-time-binder will be waiting until it get some other value.\r\n\t\t\t\t\t// If you need to set value as not set - set it as `null`\r\n\t\t\t\t\tdesignerMode: ' borderVal) || (!isMax && value < borderVal))) {\r\n\t\t\t\t/* control is valid if it's disabled or readonly */\r\n\t\t\t\tctrl.$error = {};\r\n\t\t\t\tscope.vm.setValidity(name, scope.vm.disabled === true || scope.vm.readOnly === true);\r\n\t\t\t} else {\r\n\t\t\t\tscope.vm.setValidity(name, true);\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tctrl.$parsers.push(validator);\r\n\t\tctrl.$formatters.push(validator);\r\n\t}\r\n\r\n\tfunction getBorderValue(format, isMax) {\r\n\t\tswitch (format) {\r\n\t\t\tcase 'float':\r\n\t\t\tcase mxNumericEditFormat.Float:\r\n\t\t\t\treturn isMax ? 3.40282347e38 : -3.40282347e38;\r\n\r\n\t\t\tcase mxNumericEditFormat.Long:\r\n\t\t\t\treturn isMax ? 9223372036854776000 : -9223372036854775808;\r\n\r\n\t\t\tcase mxNumericEditFormat.Decimal:\r\n\t\t\t\treturn isMax ? 79228162514264340000000000000 : -792281625142643400000000000000;\r\n\r\n\t\t\tcase 'integer':\r\n\t\t\tcase mxNumericEditFormat.Integer:\r\n\t\t\t\treturn isMax ? 2147483647 : -2147483648;\r\n\t\t\tdefault:\r\n\t\t\t\treturn isMax ? 2147483647 : -2147483648;\r\n\t\t}\r\n\t}\r\n\r\n\tvar mxNumericEditFormat = {\r\n\t\tInteger: 'IntType',\r\n\t\tFloat: 'FloatType',\r\n\t\tLong: 'LongType',\r\n\t\tDecimal: 'DecimalType',\r\n\t};\r\n\r\n\tw.mx = w.mx || {};\r\n\tw.mx.components = w.mx.components || {};\r\n\tw.mx.components.Forms = w.mx.components.Forms || {};\r\n\tw.mx.components.Forms.NumericEditFormat = mxNumericEditFormat;\r\n})(window);\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc components\r\n\t * @name mx.components:mxRating\r\n\t * @module mx.components\r\n\t * @restrict 'E'\r\n\t * @scope {}\r\n\t * @description Rating with stars components\r\n\t * @param {string} label@ - Text to be displayed with rating\r\n\t * @param {int} max@ - Maximum value\r\n\t * @param {int} value=? - Current value\r\n\t * @param {boolean} disabled=? - Specifies if control is disabled\r\n\t * @param {boolean} readOnly=? - Specifies if control is in a read only mode\r\n\t * @usage \r\n\t * @usage \r\n\t */\r\n\tangular.module('mx.components').component('mxRating', {\r\n\t\ttemplateUrl: 'mx-rating/mx-rating.html',\r\n\t\tcontroller: RatingController,\r\n\t\tcontrollerAs: 'vm',\r\n\t\tbindings: {\r\n\t\t\tvalue: '=',\r\n\t\t\tmax: '@',\r\n\t\t\tdisabled: ' ' +\r\n\t\t\t\t\t\t\t\t'star ' +\r\n\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.join('') +\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\ti18n.getFormatted('components.mx-rating.ARIA', newValue, vm.max),\r\n\t\t\t\t\t'.'\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.components').component('mxRepeater', {\r\n\t\tbindings: {\r\n\t\t\tentities: '=',\r\n\t\t\ttemplateId: '@',\r\n\t\t\torderBy: '@',\r\n\t\t\treverse: '\r\n\t */\r\n\tangular.module('mx.components').component('mxSearchInput', {\r\n\t\ttemplateUrl: 'mx-search-input/mx-search-input.html',\r\n\t\tcontroller: MxSearchInputController,\r\n\t\tcontrollerAs: 'vm',\r\n\t\tbindings: {\r\n\t\t\tvalue: '<',\r\n\t\t\tlabel: '@',\r\n\t\t\tonChange: '&',\r\n\t\t\tdisabled: '<',\r\n\t\t\tdebounce: '@',\r\n\t\t\ttabindex: '@',\r\n\t\t\tmxAriaLabel: '@',\r\n\t\t},\r\n\t});\r\n\r\n\tMxSearchInputController.$inject = ['$scope'];\r\n\tfunction MxSearchInputController($scope) {\r\n\t\tvar vm = this;\r\n\t\tvar debouncedSearch;\r\n\t\tvar externalValue, internalValue;\r\n\t\tlet lockRepeatingSearch = false;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvar debounceTime = parseInt(vm.debounce);\r\n\t\t\tdebounceTime = isNaN(debounceTime) || debounceTime < 0 ? 300 : debounceTime;\r\n\t\t\tdebouncedSearch = debounceTime\r\n\t\t\t\t? $.debounce(debounceTime, function () {\r\n\t\t\t\t\t\t$scope.$evalAsync(() => search());\r\n\t\t\t\t })\r\n\t\t\t\t: () => search();\r\n\t\t};\r\n\t\tvm.search = search;\r\n\r\n\t\tObject.defineProperty(vm, 'value', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn externalValue;\r\n\t\t\t},\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\texternalValue = internalValue = newValue;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(vm, 'internalValue', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn internalValue;\r\n\t\t\t},\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tinternalValue = newValue;\r\n\t\t\t\tdebouncedSearch();\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tfunction search(runByEnter) {\r\n\t\t\tif (internalValue !== externalValue || (runByEnter && !lockRepeatingSearch)) {\r\n\t\t\t\tlockRepeatingSearch = runByEnter;\r\n\r\n\t\t\t\texternalValue = internalValue;\r\n\t\t\t\tvm.onChange({ value: externalValue, runByEnter });\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc component\r\n\t * @name mx.components:mxStepper\r\n\t * @module mx.components\r\n\t * @restrict 'E'\r\n\t * @description\r\n\t * The mx-stepper control show how to use material stepper\r\n\t *\r\n\t * The example below demonstrates some of the attributes you may use with the mxStepper control:\r\n\t *\r\n\t * @param {object[]} steps= - Array of defined steps where each `step` contains following properties:\r\n\t *\r\n\t * - `title` - {string} - The title of the step;\r\n\t * - `date` - {date} - The date of the previous step;\r\n\t * - `active` - {boolean} - step activity;\r\n\t * - `description` - {string} - The details of step;\r\n\t * - `status` - {string} - The name of the step state;\r\n\t * - `icon` - {string} - Material icon name.\r\n\t * - `steps` - {object[]} - Children steps (one level steps).\r\n\t * @param {string} direction= - type of direction `vertical` or `horizontal`. Default: `vertical`\r\n\t * @usage\r\n\t * \r\n\t * \r\n\t */\r\n\r\n\tangular.module('mx.components').component('mxStepper', {\r\n\t\tscope: {},\r\n\t\tbindings: {\r\n\t\t\tsteps: '=?',\r\n\t\t\tconfig: '=?',\r\n\t\t\tdirection: '@',\r\n\t\t},\r\n\t\ttransclude: true,\r\n\t\ttemplateUrl: 'mx-stepper/mx-stepper.html',\r\n\t\tcontroller: MxStepperCtrl,\r\n\t\tcontrollerAs: '__$vm',\r\n\t});\r\n\r\n\tMxStepperCtrl.$inject = ['mx.internationalization', '$element'];\r\n\tfunction MxStepperCtrl(i18n, $element) {\r\n\t\tvar vm = this;\r\n\t\tvar _steps = null;\r\n\r\n\t\tsetSteps(vm.steps);\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.ready = false;\r\n\t\t\tvm.init();\r\n\r\n\t\t\tvm.imgHost = (vm.config || {}).attachments || '';\r\n\t\t};\r\n\r\n\t\tvm.$doCheck = function () {\r\n\t\t\tif ($element.closest('mx-side-panel').closest('.mx-side-layout-full-screen-mode').length === 0) {\r\n\t\t\t\tvar stepperContainer = $element.find('.stepper');\r\n\t\t\t\tif (stepperContainer[0] && stepperContainer[0].offsetWidth < getMaxMobileOffset(100)) {\r\n\t\t\t\t\tstepperContainer.addClass('stepper-mobile');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstepperContainer.removeClass('stepper-mobile');\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t$element.find('.stepper').removeClass('stepper-mobile');\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tObject.defineProperty(vm, 'steps', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn _steps;\r\n\t\t\t},\r\n\t\t\tset: function (value) {\r\n\t\t\t\tif (value && value.length > 0) {\r\n\t\t\t\t\t//} && !vm.ready) {\r\n\t\t\t\t\tvm.ready = true;\r\n\t\t\t\t\tsetSteps(value);\r\n\t\t\t\t\tvm.init();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tfunction getMaxMobileOffset(stepLength) {\r\n\t\t\tif (vm.steps && vm.steps.length) {\r\n\t\t\t\tvar padding = 5;\r\n\t\t\t\treturn vm.steps.length * stepLength + (vm.steps.length - 1) * padding;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction setSteps(value) {\r\n\t\t\tvalue = value || [];\r\n\t\t\tadjustStepsRecursively(value, null);\r\n\t\t\t_steps = value;\r\n\t\t}\r\n\r\n\t\tfunction adjustStepsRecursively(steps, parentStep) {\r\n\t\t\tif (steps && steps.length > 0) {\r\n\t\t\t\tvar activeStep = _.findIndex(steps, function (step) {\r\n\t\t\t\t\treturn step.Active;\r\n\t\t\t\t});\r\n\t\t\t\tvar failedStep = _.findIndex(steps, function (step) {\r\n\t\t\t\t\treturn step.Failed;\r\n\t\t\t\t});\r\n\t\t\t\tfor (var stepNumber = 0; stepNumber < steps.length; stepNumber++) {\r\n\t\t\t\t\tvar step = steps[stepNumber];\r\n\t\t\t\t\tstep.stateClass = null;\r\n\t\t\t\t\tstep.hasChildren = step.Steps && step.Steps.length && step.Steps.length > 0;\r\n\t\t\t\t\tstep.isLastChild = false;\r\n\t\t\t\t\tstep.finishDate = step.Date ? i18n.formatUTCDate(step.Date, 'shortDate') : null;\r\n\r\n\t\t\t\t\tif (stepNumber === activeStep) {\r\n\t\t\t\t\t\tstep.stateClass = 'active';\r\n\t\t\t\t\t\tstep.stepIcon = 'cached';\r\n\t\t\t\t\t} else if ((activeStep === -1 && failedStep === -1) || stepNumber < activeStep || stepNumber < failedStep) {\r\n\t\t\t\t\t\tstep.stateClass = 'completed';\r\n\t\t\t\t\t\tstep.stepIcon = 'done';\r\n\t\t\t\t\t} else if (stepNumber === failedStep) {\r\n\t\t\t\t\t\tstep.stateClass = 'failed';\r\n\t\t\t\t\t\tstep.stepIcon = 'clear';\r\n\t\t\t\t\t} else if (failedStep > -1 && stepNumber > failedStep) {\r\n\t\t\t\t\t\tstep.stateClass = 'post-failed';\r\n\t\t\t\t\t\tstep.stepIcon = 'clear';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tstep.stepIcon = stepNumber;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tstep.previewText = step.Title || '';\r\n\t\t\t\t\tstep.descriptionText = step.finishDate;\r\n\t\t\t\t\tstep.detailsText = step.Description || '';\r\n\r\n\t\t\t\t\tvar stateWithDate = '';\r\n\t\t\t\t\tstep.statusText = '';\r\n\r\n\t\t\t\t\tif (step.Status || (parentStep && parentStep.Status)) {\r\n\t\t\t\t\t\tstateWithDate = step.statusText = step.Status || parentStep.Status;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (step.Description) {\r\n\t\t\t\t\t\tif (!step.statusText) {\r\n\t\t\t\t\t\t\tstep.statusText = step.Description;\r\n\t\t\t\t\t\t} else if (!step.descriptionText) {\r\n\t\t\t\t\t\t\tstep.descriptionText = step.Description;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (step.finishDate) {\r\n\t\t\t\t\t\tif (stateWithDate) {\r\n\t\t\t\t\t\t\tstateWithDate += ' - ';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tstateWithDate += step.finishDate;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (stateWithDate) {\r\n\t\t\t\t\t\tif (step.detailsText) {\r\n\t\t\t\t\t\t\tstep.detailsText += ' - ';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (step.previewText) {\r\n\t\t\t\t\t\t\tstep.previewText += ' - ';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tstep.detailsText += stateWithDate;\r\n\t\t\t\t\t\tstep.previewText += stateWithDate;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (step.Description) {\r\n\t\t\t\t\t\tstep.previewText += ' - ' + step.Description;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (step.hasChildren) {\r\n\t\t\t\t\t\tadjustStepsRecursively(step.Steps, step);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tsteps[stepNumber - 1].isLastChild = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvm.init = function () {};\r\n\r\n\t\tvm.close = function (elem) {\r\n\t\t\t$(elem.currentTarget).parent().hide();\r\n\t\t\t$('.stepper').find('.step-content').css('float', 'none');\r\n\t\t};\r\n\r\n\t\tvm.getStepDetails = function (elem) {\r\n\t\t\tvar stepContent = $(elem.currentTarget).next();\r\n\t\t\tvar stepContentWrapper = stepContent.next();\r\n\r\n\t\t\tvar isHidden = $(stepContentWrapper).css('display') === 'none';\r\n\t\t\tvar stepper = $('.stepper');\r\n\t\t\tstepper.find('.step-content').css('float', 'none');\r\n\t\t\tstepper.find('.step-content-wrapper').css('display', 'none');\r\n\r\n\t\t\tif (isHidden) {\r\n\t\t\t\tstepContentWrapper.show();\r\n\t\t\t\tstepContent.css('float', 'left');\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.components').component('mxTabs', {\r\n\t\tbindings: {\r\n\t\t\ttabs: ' tab.visible !== false)[+index];\r\n\t\t\t\tselectedTabName = tab ? tab.name : '';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.components').directive('mxTextArea', function mxTextAreaDirective() {\r\n\t\tconst directive = new mx.components.FormControlBase(MxTextAreaCtrl, 'mx-text-area/mx-text-area.html');\r\n\t\tangular.extend(directive.bindToController, {\r\n\t\t\trows: '@',\r\n\t\t});\r\n\t\treturn directive;\r\n\t});\r\n\r\n\tMxTextAreaCtrl.$inject = ['$timeout', '$element', '$scope'];\r\n\r\n\tfunction MxTextAreaCtrl($timeout, $element, $scope) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tmx.components.FormControlControllerBase.call(vm, $timeout);\r\n\t\t\tvm.rows = vm.rows || 4;\r\n\t\t};\r\n\r\n\t\t$scope.$watch('vm.label', function (value) {\r\n\t\t\tvm._label = value;\r\n\t\t});\r\n\r\n\t\tvm.$postLink = function () {\r\n\t\t\tvar textArea = $element.find('textarea');\r\n\t\t\ttextArea.on('blur', function () {\r\n\t\t\t\t$element.blur();\r\n\t\t\t\tvm.showingHints(false);\r\n\t\t\t});\r\n\t\t\ttextArea.on('focus', function () {\r\n\t\t\t\t$element.triggerHandler('focus');\r\n\t\t\t\tvm.showingHints(true);\r\n\t\t\t});\r\n\t\t\t// Important: fix broken errors onPaste for absolute\r\n\t\t\ttextArea.on('paste', function () {\r\n\t\t\t\t$element.triggerHandler('blur');\r\n\t\t\t\t$element.triggerHandler('focus');\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function (w) {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc directive\r\n\t * @name mx.components:mxTextBox\r\n\t * @module mx.components\r\n\t * @restrict 'E'\r\n\t * @description\r\n\t * The mx-text-box control is used to create a text box where the user can input text.\r\n\t *\r\n\t * The example below demonstrates some of the attributes you may use with the TextBox control:\r\n\t * @param {string} name@ - The name property sets or returns the value of the name attribute of a mxTextBox.\r\n\t * @param {string} label@ - Defines label displayed on the form\r\n\t * @param {boolean} required= - The required property sets or returns whether a mxTextBox must be filled out before submitting a form.\r\n\t * @param {boolean} disabled= - The disabled property sets or returns whether a mxTextBox should be disabled, or not.\r\n\t * @param {boolean} readOnly= - The readOnly property sets or returns whether the contents of a mxTextBox should be read-only.\r\n\t * @param {boolean} mask= - The mask property sets or returns whether the contents of a mxTextBox should be maskable by concrete mask type.\r\n\t * @param {string} maskFormat= - The maskFormat property sets or returns whether the contents of a mxTextBox should have mask pattern.\r\n\t * @param {object} model=ngModel - directive binds element to the object in the model.\r\n\t * @param {string} type=\"email\" - E-mail directive\r\n\t * @param {string} ngPattern - ngPattern\r\n\t *\r\n\t * @usage \r\n\t */\r\n\r\n\tangular.module('mx.components').directive('mxTextBox', function mxTextBoxDirective() {\r\n\t\tconst directive = new mx.components.FormControlBase(MxTextBoxCtrl, '');\r\n\t\tdirective.template = mxTemplate;\r\n\r\n\t\tangular.extend(directive.bindToController, {\r\n\t\t\ttype: '@',\r\n\t\t\tpattern: '' +\r\n\t\t\t'' +\r\n\t\t\t'' +\r\n\t\t\t'
{{::vm.hintPlainText}}
' +\r\n\t\t\t'' +\r\n\t\t\t'' +\r\n\t\t\t''\r\n\t\t);\r\n\t}\r\n\r\n\tfunction getMaskTemplateByType(attr) {\r\n\t\tvar maskTemplate = attr.mxMask !== null && attr.mxMask !== undefined ? 'mx-mask=\"' + attr.mxMask + '\"' : '';\r\n\t\tif (maskTemplate !== '') {\r\n\t\t\tswitch (attr.mxMask) {\r\n\t\t\t\tcase 'interval':\r\n\t\t\t\t\tif (attr.mxMaskFormat) {\r\n\t\t\t\t\t\tmaskTemplate += ' mx-mask-format=\"' + attr.mxMaskFormat + '\" ';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn maskTemplate;\r\n\t}\r\n\r\n\tw.mx = w.mx || {};\r\n\tw.mx.components = w.mx.components || {};\r\n\tw.mx.components.Forms = w.mx.components.Forms || {};\r\n})(window);\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.components').component('mxTimelineLazy', {\r\n\t\tbindings: {\r\n\t\t\titems: '<',\r\n\t\t\tselectedItem: '=?',\r\n\t\t\tidFieldName: '@',\r\n\t\t\ttitleFieldName: '@',\r\n\t\t\tdateFieldName: '@',\r\n\t\t\tcontentFieldName: '@',\r\n\t\t\tmaxHeight: '<',\r\n\t\t\tminHeight: '<',\r\n\t\t},\r\n\t\tcontroller: MxTimelineLazyCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplate:\r\n\t\t\t'
',\r\n\t});\r\n\r\n\tMxTimelineLazyCtrl.$inject = ['$ocLazyLoad', 'mx.components.LazyLoadCfg', 'mx.shell.Config'];\r\n\r\n\tfunction MxTimelineLazyCtrl($ocLazyLoad, lazyLoadCfg, mxConfig) {\r\n\t\tvar vm = this;\r\n\r\n\t\tconst anticache = `?anticache=${mxConfig.settings.productVersion}`;\r\n\r\n\t\t$ocLazyLoad.setModuleConfig({\r\n\t\t\tname: 'ngVis',\r\n\t\t\tserie: true,\r\n\t\t\tfiles: [\r\n\t\t\t\t`${lazyLoadCfg.componentsDir}vis/dist/vis.min.css${anticache}`,\r\n\t\t\t\t`${lazyLoadCfg.componentsDir}vis/dist/vis.min.js${anticache}`,\r\n\t\t\t\t`${lazyLoadCfg.componentsDir}angular-visjs/angular-vis.js${anticache}`,\r\n\t\t\t],\r\n\t\t});\r\n\r\n\t\tvm.$onInit = function () {};\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.components').component('mxTimeline', {\r\n\t\tbindings: {\r\n\t\t\titems: '<',\r\n\t\t\tselectedItem: '=?',\r\n\t\t\tidFieldName: '@',\r\n\t\t\ttitleFieldName: '@',\r\n\t\t\tdateFieldName: '@',\r\n\t\t\tcontentFieldName: '@',\r\n\t\t\tmaxHeight: '<',\r\n\t\t\tminHeight: '<',\r\n\t\t},\r\n\t\tcontroller: MxTimelineCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplate: '',\r\n\t});\r\n\r\n\tMxTimelineCtrl.$inject = ['$scope', 'VisDataSet'];\r\n\r\n\tfunction MxTimelineCtrl($scope, VisDataSet) {\r\n\t\tvar vm = this;\r\n\t\tvar timelineItems;\r\n\r\n\t\tvm.events = {\r\n\t\t\tclick: function (params) {\r\n\t\t\t\tif (!params.item) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$scope.$evalAsync(function () {\r\n\t\t\t\t\tvm.selectedItem = timelineItems.filter(function (item) {\r\n\t\t\t\t\t\treturn item[vm.idFieldName] === params.item;\r\n\t\t\t\t\t})[0];\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.maxHeight = parseInt(vm.maxHeight); // to support old-templates with legacy string-type attribute from SB\r\n\t\t\tvm.minHeight = parseInt(vm.minHeight); // to support old-templates with legacy string-type attribute from SB\r\n\t\t\tvm.options = {\r\n\t\t\t\tmaxHeight: isNaN(vm.maxHeight) ? undefined : vm.maxHeight + 'px',\r\n\t\t\t\tminHeight: isNaN(vm.minHeight) ? '400px' : vm.minHeight + 'px',\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\t$scope.$watch('vm.items', function (newItems) {\r\n\t\t\tif (!Array.isArray(newItems) || newItems.length === 0) {\r\n\t\t\t\tvm.dataLoaded = false;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\ttimelineItems = newItems;\r\n\r\n\t\t\tvar items = new VisDataSet(\r\n\t\t\t\tnewItems.map(function (object) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tid: object[vm.idFieldName],\r\n\t\t\t\t\t\tcontent: object[vm.contentFieldName],\r\n\t\t\t\t\t\tstart: object[vm.dateFieldName],\r\n\t\t\t\t\t\ttitle: object[vm.titleFieldName],\r\n\t\t\t\t\t};\r\n\t\t\t\t})\r\n\t\t\t);\r\n\r\n\t\t\tvm.timelineData = {\r\n\t\t\t\titems: items,\r\n\t\t\t};\r\n\r\n\t\t\tif (vm.dataLoaded) {\r\n\t\t\t\tvm.dataLoaded = false;\r\n\t\t\t\t$scope.$evalAsync(function () {\r\n\t\t\t\t\tvm.dataLoaded = true;\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tvm.dataLoaded = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function (w) {\r\n\t'use strict';\r\n\r\n\tfunction MxTreeview() {\r\n\t\tvar directive = new mx.components.FormControlBase(MxTreeviewCtrl, 'mx-treeview/mx-treeview.html');\r\n\t\tangular.extend(directive.bindToController, {\r\n\t\t\titems: '<',\r\n\t\t\tselectedItem: '=?',\r\n\t\t\ttemplateId: '@',\r\n\t\t\tparentControllerAs: '@',\r\n\t\t\tparentField: '@',\r\n\t\t\tidField: '@',\r\n\t\t\torderBy: '@',\r\n\t\t\texpandByButton: '@',\r\n\t\t\texpandByDefault: '@',\r\n\t\t\tautoSelectFirst: '@',\r\n\t\t\tshowAsList: '@',\r\n\t\t\tparent: '<',\r\n\t\t\tshowAdd: '@',\r\n\t\t\tshowEdit: '@',\r\n\t\t\tshowDelete: '@',\r\n\t\t\tonAdd: '&',\r\n\t\t\tonDelete: '&',\r\n\t\t\tonEdit: '&',\r\n\t\t});\r\n\t\tdirective.controllerAs = '__$vm';\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tMxTreeviewCtrl.$inject = ['$scope', '$timeout', 'mx.internationalization'];\r\n\r\n\tfunction MxTreeviewCtrl($scope, $timeout, i18n) {\r\n\t\tvar vm = this;\r\n\t\tvar expandByButton;\r\n\t\tvar items;\r\n\t\tvar initialized;\r\n\t\tvar watchers = [];\r\n\t\tvm.i18n = i18n.get('components.mx-treeview');\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm._showAdd = vm.showAdd === 'true';\r\n\t\t\tvm._showDelete = vm.showDelete === 'true';\r\n\t\t\tvm._showEdit = vm.showEdit === 'true';\r\n\t\t\tvm._showAsList = vm.showAsList === 'true';\r\n\t\t\tvm._expandByDefault = vm.expandByDefault === 'true';\r\n\r\n\t\t\tvm._onAdd = vm.onAdd() || function () {};\r\n\t\t\tvm._onDelete = vm.onDelete() || function () {};\r\n\t\t\tvm._onEdit = vm.onEdit() || function () {};\r\n\r\n\t\t\tvm.parentField = vm.parentField || 'Parent';\r\n\t\t\tvm.idField = vm.idField || 'Id';\r\n\t\t\texpandByButton = vm.expandByButton !== 'false';\r\n\t\t\titems = vm.items;\r\n\r\n\t\t\tmx.components.FormControlControllerBase.call(vm, $timeout);\r\n\t\t\tinitScope();\r\n\r\n\t\t\tvm.getStatus = function (item) {\r\n\t\t\t\treturn vm.itemsStatus[item[vm.idField]];\r\n\t\t\t};\r\n\r\n\t\t\tvm.expandButtonClick = function ($event, item) {\r\n\t\t\t\t$event.stopPropagation();\r\n\t\t\t\tif (item) {\r\n\t\t\t\t\tvar status = vm.getStatus(item);\r\n\t\t\t\t\tstatus.expanded = !status.expanded;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tvar selectedItem = vm.selectedItem;\r\n\r\n\t\t\tvm.itemClick = function ($event, item) {\r\n\t\t\t\tif ($event) {\r\n\t\t\t\t\t$event.stopPropagation();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (vm._expandByDefault) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t_.forIn(vm.itemsStatus, function (value) {\r\n\t\t\t\t\tvalue.selected = false;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (item) {\r\n\t\t\t\t\tvar status = vm.getStatus(item);\r\n\t\t\t\t\tif (status) {\r\n\t\t\t\t\t\tif (!status.showExpandButton && status.hasChildren && $event) {\r\n\t\t\t\t\t\t\tstatus.expanded = !status.expanded;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tstatus.selected = true;\r\n\t\t\t\t\t\tselectedItem = item;\r\n\t\t\t\t\t} else if (!$event) {\r\n\t\t\t\t\t\tlet currentItem = item;\r\n\r\n\t\t\t\t\t\tlet parent = currentItem[vm.parentField];\r\n\t\t\t\t\t\twhile (parent) {\r\n\t\t\t\t\t\t\tcurrentItem = items.filter(getParent(parent))[0];\r\n\t\t\t\t\t\t\tstatus = vm.getStatus(currentItem);\r\n\t\t\t\t\t\t\tif (status) {\r\n\t\t\t\t\t\t\t\tstatus.expanded = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tparent = currentItem[vm.parentField];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tfunction getParent(parent) {\r\n\t\t\t\treturn function (x) {\r\n\t\t\t\t\treturn x[vm.idField] === parent;\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tfunction initTopLevelItems() {\r\n\t\t\t\tvm.itemsStatus = {};\r\n\t\t\t\tvm.topLevelItems = items.filter(function (item) {\r\n\t\t\t\t\treturn vm._showAsList || (!vm.parent && !item[vm.parentField]) || (vm.parent && vm.parent[vm.idField] === item[vm.parentField]);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (vm.orderBy) {\r\n\t\t\t\t\tvm.topLevelItems = vm.topLevelItems.sort(function (a, b) {\r\n\t\t\t\t\t\tvar aValue = a[vm.orderBy];\r\n\t\t\t\t\t\tif (typeof aValue === 'number') {\r\n\t\t\t\t\t\t\treturn aValue - b[vm.orderBy];\r\n\t\t\t\t\t\t} else if (typeof aValue === 'string') {\r\n\t\t\t\t\t\t\treturn aValue.localeCompare(b[vm.orderBy]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!initialized && vm.autoSelectFirst === 'true') {\r\n\t\t\t\t\tvm.selectedItem = vm.topLevelItems[0];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.topLevelItems.forEach(function (item) {\r\n\t\t\t\t\tvar hasChildren = items.some(function (node) {\r\n\t\t\t\t\t\treturn item[vm.idField] === node[vm.parentField];\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tvm.itemsStatus[item[vm.idField]] = {\r\n\t\t\t\t\t\thasChildren: hasChildren,\r\n\t\t\t\t\t\tshowExpandButton: hasChildren && expandByButton && !vm._showAsList,\r\n\t\t\t\t\t\texpanded: vm._expandByDefault,\r\n\t\t\t\t\t\tselected: false,\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t\tvm.itemClick(null, selectedItem);\r\n\t\t\t\tif (!initialized) {\r\n\t\t\t\t\taddWatchers();\r\n\t\t\t\t\tinitialized = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction addWatchers() {\r\n\t\t\t\twatchers.push(\r\n\t\t\t\t\t$scope.$watch('__$vm.showAsList', function (updata) {\r\n\t\t\t\t\t\tvm._showAsList = updata === 'true';\r\n\t\t\t\t\t\tinitTopLevelItems();\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\r\n\t\t\t\tif (vm.orderBy) {\r\n\t\t\t\t\twatchers.push(\r\n\t\t\t\t\t\t$scope.$watch(\r\n\t\t\t\t\t\t\t'__$vm.selectedItem',\r\n\t\t\t\t\t\t\tfunction (newVal, oldVal) {\r\n\t\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\t\tnewVal &&\r\n\t\t\t\t\t\t\t\t\toldVal &&\r\n\t\t\t\t\t\t\t\t\tnewVal[vm.orderBy] !== oldVal[vm.orderBy] &&\r\n\t\t\t\t\t\t\t\t\titems.some(function (t) {\r\n\t\t\t\t\t\t\t\t\t\treturn t[vm.idField] === newVal[vm.idField];\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\tinitTopLevelItems();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\ttrue\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$scope.$on('$destroy', function () {\r\n\t\t\t\t\twatchers.forEach(function (w) {\r\n\t\t\t\t\t\tw();\r\n\t\t\t\t\t});\r\n\t\t\t\t\twatchers = [];\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tObject.defineProperty(vm, 'selectedItem', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn selectedItem;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (value) {\r\n\t\t\t\t\tselectedItem = value;\r\n\t\t\t\t\tvm.itemClick(null, selectedItem);\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(vm, 'items', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn items;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (value) {\r\n\t\t\t\t\titems = value;\r\n\t\t\t\t\tinitTopLevelItems();\r\n\t\t\t\t\tvm.itemClick(null, selectedItem);\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tvm.add = function ($event, item) {\r\n\t\t\t\t$event.stopPropagation();\r\n\t\t\t\tvm._onAdd(item);\r\n\t\t\t};\r\n\r\n\t\t\tvm.edit = function ($event, item) {\r\n\t\t\t\t$event.stopPropagation();\r\n\t\t\t\tvm._onEdit(item);\r\n\t\t\t};\r\n\r\n\t\t\tvm.delete = function ($event, item) {\r\n\t\t\t\t$event.stopPropagation();\r\n\t\t\t\tvm._onDelete(item);\r\n\t\t\t};\r\n\t\t\tinitTopLevelItems();\r\n\t\t};\r\n\r\n\t\tfunction initScope() {\r\n\t\t\tif (vm.parentControllerAs) {\r\n\t\t\t\t$scope[vm.parentControllerAs] = $scope.$parent[vm.parentControllerAs];\r\n\t\t\t} else {\r\n\t\t\t\t$scope.dataModel = $scope.$parent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn vm;\r\n\t}\r\n\r\n\tfunction deleteFunc(options, item) {\r\n\t\tconst itemsForDelete = [item || options.selectedItem];\r\n\t\tlet currentItems = [item || options.selectedItem];\r\n\t\tdo {\r\n\t\t\tcurrentItems = options.items.filter(getChildren(options, currentItems));\r\n\t\t\tArray.prototype.push.apply(itemsForDelete, currentItems);\r\n\t\t} while (currentItems.length);\r\n\r\n\t\toptions.items = options.items.filter(function (item) {\r\n\t\t\treturn !itemsForDelete.some(function (t) {\r\n\t\t\t\treturn t[options.idField] === item[options.idField];\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tif (!item || options.selectedItem[options.idField] === item[options.idField]) {\r\n\t\t\toptions.selectedItem = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getChildren(options, items) {\r\n\t\treturn function (item) {\r\n\t\t\treturn items.some(function (t) {\r\n\t\t\t\treturn t[options.idField] === item[options.parentField];\r\n\t\t\t});\r\n\t\t};\r\n\t}\r\n\r\n\tw.mx = w.mx || {};\r\n\tw.mx.components = w.mx.components || {};\r\n\tw.mx.components.Treeview = MxTreeview;\r\n\tw.mx.components.Treeview.DeleteItem = deleteFunc;\r\n\tangular.module('mx.components').directive('mxTreeview', MxTreeview);\r\n})(window);\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').controller('mx.SolutionBuilderAgent.DeleteServiceController', [\r\n\t\t'mx.SolutionBuilderAgent.ExternalServiceManager',\r\n\t\t'mx.shell.EventService',\r\n\t\t'mx.shell.SidePanelService',\r\n\t\t'$q',\r\n\t\t'mx.shell.NotificationService',\r\n\t\t'mx.internationalization',\r\n\t\tfunction deleteServiceCtrl(externalServiceManager, eventService, sidePanelService, $q, notificationService, internationalization) {\r\n\t\t\tvar vm = this;\r\n\r\n\t\t\tvm.execute = function (selectedObjects, action) {\r\n\t\t\t\tif (!selectedObjects || !selectedObjects.length) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar groupedObjectsByService = _.groupBy(selectedObjects, '_type');\r\n\t\t\t\tvar type;\r\n\r\n\t\t\t\tvar allResults = [];\r\n\t\t\t\tfor (type in groupedObjectsByService) {\r\n\t\t\t\t\tif (groupedObjectsByService.hasOwnProperty(type)) {\r\n\t\t\t\t\t\tallResults.push(externalServiceManager.deleteObjects(type, groupedObjectsByService[type]));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$q.all(allResults).then(actionProxy, actionProxy).then(reloadPage);\r\n\r\n\t\t\t\tfunction actionProxy() {\r\n\t\t\t\t\treturn action;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tfunction reloadPage(action) {\r\n\t\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.SearchPageDataChanged);\r\n\t\t\t\tsidePanelService.closeView(sidePanelService.currentView);\r\n\t\t\t\tnotificationService.success(internationalization.getFormatted('solutionBuilderAgent.actions.wizard.success', action.title));\r\n\t\t\t}\r\n\t\t},\r\n\t]);\r\n})();\r\n","'use strict';\r\n\r\nangular.module('mx.SolutionBuilderAgent').controller('mx.SolutionBuilderAgent.DesignWidgetController', [\r\n\t'mx.shell.ContextService',\r\n\t'mx.SolutionBuilderAgent.designerOpener',\r\n\tfunction designCtrl(contextService, designerOpener) {\r\n\t\tconst vm = this;\r\n\r\n\t\tvm.execute = function (selectedObjects) {\r\n\t\t\tconst item = selectedObjects[0];\r\n\r\n\t\t\tdesignerOpener.open(item._type, item._id);\r\n\t\t};\r\n\t},\r\n]);\r\n","'use strict';\r\n\r\nlet isDashboardEditModeOn = false;\r\nlet unsubscribeFromSidebarClosing = () => {};\r\n\r\nangular.module('mx.SolutionBuilderAgent').controller('mx.SolutionBuilderAgent.EditDashboardController', [\r\n\t'$stateParams',\r\n\t'mx.shell.SidebarService',\r\n\t'mx.shell.View',\r\n\t'mx.shell.NavigationManager',\r\n\t'mx.SolutionBuilderAgent.DashboardWidgetDataService',\r\n\t'mx.internationalization',\r\n\t'mx.shell.NavigationService',\r\n\t'mx.shell.EventService',\r\n\tfunction editDashboardCtrl($stateParams, sidebarService, MxView, navigationManager, dashboardDataService, internationalization, navigationService, eventService) {\r\n\t\tlet dashboardId = '';\r\n\r\n\t\tconst navigationId = ($stateParams.navigationId || '').toLowerCase();\r\n\r\n\t\tnavigationService.getNavigationItem(navigationId).then(function (navigationItem) {\r\n\t\t\tif (navigationItem) {\r\n\t\t\t\tdashboardId = (navigationItem.contentWidgetId || '').toLowerCase();\r\n\r\n\t\t\t\tif (sidebarService.isOpened) {\r\n\t\t\t\t\tstopEditDashboard();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbeginEditDashboard();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tfunction stopEditDashboard(closedBySideBarClosingEvent) {\r\n\t\t\tisDashboardEditModeOn = false;\r\n\t\t\tunsubscribeFromSidebarClosing();\r\n\t\t\tif (!closedBySideBarClosingEvent) {\r\n\t\t\t\tsidebarService.close();\r\n\t\t\t}\r\n\t\t\tdashboardDataService.disableDashboardEditMode(dashboardId);\r\n\t\t\tnavigationManager.collapsedMode = false;\r\n\t\t}\r\n\r\n\t\tfunction beginEditDashboard() {\r\n\t\t\tisDashboardEditModeOn = true;\r\n\t\t\tconst dashboardEditView = new MxView({\r\n\t\t\t\tid: '__dashboard_editor_view__',\r\n\t\t\t\tname: internationalization.get('solutionBuilderAgent.components.mx-dashboard-editor.dashboard-editor'),\r\n\t\t\t\tlocals: { dashboardId: dashboardId },\r\n\t\t\t\tcontroller: function () {},\r\n\t\t\t\ttemplate: '',\r\n\t\t\t});\r\n\r\n\t\t\tsidebarService.open(dashboardEditView);\r\n\t\t\tdashboardDataService.enableDashboardEditMode(dashboardId);\r\n\t\t\tnavigationManager.collapsedMode = true;\r\n\r\n\t\t\tunsubscribeFromSidebarClosing = eventService.subscribeOnce(mx.shell.EventCodes.SidebarClosed, () => {\r\n\t\t\t\tif (isDashboardEditModeOn) {\r\n\t\t\t\t\tstopEditDashboard(true);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n]);\r\n","'use strict';\r\n\r\nangular.module('mx.SolutionBuilderAgent').controller('mx.SolutionBuilderAgent.EditInWorkflowStudioController', [\r\n\t'mx.shell.Config',\r\n\t'mx.SolutionBuilderAgent.Http',\r\n\tfunction editInWorkflowStudioCtrl(mxConfig, http) {\r\n\t\tconst vm = this;\r\n\t\tconst host = (mxConfig.get('imgHosts') || {}).default;\r\n\r\n\t\tvm.execute = function (selectedObjects) {\r\n\t\t\tconst id = (selectedObjects || []).length > 0 ? selectedObjects[0].WorkflowId || selectedObjects[0].ID || selectedObjects[0].Id : undefined;\r\n\r\n\t\t\thttp.get('api/workflow/studio/' + (id || '') + '/url').then(function (url) {\r\n\t\t\t\twindow.open(host + url);\r\n\t\t\t});\r\n\t\t};\r\n\t},\r\n]);\r\n","'use strict';\r\n\r\nangular.module('mx.SolutionBuilderAgent').controller('mx.SolutionBuilderAgent.NewFromActionController', [\r\n\t'mx.SolutionBuilderAgent.DialogOpenerService',\r\n\tfunction newFromActionController(dialogOpener) {\r\n\t\tconst vm = this;\r\n\r\n\t\tvm.execute = function (selectedObjects, action, presetFields, parentView) {\r\n\t\t\tconst objectType = getQueryVariable(action.controllerParams, 'objectType');\r\n\r\n\t\t\tif (objectType === null || objectType === '') {\r\n\t\t\t\tthrow new Error(\"Action Create Object: does not contain parameter 'objectType'\");\r\n\t\t\t}\r\n\t\t\tlet outerContext;\r\n\t\t\tif (action) {\r\n\t\t\t\touterContext = Array.isArray(selectedObjects) && selectedObjects.length === 1 ? selectedObjects[0] : selectedObjects;\r\n\t\t\t}\r\n\t\t\treturn dialogOpener\r\n\t\t\t\t.openNewDialog(objectType, action, selectedObjects, true, presetFields, parentView, undefined, outerContext)\r\n\t\t\t\t.newDialogOpenedPromise.then(function (view) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tview: view,\r\n\t\t\t\t\t};\r\n\t\t\t\t})\r\n\t\t\t\t.catch(mx.logCatch);\r\n\t\t};\r\n\r\n\t\tfunction getQueryVariable(query, variable) {\r\n\t\t\tconst vars = query.split('&');\r\n\r\n\t\t\tfor (let i = 0; i < vars.length; i++) {\r\n\t\t\t\tconst pair = vars[i].split('=');\r\n\r\n\t\t\t\tif (decodeURIComponent(pair[0]) === variable) {\r\n\t\t\t\t\treturn decodeURIComponent(pair[1]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n]);\r\n","'use strict';\r\n\r\nangular.module('mx.SolutionBuilderAgent').controller('mx.SolutionBuilderAgent.NewController', [\r\n\t'mx.shell.ContextService',\r\n\t'mx.SolutionBuilderAgent.DialogOpenerService',\r\n\tfunction newActionController(contextService, dialogOpener) {\r\n\t\tconst vm = this;\r\n\r\n\t\tvm.execute = function (selectedObjects, action, presetFields, parentView) {\r\n\t\t\tlet objectType;\r\n\t\t\tconst _cxtObjTypes = contextService.val('SolutionBuilderAgent.ObjectTypes');\r\n\r\n\t\t\tif (Array.isArray(action.availableTypes) && Array.isArray(_cxtObjTypes)) {\r\n\t\t\t\taction.availableTypes.some(function (availableType) {\r\n\t\t\t\t\treturn _cxtObjTypes.some(function (ctxType) {\r\n\t\t\t\t\t\tif (availableType === ctxType) {\r\n\t\t\t\t\t\t\tobjectType = ctxType;\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tobjectType = _cxtObjTypes && _cxtObjTypes[0];\r\n\t\t\t}\r\n\r\n\t\t\tlet outerContext;\r\n\t\t\tif (action) {\r\n\t\t\t\touterContext = Array.isArray(selectedObjects) && selectedObjects.length === 1 ? selectedObjects[0] : selectedObjects;\r\n\t\t\t}\r\n\t\t\treturn dialogOpener\r\n\t\t\t\t.openNewDialog(objectType, action, selectedObjects, true, presetFields, parentView, undefined, outerContext)\r\n\t\t\t\t.newDialogOpenedPromise.then(function (view) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tview: view,\r\n\t\t\t\t\t};\r\n\t\t\t\t})\r\n\t\t\t\t.catch(mx.logCatch);\r\n\t\t};\r\n\t},\r\n]);\r\n","'use strict';\r\n\r\nangular.module('mx.SolutionBuilderAgent').controller('mx.SolutionBuilderAgent.OpenReportFromActionController', [\r\n\t'mx.shell.Config',\r\n\t'$httpParamSerializer',\r\n\t'$window',\r\n\tfunction openReportFromActionController(config, $httpParamSerializer, $window) {\r\n\t\tconst vm = this;\r\n\r\n\t\tvm.execute = function (selectedObjects, action) {\r\n\t\t\tconst parameters = getQueryParameters(action.controllerParams);\r\n\r\n\t\t\tlet reportControlUrl = parameters.ReportControlUrl;\r\n\r\n\t\t\tdelete parameters.ReportControlUrl;\r\n\t\t\tif (!parameters.ReportName) {\r\n\t\t\t\tthrow new Error(\"Action Open Report: does not contain parameter 'ReportName'\");\r\n\t\t\t}\r\n\t\t\tif (!reportControlUrl) {\r\n\t\t\t\tthrow new Error(\"Action Open Report: does not contain parameter 'ReportControlUrl'\");\r\n\t\t\t}\r\n\t\t\tparameters.TypeName = '';\r\n\t\t\tparameters.ObjId = '';\r\n\t\t\tif (selectedObjects && selectedObjects.length === 1) {\r\n\t\t\t\tconst selectedObject = selectedObjects[0];\r\n\r\n\t\t\t\tparameters.TypeName = selectedObject._type;\r\n\t\t\t\tparameters.ObjId = selectedObject._id;\r\n\t\t\t}\r\n\t\t\tconst rootPath = config.get('reportingHosts').default;\r\n\t\t\tconst match = reportControlUrl.match(/^\\/*/g)[0];\r\n\r\n\t\t\treportControlUrl = reportControlUrl.replace(match, '/');\r\n\t\t\t$window.open(rootPath + reportControlUrl + '?' + $httpParamSerializer(parameters));\r\n\t\t};\r\n\t},\r\n]);\r\n\r\nfunction getQueryParameters(query) {\r\n\tconst result = {};\r\n\tconst vars = query.split('&');\r\n\r\n\tfor (let i = 0; i < vars.length; i++) {\r\n\t\tconst pair = vars[i].split('=');\r\n\t\tconst key = pair[0];\r\n\t\tconst value = decodeURIComponent(pair[1]);\r\n\r\n\t\tif (!result.hasOwnProperty(key)) {\r\n\t\t\tresult[key] = value;\r\n\t\t} else if (Array.isArray(result[key])) {\r\n\t\t\tresult[key].push(value);\r\n\t\t} else {\r\n\t\t\tresult[key] = [result[key], value];\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}\r\n","'use strict';\r\n\r\nangular.module('mx.SolutionBuilderAgent').controller('mx.SolutionBuilderAgent.VisualTrackingWorkflowStudioController', [\r\n\t'mx.shell.Config',\r\n\t'mx.SolutionBuilderAgent.Http',\r\n\tfunction visualTrackingWorkflowStudioCtrl(mxConfig, http) {\r\n\t\tconst vm = this;\r\n\t\tconst host = (mxConfig.get('imgHosts') || {}).default;\r\n\r\n\t\tvm.execute = function (selectedObjects) {\r\n\t\t\tconst id = (selectedObjects || []).length > 0 ? selectedObjects[0].ID || selectedObjects[0].Id : undefined;\r\n\r\n\t\t\thttp.get('api/workflowInstance/' + (id || '') + '/visualTrackingUrl').then(function (url) {\r\n\t\t\t\twindow.open(host + url);\r\n\t\t\t});\r\n\t\t};\r\n\t},\r\n]);\r\n","'use strict';\r\n\r\n/**\r\n * @ngdoc component\r\n * @name mx.agent:mxMultiSchemaLink\r\n * @module mx.agent\r\n * @description Displays several schema objects\r\n * @param {string} label@ - Optional. Label of the control.\r\n * @param {value} type= - Indicates what schema type used (class or type)\r\n */\r\nangular.module('mx.SolutionBuilderAgent').component('mxMultiSchemaLink', {\r\n\tbindings: {\r\n\t\tlabel: '@',\r\n\t\tvalue: '<',\r\n\t\thideOnEmptyValue: '@',\r\n\t\treserveIconSpace: '@',\r\n\t\tlabelPosition: '@',\r\n\t\tvalueMinWidth: '@',\r\n\t\tlabelMinWidth: '@',\r\n\t\tlabelMaxWidth: '@',\r\n\t\tvalueColor: '@',\r\n\t\ticon: '@',\r\n\t\tdesignerMode: '\r\n\t\t\t\t\t\t`;\r\n\t\t},\r\n\t],\r\n});\r\n\r\nMxMultiSchemaLinkCtrl.$inject = ['mx.SolutionBuilderAgent.DialogOpenerService', 'mx.SolutionBuilderAgent.SchemaService', '$element'];\r\n\r\nfunction MxMultiSchemaLinkCtrl(dialogOpener, schemaService, $element) {\r\n\tconst vm = this;\r\n\tlet _value;\r\n\r\n\tvm.valueClick = valueClickHandler;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvm.objDetails = null;\r\n\r\n\t\t_value = vm.value;\r\n\r\n\t\tObject.defineProperty(vm, 'value', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn _value;\r\n\t\t\t},\r\n\t\t\tset: setValue,\r\n\t\t});\r\n\t\tsetValue(_value);\r\n\t};\r\n\r\n\tvm.$postLink = function () {\r\n\t\t$element.addClass('mx-literal');\r\n\t};\r\n\r\n\tfunction valueClickHandler(event, internalName, displayName, type) {\r\n\t\tconst obj = {\r\n\t\t\t_id: internalName,\r\n\t\t\t_name: displayName,\r\n\t\t\t_type: type === 'class' ? 'service_6886d8dc-51f8-e611-9382-f079595b3ec7' : 'service_7b83787c-81f7-e611-9382-f079595b3ec7',\r\n\t\t};\r\n\t\tdialogOpener.openPreview(obj);\r\n\t}\r\n\r\n\tfunction setValue(value) {\r\n\t\t_value = value;\r\n\r\n\t\tif (_value && Array.isArray(_value)) {\r\n\t\t\treturn vm.type === 'class'\r\n\t\t\t\t? schemaService.getClasses().then(function (classes) {\r\n\t\t\t\t\t\tvm.literalValue = getValue(classes);\r\n\t\t\t\t })\r\n\t\t\t\t: schemaService.getTypes().then(function (types) {\r\n\t\t\t\t\t\tvm.literalValue = getValue(types);\r\n\t\t\t\t });\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction getValue(items) {\r\n\t\tlet res = '';\r\n\r\n\t\tconst itemInfos = items.filter(function (item) {\r\n\t\t\treturn _value.some(function (id) {\r\n\t\t\t\treturn id === item.Id;\r\n\t\t\t});\r\n\t\t});\r\n\t\tif (itemInfos.length > 0) {\r\n\t\t\titemInfos.forEach(function (info) {\r\n\t\t\t\tif (res !== '') {\r\n\t\t\t\t\tres += ', ';\r\n\t\t\t\t}\r\n\t\t\t\tres += `${info.DisplayName}\r\n\t\t\t\t\t\t\t`;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t}\r\n}\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc component\r\n\t * @name mx.agent:mxObjectLink\r\n\t * @module mx.agent\r\n\t * @description Displays related object\r\n\t * @param {string} label@ - Optional. Label of the control.\r\n\t * @param {string} entityClassName@ - SPS class where data should be loaded from.\r\n\t * @param {value} object= - Reference to the Entity object\r\n\t * @param {idType} enum= - Indicates whether ObjectId or ClassId used in getting data\r\n\t */\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxObjectLink', {\r\n\t\trequire: {\r\n\t\t\tmxFormCtrl: '?^mxForm',\r\n\t\t\tparentViewController: '?^^mxView',\r\n\t\t},\r\n\t\tbindings: {\r\n\t\t\tvalue: '<',\r\n\t\t\tvalueLabel: '@',\r\n\t\t\tlabel: '@',\r\n\t\t\ticon: '@',\r\n\t\t\tparentExpression: '@',\r\n\t\t\thideOnEmptyValue: '@',\r\n\t\t\treserveIconSpace: '@',\r\n\t\t\tentityClassName: '@',\r\n\t\t\tdisplayExpression: '@',\r\n\t\t\tdataQuery: '@query',\r\n\t\t\tlabelPosition: '@',\r\n\t\t\tvalueMinWidth: '@',\r\n\t\t\tlabelMinWidth: '@',\r\n\t\t\tlabelMaxWidth: '@',\r\n\t\t\tvalueColor: '@',\r\n\t\t\tlabelColor: '@',\r\n\t\t\ticonColor: '@',\r\n\t\t\tidType: '@?',\r\n\t\t\tdesignerMode: '`;\r\n\t\t\t},\r\n\t\t],\r\n\t});\r\n\r\n\tMxObjectLiteralCtrl.$inject = [\r\n\t\t'mx.SolutionBuilderAgent.EntityService',\r\n\t\t'mx.SolutionBuilderAgent.DialogOpenerService',\r\n\t\t'mx.SolutionBuilderAgent.mxColumnDefinitionService',\r\n\t\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n\t\t'$q',\r\n\t\t'$element',\r\n\t\t'$scope',\r\n\t\t'$timeout',\r\n\t];\r\n\r\n\tfunction MxObjectLiteralCtrl(mxEntityService, dialogOpener, columnDefinition, contentWidgetService, $q, $element, $scope, $timeout) {\r\n\t\tvar vm = this;\r\n\t\tvar widgetId;\r\n\t\tvar _value;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\t_value = vm.value;\r\n\r\n\t\t\tObject.defineProperty(vm, 'value', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn _value;\r\n\t\t\t\t},\r\n\t\t\t\tset: setValue,\r\n\t\t\t});\r\n\r\n\t\t\tvm.hideOnEmptyValueProcessed = vm.hideOnEmptyValue === 'true';\r\n\t\t\t$element.addClass('with-value');\r\n\r\n\t\t\tsetValue(_value);\r\n\r\n\t\t\twidgetId = contentWidgetService.getWidgetIdForControl(this, $scope);\r\n\t\t};\r\n\r\n\t\tvm.$postLink = function () {\r\n\t\t\t$element.addClass('mx-literal');\r\n\t\t};\r\n\r\n\t\tfunction onClick() {\r\n\t\t\tif (!vm.objDetails) {\r\n\t\t\t\tif (_value._type && _value._id) {\r\n\t\t\t\t\tvm.objDetails = {\r\n\t\t\t\t\t\tEntityType: _value._type,\r\n\t\t\t\t\t\tId: _value._id,\r\n\t\t\t\t\t};\r\n\t\t\t\t} else if (_value.Id && _value.EntityType) {\r\n\t\t\t\t\tvm.objDetails = _value;\r\n\t\t\t\t} else if (_value.$item && _value.$item.Id && _value.$item.EntityType) {\r\n\t\t\t\t\tvm.objDetails = _value.$item;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t$q(function (resolve) {\r\n\t\t\t\tif (vm.objDetails) {\r\n\t\t\t\t\tresolve(vm.objDetails);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn getFragmentDescriptorsInBatch(\r\n\t\t\t\t\t\tvm.entityClassName,\r\n\t\t\t\t\t\t_value.Id || _value.Value || _value,\r\n\t\t\t\t\t\tundefined,\r\n\t\t\t\t\t\tvm.idType === 'object',\r\n\t\t\t\t\t\tundefined,\r\n\t\t\t\t\t\tundefined,\r\n\t\t\t\t\t\tundefined,\r\n\t\t\t\t\t\tvm.dataQuery\r\n\t\t\t\t\t).then(function (objDetails) {\r\n\t\t\t\t\t\tvm.objDetails = objDetails;\r\n\t\t\t\t\t\tresolve(vm.objDetails);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}).then(function (objDetails) {\r\n\t\t\t\treturn dialogOpener.openPreview(objDetails, undefined, undefined, vm.parentViewController && vm.parentViewController.mxView);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction setValue(value) {\r\n\t\t\t_value = value;\r\n\t\t\tif (vm.hideOnEmptyValueProcessed) {\r\n\t\t\t\tif (_value) {\r\n\t\t\t\t\t$element.addClass('with-value');\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$element.removeClass('with-value');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvm.objDetails = null;\r\n\t\t\tvm.hasViews = undefined;\r\n\t\t\tif (_value) {\r\n\t\t\t\tif (typeof _value === 'object' && !_value.Id && !_value.Value) {\r\n\t\t\t\t\t_value = null;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.literalValue = {};\r\n\t\t\t\tif (vm.entityClassName || _value.EntityType || _value._type) {\r\n\t\t\t\t\tvm.literalValue.onClick = onClick;\r\n\t\t\t\t}\r\n\t\t\t\tif (vm.valueLabel) {\r\n\t\t\t\t\tvm.literalValue.text = vm.valueLabel;\r\n\t\t\t\t}\r\n\t\t\t} else if (value === null) {\r\n\t\t\t\tvm.literalValue = null;\r\n\t\t\t} else {\r\n\t\t\t\tvm.literalValue = undefined;\r\n\t\t\t}\r\n\t\t\t$timeout(function () {\r\n\t\t\t\tsetDisplayStrings((vm.mxFormCtrl && vm.mxFormCtrl.displayStrings) || null);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction getObjectInfo() {\r\n\t\t\tvar isService = false;\r\n\r\n\t\t\treturn (\r\n\t\t\t\t!vm.entityClassName && vm.dataQuery\r\n\t\t\t\t\t? columnDefinition.getGridDefinitionByName(vm.dataQuery).then(function (columnDef) {\r\n\t\t\t\t\t\t\tif (columnDef.SchemaClassName) {\r\n\t\t\t\t\t\t\t\tvm.entityClassName = columnDef.SchemaClassName;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tisService = true;\r\n\t\t\t\t\t\t\t\tvm.entityClassName = 'service_' + columnDef.Service;\r\n\t\t\t\t\t\t\t\treturn mxEntityService.getObjectInfo('service_' + columnDef.Service, _value.Id || _value.Value || _value);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t })\r\n\t\t\t\t\t: $q.when()\r\n\t\t\t)\r\n\t\t\t\t.then(function (objDetails) {\r\n\t\t\t\t\tif (isService) {\r\n\t\t\t\t\t\treturn objDetails;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (vm.entityClassName) {\r\n\t\t\t\t\t\treturn getFragmentDescriptorsInBatch(\r\n\t\t\t\t\t\t\tvm.entityClassName,\r\n\t\t\t\t\t\t\t_value.Id || _value.Value || _value,\r\n\t\t\t\t\t\t\tvm.parentExpression,\r\n\t\t\t\t\t\t\tvm.idType === 'object',\r\n\t\t\t\t\t\t\tvm.rootElement,\r\n\t\t\t\t\t\t\ttrue,\r\n\t\t\t\t\t\t\tvm.displayExpression,\r\n\t\t\t\t\t\t\tvm.dataQuery\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.then(function (objDetails) {\r\n\t\t\t\t\tif (vm.parentExpression) {\r\n\t\t\t\t\t\tvm.objDetails = null;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!objDetails) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvm.objDetails = objDetails;\r\n\t\t\t\t\tif (vm.literalValue) {\r\n\t\t\t\t\t\tvm.literalValue.onClick = onClick;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvm.literalValue = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvm.literalValue.text = objDetails.ParentDisplayString ? objDetails.ParentDisplayString + ' > ' + vm.objDetails.DisplayString : vm.objDetails.DisplayString;\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction setDisplayStrings(displayStrings) {\r\n\t\t\tif (vm.literalValue && !vm.literalValue.text) {\r\n\t\t\t\tvar displayString = _value._displayName ? _value._displayName : _value.DisplayString ? _value.DisplayString : _value.DisplayValue;\r\n\r\n\t\t\t\tif (!displayString) {\r\n\t\t\t\t\tif (displayStrings === null || vm.displayExpression || vm.parentExpression) {\r\n\t\t\t\t\t\t//Check vm.parentExpression to ignore displaystrings for hierarchical link\r\n\t\t\t\t\t\tgetObjectInfo();\r\n\t\t\t\t\t} else if (displayStrings) {\r\n\t\t\t\t\t\tvar result = displayStrings.filter(function (item) {\r\n\t\t\t\t\t\t\treturn item.Id === vm.value;\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (result.length === 1) {\r\n\t\t\t\t\t\t\tdisplayString = result[0].DisplayString;\r\n\t\t\t\t\t\t} else if (!result.length) {\r\n\t\t\t\t\t\t\tgetObjectInfo();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (displayString) {\r\n\t\t\t\t\tvm.literalValue.text = displayString;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction getFragmentDescriptorsInBatch(entityClassName, id, parentExpression, useObjectId, rootElement, includeRoot, displayExpression, dataQueryName) {\r\n\t\t\treturn mxEntityService.getFragmentDescriptorsInBatch(\r\n\t\t\t\tentityClassName,\r\n\t\t\t\tid,\r\n\t\t\t\tparentExpression,\r\n\t\t\t\tuseObjectId,\r\n\t\t\t\trootElement,\r\n\t\t\t\tincludeRoot,\r\n\t\t\t\twidgetId,\r\n\t\t\t\tdisplayExpression,\r\n\t\t\t\tdataQueryName\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc component\r\n\t * @name mx.agent:mxSchemaLink\r\n\t * @module mx.agent\r\n\t * @description Displays related object\r\n\t * @param {string} label@ - Optional. Label of the control.\r\n\t * @param {value} type= - Indicates what schema type used (class or type)\r\n\t */\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxSchemaLink', {\r\n\t\trequire: {\r\n\t\t\tmxFormCtrl: '?^mxForm',\r\n\t\t\tparentViewController: '?^^mxView',\r\n\t\t},\r\n\t\tbindings: {\r\n\t\t\tvalue: '<',\r\n\t\t\tvalueLabel: '@',\r\n\t\t\tlabel: '@',\r\n\t\t\ticon: '@',\r\n\t\t\thideOnEmptyValue: '@',\r\n\t\t\treserveIconSpace: '@',\r\n\t\t\tlabelPosition: '@',\r\n\t\t\tvalueMinWidth: '@',\r\n\t\t\tlabelMinWidth: '@',\r\n\t\t\tlabelMaxWidth: '@',\r\n\t\t\tvalueColor: '@',\r\n\t\t\tdesignerMode: ''\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t],\r\n\t});\r\n\r\n\tMxSchemaLiteralCtrl.$inject = ['mx.SolutionBuilderAgent.DialogOpenerService', 'mx.SolutionBuilderAgent.SchemaService', '$element', '$q'];\r\n\r\n\tfunction MxSchemaLiteralCtrl(dialogOpener, schemaService, $element, $q) {\r\n\t\tvar vm = this;\r\n\t\tvar displayStrings, _value;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\t_value = vm.value;\r\n\r\n\t\t\tObject.defineProperty(vm, 'displayStrings', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn displayStrings;\r\n\t\t\t\t},\r\n\t\t\t\tset: setDisplayStrings,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(vm, 'value', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn _value;\r\n\t\t\t\t},\r\n\t\t\t\tset: setValue,\r\n\t\t\t});\r\n\r\n\t\t\tsetValue(_value);\r\n\t\t};\r\n\r\n\t\tvm.$postLink = function () {\r\n\t\t\t$element.addClass('mx-literal');\r\n\t\t\tvm.displayStrings = (vm.mxFormCtrl && vm.mxFormCtrl.displayStrings) || null;\r\n\t\t};\r\n\r\n\t\tfunction onClick() {\r\n\t\t\tvar promise = vm.objDetails ? $q.when() : getObjectInfo(true);\r\n\t\t\tpromise.then(function () {\r\n\t\t\t\tvar obj = {\r\n\t\t\t\t\t_id: vm.objDetails.InternalName,\r\n\t\t\t\t\t_name: vm.objDetails.DisplayName,\r\n\t\t\t\t\t_type: vm.type === 'class' ? 'service_6886d8dc-51f8-e611-9382-f079595b3ec7' : 'service_7b83787c-81f7-e611-9382-f079595b3ec7',\r\n\t\t\t\t};\r\n\t\t\t\tdialogOpener.openPreview(obj, undefined, undefined, vm.parentViewController && vm.parentViewController.mxView);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction setValue(value) {\r\n\t\t\t_value = value;\r\n\t\t\tvm.objDetails = null;\r\n\t\t\tvm.hasViews = undefined;\r\n\t\t\tif (_value) {\r\n\t\t\t\tif (typeof _value === 'object' && !_value.Id && !_value.Value) {\r\n\t\t\t\t\t_value = null;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.literalValue = {};\r\n\t\t\t\tif (vm.type) {\r\n\t\t\t\t\tvm.literalValue.onClick = onClick;\r\n\t\t\t\t}\r\n\t\t\t\tif (vm.valueLabel) {\r\n\t\t\t\t\tvm.literalValue.text = vm.valueLabel;\r\n\t\t\t\t}\r\n\t\t\t} else if (value === null) {\r\n\t\t\t\tvm.literalValue = null;\r\n\t\t\t} else {\r\n\t\t\t\tvm.literalValue = undefined;\r\n\t\t\t}\r\n\r\n\t\t\tsetDisplayStrings(displayStrings);\r\n\t\t}\r\n\r\n\t\tfunction getObjectInfo(skipLiteralValue) {\r\n\t\t\tvar promise = vm.type === 'class' ? schemaService.getClassInfoById(_value) : schemaService.getTypes();\r\n\t\t\treturn promise.then(function (values) {\r\n\t\t\t\tif (!values) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.objDetails =\r\n\t\t\t\t\tvm.type === 'class'\r\n\t\t\t\t\t\t? values\r\n\t\t\t\t\t\t: values.filter(function (item) {\r\n\t\t\t\t\t\t\t\treturn item.Id.toLowerCase() === _value.toLowerCase();\r\n\t\t\t\t\t\t })[0];\r\n\r\n\t\t\t\tif (skipLiteralValue) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (vm.literalValue) {\r\n\t\t\t\t\tvm.literalValue.onClick = onClick;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvm.literalValue = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.literalValue.text = vm.objDetails.DisplayName;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction setDisplayStrings(value) {\r\n\t\t\tdisplayStrings = value;\r\n\t\t\tif (vm.literalValue && !vm.literalValue.text) {\r\n\t\t\t\tvar displayString = _value._displayName ? _value._displayName : _value.DisplayString ? _value.DisplayString : _value.DisplayValue;\r\n\r\n\t\t\t\tif (!displayString) {\r\n\t\t\t\t\tif (displayStrings === null) {\r\n\t\t\t\t\t\tgetObjectInfo();\r\n\t\t\t\t\t} else if (displayStrings) {\r\n\t\t\t\t\t\tvar result = displayStrings.filter(function (item) {\r\n\t\t\t\t\t\t\treturn item.Id === vm.value;\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (result.length === 1) {\r\n\t\t\t\t\t\t\tdisplayString = result[0].DisplayString;\r\n\t\t\t\t\t\t} else if (!result.length) {\r\n\t\t\t\t\t\t\tgetObjectInfo();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (displayString) {\r\n\t\t\t\t\tvm.literalValue.text = displayString;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('m42DashboardWidgetCustom', {\r\n\t\trequire: {\r\n\t\t\tgridsterItem: '^^gridsterItem',\r\n\t\t},\r\n\t\tbindings: {\r\n\t\t\tm42Params: '=',\r\n\t\t\tm42WidgetId: '=?',\r\n\t\t},\r\n\t\tcontrollerAs: 'vm',\r\n\t\tcontroller: M42DashboardWidgetCustomCtrl,\r\n\t\ttemplate: '',\r\n\t});\r\n\r\n\tM42DashboardWidgetCustomCtrl.$inject = [\r\n\t\t'$element',\r\n\t\t'$compile',\r\n\t\t'$rootScope',\r\n\t\t'$scope',\r\n\t\t'mx.SolutionBuilderAgent.DashboardWidgetDataService',\r\n\t\t'mx.shell.ContextService',\r\n\t\t'mx.shell.EventService',\r\n\t];\r\n\r\n\tfunction M42DashboardWidgetCustomCtrl($element, $compile, $rootScope, $scope, dashboardDataService, contextService, eventService) {\r\n\t\tvar vm = this;\r\n\t\tvar localScope, contentNoTitleClass, contentTemplate;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.title = vm.m42Params.title;\r\n\r\n\t\t\tcontentNoTitleClass = vm.title ? '' : ' widget-content-no-title ';\r\n\r\n\t\t\tvm.isDynamicHeight = vm.m42Params.class.indexOf('dynamic-height') >= 0;\r\n\t\t\tvm.isTransparentBackground = vm.m42Params.class.indexOf('transparent-background') >= 0;\r\n\r\n\t\t\tcontentTemplate =\r\n\t\t\t\t'
' +\r\n\t\t\t\tvm.m42Params.title +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\tdashboardDataService.getWidgetContent(vm.m42Params.dashboardId, vm.m42WidgetId) +\r\n\t\t\t\t'
';\r\n\r\n\t\t\tcompile(contentTemplate);\r\n\r\n\t\t\tif (vm.isDynamicHeight) {\r\n\t\t\t\tvm.widgetContent = $element[0].querySelector('.widget-content');\r\n\t\t\t\tlet oldSizeY = 0;\r\n\t\t\t\tvar _handleResize = $.debounce(300, function () {\r\n\t\t\t\t\tif (!$(vm.widgetContent).is(':visible')) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst height = vm.widgetContent.scrollHeight;\r\n\t\t\t\t\tif (!height) {\r\n\t\t\t\t\t\t_handleResize();\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst borderSize = 2;\r\n\t\t\t\t\tconst contentHeight = height; // - titleHeight;\r\n\t\t\t\t\tconst firstRowHeight = 130 - borderSize; // - titleHeight; // 130 instead of 160 (as set in config) - some bug in gridster or in m42dashboard\r\n\t\t\t\t\tconst rowHeightOption = 160; // 'default rowHeight of m42Dashboard' - sizeOfBorder - sizeIfTitle\r\n\r\n\t\t\t\t\tvm.gridsterItem.sizeY = contentHeight > firstRowHeight ? Math.floor((contentHeight - firstRowHeight - 1) / rowHeightOption) + 2 : 1;\r\n\t\t\t\t\tif (vm.gridsterItem.sizeY !== oldSizeY) {\r\n\t\t\t\t\t\toldSizeY = vm.gridsterItem.sizeY;\r\n\t\t\t\t\t\t$scope.$evalAsync();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\teventService.subscribeTo(mx.shell.EventCodes.LayoutChanged, _handleResize, $scope);\r\n\t\t\t\t$scope.$watch(_handleResize);\r\n\t\t\t\t$scope.$evalAsync(function () {\r\n\t\t\t\t\t_handleResize();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (vm.isTransparentBackground) {\r\n\t\t\t\tif (vm.gridsterItem.$element) {\r\n\t\t\t\t\tvm.gridsterItem.$element.addClass('transparent-background');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar elementWatcher = $scope.$watch(\r\n\t\t\t\t\t\tfunction () {\r\n\t\t\t\t\t\t\treturn vm.gridsterItem.$element;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfunction (element) {\r\n\t\t\t\t\t\t\tif (element) {\r\n\t\t\t\t\t\t\t\tvm.gridsterItem.$element.addClass('transparent-background');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telementWatcher();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction compile(tpl) {\r\n\t\t\tdestroy();\r\n\t\t\tvar _elem = angular.element(tpl);\r\n\r\n\t\t\t$element.append(_elem);\r\n\r\n\t\t\tlocalScope = $rootScope.$new(false, $scope);\r\n\t\t\tlocalScope.vm = {};\r\n\r\n\t\t\tlocalScope.vm.dataModel = contextService.val('SolutionBuilderAgent.LandingPageDataModel');\r\n\t\t\tlocalScope.vm.title = vm.m42Params.title;\r\n\r\n\t\t\t$compile(_elem)(localScope);\r\n\t\t\t$element.on('$destroy', destroy);\r\n\t\t}\r\n\r\n\t\tfunction destroy() {\r\n\t\t\tif (localScope) {\r\n\t\t\t\tlocalScope.$destroy();\r\n\t\t\t\t$element.empty();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxAudienceInfo', {\r\n\t\tbindings: {\r\n\t\t\tvalue: '=?',\r\n\t\t\tvalue2: '=?',\r\n\t\t\tvalue3: '=?',\r\n\t\t\tvalue4: '=?',\r\n\t\t},\r\n\t\tcontroller: MxAudienceInfoCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-audience-info/mx-audience-info.html',\r\n\t});\r\n\r\n\tMxAudienceInfoCtrl.$inject = ['mx.SolutionBuilderAgent.Http', 'mx.internationalization'];\r\n\r\n\tfunction MxAudienceInfoCtrl(http, i18n) {\r\n\t\tvar vm = this;\r\n\t\tvm.showAudience = false;\r\n\t\tvm.showDetails = true;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.i18n = i18n.get('solutionBuilderAgent.components.mx-audience-info');\r\n\t\t\tvm.i18n.nobody = vm.i18n.nobody || i18n.get('solutionBuilderAgent.components.mx-audience-info.nobody');\r\n\t\t\tvm.title = vm.i18n.showAudience;\r\n\t\t};\r\n\r\n\t\tvm.toggleAudience = function () {\r\n\t\t\tvm.showAudience = !vm.showAudience;\r\n\t\t\tvm.title = !vm.showAudience ? vm.i18n.showAudience : vm.i18n.hideAudience;\r\n\t\t\tif (vm.data === undefined) {\r\n\t\t\t\thttp.get('api/Audience/' + vm.value).then(function (result) {\r\n\t\t\t\t\tvm.data = result.Data;\r\n\t\t\t\t\tvm.value2 = result.Data.length === 0;\r\n\t\t\t\t\tvm.value3 = result.Unrestricted;\r\n\t\t\t\t\tvm.value4 = result.StrictAdminControl;\r\n\t\t\t\t\tinitData(vm.data);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction initData(data) {\r\n\t\t\tvar location = {\r\n\t\t\t\tId: '4',\r\n\t\t\t\tDisplayString: '4',\r\n\t\t\t\tName: vm.i18n.locations,\r\n\t\t\t};\r\n\r\n\t\t\tvar orgUnit = {\r\n\t\t\t\tId: '3',\r\n\t\t\t\tDisplayString: '3',\r\n\t\t\t\tName: vm.i18n['org-units'],\r\n\t\t\t};\r\n\r\n\t\t\tvar user = {\r\n\t\t\t\tId: '2',\r\n\t\t\t\tDisplayString: '2',\r\n\t\t\t\tName: vm.i18n.users,\r\n\t\t\t};\r\n\r\n\t\t\tvar role = {\r\n\t\t\t\tId: '1',\r\n\t\t\t\tDisplayString: '1',\r\n\t\t\t\tName: vm.i18n.roles,\r\n\t\t\t};\r\n\t\t\tvar types = [location, orgUnit, user, role];\r\n\t\t\tvm.dataByType = [];\r\n\r\n\t\t\tdata.forEach(function (obj) {\r\n\t\t\t\tswitch (obj.EntityType) {\r\n\t\t\t\t\tcase 'SPSSecurityTypeRole':\r\n\t\t\t\t\t\tvm.dataByType.push(angular.extend({}, obj, { Parent: '1' }));\r\n\t\t\t\t\t\trole.show = 1;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'SPSUserType':\r\n\t\t\t\t\t\tvm.dataByType.push(angular.extend({}, obj, { Parent: '2' }));\r\n\t\t\t\t\t\tuser.show = 1;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'SPSOrgUnitType':\r\n\t\t\t\t\t\tvm.dataByType.push(angular.extend({}, obj, { Parent: '3' }));\r\n\t\t\t\t\t\torgUnit.show = 1;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'SPSLocationType':\r\n\t\t\t\t\t\tvm.dataByType.push(angular.extend({}, obj, { Parent: '4' }));\r\n\t\t\t\t\t\tlocation.show = 1;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\ttypes.forEach(function (t) {\r\n\t\t\t\tif (t.show) {\r\n\t\t\t\t\tvm.dataByType.push(t);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvm.toggleDetails = function () {\r\n\t\t\tvm.showDetails = !vm.showDetails;\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').directive('mxBrokenControlStub', function mxBrokenControlStubDirective() {\r\n\t\treturn { template: '
Control does not exist
' };\r\n\t});\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxCallServiceButton', {\r\n\t\tbindings: {\r\n\t\t\tsource: '@',\r\n\t\t\tmodel: '=?',\r\n\t\t\tsourceState: '@',\r\n\t\t\tlabel: '@',\r\n\t\t\ticon: '@',\r\n\t\t\tshowLoading: '@',\r\n\t\t\tdisabled: '=ngDisabled',\r\n\t\t\trunOnInit: '@?',\r\n\t\t},\r\n\t\tcontroller: MxCallServiceButtonCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-call-service-button/mx-call-service-button.html',\r\n\t});\r\n\r\n\tMxCallServiceButtonCtrl.$inject = ['$scope', '$timeout', 'mx.SolutionBuilderAgent.DataModelService'];\r\n\r\n\tfunction MxCallServiceButtonCtrl($scope, $timeout, dataModelService) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.showLoading = vm.showLoading === 'true';\r\n\t\t\tvm.callServiceClick = callServiceClick;\r\n\t\t\tvm.loadingState = {\r\n\t\t\t\tLoading: 1,\r\n\t\t\t\tDefault: 2,\r\n\t\t\t};\r\n\r\n\t\t\tvm.state = vm.loadingState.Default;\r\n\r\n\t\t\tif (vm.runOnInit === 'true') {\r\n\t\t\t\tcallServiceClick();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t$scope.$watch('vm.sourceState', function () {\r\n\t\t\tif (sourceStateIs(mx.SolutionBuilderAgent.SourceLoadingStatus.LOADED) || sourceStateIs(mx.SolutionBuilderAgent.SourceLoadingStatus.REJECTED)) {\r\n\t\t\t\t$timeout(function () {\r\n\t\t\t\t\tvm.state = vm.loadingState.Default;\r\n\t\t\t\t}, 400);\r\n\t\t\t} else if (sourceStateIs(mx.SolutionBuilderAgent.SourceLoadingStatus.LOADING)) {\r\n\t\t\t\tvm.state = vm.loadingState.Loading;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn vm;\r\n\r\n\t\tfunction callServiceClick(event) {\r\n\t\t\tif (event) {\r\n\t\t\t\tevent.stopPropagation();\r\n\t\t\t}\r\n\t\t\tdataModelService.reloadSourceByPath(vm.source, vm.model, vm.model.Context.WidgetId);\r\n\t\t}\r\n\r\n\t\tfunction sourceStateIs(value) {\r\n\t\t\treturn Number(vm.sourceState) === value;\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t// TODO: Seems it can be moved to mxComponents\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxCarousel', {\r\n\t\tbindings: {\r\n\t\t\tdata: '<',\r\n\t\t\tsubjectFieldName: '@',\r\n\t\t\tbodyFieldName: '@',\r\n\t\t\thidePaging: '@',\r\n\t\t\tdisablePaging: '@',\r\n\t\t\tparentControl: '=?',\r\n\t\t},\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-carousel/mx-carousel.html',\r\n\t\tcontrollerAs: 'vm',\r\n\t\tcontroller: MxCarouselCtrl,\r\n\t});\r\n\r\n\tMxCarouselCtrl.$inject = ['mx.shell.InternationalizationService'];\r\n\r\n\tfunction MxCarouselCtrl(i18nService) {\r\n\t\tvar vm = this;\r\n\t\tvm.isRtl = i18nService.currentLanguage.isRightToLeft;\r\n\t\tvm._data = [];\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.currentPosiiton = 0;\r\n\t\t};\r\n\r\n\t\tObject.defineProperty(vm, 'isPagingDisabled', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn vm.disablePaging === 'true';\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(vm, 'data', {\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tif (!Array.isArray(newValue)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (vm._data.length !== newValue.length && vm.currentPosiiton !== 0) {\r\n\t\t\t\t\tvm.changeSlide(0);\r\n\t\t\t\t}\r\n\t\t\t\tvm._data = [...newValue];\r\n\t\t\t\tif (vm.isRtl) {\r\n\t\t\t\t\tvm._data = vm._data.reverse();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tget: function () {\r\n\t\t\t\treturn vm._data;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tvm.changeSlide = function (newPosition) {\r\n\t\t\tvm.offsetX = (((vm.isRtl ? 1 : -1) * newPosition) / vm.data.length) * 100;\r\n\t\t\tvm.currentPosiiton = newPosition;\r\n\t\t};\r\n\r\n\t\tvm.nextSlide = function () {\r\n\t\t\tvm.changeSlide((vm.currentPosiiton + 1) % vm.data.length);\r\n\t\t};\r\n\r\n\t\tvm.prevSlide = function () {\r\n\t\t\tvm.changeSlide(vm.currentPosiiton === 0 ? vm.data.length - 1 : vm.currentPosiiton - 1);\r\n\t\t};\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').directive('mxAreaChart', MxAreaChartDirective);\r\n\r\n\tMxAreaChartDirective.$inject = ['$injector', 'mx.SolutionBuilderAgent.BaseChartService'];\r\n\r\n\tfunction MxAreaChartDirective($injector, baseChartService) {\r\n\t\tvar directive = baseChartService.mxBaseChartDirective($injector);\r\n\r\n\t\tdirective.controller = MxAreaChartCtrl;\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tMxAreaChartCtrl.$inject = ['$injector', '$controller', '$scope', '$attrs', '$element', 'mx.SolutionBuilderAgent.BaseChartService'];\r\n\tfunction MxAreaChartCtrl($injector, $controller, $scope, $attrs, $element, baseChartService) {\r\n\t\tvar vm = $controller('mx.SolutionBuilderAgent.MxBaseChartController', {\r\n\t\t\t$injector: $injector,\r\n\t\t\t$scope: $scope,\r\n\t\t\t$attrs: $attrs,\r\n\t\t\t$element: $element,\r\n\t\t});\r\n\r\n\t\tvm.getChartConfig = function () {\r\n\t\t\treturn baseChartService.getBaseChartConfig(vm).then(function (baseConfig) {\r\n\t\t\t\tvar config = angular.extend({}, baseConfig);\r\n\r\n\t\t\t\tconfig.series.forEach((serie) => {\r\n\t\t\t\t\tangular.extend(serie, {\r\n\t\t\t\t\t\ttype: 'area',\r\n\t\t\t\t\t\tdataLabels: {\r\n\t\t\t\t\t\t\tenabled: Boolean(vm.labelsFormat),\r\n\t\t\t\t\t\t\tformat: vm.labelsFormat || '{y}',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn config;\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').directive('mxBarChart', MxBarChartDirective);\r\n\r\n\tMxBarChartDirective.$inject = ['$injector', 'mx.SolutionBuilderAgent.BaseChartService'];\r\n\r\n\tfunction MxBarChartDirective($injector, baseChartService) {\r\n\t\tvar directive = baseChartService.mxBaseChartDirective($injector);\r\n\t\tdirective.bindToController.showOnlyTopBars = '@';\r\n\r\n\t\tdirective.controller = MxBarChartCtrl;\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tMxBarChartCtrl.$inject = ['$injector', '$controller', '$scope', '$attrs', '$element', 'mx.SolutionBuilderAgent.BaseChartService'];\r\n\tfunction MxBarChartCtrl($injector, $controller, $scope, $attrs, $element, baseChartService) {\r\n\t\tvar vm = $controller('mx.SolutionBuilderAgent.MxBaseChartController', {\r\n\t\t\t$injector: $injector,\r\n\t\t\t$scope: $scope,\r\n\t\t\t$attrs: $attrs,\r\n\t\t\t$element: $element,\r\n\t\t});\r\n\r\n\t\tvar minHeightOfSeries = 30;\r\n\r\n\t\tvm.getChartConfig = function () {\r\n\t\t\treturn baseChartService.getBaseChartConfig(vm).then(function (baseConfig) {\r\n\t\t\t\tvar config = angular.extend({}, baseConfig);\r\n\r\n\t\t\t\tconfig.series.forEach((serie) => {\r\n\t\t\t\t\tangular.extend(serie, {\r\n\t\t\t\t\t\ttype: 'bar',\r\n\t\t\t\t\t\tdataLabels: {\r\n\t\t\t\t\t\t\tenabled: Boolean(vm.labelsFormat),\r\n\t\t\t\t\t\t\tformat: vm.labelsFormat || '',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (vm.showOnlyTopBars === 'true') {\r\n\t\t\t\t\tvar dataConfig = angular.copy(config.series[0].data);\r\n\t\t\t\t\tvar numOfSeriesToShow = 0;\r\n\r\n\t\t\t\t\tconfig.responsive.rules.push({\r\n\t\t\t\t\t\tcondition: {\r\n\t\t\t\t\t\t\tcallback: function () {\r\n\t\t\t\t\t\t\t\tvar newNumOfSeriesToShow = Math.floor(this.chartHeight / minHeightOfSeries);\r\n\t\t\t\t\t\t\t\tif (newNumOfSeriesToShow === numOfSeriesToShow) {\r\n\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tnumOfSeriesToShow = newNumOfSeriesToShow;\r\n\r\n\t\t\t\t\t\t\t\tif (this.series[0].data.length !== numOfSeriesToShow) {\r\n\t\t\t\t\t\t\t\t\tthis.series[0].setData(\r\n\t\t\t\t\t\t\t\t\t\tdataConfig.filter(function (data, index) {\r\n\t\t\t\t\t\t\t\t\t\t\treturn index < numOfSeriesToShow;\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn config;\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').directive('mxColumnChart', MxColumnChartDirective);\r\n\r\n\tMxColumnChartDirective.$inject = ['$injector', 'mx.SolutionBuilderAgent.BaseChartService'];\r\n\r\n\tfunction MxColumnChartDirective($injector, baseChartService) {\r\n\t\tvar directive = baseChartService.mxBaseChartDirective($injector);\r\n\r\n\t\tdirective.bindToController.showOnlyTopColumns = '@';\r\n\t\tdirective.controller = MxColumnChartCtrl;\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tMxColumnChartCtrl.$inject = ['$injector', '$controller', '$scope', '$attrs', '$element', 'mx.SolutionBuilderAgent.BaseChartService'];\r\n\tfunction MxColumnChartCtrl($injector, $controller, $scope, $attrs, $element, baseChartService) {\r\n\t\tvar vm = $controller('mx.SolutionBuilderAgent.MxBaseChartController', {\r\n\t\t\t$injector: $injector,\r\n\t\t\t$scope: $scope,\r\n\t\t\t$attrs: $attrs,\r\n\t\t\t$element: $element,\r\n\t\t});\r\n\t\tvar minWidthOfSeries = 30;\r\n\r\n\t\tvm.getChartConfig = function () {\r\n\t\t\treturn baseChartService.getBaseChartConfig(vm).then(function (baseConfig) {\r\n\t\t\t\tvar config = angular.extend({}, baseConfig);\r\n\t\t\t\tconfig.series.forEach((serie) => {\r\n\t\t\t\t\tangular.extend(serie, {\r\n\t\t\t\t\t\ttype: 'column',\r\n\t\t\t\t\t\tdataLabels: {\r\n\t\t\t\t\t\t\tenabled: Boolean(vm.labelsFormat),\r\n\t\t\t\t\t\t\tformat: vm.labelsFormat || '',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (vm.showOnlyTopColumns === 'true') {\r\n\t\t\t\t\tvar dataConfig = angular.copy(config.series[0].data);\r\n\t\t\t\t\tvar numOfSeriesToShow = 0;\r\n\r\n\t\t\t\t\tconfig.responsive.rules.push({\r\n\t\t\t\t\t\tcondition: {\r\n\t\t\t\t\t\t\tcallback: function () {\r\n\t\t\t\t\t\t\t\tvar newNumOfSeriesToShow = Math.floor(this.chartWidth / minWidthOfSeries);\r\n\t\t\t\t\t\t\t\tif (newNumOfSeriesToShow === numOfSeriesToShow) {\r\n\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tnumOfSeriesToShow = newNumOfSeriesToShow;\r\n\r\n\t\t\t\t\t\t\t\tif (this.series[0].data.length !== numOfSeriesToShow) {\r\n\t\t\t\t\t\t\t\t\tthis.series[0].setData(\r\n\t\t\t\t\t\t\t\t\t\tdataConfig.filter(function (data, index) {\r\n\t\t\t\t\t\t\t\t\t\t\treturn index < numOfSeriesToShow;\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn config;\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').directive('mxLineChart', MxLineChartDirective);\r\n\r\n\tMxLineChartDirective.$inject = ['$injector', 'mx.SolutionBuilderAgent.BaseChartService'];\r\n\r\n\tfunction MxLineChartDirective($injector, baseChartService) {\r\n\t\tvar directive = baseChartService.mxBaseChartDirective($injector);\r\n\r\n\t\tdirective.controller = MxLineChartCtrl;\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tMxLineChartCtrl.$inject = ['$injector', '$controller', '$scope', '$attrs', '$element', 'mx.SolutionBuilderAgent.BaseChartService'];\r\n\tfunction MxLineChartCtrl($injector, $controller, $scope, $attrs, $element, baseChartService) {\r\n\t\tvar vm = $controller('mx.SolutionBuilderAgent.MxBaseChartController', {\r\n\t\t\t$injector: $injector,\r\n\t\t\t$scope: $scope,\r\n\t\t\t$attrs: $attrs,\r\n\t\t\t$element: $element,\r\n\t\t});\r\n\r\n\t\tvm.getChartConfig = function () {\r\n\t\t\treturn baseChartService.getBaseChartConfig(vm).then(function (baseConfig) {\r\n\t\t\t\tvar config = angular.extend({}, baseConfig);\r\n\r\n\t\t\t\tconfig.series.forEach((serie) => {\r\n\t\t\t\t\tangular.extend(serie, {\r\n\t\t\t\t\t\ttype: 'line',\r\n\t\t\t\t\t\tdataLabels: {\r\n\t\t\t\t\t\t\tenabled: Boolean(vm.labelsFormat),\r\n\t\t\t\t\t\t\tformat: vm.labelsFormat || '',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn config;\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').directive('mxPieChart', MxPieChartDirective);\r\n\r\n\tMxPieChartDirective.$inject = ['$injector', 'mx.SolutionBuilderAgent.BaseChartService'];\r\n\r\n\tfunction MxPieChartDirective($injector, baseChartService) {\r\n\t\tvar directive = baseChartService.mxBaseChartDirective($injector);\r\n\r\n\t\tdirective.controller = MxPieChartCtrl;\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tMxPieChartCtrl.$inject = ['$injector', '$controller', '$scope', '$attrs', '$element', 'mx.SolutionBuilderAgent.BaseChartService'];\r\n\tfunction MxPieChartCtrl($injector, $controller, $scope, $attrs, $element, baseChartService) {\r\n\t\tvar vm = $controller('mx.SolutionBuilderAgent.MxBaseChartController', {\r\n\t\t\t$injector: $injector,\r\n\t\t\t$scope: $scope,\r\n\t\t\t$attrs: $attrs,\r\n\t\t\t$element: $element,\r\n\t\t});\r\n\r\n\t\tvm.getChartConfig = function () {\r\n\t\t\treturn baseChartService.getBaseChartConfig(vm).then(function (baseConfig) {\r\n\t\t\t\tvar config = angular.extend({}, baseConfig);\r\n\t\t\t\tconfig.chart.type = 'pie';\r\n\t\t\t\tconfig.plotOptions.pie = {\r\n\t\t\t\t\tdataLabels: {\r\n\t\t\t\t\t\tenabled: Boolean(vm.labelsFormat),\r\n\t\t\t\t\t\tformat: vm.labelsFormat || undefined,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tshowInLegend: vm.legendVisible === 'true',\r\n\t\t\t\t};\r\n\t\t\t\treturn config;\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').directive('mxStackedBarChart', MxStackedBarChartDirective);\r\n\r\n\tMxStackedBarChartDirective.$inject = ['$injector', 'mx.SolutionBuilderAgent.BaseChartService'];\r\n\r\n\tfunction MxStackedBarChartDirective($injector, baseChartService) {\r\n\t\tvar directive = baseChartService.mxBaseChartDirective($injector);\r\n\r\n\t\tdirective.controller = MxStackedBarChartCtrl;\r\n\t\tdirective.bindToController.showOnlyTopBars = '@';\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tMxStackedBarChartCtrl.$inject = ['$injector', '$controller', '$scope', '$attrs', '$element', 'mx.SolutionBuilderAgent.BaseChartService'];\r\n\r\n\tfunction MxStackedBarChartCtrl($injector, $controller, $scope, $attrs, $element, baseChartService) {\r\n\t\tvar vm = $controller('mx.SolutionBuilderAgent.MxBaseChartController', {\r\n\t\t\t$injector: $injector,\r\n\t\t\t$scope: $scope,\r\n\t\t\t$attrs: $attrs,\r\n\t\t\t$element: $element,\r\n\t\t});\r\n\r\n\t\tvar minHeightOfSeries = 30;\r\n\r\n\t\tvm.getChartConfig = function () {\r\n\t\t\treturn baseChartService.getBaseChartConfig(vm).then(function (baseConfig) {\r\n\t\t\t\tvar config = angular.extend({}, baseConfig);\r\n\t\t\t\tconfig.plotOptions = {\r\n\t\t\t\t\tseries: {\r\n\t\t\t\t\t\tstacking: 'normal',\r\n\t\t\t\t\t\tevents: {\r\n\t\t\t\t\t\t\tclick: function () {\r\n\t\t\t\t\t\t\t\tvar hoveredChart = this.data.filter(function (item) {\r\n\t\t\t\t\t\t\t\t\treturn item.state === 'hover';\r\n\t\t\t\t\t\t\t\t})[0];\r\n\t\t\t\t\t\t\t\tvm.onChartClick(hoveredChart);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvm.reorderAllStackedSeriesAsFirstSeries(config.series);\r\n\r\n\t\t\t\tconfig.series.forEach((serie) => (serie.type = 'bar'));\r\n\r\n\t\t\t\tif (vm.showOnlyTopBars === 'true') {\r\n\t\t\t\t\tvar dataConfig = angular.copy(config.series);\r\n\t\t\t\t\tvar numOfSeriesToShow = 0;\r\n\r\n\t\t\t\t\tconfig.responsive.rules.push({\r\n\t\t\t\t\t\tcondition: {\r\n\t\t\t\t\t\t\tcallback: function () {\r\n\t\t\t\t\t\t\t\tvar newNumOfSeriesToShow = Math.floor(this.chartHeight / minHeightOfSeries);\r\n\t\t\t\t\t\t\t\tif (newNumOfSeriesToShow === numOfSeriesToShow) {\r\n\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tnumOfSeriesToShow = newNumOfSeriesToShow;\r\n\r\n\t\t\t\t\t\t\t\tthis.series.forEach(function (serie, index) {\r\n\t\t\t\t\t\t\t\t\tif (serie.data.length !== numOfSeriesToShow) {\r\n\t\t\t\t\t\t\t\t\t\tserie.setData(\r\n\t\t\t\t\t\t\t\t\t\t\tdataConfig[index].data.filter(function (data, index) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn index < numOfSeriesToShow;\r\n\t\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn config;\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').directive('mxStackedColumnChart', MxStackedColumnChartDirective);\r\n\r\n\tMxStackedColumnChartDirective.$inject = ['$injector', 'mx.SolutionBuilderAgent.BaseChartService'];\r\n\r\n\tfunction MxStackedColumnChartDirective($injector, baseChartService) {\r\n\t\tvar directive = baseChartService.mxBaseChartDirective($injector);\r\n\r\n\t\tdirective.controller = MxStackedColumnChartCtrl;\r\n\t\tdirective.bindToController.showOnlyTopColumns = '@';\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tMxStackedColumnChartCtrl.$inject = ['$injector', '$controller', '$scope', '$attrs', '$element', 'mx.SolutionBuilderAgent.BaseChartService'];\r\n\r\n\tfunction MxStackedColumnChartCtrl($injector, $controller, $scope, $attrs, $element, baseChartService) {\r\n\t\tvar vm = $controller('mx.SolutionBuilderAgent.MxBaseChartController', {\r\n\t\t\t$injector: $injector,\r\n\t\t\t$scope: $scope,\r\n\t\t\t$attrs: $attrs,\r\n\t\t\t$element: $element,\r\n\t\t});\r\n\r\n\t\tvar minWidthOfSeries = 20;\r\n\r\n\t\tvm.getChartConfig = function () {\r\n\t\t\treturn baseChartService.getBaseChartConfig(vm).then(function (baseConfig) {\r\n\t\t\t\tvar config = angular.extend({}, baseConfig);\r\n\t\t\t\tconfig.plotOptions = {\r\n\t\t\t\t\tseries: {\r\n\t\t\t\t\t\tstacking: 'normal',\r\n\t\t\t\t\t\tevents: {\r\n\t\t\t\t\t\t\tclick: function () {\r\n\t\t\t\t\t\t\t\tvar hoveredChart = this.data.filter(function (item) {\r\n\t\t\t\t\t\t\t\t\treturn item.state === 'hover';\r\n\t\t\t\t\t\t\t\t})[0];\r\n\t\t\t\t\t\t\t\tvm.onChartClick(hoveredChart, hoveredChart.series);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// old tooltip function is used instead of new one in base-chart. It is used to avoid breaking change whit tooltip like {x} - {y}\r\n\t\t\t\tconfig.tooltip = {\r\n\t\t\t\t\tformatter: function () {\r\n\t\t\t\t\t\tvar y = this.y % 1 === 0 ? this.y : Number(this.y).toFixed(2);\r\n\t\t\t\t\t\tvar x = this.series.name;\r\n\t\t\t\t\t\tvar s = this.key;\r\n\r\n\t\t\t\t\t\tif (typeof vm.tooltipFormat === 'string' && vm.tooltipFormat.length > 0) {\r\n\t\t\t\t\t\t\treturn vm.tooltipFormat.replace(/{x}/g, x).replace(/{y}/g, y).replace(/{s}/g, s);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\treturn x + ' — ' + y;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvm.reorderAllStackedSeriesAsFirstSeries(config.series);\r\n\r\n\t\t\t\tconfig.series.forEach((serie) => (serie.type = 'column'));\r\n\r\n\t\t\t\tif (vm.showOnlyTopColumns === 'true') {\r\n\t\t\t\t\tvar dataConfig = angular.copy(config.series);\r\n\t\t\t\t\tvar numOfSeriesToShow = 0;\r\n\r\n\t\t\t\t\tconfig.responsive.rules.push({\r\n\t\t\t\t\t\tcondition: {\r\n\t\t\t\t\t\t\tcallback: function () {\r\n\t\t\t\t\t\t\t\tvar newNumOfSeriesToShow = Math.floor(this.chartWidth / minWidthOfSeries);\r\n\t\t\t\t\t\t\t\tif (newNumOfSeriesToShow === numOfSeriesToShow) {\r\n\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tnumOfSeriesToShow = newNumOfSeriesToShow;\r\n\r\n\t\t\t\t\t\t\t\tthis.series.forEach(function (serie, index) {\r\n\t\t\t\t\t\t\t\t\tif (serie.data.length !== numOfSeriesToShow) {\r\n\t\t\t\t\t\t\t\t\t\tserie.setData(\r\n\t\t\t\t\t\t\t\t\t\t\tdataConfig[index].data.filter(function (data, index) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn index < numOfSeriesToShow;\r\n\t\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn config;\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').controller('mx.SolutionBuilderAgent.ConcurrencyMergeController', MxConcurrencyMerge);\r\n\r\n\tMxConcurrencyMerge.$inject = ['mx.internationalization'];\r\n\r\n\tfunction MxConcurrencyMerge(i18n) {\r\n\t\tconst vm = this;\r\n\t\tvm.i18n = i18n.get('solutionBuilderAgent.components.mx-concurrency-merge');\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tif (!Array.isArray(vm.conflictMergeEntities)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvm.decideMessage = i18n.getFormatted('solutionBuilderAgent.components.mx-concurrency-merge.decide', vm.conflictMergeEntities.length);\r\n\r\n\t\t\tvm.conflictMergeEntities.forEach(function (item) {\r\n\t\t\t\titem.UseNewValue = true;\r\n\t\t\t\t// item.AttributeType = 8;\r\n\r\n\t\t\t\tObject.defineProperty(item, 'useNewLocalValue', {\r\n\t\t\t\t\tenumerable: false,\r\n\t\t\t\t\tset: function (value) {\r\n\t\t\t\t\t\titem.UseNewValue = value;\r\n\t\t\t\t\t\titem.UseOldValue = !value;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn item.UseNewValue;\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tvm.cancel = function () {\r\n\t\t\tvm.answerPromise.resolve({ answer: 'cancel', mergeEntities: vm.conflictMergeEntities });\r\n\t\t};\r\n\t\tvm.mergeAndSave = function () {\r\n\t\t\tvm.answerPromise.resolve({ answer: 'mergeAndSave', mergeEntities: vm.conflictMergeEntities });\r\n\t\t};\r\n\t\tvm.merge = function () {\r\n\t\t\tvm.answerPromise.resolve({ answer: 'merge', mergeEntities: vm.conflictMergeEntities });\r\n\t\t};\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxConditionBoolean', {\r\n\t\tbindings: { condition: '=' },\r\n\t\tcontroller: MxConditionBooleanCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-boolean.html',\r\n\t});\r\n\r\n\tMxConditionBooleanCtrl.$inject = ['mx.internationalization'];\r\n\r\n\tfunction MxConditionBooleanCtrl(i18n) {\r\n\t\tvar vm = this;\r\n\t\tvm.i18n = i18n.get('solutionBuilderAgent.components.mx-conditions-builder');\r\n\r\n\t\tvm.$onInit = function () {};\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxConditionEnumReference', {\r\n\t\tbindings: { condition: '=' },\r\n\t\tcontroller: MxConditionEnumReferenceCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-enum-reference.html',\r\n\t});\r\n\r\n\tMxConditionEnumReferenceCtrl.$inject = [];\r\n\r\n\tfunction MxConditionEnumReferenceCtrl() {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onInit = function () {};\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxConditionExpression', {\r\n\t\tbindings: { condition: '=' },\r\n\t\tcontroller: MxConditionExpressionCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-expression.html',\r\n\t});\r\n\r\n\tMxConditionExpressionCtrl.$inject = ['mx.internationalization'];\r\n\r\n\tfunction MxConditionExpressionCtrl(i18n) {\r\n\t\tvar vm = this;\r\n\t\tvm.i18n = i18n.get('solutionBuilderAgent.components.mx-conditions-builder');\r\n\r\n\t\tvm.$onInit = function () {};\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxConditionNumber', {\r\n\t\tbindings: {\r\n\t\t\tcondition: '=',\r\n\t\t},\r\n\t\tcontroller: MxConditionNumberCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-number.html',\r\n\t});\r\n\r\n\tMxConditionNumberCtrl.$inject = ['mx.internationalization'];\r\n\r\n\tfunction MxConditionNumberCtrl(i18n) {\r\n\t\tvar vm = this;\r\n\t\tvm.i18n = i18n.get('solutionBuilderAgent.components.mx-conditions-builder');\r\n\r\n\t\tvm.$onInit = function () {};\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxConditionObjectReference', {\r\n\t\tbindings: {\r\n\t\t\tcondition: '=',\r\n\t\t},\r\n\t\tcontroller: MxConditionObjectReferenceCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-object-reference.html',\r\n\t});\r\n\r\n\tMxConditionObjectReferenceCtrl.$inject = ['$scope', 'mx.internationalization'];\r\n\r\n\tfunction MxConditionObjectReferenceCtrl($scope, i18n) {\r\n\t\tvar vm = this;\r\n\t\tvm.i18n = i18n.get('solutionBuilderAgent.components.mx-conditions-builder');\r\n\r\n\t\tvm.$onInit = function () {};\r\n\r\n\t\t$scope.$watch('vm.selectedItem.Id', function () {\r\n\t\t\tif (vm.selectedItem && vm.selectedItem.Id) {\r\n\t\t\t\tvm.condition.value = vm.selectedItem.Id;\r\n\t\t\t\tvm.condition.displayValue = vm.selectedItem.DisplayString;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxConditionObjectReferences', {\r\n\t\tbindings: {\r\n\t\t\tcondition: '=',\r\n\t\t},\r\n\t\tcontroller: MxConditionObjectReferencesCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-object-references.html',\r\n\t});\r\n\r\n\tMxConditionObjectReferencesCtrl.$inject = ['$scope', 'mx.internationalization'];\r\n\r\n\tfunction MxConditionObjectReferencesCtrl($scope, i18n) {\r\n\t\tvar vm = this;\r\n\t\tvm.i18n = i18n.get('solutionBuilderAgent.components.mx-conditions-builder');\r\n\r\n\t\tvm.$onInit = function () {};\r\n\r\n\t\t$scope.$watch('vm.selectedItem.Id', function () {\r\n\t\t\tif (vm.selectedItem && vm.selectedItem.Id) {\r\n\t\t\t\tvm.condition.value = vm.selectedItem.Id;\r\n\t\t\t\tvm.condition.displayValue = vm.selectedItem.DisplayString;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxConditionString', {\r\n\t\tbindings: {\r\n\t\t\tcondition: '=',\r\n\t\t},\r\n\t\tcontroller: MxConditionStringCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-string.html',\r\n\t});\r\n\r\n\tMxConditionStringCtrl.$inject = ['mx.internationalization'];\r\n\r\n\tfunction MxConditionStringCtrl(i18n) {\r\n\t\tvar vm = this;\r\n\t\tvm.i18n = i18n.get('solutionBuilderAgent.components.mx-conditions-builder');\r\n\r\n\t\tvm.$onInit = function () {};\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').factory('mx.SolutionBuilderAgent.ConditionsBuilder.Condition', ClassFactory);\r\n\tClassFactory.$inject = ['mx.SolutionBuilderAgent.ConditionsBuilder.Helper', 'mx.SolutionBuilderAgent.ConditionsBuilder.Enums'];\r\n\r\n\tfunction ClassFactory(helper, ConditionsBuilderEnums) {\r\n\t\tconst ConditionValueTypes = ConditionsBuilderEnums.ConditionValueTypes;\r\n\t\tconst ConditionTypes = ConditionsBuilderEnums.ConditionTypes;\r\n\t\tconst ConditionBuilderMode = ConditionsBuilderEnums.ConditionBuilderMode;\r\n\r\n\t\tfunction ConditionsBuilderCondition(options, config) {\r\n\t\t\toptions = options || {};\r\n\t\t\tlet value;\r\n\t\t\tlet operator = 0;\r\n\t\t\tlet valueType;\r\n\r\n\t\t\tObject.defineProperty(this, 'id', {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\twritable: true,\r\n\t\t\t\tvalue: options.Id || mx.components.Utils.guid(),\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'parent', {\r\n\t\t\t\twritable: false,\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tvalue: options.parent,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, '_builderConfig', {\r\n\t\t\t\twritable: false,\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tvalue: config,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'name', {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\twritable: true,\r\n\t\t\t\tvalue: options.Name || '',\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'displayValue', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\twritable: true,\r\n\t\t\t\tvalue: value,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'value', {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn value;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\tvalue = newValue;\r\n\t\t\t\t\tif (this.valueTypeValue === ConditionValueTypes.Attribute) {\r\n\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\tArray.isArray(this.attributes) &&\r\n\t\t\t\t\t\t\t!this.attributes.some(function (attribute) {\r\n\t\t\t\t\t\t\t\tif (attribute.AttributeId === value) {\r\n\t\t\t\t\t\t\t\t\tthis.selectedAttribute = attribute;\r\n\t\t\t\t\t\t\t\t\tthis.displayValue = attribute.Title;\r\n\t\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}, this)\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\tthis.selectedAttribute = undefined;\r\n\t\t\t\t\t\t\tthis.displayValue = '';\r\n\t\t\t\t\t\t\tvalue = '';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (this.valueTypeValue === ConditionValueTypes.Value) {\r\n\t\t\t\t\t\tif (this.conditionType === ConditionTypes.EnumerationReference) {\r\n\t\t\t\t\t\t\tif (Array.isArray(this.__enumeration)) {\r\n\t\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\t\t!(this.__enumeration || []).some(function (item) {\r\n\t\t\t\t\t\t\t\t\t\tif (item.value === value) {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.displayValue = item.title;\r\n\t\t\t\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}, this)\r\n\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\tthis.displayValue = value;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} else if (typeof this.loadEnumeration === 'function') {\r\n\t\t\t\t\t\t\t\tthis.loadEnumeration().then(\r\n\t\t\t\t\t\t\t\t\tfunction (enumeration) {\r\n\t\t\t\t\t\t\t\t\t\tthis.__enumeration = enumeration || [];\r\n\t\t\t\t\t\t\t\t\t\tthis.value = value;\r\n\t\t\t\t\t\t\t\t\t}.bind(this)\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else if (this.conditionType === ConditionTypes.Date) {\r\n\t\t\t\t\t\t\tthis.displayValue = new Date(value).toLocaleString();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.displayValue = this.getDisplayValue();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.displayValue = this.getDisplayValue();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.updateOutput();\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'conditionType', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.ConditionType || ConditionTypes.String,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'selectedAttribute', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\twritable: true,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'operators', {\r\n\t\t\t\twritable: false,\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tvalue: setupOperators(this.conditionType),\r\n\t\t\t});\r\n\r\n\t\t\tfunction setupOperators(conditionType) {\r\n\t\t\t\tconst typeOperators = config.operators[conditionType];\r\n\t\t\t\treturn options.Operators || (Array.isArray(typeOperators) ? [...typeOperators] : []);\r\n\t\t\t}\r\n\r\n\t\t\tObject.defineProperty(this, 'operator', {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tset: function (newOperator) {\r\n\t\t\t\t\tconst wasArray = this.operators[this.operator]?.isArray || false;\r\n\r\n\t\t\t\t\tconst newOperatorValue = this.operators[newOperator];\r\n\t\t\t\t\tif (typeof newOperatorValue === 'undefined') {\r\n\t\t\t\t\t\tnewOperator = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\toperator = newOperator;\r\n\r\n\t\t\t\t\tif (this.operators[operator]?.isArray && !wasArray) {\r\n\t\t\t\t\t\tthis.value = Array.isArray(this.value) ? this.value : [this.value || ''];\r\n\t\t\t\t\t\tif (this.value.length === 0) {\r\n\t\t\t\t\t\t\tthis.value.push('');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (!this.operators[operator]?.isArray && wasArray) {\r\n\t\t\t\t\t\tthis.value = this.value[0];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.updateOutput();\r\n\t\t\t\t},\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn operator;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'operatorValue', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tset: function (newOperator) {\r\n\t\t\t\t\tlet selected;\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t!this.operators.some((item) => {\r\n\t\t\t\t\t\t\tif (item.value === newOperator) {\r\n\t\t\t\t\t\t\t\tselected = item;\r\n\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tthis.operator = 0;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.operator = this.operators.indexOf(selected);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.updateOutput();\r\n\t\t\t\t},\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn (this.operators[this.operator] || {}).value;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'operatorTitle', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn (this.operators[this.operator] || {}).title;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'isArrayValue', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn this.operators[this.operator]?.isArray || false;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'unconfigurableStartCondition', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn this.operators[this.operator]?.unconfigurableStartCondition || (this.startConditions || []).length <= 1;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'unconfigurableValue', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn this.operators[this.operator]?.unconfigurableValue || false;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'unconfigurableOperator', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn this.unconfigurableStartCondition && this.unconfigurableValue;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'valueTypes', {\r\n\t\t\t\twritable: false,\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tvalue: this._builderConfig.valueTypes.enumeration,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'valueType', {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tset: function (index) {\r\n\t\t\t\t\tconst newValueType = this.valueTypes[index];\r\n\t\t\t\t\tif (typeof newValueType === 'undefined') {\r\n\t\t\t\t\t\tindex = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvalueType = index;\r\n\t\t\t\t\tif (newValueType.value !== ConditionValueTypes.Attribute) {\r\n\t\t\t\t\t\tthis.selectedAttribute = undefined;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (newValueType.value === ConditionValueTypes.Value) {\r\n\t\t\t\t\t\tif (this.conditionType === ConditionTypes.EnumerationReference) {\r\n\t\t\t\t\t\t\tif (!Array.isArray(this.__enumeration) && typeof this.loadEnumeration === 'function') {\r\n\t\t\t\t\t\t\t\tthis.loadEnumeration().then(\r\n\t\t\t\t\t\t\t\t\tfunction (enumeration) {\r\n\t\t\t\t\t\t\t\t\t\tthis.__enumeration = enumeration || [];\r\n\t\t\t\t\t\t\t\t\t}.bind(this)\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvalue = '';\r\n\t\t\t\t\tthis.displayValue = '';\r\n\t\t\t\t\tthis.updateOutput();\r\n\t\t\t\t},\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn valueType;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'valueTypeValue', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tset: function (newValueType) {\r\n\t\t\t\t\tlet selected;\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t!this.valueTypes.some(function (item) {\r\n\t\t\t\t\t\t\tif (item.value === newValueType) {\r\n\t\t\t\t\t\t\t\tselected = item;\r\n\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tthis.valueType = 0;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.valueType = this.valueTypes.indexOf(selected);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.updateOutput();\r\n\t\t\t\t},\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn (this.valueTypes[this.valueType] || {}).value;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'valueTypeTitle', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn this.valueTypes[this.valueType].title;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, '_options', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\twritable: false,\r\n\t\t\t\tvalue: options,\r\n\t\t\t});\r\n\r\n\t\t\thelper.definePropertiesForEnums('logicOperator', this);\r\n\t\t\thelper.definePropertiesForEnums('startCondition', this, options.StartConditions || []);\r\n\r\n\t\t\tObject.defineProperty(this, 'expanded', {\r\n\t\t\t\tvalue: true,\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\twritable: true,\r\n\t\t\t});\r\n\r\n\t\t\tif (options.EnumLoader && typeof options.EnumLoader === 'function') {\r\n\t\t\t\tObject.defineProperty(this, 'loadEnumeration', {\r\n\t\t\t\t\tenumerable: false,\r\n\t\t\t\t\tvalue: function () {\r\n\t\t\t\t\t\tconst self = this;\r\n\t\t\t\t\t\treturn options.EnumLoader(this).then(function (enumeration) {\r\n\t\t\t\t\t\t\tself.__enumeration = enumeration;\r\n\t\t\t\t\t\t\treturn enumeration;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tObject.defineProperty(this, 'properties', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn this.parent ? this.parent.properties : [];\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'attributes', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn this.parent ? this.parent.attributes : [];\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tthis.logicOperatorValue = options.LogicOperator;\r\n\t\t\tthis.valueTypeValue = options.ValueType;\r\n\t\t\tthis.value = options.Value || '';\r\n\t\t\tthis.operatorValue = options.Operator;\r\n\t\t\tthis.startConditionValue = options.ConditionStart;\r\n\r\n\t\t\tthis.initialized = true;\r\n\t\t\tthis.updateOutput();\r\n\t\t}\r\n\r\n\t\tConditionsBuilderCondition.prototype = {\r\n\t\t\ttoggleLogicalOperator: function () {\r\n\t\t\t\tthis.logicOperator = (this.logicOperator + 1) % this.logicOperators.length;\r\n\t\t\t\tif (this.parent && this._builderConfig.mode === ConditionBuilderMode.disableDifferentOperatorsInGroup) {\r\n\t\t\t\t\tthis.parent.setLogicOperatorForChildren(this.logicOperator);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tupdateOutput: function () {\r\n\t\t\t\tif (!this.initialized) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (typeof this._builderConfig.conditionOutput === 'function') {\r\n\t\t\t\t\tthis.output = this._builderConfig.conditionOutput(this);\r\n\t\t\t\t}\r\n\t\t\t\tif (this.parent && typeof this.parent.updateOutput === 'function') {\r\n\t\t\t\t\tthis.parent.updateOutput();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tupdateEnumerations: function () {\r\n\t\t\t\tif (typeof this._builderConfig.updateEnumerations === 'function') {\r\n\t\t\t\t\tthis.output = this._builderConfig.updateEnumerations(this);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\taddNewValue() {\r\n\t\t\t\tthis.value.push('');\r\n\t\t\t\tthis.updateOutput();\r\n\t\t\t},\r\n\r\n\t\t\tremoveValue(index) {\r\n\t\t\t\tthis.value.splice(index, 1);\r\n\t\t\t\tthis.updateOutput();\r\n\t\t\t},\r\n\r\n\t\t\tgetDisplayValue() {\r\n\t\t\t\treturn Array.isArray(this.value) ? this.value.join(', ') : this.value;\r\n\t\t\t},\r\n\r\n\t\t\tonArrayValueChange() {\r\n\t\t\t\tthis.displayValue = this.getDisplayValue();\r\n\t\t\t\tthis.updateOutput();\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\treturn ConditionsBuilderCondition;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').factory('mx.SolutionBuilderAgent.ConditionsBuilder.Builder', ClassFactory);\r\n\tClassFactory.$inject = ['mx.SolutionBuilderAgent.ConditionsBuilder.Group'];\r\n\r\n\tfunction ClassFactory(ConditionsBuilderGroup) {\r\n\t\tfunction ConditionsBuilder(config) {\r\n\t\t\tConditionsBuilderGroup.call(this, {}, config);\r\n\r\n\t\t\tthis.initialized = false;\r\n\r\n\t\t\tvar properties = [],\r\n\t\t\t\tattributes = [],\r\n\t\t\t\tfilteredProperties = [],\r\n\t\t\t\tpredefinedConditions = config.predefinedConditions,\r\n\t\t\t\ttrigger = config.trigger;\r\n\r\n\t\t\tObject.defineProperty(this, 'trigger', {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn trigger;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'attributes', {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn attributes;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'filteredProperties', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn filteredProperties;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (newFilteredProperties) {\r\n\t\t\t\t\tfilteredProperties = newFilteredProperties;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'properties', {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tset: function (newProperties) {\r\n\t\t\t\t\tif (Array.isArray(newProperties)) {\r\n\t\t\t\t\t\tproperties = newProperties;\r\n\t\t\t\t\t\tfilteredProperties = newProperties;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tproperties = [];\r\n\t\t\t\t\t\tfilteredProperties = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tattributes = properties.filter(function (property) {\r\n\t\t\t\t\t\treturn property.IsAttribute;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (predefinedConditions) {\r\n\t\t\t\t\t\tif (Array.isArray(predefinedConditions.Groups)) {\r\n\t\t\t\t\t\t\tpredefinedConditions.Groups.forEach(function (g) {\r\n\t\t\t\t\t\t\t\tthis.addGroup(g);\r\n\t\t\t\t\t\t\t}, this);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (Array.isArray(predefinedConditions.Conditions)) {\r\n\t\t\t\t\t\t\tpredefinedConditions.Conditions.forEach(function (c) {\r\n\t\t\t\t\t\t\t\tthis.addCondition(c);\r\n\t\t\t\t\t\t\t}, this);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tpredefinedConditions = null;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.initialized = true;\r\n\t\t\t\t\tthis.updateOutput();\r\n\t\t\t\t},\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn properties;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tConditionsBuilder.prototype = Object.create(ConditionsBuilderGroup.prototype);\r\n\t\tConditionsBuilder.prototype.constructor = ConditionsBuilder;\r\n\r\n\t\tConditionsBuilder.prototype.setFilterForProperties = function (searchText) {\r\n\t\t\tconst properties = this.properties || [];\r\n\t\t\tif (searchText) {\r\n\t\t\t\tsearchText = searchText.toLowerCase();\r\n\t\t\t\tthis.filteredProperties = properties.filter((property) => property.Title && property.Title.toLowerCase().indexOf(searchText) !== -1);\r\n\t\t\t} else {\r\n\t\t\t\tthis.filteredProperties = properties;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tConditionsBuilder.prototype.updateOutput = function () {\r\n\t\t\tif (!this.initialized) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (typeof this._builderConfig.builderOutput === 'function') {\r\n\t\t\t\tthis.output = this._builderConfig.builderOutput(this);\r\n\t\t\t}\r\n\t\t\tif (typeof this.onOutputChange === 'function') {\r\n\t\t\t\tthis.onOutputChange(this.output);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn ConditionsBuilder;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').factory('mx.SolutionBuilderAgent.ConditionsBuilder.Group', ClassFactory);\r\n\tClassFactory.$inject = [\r\n\t\t'mx.SolutionBuilderAgent.ConditionsBuilder.Helper',\r\n\t\t'mx.SolutionBuilderAgent.ConditionsBuilder.Enums',\r\n\t\t'mx.SolutionBuilderAgent.ConditionsBuilder.Condition',\r\n\t];\r\n\r\n\tfunction ClassFactory(helper, ConditionsBuilderEnums, ConditionsBuilderCondition) {\r\n\t\tvar ConditionBuilderMode = ConditionsBuilderEnums.ConditionBuilderMode;\r\n\r\n\t\tfunction ConditionsBuilderGroup(groupOptions, config) {\r\n\t\t\tgroupOptions = groupOptions || {};\r\n\t\t\tvar self = this;\r\n\t\t\tvar expanded = true;\r\n\r\n\t\t\tObject.defineProperty(this, '_builderConfig', {\r\n\t\t\t\twritable: false,\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tvalue: config,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'groups', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: [],\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'conditions', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: [],\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'id', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: groupOptions.Id || mx.components.Utils.guid(),\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'parent', {\r\n\t\t\t\twritable: false,\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tvalue: groupOptions.parent,\r\n\t\t\t});\r\n\r\n\t\t\t['logicOperator'].forEach(function (fieldName) {\r\n\t\t\t\thelper.definePropertiesForEnums(fieldName, self);\r\n\t\t\t});\r\n\t\t\tthis.logicOperatorValue = groupOptions.LogicOperator;\r\n\r\n\t\t\tObject.defineProperty(this, 'expanded', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn expanded;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\texpanded = newValue;\r\n\t\t\t\t\tthis.conditions.forEach(function (condition) {\r\n\t\t\t\t\t\tcondition.expanded = newValue;\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.groups.forEach(function (group) {\r\n\t\t\t\t\t\tgroup.expanded = newValue;\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'properties', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn this.parent ? this.parent.properties : [];\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'attributes', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn this.parent ? this.parent.attributes : [];\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'level', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tvalue: groupOptions.Level || 0,\r\n\t\t\t});\r\n\r\n\t\t\tif (Array.isArray(groupOptions.Groups)) {\r\n\t\t\t\tgroupOptions.Groups.forEach(function (g) {\r\n\t\t\t\t\tthis.addGroup(g);\r\n\t\t\t\t}, this);\r\n\t\t\t}\r\n\r\n\t\t\tif (Array.isArray(groupOptions.Conditions)) {\r\n\t\t\t\tgroupOptions.Conditions.forEach(function (c) {\r\n\t\t\t\t\tthis.addCondition(c);\r\n\t\t\t\t}, this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.initialized = true;\r\n\t\t\tthis.updateOutput();\r\n\t\t}\r\n\r\n\t\tConditionsBuilderGroup.prototype = {\r\n\t\t\tgetChildrenOperator: function () {\r\n\t\t\t\tif (this._builderConfig.mode === ConditionBuilderMode.enableDifferentOperatorsInGroup) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tif (this.conditions.length > 1) {\r\n\t\t\t\t\treturn this.conditions[1].logicOperatorValue;\r\n\t\t\t\t}\r\n\t\t\t\tif (this.conditions.length + this.groups.length > 1) {\r\n\t\t\t\t\treturn this.groups[0].logicOperatorValue;\r\n\t\t\t\t}\r\n\t\t\t\tif (this.groups.length > 1) {\r\n\t\t\t\t\treturn this.groups[1].logicOperatorValue;\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t},\r\n\r\n\t\t\t/**\r\n\t\t\t * @ngdoc method\r\n\t\t\t * @name mx.SolutionBuilderAgent.RuleGroup#addGroup\r\n\t\t\t *\r\n\t\t\t * @description\r\n\t\t\t * Adds new group as a child group of a current group.
\r\n\t\t\t *\r\n\t\t\t * @param {mx.SolutionBuilderAgent.SearchQueryGroup} group - Child group model\r\n\t\t\t * @return {boolean} True if child group was added.
False if child group was not added as it already existed as a child\r\n\t\t\t */\r\n\t\t\taddGroup: function (groupOptions) {\r\n\t\t\t\tgroupOptions = angular.copy(groupOptions) || {};\r\n\t\t\t\tgroupOptions.parent = this;\r\n\t\t\t\tvar logicOperator = this.getChildrenOperator();\r\n\t\t\t\tif (logicOperator !== false) {\r\n\t\t\t\t\tgroupOptions.LogicOperator = logicOperator;\r\n\t\t\t\t}\r\n\t\t\t\tgroupOptions.Level = this.level + 1;\r\n\t\t\t\tthis.groups.push(new ConditionsBuilderGroup(groupOptions, this._builderConfig));\r\n\t\t\t\tthis.updateOutput();\r\n\t\t\t\treturn true;\r\n\t\t\t},\r\n\r\n\t\t\t/**\r\n\t\t\t * @ngdoc method\r\n\t\t\t * @name mx.SolutionBuilderAgent.RuleGroup#removeGroup\r\n\t\t\t *\r\n\t\t\t * @description\r\n\t\t\t * Removes group from current group's children.
\r\n\t\t\t * If specified child group does not exist no actions performed.\r\n\t\t\t *\r\n\t\t\t * @param {mx.SolutionBuilderAgent.SearchQueryGroup} group - Child group model\r\n\t\t\t * @return {boolean} True if child group was removed.
False if child group was not removed as it was not found among child groups\r\n\t\t\t */\r\n\t\t\tremoveGroup: function (group) {\r\n\t\t\t\tif (!group) {\r\n\t\t\t\t\tthrow new Error('SearchQueryGroup: removeGroup group is not provided');\r\n\t\t\t\t}\r\n\t\t\t\tvar index = this.groups.indexOf(group);\r\n\r\n\t\t\t\tif (index === -1) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tthis.groups.splice(index, 1);\r\n\t\t\t\tthis.updateOutput();\r\n\t\t\t\treturn true;\r\n\t\t\t},\r\n\r\n\t\t\ttoggleLogicalOperator: function () {\r\n\t\t\t\tthis.logicOperator = (this.logicOperator + 1) % this.logicOperators.length;\r\n\r\n\t\t\t\tif (this.parent && this._builderConfig.mode === ConditionBuilderMode.disableDifferentOperatorsInGroup) {\r\n\t\t\t\t\tthis.parent.setLogicOperatorForChildren(this.logicOperator);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tsetLogicOperatorForChildren: function (operator) {\r\n\t\t\t\tthis.groups.forEach(function (group) {\r\n\t\t\t\t\tgroup.logicOperator = operator;\r\n\t\t\t\t});\r\n\t\t\t\tthis.conditions.forEach(function (condition) {\r\n\t\t\t\t\tcondition.logicOperator = operator;\r\n\t\t\t\t});\r\n\t\t\t},\r\n\r\n\t\t\t/**\r\n\t\t\t * @ngdoc method\r\n\t\t\t * @name mx.SolutionBuilderAgent.SearchQueryGroup#addCondition\r\n\t\t\t *\r\n\t\t\t * @description\r\n\t\t\t * Adds new condition to current group.
\r\n\t\t\t * If condition exists within current group no actions performed.\r\n\t\t\t *\r\n\t\t\t * @param {mx.SolutionBuilderAgent.MxRuleCondition} condition\r\n\t\t\t * @return {boolean} True if condition was added.
False if condition was not added as it already exists in group\r\n\t\t\t */\r\n\r\n\t\t\taddCondition: function (condition) {\r\n\t\t\t\tif (!condition) {\r\n\t\t\t\t\tthrow new Error('SearchQueryGroup: addCondition condition is not provided');\r\n\t\t\t\t}\r\n\t\t\t\tcondition = angular.copy(condition) || {};\r\n\t\t\t\tcondition.parent = this;\r\n\t\t\t\tvar logicOperator = this.getChildrenOperator();\r\n\t\t\t\tif (logicOperator !== false) {\r\n\t\t\t\t\tcondition.LogicOperator = logicOperator;\r\n\t\t\t\t}\r\n\t\t\t\tthis.conditions.push(new ConditionsBuilderCondition(condition, this._builderConfig));\r\n\t\t\t\tthis.updateOutput();\r\n\t\t\t\treturn true;\r\n\t\t\t},\r\n\r\n\t\t\t/**\r\n\t\t\t * @ngdoc method\r\n\t\t\t * @name mx.SolutionBuilderAgent.SearchQueryGroup#removeCondition\r\n\t\t\t *\r\n\t\t\t * @description\r\n\t\t\t * Removes condition from current group.
\r\n\t\t\t * If condition does not exist within current group no actions performed.\r\n\t\t\t *\r\n\t\t\t * @param {guid} id - Search query condition id}\r\n\t\t\t * @return {boolean} True if condition was removed.
False if condition was not removed as it was not in group\r\n\t\t\t */\r\n\t\t\tremoveCondition: function (condition) {\r\n\t\t\t\tvar index = this.conditions.indexOf(condition);\r\n\t\t\t\tif (index >= 0) {\r\n\t\t\t\t\tthis.conditions.splice(index, 1);\r\n\t\t\t\t\tthis.updateOutput();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\ttoggleExpanded: function () {\r\n\t\t\t\tvar expanded = !(this.conditions.length > 0 && this.conditions[0].expanded);\r\n\t\t\t\tthis.expanded = expanded;\r\n\t\t\t\tthis.conditions.forEach(function (condition) {\r\n\t\t\t\t\tcondition.expanded = expanded;\r\n\t\t\t\t});\r\n\t\t\t\tthis.groups.forEach(function (group) {\r\n\t\t\t\t\tgroup.expanded = expanded;\r\n\t\t\t\t});\r\n\t\t\t},\r\n\r\n\t\t\tupdateOutput: function () {\r\n\t\t\t\tif (!this.initialized) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (typeof this._builderConfig.groupOutput === 'function') {\r\n\t\t\t\t\tthis.output = this._builderConfig.groupOutput(this);\r\n\t\t\t\t}\r\n\t\t\t\tif (this.parent && typeof this.parent.updateOutput === 'function') {\r\n\t\t\t\t\tthis.parent.updateOutput();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tclear: function () {\r\n\t\t\t\tthis.groups = [];\r\n\t\t\t\tthis.conditions = [];\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\treturn ConditionsBuilderGroup;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').service('mx.SolutionBuilderAgent.ConditionsBuilder.Enums', ConditionsBuilderEnums);\r\n\tConditionsBuilderEnums.$inject = ['mx.utils.MxEnum'];\r\n\r\n\tfunction ConditionsBuilderEnums(MxEnum) {\r\n\t\tconst ComplianceRuleTriggerTypes = new MxEnum({\r\n\t\t\tCreateObject: 1,\r\n\t\t\tDeleteObject: 2,\r\n\t\t\tAction: 3,\r\n\t\t\tChangeObject: 5,\r\n\t\t\tExternal: 6,\r\n\t\t});\r\n\r\n\t\tconst ComplianceRuleConditionStart = new MxEnum({\r\n\t\t\tAfter: 0,\r\n\t\t\tBefore: 1,\r\n\t\t});\r\n\r\n\t\tconst ConditionTypes = new MxEnum({\r\n\t\t\tBoolean: 1,\r\n\t\t\tDate: 2,\r\n\t\t\tExpression: 3,\r\n\t\t\tString: 4,\r\n\t\t\tObjectReference: 5,\r\n\t\t\tEnumerationReference: 6,\r\n\t\t\tFragment: 7,\r\n\t\t\tObjectReferences: 8,\r\n\t\t\tNumber: 9,\r\n\t\t\tMultiFragment: 10,\r\n\t\t});\r\n\r\n\t\tconst ConditionValueTypes = new MxEnum({\r\n\t\t\tValue: 0,\r\n\t\t\tAttribute: 1,\r\n\t\t\tExpression: 2,\r\n\t\t});\r\n\r\n\t\tconst ConditionBuilderMode = new MxEnum({\r\n\t\t\tenableDifferentOperatorsInGroup: 0, // CoRu oldUi\r\n\t\t\tdisableDifferentOperatorsInGroup: 1, // CoRu newUi\r\n\t\t});\r\n\r\n\t\tconst ConditionLogicOperators = new MxEnum({\r\n\t\t\tAND: 0,\r\n\t\t\tOR: 1,\r\n\t\t});\r\n\r\n\t\tconst ConditionDateMods = new MxEnum({\r\n\t\t\tDate: 'date',\r\n\t\t\tDateExpression: 'dateExpression',\r\n\t\t});\r\n\r\n\t\treturn {\r\n\t\t\tComplianceRuleTriggerTypes: ComplianceRuleTriggerTypes,\r\n\t\t\tComplianceRuleConditionStart: ComplianceRuleConditionStart,\r\n\t\t\tConditionTypes: ConditionTypes,\r\n\t\t\tConditionValueTypes: ConditionValueTypes,\r\n\t\t\tConditionBuilderMode: ConditionBuilderMode,\r\n\t\t\tConditionLogicOperators: ConditionLogicOperators,\r\n\t\t\tConditionDateMods: ConditionDateMods,\r\n\t\t};\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').service('mx.SolutionBuilderAgent.ConditionsBuilder.Helper', ConditionsBuilderHelper);\r\n\tConditionsBuilderHelper.$inject = ['mx.SolutionBuilderAgent.SchemaService.Enums', 'mx.SolutionBuilderAgent.ConditionsBuilder.Enums'];\r\n\r\n\tfunction ConditionsBuilderHelper(SchemaServiceEnums, ConditionsBuilderEnums) {\r\n\t\tvar ConditionTypes = ConditionsBuilderEnums.ConditionTypes;\r\n\t\tvar DataTypes = SchemaServiceEnums.DataTypes;\r\n\t\tvar RelationCardinality = SchemaServiceEnums.RelationCardinality;\r\n\r\n\t\tthis.definePropertiesForEnums = definePropertiesForEnums;\r\n\t\tthis.getConditionTypeByDataType = getConditionTypeByDataType;\r\n\t\tthis.getConditionTypeByRelation = getConditionTypeByRelation;\r\n\r\n\t\tfunction definePropertiesForEnums(fieldName, obj) {\r\n\t\t\tvar value = 0;\r\n\t\t\tvar enumeration = obj._builderConfig[fieldName + 's'].enumeration;\r\n\r\n\t\t\tObject.defineProperty(obj, fieldName + 's', {\r\n\t\t\t\twritable: false,\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tvalue: enumeration,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(obj, fieldName, {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn value;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\tif (value !== newValue) {\r\n\t\t\t\t\t\tvalue = newValue;\r\n\t\t\t\t\t\tobj.updateOutput();\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(obj, fieldName + 'Value', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn obj[fieldName + 's'][obj[fieldName]].value;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (fieldNewValue) {\r\n\t\t\t\t\tvar selected;\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t!this[fieldName + 's'].some(function (item) {\r\n\t\t\t\t\t\t\tif (item.value === fieldNewValue) {\r\n\t\t\t\t\t\t\t\tselected = item;\r\n\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tthis[fieldName] = 0;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis[fieldName] = this[fieldName + 's'].indexOf(selected);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.updateOutput();\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(obj, fieldName + 'Title', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn obj[fieldName + 's'][obj[fieldName]].title;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction getConditionTypeByDataType(dataType) {\r\n\t\t\tswitch (dataType) {\r\n\t\t\t\tcase DataTypes.BoolType:\r\n\t\t\t\t\treturn ConditionTypes.Boolean;\r\n\t\t\t\tcase DataTypes.DateType:\r\n\t\t\t\t\treturn ConditionTypes.Date;\r\n\t\t\t\tcase DataTypes.ExpressionGuidType:\r\n\t\t\t\t\treturn ConditionTypes.Expression;\r\n\t\t\t\tcase DataTypes.IntType:\r\n\t\t\t\tcase DataTypes.LongType:\r\n\t\t\t\tcase DataTypes.FloatType:\r\n\t\t\t\t\treturn ConditionTypes.Number;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn ConditionTypes.String;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction getConditionTypeByRelation(relationType) {\r\n\t\t\tswitch (relationType) {\r\n\t\t\t\tcase RelationCardinality.OneZeroToOne:\r\n\t\t\t\tcase RelationCardinality.OneToOne:\r\n\t\t\t\tcase RelationCardinality.ManyToOne:\r\n\t\t\t\tcase RelationCardinality.OneToOneZero:\r\n\t\t\t\tcase RelationCardinality.ManyToZeroOne:\r\n\t\t\t\t\treturn ConditionTypes.ObjectReference;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn ConditionTypes.ObjectReferences;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').service('mx.SolutionBuilderAgent.ComplianceRuleEnums', ComplianceRuleEnums);\r\n\tComplianceRuleEnums.$inject = ['mx.utils.MxEnum'];\r\n\r\n\tfunction ComplianceRuleEnums(MxEnum) {\r\n\t\tvar ComplianceRuleTriggerTypes = new MxEnum({\r\n\t\t\tCreateObject: 1,\r\n\t\t\tDeleteObject: 2,\r\n\t\t\tAction: 3,\r\n\t\t\tChangeObject: 5,\r\n\t\t\tExternal: 6,\r\n\t\t});\r\n\r\n\t\tvar ComplianceRuleConditionStart = new MxEnum({\r\n\t\t\tAfter: 0,\r\n\t\t\tBefore: 1,\r\n\t\t});\r\n\r\n\t\treturn {\r\n\t\t\tComplianceRuleTriggerTypes: ComplianceRuleTriggerTypes,\r\n\t\t\tComplianceRuleConditionStart: ComplianceRuleConditionStart,\r\n\t\t};\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxComplianceRuleConditionsBuilder', {\r\n\t\tbindings: {\r\n\t\t\tvalue: '<',\r\n\t\t\tvalue2: '=?',\r\n\t\t\tvalue3: '=?',\r\n\t\t\ttypeIds: '=?value4',\r\n\t\t\tdisabledAdd: '0\">',\r\n\t});\r\n\r\n\tMxComplianceRuleConditionsBuilderCtrl.$inject = ['$scope', 'mx.SolutionBuilderAgent.ComplianceRuleConditionsService'];\r\n\r\n\tfunction MxComplianceRuleConditionsBuilderCtrl($scope, complianceRuleConditionsService) {\r\n\t\tvar vm = this;\r\n\t\tvar currentTrigger;\r\n\t\tvar currentRelatedClasses;\r\n\t\tvar firstInit = true;\r\n\t\tvar propertiesPromise, builderPromise;\r\n\t\tvar currentIsBasedOnDD = false;\r\n\r\n\t\tvm.$onInit = function () {};\r\n\r\n\t\t$scope.$watchCollection('vm.value.RelatedClasses', function (relatedClasses) {\r\n\t\t\tinitBuilder(currentTrigger, relatedClasses, currentIsBasedOnDD);\r\n\t\t});\r\n\r\n\t\t$scope.$watchCollection('vm.value.IsBasedOnDD', function (isBasedOnDD) {\r\n\t\t\tinitBuilder(currentTrigger, currentRelatedClasses, isBasedOnDD);\r\n\t\t});\r\n\r\n\t\t$scope.$watch('vm.value.ConditionType', function (newTrigger) {\r\n\t\t\tinitBuilder(newTrigger, currentRelatedClasses, currentIsBasedOnDD);\r\n\t\t});\r\n\r\n\t\tvm.$onChanges = function (changes) {\r\n\t\t\tif (vm.builder && changes.disabledAdd) {\r\n\t\t\t\tvm.builder.disabledAdd = changes.disabledAdd.currentValue;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction initBuilder(trigger, relatedClasses, isBasedOnDD = false) {\r\n\t\t\tconst propertiesInputAttributesChanged = !angular.equals(currentRelatedClasses, relatedClasses) || isBasedOnDD !== currentIsBasedOnDD || trigger !== currentTrigger;\r\n\r\n\t\t\tcurrentIsBasedOnDD = isBasedOnDD;\r\n\t\t\tcurrentRelatedClasses = relatedClasses;\r\n\t\t\tcurrentTrigger = trigger;\r\n\r\n\t\t\tpropertiesPromise = !propertiesInputAttributesChanged\r\n\t\t\t\t? propertiesPromise\r\n\t\t\t\t: complianceRuleConditionsService.getProperties({\r\n\t\t\t\t\t\trelatedClasses: currentRelatedClasses,\r\n\t\t\t\t\t\ttrigger: trigger,\r\n\t\t\t\t\t\ttypeIds: vm.typeIds || [],\r\n\t\t\t\t\t\tisBasedOnDD: currentIsBasedOnDD,\r\n\t\t\t\t });\r\n\r\n\t\t\treturn propertiesPromise\r\n\t\t\t\t.then(function (properties) {\r\n\t\t\t\t\tvm.value3 = properties;\r\n\r\n\t\t\t\t\tif (typeof trigger === 'undefined' || !Array.isArray(relatedClasses) || !relatedClasses.length) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (!propertiesInputAttributesChanged) {\r\n\t\t\t\t\t\treturn builderPromise;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar conditions = firstInit && Array.isArray(vm.value2) ? vm.value2 : [];\r\n\t\t\t\t\tbuilderPromise = complianceRuleConditionsService.getBuilder({ trigger: trigger, conditions: conditions, typeIds: vm.typeIds || [], isBasedOnDD: isBasedOnDD });\r\n\t\t\t\t\tfirstInit = false;\r\n\r\n\t\t\t\t\treturn builderPromise;\r\n\t\t\t\t})\r\n\t\t\t\t.then(function (builder) {\r\n\t\t\t\t\tvm.builder = builder;\r\n\r\n\t\t\t\t\tif (builder) {\r\n\t\t\t\t\t\tvm.builder.onOutputChange = onOutputChange;\r\n\t\t\t\t\t\tvm.builder.properties = vm.value3;\r\n\t\t\t\t\t\tvm.builder.disabledAdd = vm.disabledAdd;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn builder;\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction onOutputChange(output) {\r\n\t\t\tif (vm.value2 instanceof mx.SolutionBuilderAgent.DataModelArray) {\r\n\t\t\t\tvm.value2.set(output);\r\n\t\t\t} else if (Array.isArray(vm.value2)) {\r\n\t\t\t\tvm.value2.splice.apply(vm.value2, [0, vm.value2.length].concat(output));\r\n\t\t\t} else {\r\n\t\t\t\tvm.value2 = output;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc directive\r\n\t * @name mx.SolutionBuilderAgent:mxSearchQueryGroup\r\n\t * @module mx.SolutionBuilderAgent\r\n\t * @restrict 'E'\r\n\t * @scope {}\r\n\t * @requires mx.components.Recursion\r\n\t * @requires mx.shell.EventService\r\n\t * @requires {@ref mx.shell.SearchProviderService mx.shell.SearchProviderService}\r\n\t * @description\r\n\t * A group of search conditions. Used to group query conditions on {@ref mx.shell:mxSearchQueryBuilder form} that allows to create or update complex search queries\r\n\t * @param {mx.SolutionBuilderAgent.SearchQueryGroup} group= - {@ref mx.shell.SearchQueryGroup Search query conditions group model}\r\n\t * @param {mx.SolutionBuilderAgent.SearchQueryGroup} parent= - Parent search query conditions group\r\n\t * @param {mx.shell.SearchContext} context= - Reference to a {@ref mx.shell.SearchContext search context model}\r\n\t * related to search query being selected for update\r\n\t * @usage \r\n\t */\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxConditionGroup', {\r\n\t\trequire: {\r\n\t\t\tbuilder: '^^mxConditionsBuilder',\r\n\t\t\tparentGroupContainer: '^^?mxConditionGroup',\r\n\t\t},\r\n\t\tbindings: {\r\n\t\t\tgroup: '=',\r\n\t\t\tparentExpanded: '<',\r\n\t\t},\r\n\t\tcontroller: MxConditionGroupCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-condition-builder/mx-condition-group.html',\r\n\t});\r\n\r\n\tMxConditionGroupCtrl.$inject = [];\r\n\r\n\tfunction MxConditionGroupCtrl() {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tObject.defineProperty(vm, 'conditionsBuilder', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn vm.builder.conditionsBuilder;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t};\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxCondition', {\r\n\t\trequire: {\r\n\t\t\tbuilder: '^^mxConditionsBuilder',\r\n\t\t},\r\n\t\tbindings: {\r\n\t\t\tcondition: '=',\r\n\t\t},\r\n\t\tcontroller: MxConditionCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-condition-builder/mx-condition.html',\r\n\t});\r\n\r\n\tMxConditionCtrl.$inject = ['mx.internationalization', 'mx.SolutionBuilderAgent.ConditionsBuilder.Enums'];\r\n\r\n\tfunction MxConditionCtrl(i18n, ConditionsBuilderEnums) {\r\n\t\tvar vm = this;\r\n\t\tvar directive = '';\r\n\t\tvm.i18n = i18n.get('solutionBuilderAgent.components.mx-conditions-builder');\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tObject.defineProperty(vm, 'attributes', {\r\n\t\t\t\twritable: false,\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tvalue: vm.condition.attributes,\r\n\t\t\t});\r\n\r\n\t\t\tvm.valueTypes = ConditionsBuilderEnums.ConditionValueTypes;\r\n\t\t\tvar ConditionTypes = ConditionsBuilderEnums.ConditionTypes;\r\n\r\n\t\t\tswitch (vm.condition.conditionType) {\r\n\t\t\t\tcase ConditionTypes.ObjectReference:\r\n\t\t\t\t\tdirective = 'mx-condition-object-reference';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase ConditionTypes.ObjectReferences:\r\n\t\t\t\t\tdirective = 'mx-condition-object-references';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase ConditionTypes.EnumerationReference:\r\n\t\t\t\t\tdirective = 'mx-condition-enum-reference';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase ConditionTypes.Boolean:\r\n\t\t\t\t\tdirective = 'mx-condition-boolean';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase ConditionTypes.Date:\r\n\t\t\t\t\tdirective = 'mx-condition-date';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase ConditionTypes.Expression:\r\n\t\t\t\t\tdirective = 'mx-condition-expression';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase ConditionTypes.Fragment:\r\n\t\t\t\t\tdirective = 'mx-condition-string';\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase ConditionTypes.Number:\r\n\t\t\t\t\tdirective = 'mx-condition-number';\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase ConditionTypes.MultiFragment:\r\n\t\t\t\t\tdirective = 'mx-condition-string';\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tdirective = 'mx-condition-string';\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvm.directive = '<' + directive + ' condition=\"vm.condition\">';\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxConditionsBuilder', {\r\n\t\tbindings: {\r\n\t\t\tconditionsBuilder: '<',\r\n\t\t},\r\n\t\tcontroller: MxConditionsBuilderCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-condition-builder/mx-conditions-builder.html',\r\n\t});\r\n\r\n\tMxConditionsBuilderCtrl.$inject = ['$scope'];\r\n\r\n\tfunction MxConditionsBuilderCtrl($scope) {\r\n\t\tlet vm = this;\r\n\t\tvm.searchText = '';\r\n\r\n\t\tvm.$onInit = () => {\r\n\t\t\tif (vm.conditionsBuilder) {\r\n\t\t\t\tvm.initialized = true;\r\n\t\t\t} else {\r\n\t\t\t\tmx.console.warn('no conditions builder');\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t$scope.$watch('vm.searchText', (newValue) => {\r\n\t\t\tif (vm.initialized) {\r\n\t\t\t\tvm.conditionsBuilder.setFilterForProperties(newValue);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxDefinitionConditionsBuilder', {\r\n\t\tbindings: {\r\n\t\t\tvalue: '=?',\r\n\t\t\tvalue2: '<',\r\n\t\t\tvalue3: '=?',\r\n\t\t},\r\n\t\tcontroller: MxDefinitionConditionsBuilderCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplate: '',\r\n\t});\r\n\r\n\tMxDefinitionConditionsBuilderCtrl.$inject = ['$scope', 'mx.SolutionBuilderAgent.DefinitionConditionsService'];\r\n\r\n\tfunction MxDefinitionConditionsBuilderCtrl($scope, definitionConditionsService) {\r\n\t\tvar vm = this;\r\n\t\tvar currentRules = [];\r\n\r\n\t\tvm.$onInit = function () {};\r\n\r\n\t\t$scope.$watchCollection('vm.value2', function (rules) {\r\n\t\t\tinitBuilder(rules);\r\n\t\t});\r\n\r\n\t\tfunction initBuilder(rules) {\r\n\t\t\tcurrentRules = rules || '';\r\n\t\t\tdefinitionConditionsService.getBuilder(vm.value, currentRules).then(function (builder) {\r\n\t\t\t\tvm.builder = builder;\r\n\t\t\t\tif (builder) {\r\n\t\t\t\t\tvm.builder.onOutputChange = onOutputChange;\r\n\t\t\t\t}\r\n\t\t\t\treturn builder;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction onOutputChange(output) {\r\n\t\t\tvm.value = output.json;\r\n\t\t\tvm.value3 = output.query;\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').service('mx.SolutionBuilderAgent.DefinitionConditionsService', MxDefinitionConditionsService);\r\n\tMxDefinitionConditionsService.$inject = [\r\n\t\t'$q',\r\n\t\t'mx.internationalization',\r\n\t\t'mx.SolutionBuilderAgent.ConditionsBuilder.Builder',\r\n\t\t'mx.SolutionBuilderAgent.ConditionsBuilder.Enums',\r\n\t];\r\n\tfunction MxDefinitionConditionsService($q, i18n, ConditionsBuilder, ConditionsBuilderEnums) {\r\n\t\tvar ConditionValueTypes = ConditionsBuilderEnums.ConditionValueTypes;\r\n\t\tvar ConditionTypes = ConditionsBuilderEnums.ConditionTypes;\r\n\t\tvar ConditionBuilderMode = ConditionsBuilderEnums.ConditionBuilderMode;\r\n\t\tvar ConditionLogicOperators = ConditionsBuilderEnums.ConditionLogicOperators;\r\n\r\n\t\tvar self = this;\r\n\t\tvar i18nBuilder = i18n.get('solutionBuilderAgent.components.mx-conditions-builder');\r\n\r\n\t\tself.getBuilder = getBuilder;\r\n\r\n\t\treturn self;\r\n\r\n\t\tfunction getBuilder(query, rules) {\r\n\t\t\tvar config = {\r\n\t\t\t\tlogicOperators: {\r\n\t\t\t\t\tenumeration: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttitle: i18nBuilder.and,\r\n\t\t\t\t\t\t\tvalue: ConditionLogicOperators.AND,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttitle: i18nBuilder.or,\r\n\t\t\t\t\t\t\tvalue: ConditionLogicOperators.OR,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t],\r\n\t\t\t\t},\r\n\t\t\t\tvalueTypes: {\r\n\t\t\t\t\tenumeration: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttitle: i18nBuilder.expression,\r\n\t\t\t\t\t\t\tvalue: ConditionValueTypes.Expression,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t],\r\n\t\t\t\t},\r\n\t\t\t\tstartConditions: {\r\n\t\t\t\t\tenumeration: [],\r\n\t\t\t\t},\r\n\t\t\t};\r\n\r\n\t\t\tvar inputRules = [],\r\n\t\t\t\tpredefinedConditions;\r\n\t\t\ttry {\r\n\t\t\t\tinputRules = JSON.parse(rules).map(function (rule) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttitle: (rule.Left || '') + '=' + (rule.Right || ''),\r\n\t\t\t\t\t\tvalue: rule.Id,\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t} catch (e) {\r\n\t\t\t\tmx.logCatch(e);\r\n\t\t\t}\r\n\r\n\t\t\tif (Array.isArray(inputRules) && inputRules.length > 0) {\r\n\t\t\t\tconfig.valueTypes.enumeration.push({\r\n\t\t\t\t\ttitle: i18nBuilder.condition,\r\n\t\t\t\t\tvalue: ConditionValueTypes.Value,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconfig.conditionOutput = conditionOutput;\r\n\t\t\tconfig.groupOutput = groupOutput;\r\n\t\t\tconfig.builderOutput = builderOutput;\r\n\t\t\tconfig.operators = [];\r\n\t\t\tconfig.hidePropertiesFilter = true;\r\n\t\t\tconfig.mode = ConditionBuilderMode.disableDifferentOperatorsInGroup;\r\n\r\n\t\t\tvar enumLoader = function () {\r\n\t\t\t\treturn $q.when(inputRules);\r\n\t\t\t};\r\n\r\n\t\t\ttry {\r\n\t\t\t\tpredefinedConditions = JSON.parse(query);\r\n\t\t\t\tconfig.predefinedConditions = inputMapping(predefinedConditions, enumLoader, (predefinedConditions || {}).Operator);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tmx.logCatch(e);\r\n\t\t\t}\r\n\r\n\t\t\tvar builder = new ConditionsBuilder(config);\r\n\r\n\t\t\tvar properties = [\r\n\t\t\t\t{\r\n\t\t\t\t\tValueType: ConditionValueTypes.Expression,\r\n\t\t\t\t\tConditionType: ConditionTypes.EnumerationReference,\r\n\t\t\t\t\tEnumLoader: enumLoader,\r\n\t\t\t\t\tTitle: i18nBuilder.expression,\r\n\t\t\t\t\tValue: '',\r\n\t\t\t\t},\r\n\t\t\t];\r\n\r\n\t\t\tif (Array.isArray(inputRules) && inputRules.length > 0) {\r\n\t\t\t\tproperties.push({\r\n\t\t\t\t\tValueType: ConditionValueTypes.Value,\r\n\t\t\t\t\tConditionType: ConditionTypes.EnumerationReference,\r\n\t\t\t\t\tEnumLoader: enumLoader,\r\n\t\t\t\t\tTitle: i18nBuilder.condition,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tbuilder.properties = properties;\r\n\r\n\t\t\treturn $q.when(builder);\r\n\t\t}\r\n\r\n\t\tfunction inputMapping(groupConfig, enumLoader, operator) {\r\n\t\t\tvar group = {\r\n\t\t\t\tConditions: [],\r\n\t\t\t\tGroups: [],\r\n\t\t\t\tLogicOperator: getOperatorValue(operator),\r\n\t\t\t};\r\n\t\t\tif (typeof groupConfig !== 'object') {\r\n\t\t\t\treturn group;\r\n\t\t\t}\r\n\r\n\t\t\tif (Array.isArray(groupConfig.OperandList)) {\r\n\t\t\t\tgroupConfig.OperandList.forEach(function (operand) {\r\n\t\t\t\t\tif (operand.Operator && Array.isArray(operand.OperandList)) {\r\n\t\t\t\t\t\tgroup.Groups.push(inputMapping(operand, enumLoader, groupConfig.Operator));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar condition = {\r\n\t\t\t\t\t\t\tConditionType: ConditionTypes.EnumerationReference,\r\n\t\t\t\t\t\t\tLogicOperator: getOperatorValue(groupConfig.Operator),\r\n\t\t\t\t\t\t\tEnumLoader: enumLoader,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tif (operand.Expression) {\r\n\t\t\t\t\t\t\tcondition.ValueType = ConditionValueTypes.Expression;\r\n\t\t\t\t\t\t\tcondition.Value = operand.Expression;\r\n\t\t\t\t\t\t} else if (operand.MatchOperandId) {\r\n\t\t\t\t\t\t\tcondition.ValueType = ConditionValueTypes.Value;\r\n\t\t\t\t\t\t\tcondition.Value = operand.MatchOperandId;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tgroup.Conditions.push(condition);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\treturn group;\r\n\t\t}\r\n\r\n\t\tfunction getOperatorValue(operator) {\r\n\t\t\treturn operator && operator.toLowerCase() === 'and' ? ConditionLogicOperators.AND : ConditionLogicOperators.OR;\r\n\t\t}\r\n\r\n\t\tfunction getOperatorTitle(operator) {\r\n\t\t\treturn operator === ConditionLogicOperators.AND ? 'AND' : 'OR';\r\n\t\t}\r\n\r\n\t\tfunction itemsToQuery(accumulateQuery, item) {\r\n\t\t\tif (item.output.query.length > 0) {\r\n\t\t\t\tif (accumulateQuery.length > 0) {\r\n\t\t\t\t\taccumulateQuery += ' ' + getOperatorTitle(item.logicOperatorValue) + ' ';\r\n\t\t\t\t}\r\n\t\t\t\taccumulateQuery += item.output.query;\r\n\t\t\t}\r\n\t\t\treturn accumulateQuery;\r\n\t\t}\r\n\r\n\t\tfunction builderOutput(builder) {\r\n\t\t\treturn groupOutput(builder, true);\r\n\t\t}\r\n\r\n\t\tfunction groupOutput(group, isBuilder) {\r\n\t\t\tvar query = group.groups.length ? group.groups.reduce(itemsToQuery, '') : '';\r\n\t\t\tquery = group.conditions.length ? group.conditions.reduce(itemsToQuery, query) : query;\r\n\r\n\t\t\tif (query.length && !isBuilder && group.groups.length + group.conditions.length > 1) {\r\n\t\t\t\tquery = '(' + query + ')';\r\n\t\t\t}\r\n\t\t\tvar operandList = group.groups.concat(group.conditions);\r\n\t\t\tvar json = {\r\n\t\t\t\tOperator: operandList.length ? getOperatorTitle(operandList[0].logicOperatorValue) : null,\r\n\t\t\t\tOperandList: operandList.length\r\n\t\t\t\t\t? operandList.map(function (operand) {\r\n\t\t\t\t\t\t\treturn operand.output.json;\r\n\t\t\t\t\t })\r\n\t\t\t\t\t: null,\r\n\t\t\t};\r\n\t\t\treturn {\r\n\t\t\t\tquery: query,\r\n\t\t\t\tjson: isBuilder ? JSON.stringify(json) : json,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tfunction conditionOutput(condition) {\r\n\t\t\treturn condition.valueTypeValue === ConditionValueTypes.Expression\r\n\t\t\t\t? {\r\n\t\t\t\t\t\tjson: {\r\n\t\t\t\t\t\t\tExpression: condition.value.trim(),\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tquery: condition.value.trim(),\r\n\t\t\t\t }\r\n\t\t\t\t: {\r\n\t\t\t\t\t\tjson: {\r\n\t\t\t\t\t\t\tMatchOperandId: condition.value,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tquery: condition.displayValue,\r\n\t\t\t\t };\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxSearchPageCustomForm', {\r\n\t\tbindings: {\r\n\t\t\tview: '<',\r\n\t\t\tparameters: '<',\r\n\t\t},\r\n\t\tcontroller: MxSearchPageCustomFormCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-content-widget-view/list/mx-search-page-custom-form.html',\r\n\t});\r\n\r\n\tMxSearchPageCustomFormCtrl.$inject = ['$rootScope', '$element', '$compile', '$scope', '$stateParams', 'mx.shell.EventService', 'mx.shell.SearchProviderService'];\r\n\r\n\tfunction MxSearchPageCustomFormCtrl($rootScope, $element, $compile, $scope, $stateParams, eventService, searchService) {\r\n\t\tvar vm = this,\r\n\t\t\tlocalScope;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tif (vm.view) {\r\n\t\t\t\tcompile(vm.view);\r\n\t\t\t}\r\n\t\t\tvar currentSearch = searchService.currentSearch();\r\n\t\t\tvar keyword = currentSearch.uiToken === vm.parameters.uiToken ? currentSearch.keyword : '';\r\n\r\n\t\t\tvm.formActive =\r\n\t\t\t\t(!vm.parameters.filterType || ((vm.parameters.filterType === 'structure' || vm.parameters.filterType === 'nofilter') && !vm.parameters.filterId)) && !keyword;\r\n\t\t};\r\n\r\n\t\tvm.$postLink = function () {\r\n\t\t\twindow.setTimeout(function () {\r\n\t\t\t\tvm.customFormButton = $element.find('.mx-search-page-custom-form--button');\r\n\t\t\t\tangular.element('.mx-search-page--toolbar').prepend(vm.customFormButton);\r\n\t\t\t}, 100);\r\n\t\t};\r\n\t\tvm.$onDestroy = function () {\r\n\t\t\tvm.customFormButton?.remove();\r\n\t\t};\r\n\r\n\t\tvm.toggle = function () {\r\n\t\t\tvm.formActive = !vm.formActive;\r\n\t\t\teventService.dispatchEvent(mx.shell.EventCodes.LayoutChanged, 'ConfigurationFormSwitched');\r\n\t\t};\r\n\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.shell.EventCodes.Search,\r\n\t\t\tfunction (e, searchOptions) {\r\n\t\t\t\tsearchOptions = searchOptions || {};\r\n\t\t\t\tif (vm.parameters.uiToken !== searchOptions.uiToken) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (searchOptions.dontHideCustomForm !== true) {\r\n\t\t\t\t\tvm.formActive = false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\r\n\t\treturn vm;\r\n\r\n\t\tfunction compile(tpl) {\r\n\t\t\tdestroy();\r\n\t\t\tlocalScope = $rootScope.$new(false, $scope);\r\n\t\t\tlocalScope.vm = vm.parameters;\r\n\r\n\t\t\tvar formElement = $element.find('.mx-search-page-custom-form--body');\r\n\t\t\tvar literalElement = $element.find('.mx-search-page-custom-form--literal');\r\n\r\n\t\t\tvar rootContainer = $(tpl)[0];\r\n\t\t\tvar formTpl = rootContainer.firstChild.children[0];\r\n\t\t\tvar literalTpl = rootContainer.firstChild.children[1];\r\n\r\n\t\t\tvar _elemForm = angular.element(formTpl);\r\n\t\t\tvar _elemLiteral = angular.element(literalTpl);\r\n\r\n\t\t\tformElement.append(_elemForm);\r\n\t\t\tliteralElement.append(_elemLiteral);\r\n\r\n\t\t\t$compile(_elemForm)(localScope);\r\n\t\t\t$compile(_elemLiteral)(localScope);\r\n\t\t\t$element.on('$destroy', destroy);\r\n\r\n\t\t\tfunction destroy() {\r\n\t\t\t\tif (localScope) {\r\n\t\t\t\t\tlocalScope.$destroy();\r\n\t\t\t\t\tformElement.empty();\r\n\t\t\t\t\tliteralElement.empty();\r\n\t\t\t\t\tlocalScope = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxContentWidgetViewDialogPage', {\r\n\t\tbindings: { parameters: '=?' },\r\n\t\tcontroller: MxContentWidgetViewDialogPageCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplate: '
',\r\n\t\ttransclude: true,\r\n\t});\r\n\r\n\tMxContentWidgetViewDialogPageCtrl.$inject = [];\r\n\r\n\tfunction MxContentWidgetViewDialogPageCtrl() {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.dataModel = vm.parameters;\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxContentWidgetViewNonVisual', {\r\n\t\tbindings: { parameters: '=?' },\r\n\t\tcontroller: MxContentWidgetViewNonVisualCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplate: '
',\r\n\t\ttransclude: true,\r\n\t});\r\n\r\n\tfunction MxContentWidgetViewNonVisualCtrl() {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.dataModel = vm.parameters;\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxContentWidgetView', {\r\n\t\tbindings: {\r\n\t\t\tparameters: '=',\r\n\t\t\tview: '=',\r\n\t\t\tpreprocessors: '=?',\r\n\t\t},\r\n\t\tcontroller: MxContentWidgetViewCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t});\r\n\r\n\tMxContentWidgetViewCtrl.$inject = [\r\n\t\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n\t\t'mx.shell.ContextService',\r\n\t\t'$scope',\r\n\t\t'$element',\r\n\t\t'$compile',\r\n\t\t'$rootScope',\r\n\t\t'mx.shell.Config',\r\n\t\t'$q',\r\n\t];\r\n\r\n\tfunction MxContentWidgetViewCtrl(contentWidgetService, contextService, $scope, $element, $compile, $rootScope, mxConfig, $q) {\r\n\t\tvar vm = this,\r\n\t\t\tlocalScope;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tcontentWidgetService.widgetSync(contextService.val('SolutionBuilderAgent.ContentWidgetId'));\r\n\t\t};\r\n\r\n\t\t$scope.$watch('vm.view', function (viewType) {\r\n\t\t\tif (viewType !== '' && viewType !== undefined && viewType !== null) {\r\n\t\t\t\tinit(viewType, vm.parameters);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn vm;\r\n\r\n\t\tfunction init(view) {\r\n\t\t\tvar directive;\r\n\t\t\tvar templatePromise, viewType;\r\n\r\n\t\t\tif (view === null) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// To do: rework code below\r\n\t\t\tif (typeof view === 'number') {\r\n\t\t\t\ttemplatePromise = $q.when('');\r\n\t\t\t\tviewType = view;\r\n\t\t\t} else if (typeof view === 'string') {\r\n\t\t\t\ttemplatePromise = $q.when(view);\r\n\t\t\t\tviewType = mx.SolutionBuilderAgent.ContentWidgetViewType.DialogPage;\r\n\t\t\t} else {\r\n\t\t\t\tif (view === undefined) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\ttemplatePromise = $q.when(view.Template || '');\r\n\t\t\t\tviewType = view.Type;\r\n\t\t\t}\r\n\r\n\t\t\tswitch (viewType) {\r\n\t\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetViewType.List:\r\n\t\t\t\t\tdirective = 'mx-content-widget-view-list';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetViewType.Tile:\r\n\t\t\t\t\tdirective = 'mx-content-widget-view-tiles';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetViewType.Grid:\r\n\t\t\t\t\tdirective = 'mx-content-widget-view-grid';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetViewType.ObjectDetails:\r\n\t\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetViewType.DialogPage:\r\n\t\t\t\t\tdirective = 'mx-content-widget-view-dialog-page';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetViewType.NonVisual:\r\n\t\t\t\t\tdirective = 'mx-content-widget-view-non-visual';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetViewType.Calendar:\r\n\t\t\t\t\tdirective = 'mx-content-widget-view-calendar';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetViewType.Board:\r\n\t\t\t\t\tdirective = 'mx-content-widget-view-board';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tdirective = 'mx-content-widget-view-grid';\r\n\t\t\t}\r\n\r\n\t\t\ttemplatePromise.then(function (template) {\r\n\t\t\t\tvar str = template.indexOf('layout_container_mode_panel') === -1 ? '' : 'class=\"dialog-panel-container\"'; // Thx Medgit\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\tviewType === mx.SolutionBuilderAgent.ContentWidgetViewType.List ||\r\n\t\t\t\t\tviewType === mx.SolutionBuilderAgent.ContentWidgetViewType.Tile ||\r\n\t\t\t\t\tviewType === mx.SolutionBuilderAgent.ContentWidgetViewType.Board\r\n\t\t\t\t) {\r\n\t\t\t\t\tvar re = new RegExp('vm.dataModel.DataQuery.return', 'g');\r\n\t\t\t\t\ttemplate = template.replace(re, 'item');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\tviewType === mx.SolutionBuilderAgent.ContentWidgetViewType.List ||\r\n\t\t\t\t\tviewType === mx.SolutionBuilderAgent.ContentWidgetViewType.Tile ||\r\n\t\t\t\t\tviewType === mx.SolutionBuilderAgent.ContentWidgetViewType.Grid ||\r\n\t\t\t\t\tviewType === mx.SolutionBuilderAgent.ContentWidgetViewType.Board\r\n\t\t\t\t) {\r\n\t\t\t\t\tstr += ' output-preprocessors=\"vm.preprocessors\" ';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (viewType === mx.SolutionBuilderAgent.ContentWidgetViewType.Board) {\r\n\t\t\t\t\tvm.parameters.board = vm.parameters.board || {};\r\n\t\t\t\t\tvm.parameters.board.template = template;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (directive === 'mx-content-widget-view-tiles') {\r\n\t\t\t\t\tvar found = template.match(/mx-tile=\"(.+?)\"/i);\r\n\r\n\t\t\t\t\tstr += ' data-tiles-config=\"' + (found.length === 2 ? found[1] : '') + '\" ';\r\n\r\n\t\t\t\t\t// To do: this is temp (quick) workaround fix for mobile tile view.\r\n\t\t\t\t\t// This code removes \"mobile classes\" like \"layout-xs-column\" \"layout-sm-column\" from tile view.\r\n\t\t\t\t\t// Server-side transformation (html-generator) should not generate those classes for Tiles at all (or do it optionally) because it breaks it.\r\n\t\t\t\t\t// But maybe(maybe not) those mobile classes are needed for something else (like dialogs or forms or lists).\r\n\t\t\t\t\t// That's why it's very risky to remove those classes for all on server-side transformation before Release.\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t'layout-xs-column',\r\n\t\t\t\t\t\t'layout-sm-column',\r\n\t\t\t\t\t\t'layout-xs-row',\r\n\t\t\t\t\t\t'layout-sm-row',\r\n\t\t\t\t\t\t'layout-align-xs-start-stretch',\r\n\t\t\t\t\t\t'layout-align-sm-start-stretch',\r\n\t\t\t\t\t\t'layout-align-xs-end-stretch',\r\n\t\t\t\t\t\t'layout-align-sm-end-stretch',\r\n\t\t\t\t\t].forEach(function (cls) {\r\n\t\t\t\t\t\ttemplate = template.split(cls).join('');\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcompile(\r\n\t\t\t\t\t(vm.parameters.nonVisualTemplate\r\n\t\t\t\t\t\t? '' + vm.parameters.nonVisualTemplate + ''\r\n\t\t\t\t\t\t: '') +\r\n\t\t\t\t\t\t'<' +\r\n\t\t\t\t\t\tdirective +\r\n\t\t\t\t\t\t' data-parameters=\"vm.parameters\" ' +\r\n\t\t\t\t\t\t' class=\"layout-column flex\" ' +\r\n\t\t\t\t\t\tstr +\r\n\t\t\t\t\t\t'>' +\r\n\t\t\t\t\t\ttemplate +\r\n\t\t\t\t\t\t''\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction compile(tpl) {\r\n\t\t\tdestroy();\r\n\t\t\tlocalScope = $rootScope.$new(false, $scope);\r\n\r\n\t\t\t// TO DO: do not set config that way: dataModel.config .\r\n\t\t\t// Use dataModel.Context.__config instead. And why vm.parameters.dataModel could be empty ?\r\n\t\t\tif (vm.parameters.hasOwnProperty('dataModel')) {\r\n\t\t\t\tvm.parameters.dataModel.config = mxConfig;\r\n\t\t\t} else {\r\n\t\t\t\tvm.parameters.config = mxConfig;\r\n\t\t\t}\r\n\t\t\tvm.preprocessors = {};\r\n\t\t\tlocalScope.vm = { parameters: vm.parameters, preprocessors: vm.preprocessors };\r\n\r\n\t\t\tvar _elem = angular.element(tpl);\r\n\t\t\t$element.append(_elem);\r\n\t\t\t$compile(_elem)(localScope);\r\n\t\t\t$element.on('$destroy', destroy);\r\n\t\t}\r\n\r\n\t\tfunction destroy() {\r\n\t\t\tif (localScope) {\r\n\t\t\t\tlocalScope.$destroy();\r\n\t\t\t\t$element.empty();\r\n\t\t\t\tlocalScope = null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxCustomContentWidget', {\r\n\t\tbindings: {\r\n\t\t\twidgetId: '@',\r\n\t\t},\r\n\t\tcontroller: MxCustomContentWidgetCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-custom-content-widget/mx-custom-content-widget.html',\r\n\t});\r\n\r\n\tMxCustomContentWidgetCtrl.$inject = [\r\n\t\t'$q',\r\n\t\t'$attrs',\r\n\t\t'$scope',\r\n\t\t'$interpolate',\r\n\t\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n\t\t'mx.SolutionBuilderAgent.ControlDescriptorService',\r\n\t\t'mx.SolutionBuilderAgent.DataModelService',\r\n\t];\r\n\r\n\tfunction MxCustomContentWidgetCtrl($q, $attrs, $scope, $interpolate, contentWidgetService, controlDescriptorService, dataModelService) {\r\n\t\tvar vm = this;\r\n\t\tvar controlDescriptorId;\r\n\t\tvar freeDataSourceDefer;\r\n\t\tvar watchers;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tinit();\r\n\t\t};\r\n\r\n\t\tvm.$onDestroy = function () {\r\n\t\t\tdestroy();\r\n\t\t};\r\n\r\n\t\tvm.$onChanges = function (changes) {\r\n\t\t\tif (changes.widgetId && !changes.widgetId.isFirstChange()) {\r\n\t\t\t\tdestroy();\r\n\t\t\t\tinit();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\r\n\t\tfunction init() {\r\n\t\t\tfreeDataSourceDefer = $q.defer();\r\n\t\t\twatchers = [];\r\n\r\n\t\t\tif (!vm.widgetId) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tcontentWidgetService\r\n\t\t\t\t.getHtml(vm.widgetId)\r\n\t\t\t\t.then(function (data) {\r\n\t\t\t\t\tcontrolDescriptorId = data.ControlDescriptorId;\r\n\r\n\t\t\t\t\tif (Array.isArray(data.Template.Views) && data.Template.Views.length > 0) {\r\n\t\t\t\t\t\tvm.view = data.Template.Views[0];\r\n\t\t\t\t\t\tvm.view.widgetId = data.Id;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvm.widget = {\r\n\t\t\t\t\t\tid: data.Id,\r\n\t\t\t\t\t\tview: vm.view,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tvm.serviceContextInfo = {\r\n\t\t\t\t\t\twidgetId: vm.widgetId,\r\n\t\t\t\t\t\tviewName: vm.view?.Key,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tif (data.Template.DataModelExtensions) {\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tvm.widget.extensions = JSON.parse(data.Template.DataModelExtensions);\r\n\t\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\t\tmx.console.warn(e);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn controlDescriptorId ? controlDescriptorService.getProperties(controlDescriptorId) : $q.when([]);\r\n\t\t\t\t})\r\n\t\t\t\t.then(function (properties) {\r\n\t\t\t\t\tvar staticData = {\r\n\t\t\t\t\t\tContext: {\r\n\t\t\t\t\t\t\tWidgetId: vm.widget.id,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tWidgetAttributes: initWidgetAttributes(properties),\r\n\t\t\t\t\t};\r\n\t\t\t\t\treturn dataModelService.loadDataModel(vm.widget.extensions, staticData, undefined, freeDataSourceDefer.promise);\r\n\t\t\t\t})\r\n\t\t\t\t.then(function (dataModel) {\r\n\t\t\t\t\tvm.dataModel = dataModel;\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction destroy() {\r\n\t\t\tfreeDataSourceDefer?.resolve(true);\r\n\t\t\twatchers?.forEach(function (w) {\r\n\t\t\t\tw();\r\n\t\t\t});\r\n\t\t\tfreeDataSourceDefer = null;\r\n\t\t\twatchers = null;\r\n\t\t}\r\n\r\n\t\tfunction initWidgetAttributes(properties) {\r\n\t\t\tvar widgetAttributes = {};\r\n\t\t\tproperties.forEach(function (property) {\r\n\t\t\t\tif (property.direction === mx.SolutionBuilderAgent.DataModelPropertyDirection.IN) {\r\n\t\t\t\t\tinitOneWayWidgetAttribute(property, widgetAttributes);\r\n\t\t\t\t} else if (property.direction === mx.SolutionBuilderAgent.DataModelPropertyDirection.BOTH) {\r\n\t\t\t\t\tinitTwoWayWidgetAttribute(property, widgetAttributes);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\treturn widgetAttributes;\r\n\t\t}\r\n\r\n\t\tfunction initOneWayWidgetAttribute(property, widgetAttributes) {\r\n\t\t\tvar value = $attrs[property.camelCasedName] && $interpolate($attrs[property.camelCasedName])($scope.$parent);\r\n\r\n\t\t\twatchers.push(\r\n\t\t\t\t$attrs.$observe(property.camelCasedName, function (interpolatedValue) {\r\n\t\t\t\t\tvalue = interpolatedValue;\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t\tObject.defineProperty(widgetAttributes, property.camelCasedName, {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn value;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\tvalue = newValue;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction initTwoWayWidgetAttribute(property, widgetAttributes) {\r\n\t\t\tvar attributeValue = $attrs[property.camelCasedName];\r\n\t\t\tif (!attributeValue) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\twidgetAttributes[property.camelCasedName] = $scope.$parent.$eval(attributeValue);\r\n\r\n\t\t\twatchers.push(\r\n\t\t\t\t$scope.$parent.$watch(attributeValue, function (newValue) {\r\n\t\t\t\t\twidgetAttributes[property.camelCasedName] = newValue;\r\n\t\t\t\t})\r\n\t\t\t);\r\n\r\n\t\t\tvar path = attributeValue.split('.');\r\n\t\t\twatchers.push(\r\n\t\t\t\t$scope.$parent.$watch(\r\n\t\t\t\t\tfunction () {\r\n\t\t\t\t\t\treturn widgetAttributes[property.camelCasedName];\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfunction (newValue) {\r\n\t\t\t\t\t\tif (path.length <= 0) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (path.length === 1) {\r\n\t\t\t\t\t\t\t$scope.$parent[path[0]] = newValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvar item = $scope.$parent;\r\n\t\t\t\t\t\tvar unfound = path.slice(0, path.length - 1).some(function (step) {\r\n\t\t\t\t\t\t\titem = item[step];\r\n\t\t\t\t\t\t\treturn typeof item === 'undefined';\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (!unfound) {\r\n\t\t\t\t\t\t\tvar prevValue = item[path[path.length - 1]];\r\n\t\t\t\t\t\t\tif (prevValue !== newValue) {\r\n\t\t\t\t\t\t\t\titem[path[path.length - 1]] = newValue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t);\r\n\r\n\t\t\t//Todo: refactor 'data-model-calculated-property.js' , line:\" if (calcProperty.descriptor.Name !== mx.SolutionBuilderAgent.DataModelSystemProperty.Item || localParentPath === parentObjectPath ) \"\r\n\t\t\t// Todo: use recursive setter\r\n\t\t\t/*Object.defineProperty(widgetAttributes, property.camelCasedName, {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn value;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\tvalue = newValue;\r\n\t\t\t\t\tif (path.length <= 0) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (path.length === 1) {\r\n\t\t\t\t\t\t$scope.$parent[path[0]] = newValue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar item = $scope.$parent;\r\n\t\t\t\t\tvar unfound = path.slice(0, path.length - 1).some(function (step) {\r\n\t\t\t\t\t\titem = item[step];\r\n\t\t\t\t\t\treturn typeof item === 'undefined';\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (!unfound) {\r\n\t\t\t\t\t\titem[path[path.length - 1]] = newValue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});*/\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxCustomControl', {\r\n\t\tbindings: {\r\n\t\t\tlabel: '@',\r\n\t\t\tvalue: '=?',\r\n\t\t\tvalue2: '=?',\r\n\t\t\tvalue3: '=?',\r\n\t\t\tvalue4: '=?',\r\n\t\t\tvalue5: '=?',\r\n\t\t\trequire: '=?',\r\n\t\t\tcontrolName: '@',\r\n\t\t},\r\n\t\tcontroller: function MxCustomControl() {},\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplate: [\r\n\t\t\t'$attrs',\r\n\t\t\tfunction template(attr) {\r\n\t\t\t\t// ng-model is necessary for custom validation, ex. in recipient-picker\r\n\t\t\t\treturn (\r\n\t\t\t\t\t'<' +\r\n\t\t\t\t\tattr.controlName +\r\n\t\t\t\t\t' value=\"vm.value\" value2=\"vm.value2\" value3=\"vm.value3\" value4=\"vm.value4\" value5=\"vm.value5\" require=\"vm.require\" label=\"{{vm.label}}\" ng-model=\"vm.model\"> '\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t],\r\n\t});\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxDashboardEditor', {\r\n\t\tbindings: { dashboardId: '@' },\r\n\t\tcontrollerAs: 'vm',\r\n\t\tcontroller: MxDashboardEditorCtrl,\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-dashboard-editor/mx-dashboard-editor.html',\r\n\t});\r\n\r\n\tMxDashboardEditorCtrl.$inject = ['$scope', '$rootScope', 'mx.SolutionBuilderAgent.DashboardWidgetDataService'];\r\n\r\n\tfunction MxDashboardEditorCtrl($scope, $rootScope, dashboardDataService) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.dashboardDataService = dashboardDataService;\r\n\t\tvm.addWidgetToDashboard = addWidgetToDashboard;\r\n\t\tvm.resetButtonClick = resetButtonClick;\r\n\t\tvm.revertToCustomClick = revertToCustomClick;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\t// DashboardDataService.enableDashboardEditMode(vm.dashboardId);\r\n\r\n\t\t\tloadData();\r\n\t\t};\r\n\r\n\t\t$rootScope.$on('widgetDeleted', function (event, data) {\r\n\t\t\tif (dashboardDataService.isWidgetAvailable(vm.dashboardId, data.id)) {\r\n\t\t\t\tdashboardDataService.removeWidgetFromDashboard(vm.dashboardId, data.id);\r\n\t\t\t\tloadData();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$scope.$on('$destroy', function () {\r\n\t\t\tdashboardDataService.disableDashboardEditMode(vm.dashboardId);\r\n\t\t});\r\n\r\n\t\tfunction sortWidgets(widgetA, widgetB) {\r\n\t\t\tif (!widgetA.added && widgetB.added) {\r\n\t\t\t\treturn 1;\r\n\t\t\t} else if (widgetA.added && widgetB.added) {\r\n\t\t\t\treturn 0;\r\n\t\t\t} else if (widgetA.added && !widgetB.added) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction loadData() {\r\n\t\t\tvm.widgets = dashboardDataService.getAvailableDashboardWidgets(vm.dashboardId);\r\n\t\t\tvm.widgets.sort(sortWidgets);\r\n\t\t\tvm.isDashboardCustomized = dashboardDataService.isDashboardCustomized(vm.dashboardId);\r\n\t\t\tvm.isCustomLayoutSaved = dashboardDataService.isCustomLayoutSaved(vm.dashboardId);\r\n\t\t}\r\n\r\n\t\tfunction addWidgetToDashboard(widgetId) {\r\n\t\t\tdashboardDataService.addWidgetToDashboard(vm.dashboardId, widgetId);\r\n\t\t\tloadData();\r\n\t\t}\r\n\r\n\t\tfunction resetButtonClick() {\r\n\t\t\tdashboardDataService.resetToDefault(vm.dashboardId);\r\n\t\t\tloadData();\r\n\t\t\tdashboardDataService.renderDashboard(vm.dashboardId);\r\n\t\t}\r\n\r\n\t\tfunction revertToCustomClick() {\r\n\t\t\tdashboardDataService.revertToCustomLayout(vm.dashboardId);\r\n\t\t\tloadData();\r\n\t\t\tdashboardDataService.renderDashboard(vm.dashboardId);\r\n\t\t}\r\n\t}\r\n})();\r\n","angular.module('mx.SolutionBuilderAgent').component('mxDataControlPanel', {\r\n\tbindings: {\r\n\t\tsearchText: '<',\r\n\t\tshowAdvancedSearchButton: ' {\r\n\t\tvm.queryFilterOpened = !vm.queryFilterOpened;\r\n\t\tsetTimeout(() => eventService.dispatchEvent(mx.shell.EventCodes.LayoutChanged));\r\n\t};\r\n}\r\n","angular.module('mx.SolutionBuilderAgent').component('mxDataControlSettingsPanel', {\r\n\tbindings: {\r\n\t\tpreprocessors: '<',\r\n\t\tviewInfos: '<',\r\n\t\tshowConfigureButton: '<',\r\n\t\tonConfigureClick: '&',\r\n\t\tonViewSelect: '&',\r\n\t\tautoRefreshConfig: '<',\r\n\t\tcurrentView: '<',\r\n\t\tavailableRowHeights: '<',\r\n\t\trowHeight: '=?',\r\n\t\tenableRowsColoring: '=?',\r\n\t\tviewParameters: '<',\r\n\t},\r\n\tcontroller: MxDataControlSettingsPanelCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-data-control-settings-panel/mx-data-control-settings-panel.html',\r\n});\r\n\r\nMxDataControlSettingsPanelCtrl.$inject = [\r\n\t'mx.shell.SearchProviderService',\r\n\t'mx.SolutionBuilderAgent.SearchQueryService',\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n\t'mx.shell.EventService',\r\n\t'$scope',\r\n];\r\n\r\nfunction MxDataControlSettingsPanelCtrl(searchService, searchQueryService, personalizationService, eventService, $scope) {\r\n\tconst vm = this;\r\n\tvm.noFilters = true;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tpersonalizationService.getGridPersonalization(vm.viewParameters.id).then(function (personalization) {\r\n\t\t\tvm.hasPersonalization = typeof personalization === 'object' && Object.keys(personalization).length;\r\n\t\t});\r\n\t};\r\n\r\n\tvm.onColumnClick = function (column) {\r\n\t\tconst context = searchService.currentContext();\r\n\r\n\t\tif (column && context.widgetId) {\r\n\t\t\tpersonalizationService.setColumnVisibility(context.widgetId, column.Name, column.visible);\r\n\t\t}\r\n\t};\r\n\r\n\tvm.clearColumnsPersonalization = function () {\r\n\t\tpersonalizationService.saveGridPersonalization({}, vm.viewParameters.id);\r\n\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.SynchronizeWidget);\r\n\t};\r\n\r\n\tvm.getIconName = getIconName;\r\n\r\n\teventService.subscribeTo(\r\n\t\tmx.SolutionBuilderAgent.Events.GridPersonalizationSaved,\r\n\t\t(e, data) => {\r\n\t\t\tif (data && data.contextKey === vm.viewParameters.id) {\r\n\t\t\t\tvm.hasPersonalization = typeof data.personalization === 'object' && Object.keys(data.personalization).length;\r\n\t\t\t}\r\n\t\t},\r\n\t\t$scope\r\n\t);\r\n\r\n\treturn vm;\r\n\r\n\tfunction getIconName(type) {\r\n\t\treturn (\r\n\t\t\t(type === mx.SolutionBuilderAgent.ContentWidgetViewType.Grid && 'grid_on') ||\r\n\t\t\t(type === mx.SolutionBuilderAgent.ContentWidgetViewType.List && 'view_list') ||\r\n\t\t\t(type === mx.SolutionBuilderAgent.ContentWidgetViewType.Tile && 'view_quilt') ||\r\n\t\t\t(type === mx.SolutionBuilderAgent.ContentWidgetViewType.Calendar && 'date_range') ||\r\n\t\t\t(type === mx.SolutionBuilderAgent.ContentWidgetViewType.Board && 'view_week')\r\n\t\t);\r\n\t}\r\n}\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').directive('mxEnsureUnique', [\r\n\t\t'mx.SolutionBuilderAgent.EntityService',\r\n\t\t'mx.internationalization',\r\n\t\t'$q',\r\n\t\t'$timeout',\r\n\t\tfunction mxEnsureUniqueDirective(mxEntityService, i18n, $q, $timeout) {\r\n\t\t\tvar message = i18n.get('solutionBuilderAgent.form-validation.unique');\r\n\r\n\t\t\treturn {\r\n\t\t\t\trequire: ['ngModel', '?^mxForm', '?^^mxServiceContext'],\r\n\t\t\t\tlink: function (scope, element, attrs, ctrl) {\r\n\t\t\t\t\tif (typeof attrs.mxEnsureUnique === 'string') {\r\n\t\t\t\t\t\tvar parts = [];\r\n\t\t\t\t\t\tvar statementStartIndex = attrs.mxEnsureUnique.indexOf('[');\r\n\t\t\t\t\t\tif (statementStartIndex !== -1) {\r\n\t\t\t\t\t\t\tparts.push(attrs.mxEnsureUnique.substr(0, statementStartIndex));\r\n\t\t\t\t\t\t\tparts.push(attrs.mxEnsureUnique.substr(statementStartIndex));\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tparts = attrs.mxEnsureUnique.split('.');\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (parts.length === 2) {\r\n\t\t\t\t\t\t\tvar ngModelCtrl = ctrl[0];\r\n\r\n\t\t\t\t\t\t\tngModelCtrl.mxErrorMessages.unique = message;\r\n\t\t\t\t\t\t\tvar formObjectId = null;\r\n\t\t\t\t\t\t\tvar mxForm = ctrl[1];\r\n\r\n\t\t\t\t\t\t\tif (mxForm) {\r\n\t\t\t\t\t\t\t\tformObjectId = mxForm.objectId;\r\n\t\t\t\t\t\t\t\tif (formObjectId === 'new') {\r\n\t\t\t\t\t\t\t\t\tformObjectId = null;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tconst mxServiceContext = ctrl[2];\r\n\r\n\t\t\t\t\t\t\tif (!formObjectId) {\r\n\t\t\t\t\t\t\t\t// use fragmentID for wizards based on DD\r\n\t\t\t\t\t\t\t\tformObjectId =\r\n\t\t\t\t\t\t\t\t\tmxServiceContext?.mxServiceContext?.Context?.Object?.Id ||\r\n\t\t\t\t\t\t\t\t\tmxServiceContext?.mxServiceContext?.Context?.Object?.ID ||\r\n\t\t\t\t\t\t\t\t\t'00000000-0000-0000-0000-000000000000';\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tvar pendingValidation;\r\n\t\t\t\t\t\t\tvar resultCache = {};\r\n\r\n\t\t\t\t\t\t\tngModelCtrl.$asyncValidators.unique = function (modelValue, viewValue) {\r\n\t\t\t\t\t\t\t\tif (pendingValidation) {\r\n\t\t\t\t\t\t\t\t\t$timeout.cancel(pendingValidation);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (!viewValue) {\r\n\t\t\t\t\t\t\t\t\treturn $q.when();\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tpendingValidation = $timeout(function () {\r\n\t\t\t\t\t\t\t\t\tpendingValidation = null;\r\n\r\n\t\t\t\t\t\t\t\t\t// returns promise or value\r\n\t\t\t\t\t\t\t\t\tvar deferred = $q.defer();\r\n\t\t\t\t\t\t\t\t\tif (viewValue) {\r\n\t\t\t\t\t\t\t\t\t\tvar res = resultCache[viewValue.toLowerCase()];\r\n\t\t\t\t\t\t\t\t\t\tif (res !== undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\tif (res) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.resolve();\r\n\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.reject();\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\tmxEntityService.ensureUniqueValue(parts[0], parts[1], formObjectId, viewValue, mxForm.entityName).then(function (isUnique) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tresultCache[viewValue.toLowerCase()] = isUnique;\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (isUnique) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.resolve();\r\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.reject();\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tdeferred.resolve();\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn deferred.promise;\r\n\t\t\t\t\t\t\t\t}, 1000);\r\n\r\n\t\t\t\t\t\t\t\treturn pendingValidation;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t},\r\n\t]);\r\n})();\r\n","angular.module('mx.SolutionBuilderAgent').directive('mxExpressionValidator', [\r\n\t'$parse',\r\n\t'mx.SolutionBuilderAgent.SchemaService',\r\n\t'mx.SolutionBuilderAgent.DataQueryService',\r\n\t'mx.internationalization',\r\n\t'$timeout',\r\n\tfunction mxExpressionValidatorDirective($parse, mxSchema, mxDataQuery, i18n, $timeout) {\r\n\t\tconst message = i18n.get('solutionBuilderAgent.form-validation.expression');\r\n\r\n\t\treturn {\r\n\t\t\trequire: ['ngModel', '?^mxForm'],\r\n\t\t\trestrict: 'A',\r\n\t\t\tlink: function (scope, element, attrs, ctrl) {\r\n\t\t\t\tlet exptType;\r\n\t\t\t\tlet entityClassName = null;\r\n\t\t\t\tlet operationId = null;\r\n\t\t\t\tconst isCondition = attrs.isCondition === 'true';\r\n\t\t\t\tconst ngModelCtrl = ctrl[0];\r\n\t\t\t\tconst placeholders = attrs.expressionPlaceholders;\r\n\r\n\t\t\t\tconst attributeName = attrs.ngModel.split('.').pop();\r\n\t\t\t\tconst params = attrs.expressionJavascriptParams ? attrs.expressionJavascriptParams.split(',') : [];\r\n\t\t\t\tconst isLogical = attrs.expressionLogical !== 'false' && Boolean(attrs.expressionLogical);\r\n\t\t\t\tconst allowUnknownType = attrs.allowUnknownType !== 'false' && Boolean(attrs.allowUnknownType);\r\n\r\n\t\t\t\tconst isJs = attrs.expressionJavascript !== 'false' && Boolean(attrs.expressionJavascript);\r\n\t\t\t\tif (!isJs) {\r\n\t\t\t\t\tif (attrs.expressionType) {\r\n\t\t\t\t\t\texptType = $parse(attrs.expressionType);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tngModelCtrl.mxErrorMessages.expression = message;\r\n\t\t\t\t\tngModelCtrl.$$parentForm.mxErrorMessages.expression = message;\r\n\r\n\t\t\t\t\tif (attrs.mxExpressionValidator) {\r\n\t\t\t\t\t\tmxSchema.getClass(attrs.mxExpressionValidator).then(function (objClass) {\r\n\t\t\t\t\t\t\tif (objClass) {\r\n\t\t\t\t\t\t\t\tentityClassName = attrs.mxExpressionValidator;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tscope.$parent.$watch(attrs.mxExpressionValidator, function (className) {\r\n\t\t\t\t\t\t\t\t\tif (entityClassName !== className) {\r\n\t\t\t\t\t\t\t\t\t\tif (className) {\r\n\t\t\t\t\t\t\t\t\t\t\tmxSchema.getClass(className).then(function (objClass) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (objClass) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tentityClassName = className;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalidate();\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\tentityClassName = null;\r\n\t\t\t\t\t\t\t\t\t\t\tvalidate();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (attrs.operationId) {\r\n\t\t\t\t\t\toperationId = attrs.operationId;\r\n\t\t\t\t\t\tscope.$parent.$watch(attrs.operationId, function (opId) {\r\n\t\t\t\t\t\t\tif (operationId !== opId) {\r\n\t\t\t\t\t\t\t\toperationId = opId || null;\r\n\t\t\t\t\t\t\t\tvalidate();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst validateJs = function () {\r\n\t\t\t\t\tif (initialValue === ngModelCtrl.$viewValue) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (ngModelCtrl.$viewValue) {\r\n\t\t\t\t\t\t_validateJsScript(ngModelCtrl.$viewValue);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tngModelCtrl.$setValidity(attributeName, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tconst validate = () => (isJs ? validateJs() : validateExpr());\r\n\r\n\t\t\t\tconst validateExpr = function () {\r\n\t\t\t\t\tconst validationAttributeName = 'expression';\r\n\t\t\t\t\tconst exprValue = ngModelCtrl.$viewValue || scope.$parent?.item?.[attributeName];\r\n\t\t\t\t\tif (initialValue === exprValue) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ((entityClassName || operationId) && exprValue) {\r\n\t\t\t\t\t\tmxDataQuery.evaluateColumnExpression(entityClassName, exprValue, operationId, isCondition, placeholders).then(function (dataType) {\r\n\t\t\t\t\t\t\tngModelCtrl.$setValidity(validationAttributeName, Boolean(dataType) || allowUnknownType);\r\n\t\t\t\t\t\t\tif (exptType) {\r\n\t\t\t\t\t\t\t\texptType.assign(scope, dataType);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tngModelCtrl.$setValidity(validationAttributeName, true);\r\n\t\t\t\t\t\tif (exptType) {\r\n\t\t\t\t\t\t\texptType.assign(scope, '');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tconst _validateJsScript = function (script) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tif (isLogical) {\r\n\t\t\t\t\t\t\tconst safeScript = mx.components.Utils.getSafeScript(script);\r\n\r\n\t\t\t\t\t\t\tconst func = new Function(params.concat('window'), 'return ' + safeScript);\r\n\t\t\t\t\t\t\tconst pseudoLogicalResult = func({});\r\n\t\t\t\t\t\t\tif (pseudoLogicalResult !== true && pseudoLogicalResult !== false) {\r\n\t\t\t\t\t\t\t\tsetInvalid('Invalid Logical expression');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconst func = new Function(params.concat('window'), ngModelCtrl.$viewValue);\r\n\t\t\t\t\t\t\tfunc.apply('', params);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tngModelCtrl.$setValidity(attributeName, true);\r\n\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\tsetInvalid(`Javascript is invalid: ${e.message}`);\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet initialValue = null;\r\n\r\n\t\t\t\tconst setInvalid = function (errorMessage) {\r\n\t\t\t\t\tngModelCtrl.mxErrorMessages[attributeName] = errorMessage;\r\n\r\n\t\t\t\t\t// reset validity\r\n\t\t\t\t\tngModelCtrl.$setValidity(attributeName, true);\r\n\t\t\t\t\t$timeout(() => ngModelCtrl.$setValidity(attributeName, false), 10);\r\n\t\t\t\t};\r\n\r\n\t\t\t\telement.on('focus', () => (initialValue = ngModelCtrl.$viewValue));\r\n\r\n\t\t\t\telement.on('blur', validate);\r\n\t\t\t},\r\n\t\t};\r\n\t},\r\n]);\r\n","// TO DO: This module is used not just in mx-grid. Move this file to layout folder.\r\n'use strict';\r\n\r\nangular.module('mx.SolutionBuilderAgent').controller('mx.SolutionBuilderAgent.ObjectPickerFileSelectionTabController', ['$scope', MxObjectPickerFileSelectionTab]);\r\n\r\nfunction MxObjectPickerFileSelectionTab($scope) {\r\n\tconst vm = this;\r\n\r\n\tvm.$onInit = function () {\r\n\t\t$scope.$watch(\r\n\t\t\tfunction () {\r\n\t\t\t\treturn (vm.files || []).some(function (file) {\r\n\t\t\t\t\treturn file.selected === true && file.id;\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\tfunction (newValue) {\r\n\t\t\t\tvm.selectButtonDisabled = !newValue;\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\tvm.select = function () {\r\n\t\tconst selectedObjects = vm.getSelectedObjects();\r\n\r\n\t\tvm.finishDefer.resolve({\r\n\t\t\tselectedObjects: selectedObjects,\r\n\t\t\tfiles: vm.files,\r\n\t\t});\r\n\t};\r\n\r\n\tvm.cancel = function () {\r\n\t\tvm.finishDefer.reject(mx.noLogCatchMessage('file selection was canceled'));\r\n\t};\r\n}\r\n","(function () {\r\n\t'use strict';\r\n\tMxGridObjectPickerCtrl.$inject = ['uiGridEditConstants', '$scope', '$element', '$timeout'];\r\n\r\n\tfunction MxGridObjectPickerCtrl(uiGridEditConstants, $scope, $element, $timeout) {\r\n\t\tvar vm = this;\r\n\t\tvar selectedItem = null;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvar colDef = vm.col.colDef;\r\n\r\n\t\t\tvm.model = vm.row.entity.getEntityValue(colDef.field);\r\n\r\n\t\t\tObject.defineProperty(vm, 'selectedItem', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn selectedItem;\r\n\t\t\t\t},\r\n\t\t\t\tset: setSelectedItem,\r\n\t\t\t});\r\n\r\n\t\t\tfunction setSelectedItem(item) {\r\n\t\t\t\tselectedItem = item;\r\n\r\n\t\t\t\tif (!vm.selectedItem) {\r\n\t\t\t\t\tvm.row.entity.setEntityValue(colDef.field, null, '');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (selectedItem.Id && selectedItem.DisplayString && selectedItem.Id !== vm.row.entity.getEntityValue(colDef.field)) {\r\n\t\t\t\t\t\tvm.row.entity.setEntityValue(colDef.field, selectedItem.Id, selectedItem.DisplayString);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$element.find('input').focus();\r\n\t\t\t}\r\n\r\n\t\t\tvm.onBlur = function ($event) {\r\n\t\t\t\t// if click on buttons inside picker (clear or browse) then don't stop editing\r\n\t\t\t\tif ($event.relatedTarget && ($event.relatedTarget.classList.contains('autocomplete-search') || $event.relatedTarget.classList.contains('clear-autocomplete'))) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t$scope.$emit(uiGridEditConstants.events.END_CELL_EDIT);\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\t$scope.$on(uiGridEditConstants.events.BEGIN_CELL_EDIT, function () {\r\n\t\t\t$timeout(function () {\r\n\t\t\t\t$element.find('input').focus();\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn vm;\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc directive\r\n\t * @name mx.SolutionBuilderAgent:mxGridObjectPicker\r\n\t * @module mx.SolutionBuilderAgent\r\n\t * @restrict 'E'\r\n\t * @description\r\n\t * The mx-grid-object-picker control is used ......\r\n\t *\r\n\t * @usage \r\n\t */\r\n\tangular.module('mx.SolutionBuilderAgent').directive('mxGridObjectPicker', [\r\n\t\tfunction mxGridObjectPickerDirective() {\r\n\t\t\treturn {\r\n\t\t\t\tscope: {},\r\n\t\t\t\trestrict: 'E',\r\n\t\t\t\tbindToController: {\r\n\t\t\t\t\tcol: '<',\r\n\t\t\t\t\trow: '<',\r\n\t\t\t\t},\r\n\t\t\t\tcontroller: MxGridObjectPickerCtrl,\r\n\t\t\t\tcontrollerAs: 'vm',\r\n\t\t\t\ttemplate: [\r\n\t\t\t\t\tfunction () {\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t};\r\n\t\t},\r\n\t]);\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * \r\n\t *\r\n\t */\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxGroupingBoard', {\r\n\t\tbindings: {\r\n\t\t\titems: '<',\r\n\t\t\tcolumns: '<',\r\n\t\t\titemColumnKey: '@',\r\n\t\t\titemPriorityKey: '@', // not mandatory\r\n\t\t\tonItemChanged: '&', // callback with next agrs: (, , , );\r\n\t\t\tloading: '<',\r\n\t\t\titemTemplate: '<',\r\n\t\t\tsharedScope: '<',\r\n\t\t\tsharedScopeAs: '@',\r\n\t\t\tenableDragging: '<',\r\n\t\t},\r\n\t\ttransclude: true,\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-grouping-board/mx-grouping-board.html',\r\n\t\tcontrollerAs: 'vm',\r\n\t\tcontroller: MxGroupingBoard,\r\n\t});\r\n\r\n\tMxGroupingBoard.$inject = ['$scope', 'mx.shell.View'];\r\n\r\n\tfunction MxGroupingBoard($scope, MxView) {\r\n\t\tvar vm = this;\r\n\t\tvm.groupedItem = {};\r\n\r\n\t\t$scope.$watchGroup(['vm.items', 'vm.itemColumnKey'], function () {\r\n\t\t\tif (vm.items && Array.isArray(vm.items)) {\r\n\t\t\t\tvm.groupedItem = angular.extend(vm.groupedItem, _.groupBy(vm.items, vm.itemColumnKey));\r\n\t\t\t\tif (vm.itemTemplate) {\r\n\t\t\t\t\t_generateItemViews(vm.items, vm.itemTemplate);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$scope.$watch('vm.itemTemplate', function (newItemTemplate, oldItemTemplate) {\r\n\t\t\tif (typeof newItemTemplate === 'string' && newItemTemplate !== oldItemTemplate && Array.isArray(vm.items)) {\r\n\t\t\t\t_generateItemViews(vm.items, newItemTemplate, true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$scope.$watch('vm.columns', function () {\r\n\t\t\tif (Array.isArray(vm.columns)) {\r\n\t\t\t\tvm.columns.forEach(function (col) {\r\n\t\t\t\t\tif (!vm.groupedItem[col.value]) {\r\n\t\t\t\t\t\tvm.groupedItem[col.value] = [];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvm.onMove = function ($item, $partFrom, $partTo, $indexFrom, $indexTo) {\r\n\t\t\t// When Column is changed\r\n\t\t\tfor (var columnVal in vm.groupedItem) {\r\n\t\t\t\tif (vm.groupedItem[columnVal] === $partTo) {\r\n\t\t\t\t\t// update item\r\n\t\t\t\t\tif (typeof $item[vm.itemColumnKey] === 'number') {\r\n\t\t\t\t\t\tcolumnVal = parseInt(columnVal);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t$item[vm.itemColumnKey] = columnVal;\r\n\r\n\t\t\t\t\t// trigger callback\r\n\t\t\t\t\tvm.onItemChanged({\r\n\t\t\t\t\t\titem: $item,\r\n\t\t\t\t\t\tnewColumnValue: columnVal,\r\n\t\t\t\t\t\titemBefore: $partTo[$indexTo - 1],\r\n\t\t\t\t\t\titemAfter: $partTo[$indexTo + 1],\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction _generateItemViews(items, template, forceRegen) {\r\n\t\t\titems.forEach(function (item, i) {\r\n\t\t\t\titem.__view =\r\n\t\t\t\t\titem.__view && !forceRegen\r\n\t\t\t\t\t\t? item.__view\r\n\t\t\t\t\t\t: new MxView({\r\n\t\t\t\t\t\t\t\tid: 'mxGroupingBoardItemViewID' + i + Math.random(),\r\n\t\t\t\t\t\t\t\ttemplate: template,\r\n\t\t\t\t\t\t\t\tlocals: item,\r\n\t\t\t\t\t\t\t\tcontrollerAs: 'item',\r\n\t\t\t\t\t\t\t\tcontroller: [\r\n\t\t\t\t\t\t\t\t\t'$scope',\r\n\t\t\t\t\t\t\t\t\tfunction ($scope) {\r\n\t\t\t\t\t\t\t\t\t\t$scope[vm.sharedScopeAs] = vm.sharedScope;\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t });\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc component\r\n\t * @name mx.SolutionBuilderAgent:MxImagePicker\r\n\t * @module mx.SolutionBuilderAgent\r\n\t * @restrict 'E'\r\n\t * @description\r\n\t * The mx-image-picker control is used to create a picker where the user can\r\n\t * select icon, upload file as attachment or pick image from server folder.\r\n\t *\r\n\t * The example below demonstrates some of the attributes you may use with the Picker control:\r\n\t * @param {string} label@ - Defines control label displayed on the form.\r\n\t * @param {boolean} ng-required= - The required property sets or returns whether a mxPicker must be filled out before submitting a form.\r\n\t * @param {boolean} disabled= - The disabled property sets or returns whether a mxPicker should be disabled, or not.\r\n\t * @param {boolean} readOnly= - The readOnly property sets or returns whether the contents of a mxPicker should be read-only.\r\n\t * @param {object} value - binds element to the object in the model.\r\n\t * @param {expression} onChange& - on change callback\r\n\t * @usage \r\n\t */\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxImagePicker', {\r\n\t\tbindings: {\r\n\t\t\tbaseFolder: '@?',\r\n\t\t\tdisabled: ' 1;\r\n\t\t};\r\n\r\n\t\tvm.$postLink = function () {};\r\n\r\n\t\t$scope.$watch('vm.value', function () {\r\n\t\t\tvm.iconValue = vm.value && vm.value.indexOf('/') === -1 && vm.value.split('.').length > 1;\r\n\t\t});\r\n\r\n\t\treturn vm;\r\n\r\n\t\tfunction onBrowseLookup(event) {\r\n\t\t\tif (event && event.stopPropagation) {\r\n\t\t\t\tevent.stopPropagation();\r\n\t\t\t}\r\n\r\n\t\t\tif (vm.browseLookup && !(vm.disabled || vm.readOnly)) {\r\n\t\t\t\tbrowseLookup(vm.value)\r\n\t\t\t\t\t.then(function (res) {\r\n\t\t\t\t\t\tvm.value = res.selectedImage;\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch(mx.logCatch);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onClear(event) {\r\n\t\t\tif (event && event.stopPropagation) {\r\n\t\t\t\tevent.stopPropagation();\r\n\t\t\t}\r\n\t\t\tvm.value = '';\r\n\t\t}\r\n\r\n\t\tfunction browseLookup(selectedImage) {\r\n\t\t\tlet objectView = vm.parentViewController?.mxView;\r\n\t\t\twhile (!objectView?.context?._id && objectView?.parentView) {\r\n\t\t\t\tobjectView = objectView.parentView;\r\n\t\t\t}\r\n\t\t\treturn dialogOpener.selectImage(\r\n\t\t\t\t{\r\n\t\t\t\t\tbaseFolder: vm.baseFolder,\r\n\t\t\t\t\tmodeAttach: vm.modeAttach === 'true',\r\n\t\t\t\t\tmodeIcon: vm.modeIcon === 'true',\r\n\t\t\t\t\tmodeImage: vm.modeImage === 'true',\r\n\t\t\t\t\tserverBasePath: vm.serverBasePath,\r\n\t\t\t\t\tselectedImage: selectedImage,\r\n\t\t\t\t},\r\n\t\t\t\tvm.form?.objectId || objectView?.context?._id,\r\n\t\t\t\tvm.form?.entityName || objectView?.context?._type,\r\n\t\t\t\tvm.parentViewController && vm.parentViewController.mxView\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n})();\r\n","'use strict';\r\n\r\n/**\r\n * @ngdoc component\r\n * @name mx.SolutionBuilderAgent:MxImageView\r\n * @module mx.SolutionBuilderAgent\r\n * @restrict 'E'\r\n * @description\r\n * The mx-image-view control displays image or icon, depending on value type.\r\n * Params:\r\n * @param {string} value - image source or icon name.\r\n * @param {string} default-value - default source in case if no image found on server.\r\n * @param {string} width - image width. If value is an icon - then try to get icon size from it.\r\n * @param {string} height - image height. If value is an icon - then try to get icon size from it.\r\n * @param {string} max-width - image max width. If value is an icon - to be ignored.\r\n * @param {string} max-height - image max height. If value is an icon - to be ignored.\r\n */\r\nangular.module('mx.SolutionBuilderAgent').component('mxImageView', {\r\n\tbindings: {\r\n\t\tvalue: '@',\r\n\t\tallowPreview: '@',\r\n\t\tdefaultValue: '@',\r\n\t\theight: '@',\r\n\t\twidth: '@',\r\n\t\tmaxHeight: '@',\r\n\t\tmaxWidth: '@',\r\n\t\tstyle: '@',\r\n\t\tserverBasePath: '@',\r\n\t},\r\n\trequire: {\r\n\t\tmxContainerCtrl: '?^^mxContainer',\r\n\t},\r\n\tcontroller: MxImageView,\r\n\tcontrollerAs: 'vm',\r\n\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-image-view/mx-image-view.html',\r\n});\r\n\r\nMxImageView.$inject = ['$scope', '$mdDialog', 'mx.shell.HostUrlHelper'];\r\n\r\nfunction MxImageView($scope, $mdDialog, hostHelper) {\r\n\tconst vm = this;\r\n\tlet value;\r\n\r\n\tvm.onImageClick = onImageClick;\r\n\r\n\tObject.defineProperty(vm, 'value', {\r\n\t\tget: () => value,\r\n\t\tset: updateValue,\r\n\t});\r\n\r\n\tvm.$onInit = function () {\r\n\t\tif (vm.mxContainerCtrl) {\r\n\t\t\tvm.mxContainerCtrl.registerChild($scope);\r\n\t\t}\r\n\r\n\t\tupdateValue();\r\n\t\tvm.style = vm.style || {};\r\n\t};\r\n\r\n\treturn vm;\r\n\r\n\tfunction onImageClick() {\r\n\t\tif (vm.allowPreview === 'true') {\r\n\t\t\thandleImageClick(vm.image);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction handleImageClick(url) {\r\n\t\t$mdDialog.show({\r\n\t\t\tclickOutsideToClose: true,\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t\tcontroller: [\r\n\t\t\t\t'$mdDialog',\r\n\t\t\t\tfunction ($mdDialog) {\r\n\t\t\t\t\tconst vm = this;\r\n\t\t\t\t\tvm.url = url;\r\n\r\n\t\t\t\t\tvm.cancel = function () {\r\n\t\t\t\t\t\t$mdDialog.cancel();\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t\ttemplate:\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'Close' +\r\n\t\t\t\t'
',\r\n\t\t});\r\n\t}\r\n\r\n\tfunction updateValue(newValue) {\r\n\t\tif (newValue) {\r\n\t\t\tif (newValue.indexOf('/') > -1 || newValue.split('.').length > 1) {\r\n\t\t\t\tvm.image = hostHelper.getFullImageUrl(newValue, vm.baseFolder, vm.serverBasePath);\r\n\t\t\t\tvm.imageStyles = {\r\n\t\t\t\t\t'object-fit': 'contain',\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (vm.height) {\r\n\t\t\t\t\tvm.imageStyles.height = vm.height;\r\n\t\t\t\t}\r\n\t\t\t\tif (vm.maxHeight) {\r\n\t\t\t\t\tvm.imageStyles.maxHeight = vm.maxHeight;\r\n\t\t\t\t}\r\n\t\t\t\tif (vm.width) {\r\n\t\t\t\t\tvm.imageStyles.width = vm.width;\r\n\t\t\t\t}\r\n\t\t\t\tif (vm.maxWidth) {\r\n\t\t\t\t\tvm.imageStyles.maxWidth = vm.maxWidth;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.icon = null;\r\n\t\t\t} else {\r\n\t\t\t\tvm.icon = newValue;\r\n\t\t\t\tvm.iconSize = (vm.width || vm.height || '').replace('px', '');\r\n\r\n\t\t\t\tvm.image = null;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvm.image = null;\r\n\t\t\tvm.icon = null;\r\n\t\t}\r\n\t}\r\n}\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc component\r\n\t * @name mx.agent:mxJournal\r\n\t * @module mx.agent\r\n\t * @restrict 'E'\r\n\t * @description\r\n\t * The mxJournal control provides simple journal functionality.\r\n\t *\r\n\t * The example below demonstrates some of the attributes you may use with the Journal control:\r\n\t * @param {string} itemsPerPage@ - How many items should be shown at once\r\n\t * @param {string} currentUserId@ - current user identifier\r\n\t * @param {string} currentUserPhoto@ - current user avatar image\r\n\t * @param {expression} onGetData& - Callback function to load journal items\r\n\t * @param {expression} onAdd& - Callback function to add new comment\r\n\t * @param {expression} attachFilesHandler& - if set then files attaching functionality will be enabled.\r\n\t * It expects a function that returns a promise,\r\n\t * result of which is an array of file objects that have at least a key \"DisplayString\".\r\n\t * Example: [\r\n\t * {DisplayString: \"file1.txt\", url: \"path/to/file/file1.txt\"},\r\n\t * {DisplayString: \"file2.pdf\", url: \"path/to/file/file2.pdf\"},\r\n\t * ...\r\n\t * ];\r\n\t * @param {boolean} readOnly=? - The readOnly property sets or returns whether the contents of a mxTextBox should be read-only.\r\n\t *\r\n\t * @usage\r\n\t * \r\n\t * \r\n\t */\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxJournal', {\r\n\t\tbindings: {\r\n\t\t\titemsPerPage: '@',\r\n\t\t\tonGetData: '&',\r\n\t\t\tonAdd: '&',\r\n\t\t\tonUpdate: '&',\r\n\t\t\tattachFilesHandler: '&',\r\n\t\t\tcurrentUserId: '@',\r\n\t\t\tcurrentUserPhoto: '@',\r\n\t\t\treadOnly: '<',\r\n\t\t\tshowCheckboxes: '=',\r\n\t\t},\r\n\t\trequire: {\r\n\t\t\tmxForm: '?^mxForm',\r\n\t\t\tmxContainerCtrl: '?^^mxContainer',\r\n\t\t},\r\n\t\tcontroller: MxJournalCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-journal/mx-journal.html',\r\n\t});\r\n\r\n\tMxJournalCtrl.$inject = ['$q', '$timeout', '$scope', '$element', 'mx.internationalization'];\r\n\r\n\tfunction MxJournalCtrl($q, $timeout, $scope, $element, i18n) {\r\n\t\tconst vm = this;\r\n\t\tlet itemsPerPage;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.processingItems = false;\r\n\t\t\tvm.canLoadMore = false;\r\n\t\t\tvm._showRichEditor = false;\r\n\r\n\t\t\titemsPerPage = vm.itemsPerPage ? parseInt(vm.itemsPerPage, 10) : 10;\r\n\r\n\t\t\tvm.loadMoreItems = loadMoreItems;\r\n\t\t\tvm.toggleItem = toggleItem;\r\n\t\t\tvm.toggleAll = toggleAll;\r\n\t\t\tvm.toggleAllState = false;\r\n\r\n\t\t\tvm.newComment = '';\r\n\t\t\tvm.addComment = addComment;\r\n\r\n\t\t\tvm._attachingInProgress = false;\r\n\t\t\tvm._useFileAttachments = !!$($element).attr('attach-files-handler');\r\n\t\t\tvm.attachments = [];\r\n\t\t\tvm.attachFiles = attachFiles;\r\n\t\t\tvm._handleRichTextBoxBlur = _handleRichTextBoxBlur;\r\n\t\t\tvm.readOnly = !!vm.readOnly;\r\n\t\t\tvm.ignoreReadonly = !vm.readOnly;\r\n\r\n\t\t\tvm.items = [];\r\n\r\n\t\t\tvm.onFullscreenToggle = onFullscreenToggle;\r\n\r\n\t\t\treload();\r\n\r\n\t\t\tif (vm.showCheckboxes) {\r\n\t\t\t\tvm.checkboxLabel = _getValueByKey('visibleInPortal');\r\n\r\n\t\t\t\t$scope.$watch(\r\n\t\t\t\t\t'vm.items',\r\n\t\t\t\t\tfunction (updata, oldata) {\r\n\t\t\t\t\t\tif (updata.length !== oldata.length) {\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconst updatedItems = updata.filter(function (upitem) {\r\n\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\toldata.filter(function (olditem) {\r\n\t\t\t\t\t\t\t\t\treturn upitem.entryId === olditem.entryId && upitem.visibleInPortal !== olditem.visibleInPortal;\r\n\t\t\t\t\t\t\t\t}).length > 0\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tupdatedItems.forEach(function (item) {\r\n\t\t\t\t\t\t\t$q.when(\r\n\t\t\t\t\t\t\t\tvm.onUpdate({\r\n\t\t\t\t\t\t\t\t\tentryId: item.entryId,\r\n\t\t\t\t\t\t\t\t\tvisibleInPortal: item.visibleInPortal,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t},\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif (vm.mxContainerCtrl) {\r\n\t\t\t\tvm.mxContainerCtrl.registerChild($scope);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\r\n\t\tfunction reload() {\r\n\t\t\tvm.newComment = '';\r\n\t\t\tvm.attachments = [];\r\n\t\t\tgetJournalEntries(true);\r\n\t\t}\r\n\r\n\t\tfunction finishProcessingItems() {\r\n\t\t\tvm.processingItems = false;\r\n\t\t}\r\n\r\n\t\tfunction loadMoreItems() {\r\n\t\t\tif (vm.processingItems || !vm.canLoadMore) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tgetJournalEntries(false);\r\n\t\t}\r\n\r\n\t\tfunction toggleAll() {\r\n\t\t\tvm.items.forEach(function (item) {\r\n\t\t\t\titem.displayItem = vm.toggleAllState;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction toggleItem(entry) {\r\n\t\t\tentry.displayItem = !entry.displayItem;\r\n\t\t}\r\n\r\n\t\tfunction getJournalEntries(reload) {\r\n\t\t\tvm.canLoadMore = false;\r\n\t\t\tvm.processingItems = true;\r\n\t\t\tlet start = 0;\r\n\t\t\tif (!reload) {\r\n\t\t\t\tstart = vm.items.length;\r\n\t\t\t}\r\n\t\t\t$q.when(vm.onGetData({ start: start, count: itemsPerPage + 1 }))\r\n\t\t\t\t.then(function (data) {\r\n\t\t\t\t\tdata = data || [];\r\n\t\t\t\t\tconst moreItemsExists = data.length === itemsPerPage + 1;\r\n\t\t\t\t\tif (moreItemsExists) {\r\n\t\t\t\t\t\tdata.pop();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdata.forEach(function (item) {\r\n\t\t\t\t\t\titem.__my = item.userId === vm.currentUserId;\r\n\t\t\t\t\t\titem.__created = new Date(item.created);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tlet items;\r\n\t\t\t\t\tif (reload) {\r\n\t\t\t\t\t\titems = data;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\titems = vm.items;\r\n\t\t\t\t\t\tfor (let i = 0; i < data.length; i++) {\r\n\t\t\t\t\t\t\titems.push(data[i]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (items && items.length) {\r\n\t\t\t\t\t\titems.forEach(function (item) {\r\n\t\t\t\t\t\t\titem.__my = item.userId === vm.currentUserId;\r\n\t\t\t\t\t\t\tif (vm.toggleAllState) {\r\n\t\t\t\t\t\t\t\titem.displayItem = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t//automatically expand first item on initial load\r\n\t\t\t\t\t\t//and keep user changes\r\n\t\t\t\t\t\tif (typeof items[0].displayItem === 'undefined') {\r\n\t\t\t\t\t\t\titems[0].displayItem = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvm.items = items;\r\n\r\n\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\taddCheckboxesToFormDirtyIgnoredList();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvm.canLoadMore = moreItemsExists;\r\n\t\t\t\t})\r\n\t\t\t\t.finally(function () {\r\n\t\t\t\t\tfinishProcessingItems();\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction addCheckboxesToFormDirtyIgnoredList() {\r\n\t\t\tif (vm.mxForm && typeof vm.mxForm.addDirtyIgnoredControls === 'function' && Array.isArray(vm.items)) {\r\n\t\t\t\tconst checkboxNames = vm.items.map((item, index) => `journal-checkbox${index}_int`);\r\n\t\t\t\tvm.mxForm.addDirtyIgnoredControls(checkboxNames);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction addComment() {\r\n\t\t\tif (!vm.newComment && vm.attachments.length === 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvm.adding = true;\r\n\t\t\tvm.isFullscreenModeEnabled = false;\r\n\r\n\t\t\t$q.when(\r\n\t\t\t\tvm.onAdd({\r\n\t\t\t\t\ttext: vm.newComment,\r\n\t\t\t\t\tattachments: vm.attachments,\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t\t\t.then(\r\n\t\t\t\t\tfunction () {\r\n\t\t\t\t\t\treload();\r\n\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\tvm._showRichEditor = false;\r\n\t\t\t\t\t\t}, 100);\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfunction (error) {\r\n\t\t\t\t\t\talert(i18n.get('solutionBuilderAgent.components.journal.adding_error') + (error && error.statusText ? `: ${error.statusText}` : ''));\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t\t.finally(function () {\r\n\t\t\t\t\tvm.adding = false;\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction attachFiles() {\r\n\t\t\tvm._attachingInProgress = true;\r\n\t\t\t$q.when(vm.attachFilesHandler())\r\n\t\t\t\t.then(function (result) {\r\n\t\t\t\t\tconst fileNames = vm.attachments.map((file) => file.DisplayString);\r\n\t\t\t\t\tresult.selectedObjects.forEach(function (file) {\r\n\t\t\t\t\t\tif (fileNames.indexOf(file.DisplayString) === -1) {\r\n\t\t\t\t\t\t\tvm.attachments.push(file);\r\n\t\t\t\t\t\t\tvm.mxForm.setDirty();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t})\r\n\t\t\t\t.catch(mx.logCatch)\r\n\t\t\t\t.finally(function () {\r\n\t\t\t\t\tvm._attachingInProgress = false;\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction onFullscreenToggle(isFullscreenModeEnabled, realParentContainer, fullscreenContainer) {\r\n\t\t\tvm.isFullscreenModeEnabled = isFullscreenModeEnabled;\r\n\t\t\tconst addBtnClassName = '.journal-item--new__content-button';\r\n\t\t\tconst addBtnFullscreenClassName = 'journal-item--new__content-button-fullscreen';\r\n\t\t\tconst addBtnContainer = $(realParentContainer).closest('.journal-item--new__content-container');\r\n\t\t\tif (isFullscreenModeEnabled) {\r\n\t\t\t\tconst addBtn = addBtnContainer.find(addBtnClassName);\r\n\t\t\t\t$(fullscreenContainer).append(addBtn);\r\n\t\t\t\taddBtn.addClass(addBtnFullscreenClassName);\r\n\t\t\t} else {\r\n\t\t\t\tconst addBtn = $(fullscreenContainer).find(addBtnClassName);\r\n\t\t\t\taddBtnContainer.append(addBtn);\r\n\t\t\t\taddBtn.removeClass(addBtnFullscreenClassName);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction _handleRichTextBoxBlur() {\r\n\t\t\t$timeout(function () {\r\n\t\t\t\tvm._showRichEditor = vm.newComment !== '' || vm.attachments.length > 0 || vm._attachingInProgress || vm.isFullscreenModeEnabled;\r\n\t\t\t}, 200);\r\n\t\t}\r\n\r\n\t\tfunction _getValueByKey(key) {\r\n\t\t\tlet result = '';\r\n\t\t\tif (vm.showCheckboxes) {\r\n\t\t\t\tconst keyValues = vm.showCheckboxes.filter(function (item) {\r\n\t\t\t\t\treturn item.key === key;\r\n\t\t\t\t});\r\n\t\t\t\tif (keyValues && keyValues.length > 0) {\r\n\t\t\t\t\tresult = keyValues[0].title;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxFavouritesItemsPanel', {\r\n\t\tbindings: {},\r\n\t\tcontroller: MxFavouritesItemsPanelCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-left-side-panel/mx-favourites-items-panel/mx-favourites-items-panel.html',\r\n\t});\r\n\r\n\tMxFavouritesItemsPanelCtrl.$inject = ['mx.shell.SidePanelService', 'mx.SolutionBuilderAgent.FavouritesService', 'mx.shell.NavigationService'];\r\n\r\n\tfunction MxFavouritesItemsPanelCtrl(sidePanelService, favouritesService, navigationService) {\r\n\t\tvar vm = this;\r\n\t\tvm.sidePanelService = sidePanelService;\r\n\t\tvm.favouritesService = favouritesService;\r\n\t\tvm.navigationService = navigationService;\r\n\r\n\t\tvm.setFavoritesFilter = function (filterText) {\r\n\t\t\tvm.viewsFilter = filterText;\r\n\r\n\t\t\tvm.favouritesService.filterNavigations(filterText);\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","angular.module('mx.SolutionBuilderAgent').component('mxRecentItemsPanel', {\r\n\tbindings: {},\r\n\tcontroller: MxRecentItemsPanelCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-left-side-panel/mx-recent-items-panel/mx-recent-items-panel.html',\r\n});\r\n\r\nMxRecentItemsPanelCtrl.$inject = ['mx.shell.SidePanelService', 'mx.SolutionBuilderAgent.RecentService'];\r\n\r\nfunction MxRecentItemsPanelCtrl(sidePanelService, recentService) {\r\n\tvar vm = this;\r\n\tvm.sidePanelService = sidePanelService;\r\n\tvm.recentService = recentService;\r\n\treturn vm;\r\n}\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxViewLinksPanel', {\r\n\t\tbindings: {\r\n\t\t\tactiveView: '<',\r\n\t\t\tviews: '<',\r\n\t\t\tshowDetails: '<',\r\n\t\t\titemClickHandler: '<',\r\n\t\t\tonViewTabChanged: '&',\r\n\t\t\tviewsFilter: '<',\r\n\t\t},\r\n\t\tcontroller: MxViewLinksPanel,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-left-side-panel/mx-view-links-panel/mx-view-links-panel.html',\r\n\t});\r\n\r\n\tMxViewLinksPanel.$inject = ['$scope'];\r\n\r\n\tfunction MxViewLinksPanel($scope) {\r\n\t\tvar vm = this;\r\n\t\tvar viewsFilter,\r\n\t\t\tviews = [];\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.filteredViews = vm.views;\r\n\t\t};\r\n\r\n\t\tObject.defineProperty(vm, 'views', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn views;\r\n\t\t\t},\r\n\t\t\tset: function (newViews) {\r\n\t\t\t\tviews = newViews;\r\n\t\t\t\tsearchViews(vm.viewsFilter);\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(vm, 'viewsFilter', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn viewsFilter;\r\n\t\t\t},\r\n\t\t\tset: function (newFilter) {\r\n\t\t\t\tsearchViews(newFilter);\r\n\t\t\t\tviewsFilter = newFilter;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tvar searchViews = $.debounce(500, function (newFilter) {\r\n\t\t\t$scope.$evalAsync(function () {\r\n\t\t\t\tif (newFilter) {\r\n\t\t\t\t\tvm.filteredViews = vm.views.filter(function (view) {\r\n\t\t\t\t\t\treturn view.displayName?.toLowerCase().indexOf(newFilter.toLowerCase()) >= 0;\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvm.filteredViews = vm.views;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxWidgetsPanel', {\r\n\t\tbindings: {},\r\n\t\tcontroller: MxWidgetsPanelController,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-left-side-panel/mx-widgets-panel/mx-widgets-panel.html',\r\n\t});\r\n\r\n\tMxWidgetsPanelController.$inject = ['mx.SolutionBuilderAgent.WidgetsPanelService'];\r\n\tfunction MxWidgetsPanelController(widgetsPanelService) {\r\n\t\tvar vm = this;\r\n\t\tvm.widgetsPanelService = widgetsPanelService;\r\n\r\n\t\tvm.$onInit = function () {};\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxWidgetNavigationItem', {\r\n\t\tbindings: {\r\n\t\t\titem: '<',\r\n\t\t},\r\n\t\trequire: {\r\n\t\t\tnavigationController: '^^mxWidgetNavigation',\r\n\t\t},\r\n\t\tcontroller: MxWidgetsPanelController,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-left-side-panel/mx-widgets-panel/widgets/mx-widget-navigation-item.html',\r\n\t});\r\n\r\n\tMxWidgetsPanelController.$inject = [];\r\n\tfunction MxWidgetsPanelController() {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onInit = function () {};\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxWidgetNavigation', {\r\n\t\tbindings: {},\r\n\t\tcontroller: MxWidgetNavigationCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-left-side-panel/mx-widgets-panel/widgets/mx-widget-navigation.html',\r\n\t});\r\n\r\n\tMxWidgetNavigationCtrl.$inject = [\r\n\t\t'$scope',\r\n\t\t'$window',\r\n\t\t'$timeout',\r\n\t\t'mx.shell.SidePanelService',\r\n\t\t'mx.shell.EventService',\r\n\t\t'mx.shell.NavigationService',\r\n\t\t'mx.SolutionBuilderAgent.WidgetsPanelService',\r\n\t];\r\n\r\n\tfunction MxWidgetNavigationCtrl($scope, $window, $timeout, sidePanelService, eventService, navigationService, widgetsPanelService) {\r\n\t\tvar vm = this;\r\n\t\tvm.sidePanelService = sidePanelService;\r\n\t\tvm.navigationService = navigationService;\r\n\r\n\t\tvm.itemClickHandler = itemClickHandler;\r\n\t\tvm.rootItemClickHandler = rootItemClickHandler;\r\n\t\tvm.isItemVisible = isItemVisible;\r\n\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.shell.EventCodes.CurrentNavigationItemChanged,\r\n\t\t\tfunction (event, data) {\r\n\t\t\t\tvar needHideWidget =\r\n\t\t\t\t\tdata.navigationItem.hideLeftSideNavigation || (!data.navigationItem.parent && (!data.navigationItem.children || !data.navigationItem.children.length));\r\n\r\n\t\t\t\tif (widgetsPanelService.navigationWidget.visible) {\r\n\t\t\t\t\tif (needHideWidget) {\r\n\t\t\t\t\t\twidgetsPanelService.hideWidget(widgetsPanelService.navigationWidget);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\tsetCurrentClasses();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!needHideWidget) {\r\n\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\tsetCurrentClasses();\r\n\t\t\t\t\t\t\twidgetsPanelService.showWidget(widgetsPanelService.navigationWidget);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tif (navigationService.navItems && navigationService.navItems.length && navigationService.currentItem) {\r\n\t\t\t\t$timeout(function () {\r\n\t\t\t\t\tsetCurrentClasses();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\r\n\t\tfunction itemClickHandler($event, item) {\r\n\t\t\t$event.preventDefault();\r\n\t\t\t$event.stopPropagation();\r\n\r\n\t\t\tif (navigationService.currentItem === item) {\r\n\t\t\t\tnavigationService.setActiveStatus(navigationService.currentItem, true);\r\n\t\t\t\tsetCurrentClasses();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (item.route) {\r\n\t\t\t\tnavigationService.currentItem = item;\r\n\t\t\t} else {\r\n\t\t\t\tnavigationService.setActiveStatus(navigationService.currentItem, false);\r\n\t\t\t\tnavigationService.currentItem.activated = true;\r\n\t\t\t\tnavigationService.setActiveStatus(item, true);\r\n\t\t\t\tsetCurrentClasses();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction rootItemClickHandler($event, item) {\r\n\t\t\t$event.preventDefault();\r\n\t\t\t$event.stopPropagation();\r\n\r\n\t\t\tnavigationService.setActiveStatus(navigationService.currentItem, false);\r\n\t\t\tnavigationService.currentItem.activated = true;\r\n\t\t\titem.selected = true;\r\n\t\t\titem.current = true;\r\n\r\n\t\t\tvar visibleIds = item.children\r\n\t\t\t\t.map(function (child) {\r\n\t\t\t\t\treturn child.id;\r\n\t\t\t\t})\r\n\t\t\t\t.concat(item.id);\r\n\r\n\t\t\tvar items = document.querySelectorAll('.mx-widget-navigation--item');\r\n\t\t\titems.forEach(function (DOMItem) {\r\n\t\t\t\tif (DOMItem.classList.contains('visible') + (visibleIds.indexOf(DOMItem.id) >= 0) === 1) {\r\n\t\t\t\t\t//XOR\r\n\t\t\t\t\tDOMItem.classList.toggle('visible');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (DOMItem.classList.contains('selected') + (DOMItem.id === item.id) === 1) {\r\n\t\t\t\t\tDOMItem.classList.toggle('selected');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction isItemVisible(item) {\r\n\t\t\tvar currentItem = navigationService.currentItem || {};\r\n\t\t\treturn Boolean(\r\n\t\t\t\titem.current ||\r\n\t\t\t\t\t(item.parent &&\r\n\t\t\t\t\t\t(item.parent === currentItem ||\r\n\t\t\t\t\t\t\t(item.parent === currentItem.parent && (currentItem.hasChildren === false || (currentItem.children && currentItem.children.length === 0)))))\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tfunction setCurrentClasses() {\r\n\t\t\tvar navDOMItems = document.querySelectorAll('.mx-widget-navigation--item');\r\n\t\t\tnavigationService.getFlatArrayOfNavItems().then(function (navItems) {\r\n\t\t\t\tnavDOMItems.forEach(function (item) {\r\n\t\t\t\t\tvar navItem = _.find(navItems, { id: item.id });\r\n\t\t\t\t\tif (navItem) {\r\n\t\t\t\t\t\ttoggleClasses(navItem, item);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction toggleClasses(navItem, navDOMItem) {\r\n\t\t\tif (!navItem || !navDOMItem) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (navDOMItem.classList.contains('activated') + navItem.activated === 1) {\r\n\t\t\t\t// XOR\r\n\t\t\t\tnavDOMItem.classList.toggle('activated');\r\n\t\t\t}\r\n\r\n\t\t\tif (navDOMItem.classList.contains('current') + navItem.current === 1) {\r\n\t\t\t\t// XOR\r\n\t\t\t\tnavDOMItem.classList.toggle('current');\r\n\t\t\t}\r\n\r\n\t\t\tif (navDOMItem.classList.contains('visible') + isItemVisible(navItem) === 1) {\r\n\t\t\t\t// XOR\r\n\t\t\t\tnavDOMItem.classList.toggle('visible');\r\n\t\t\t}\r\n\r\n\t\t\tif (navDOMItem.classList.contains('parent-of-activated') + navItem.parentOfActivated === 1) {\r\n\t\t\t\t// XOR\r\n\t\t\t\tnavDOMItem.classList.toggle('parent-of-activated');\r\n\t\t\t}\r\n\r\n\t\t\tif (navDOMItem.classList.contains('selected') + Boolean(!navItem.parent && navItem.activated) === 1) {\r\n\t\t\t\t//XOR\r\n\t\t\t\tnavDOMItem.classList.toggle('selected');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxMixedFlag', {\r\n\t\tbindings: {\r\n\t\t\tflag1: '@',\r\n\t\t\tflag2: '@',\r\n\t\t},\r\n\t\tcontrollerAs: 'vm',\r\n\r\n\t\tcontroller: [\r\n\t\t\t'$scope',\r\n\t\t\t'$element',\r\n\t\t\tfunction ($scope, $element) {\r\n\t\t\t\tvar prefId = 'id' + mx.components.Utils.guid().replace(/-/g, '_');\r\n\t\t\t\t$scope.prefId = prefId;\r\n\r\n\t\t\t\t$scope.$watch('vm.flag1', function (val) {\r\n\t\t\t\t\t$element.find('.flag1 > image').attr('href', val);\r\n\t\t\t\t});\r\n\t\t\t\t$scope.$watch('vm.flag2', function (val) {\r\n\t\t\t\t\t$element.find('.flag2 > image').attr('href', val);\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t],\r\n\r\n\t\ttemplate:\r\n\t\t\t'' +\r\n\t\t\t'' +\r\n\t\t\t'' +\r\n\t\t\t'\t' +\r\n\t\t\t'\t' +\r\n\t\t\t'' +\r\n\t\t\t'' +\r\n\t\t\t'' +\r\n\t\t\t'' +\r\n\t\t\t'',\r\n\t});\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxCustomLocalizationInput', {\r\n\t\tcontroller: MxCustomLocalizationInputCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\tbindings: {\r\n\t\t\tvalue: '=',\r\n\t\t\tcustomEditor: '<',\r\n\t\t\tactivated: '@?',\r\n\t\t\treadOnly: '' +\r\n\t\t\t\t\t''\r\n\t\t\t);\r\n\t\t\t$element.append(_elem);\r\n\t\t\t$compile(_elem)($scope);\r\n\t\t};\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxLocalizationEditor', {\r\n\t\tbindings: {\r\n\t\t\tlocalizedValue: '=',\r\n\t\t\tsupportedLanguages: ' \r\n\t */\r\n\tangular.module('mx.SolutionBuilderAgent').directive('mxMultiObjectPicker', function mxMultiObjectPickerDirective() {\r\n\t\tvar directive = w.mx.SolutionBuilderAgent.ObjectPicker.getDirectiveDescriptor(\r\n\t\t\tMxMultiObjectPickerCtrl,\r\n\t\t\t'mx-multi-picker',\r\n\t\t\t' ng-model=\"vm.model\" data-selected-items=\"vm.selectedItems\" '\r\n\t\t);\r\n\r\n\t\tdirective.bindToController.selectedItems = '=?';\r\n\t\tdirective.bindToController.addOnBlur = ' ' +\r\n\t\t'';\r\n\r\n\treturn directive;\r\n});\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxObjectRating', {\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-object-rating/mx-object-rating.html',\r\n\t\tcontroller: MxObjectRatingCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\tbindings: {\r\n\t\t\tvalue: '=?',\r\n\t\t\tcount: '=?',\r\n\t\t\tmax: '@',\r\n\t\t\treadOnly: '=?',\r\n\t\t\tdisabled: '=?',\r\n\t\t\tlabel: '@',\r\n\t\t\tobjectId: '=?',\r\n\t\t\tentityType: '@',\r\n\t\t\tshowSummary: '@',\r\n\t\t},\r\n\t});\r\n\r\n\tMxObjectRatingCtrl.$inject = ['mx.SolutionBuilderAgent.Http', 'mx.internationalization'];\r\n\r\n\tfunction MxObjectRatingCtrl(http, i18n) {\r\n\t\tvar vm = this;\r\n\t\tvm.i18n = i18n.get('solutionBuilderAgent.components.mx-object-rating');\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.onRateChange = onRateChange;\r\n\t\t\tvm.submitRating = submitRating;\r\n\t\t\tvm.cancelRating = cancelRating;\r\n\t\t\tupdateSummary();\r\n\r\n\t\t\tvm.defaultRate = vm.value || 0;\r\n\r\n\t\t\tif (!vm.readOnly) {\r\n\t\t\t\tisRated().then(function (result) {\r\n\t\t\t\t\tif (result === true) {\r\n\t\t\t\t\t\tvm.readOnly = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction onRateChange(value) {\r\n\t\t\tvm.showComment = true;\r\n\t\t\tvm.value = value;\r\n\t\t}\r\n\r\n\t\tfunction updateSummary() {\r\n\t\t\tvar value = parseFloat(vm.value || 0).toFixed(2);\r\n\t\t\tvar count = vm.count || 0;\r\n\r\n\t\t\tvm.summary = value + ' (' + count + ' ' + vm.i18n.ratings + ')';\r\n\t\t\tvm.ariaSummary = i18n.getFormatted('solutionBuilderAgent.components.mx-object-rating.ARIA-votesAmount', count);\r\n\t\t}\r\n\r\n\t\tfunction isRated() {\r\n\t\t\treturn http.get('api/rating/isRated', {\r\n\t\t\t\tid: vm.objectId,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction submitRating() {\r\n\t\t\thttp.post('api/rating/rate', {\r\n\t\t\t\tid: vm.objectId,\r\n\t\t\t\tentityType: vm.entityType,\r\n\t\t\t\tcomments: vm.comments,\r\n\t\t\t\trate: vm.value,\r\n\t\t\t}).then(function (result) {\r\n\t\t\t\tvm.count = result.Count;\r\n\t\t\t\tvm.value = result.Average;\r\n\t\t\t\tupdateSummary();\r\n\r\n\t\t\t\tvm.readOnly = true;\r\n\t\t\t\tvm.showComment = false;\r\n\t\t\t\tvm.comments = '';\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction cancelRating() {\r\n\t\t\tvm.showComment = false;\r\n\t\t\tvm.comments = '';\r\n\t\t\tvm.value = vm.defaultRate;\r\n\t\t}\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc directive\r\n\t * @name mx.SolutionBuilderAgent:mxPanelTitle\r\n\t * @module mx.SolutionBuilderAgent\r\n\t * @restrict 'A'\r\n\t * @description Panel Title. In used in Dialog template from Server Side.\r\n\t */\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').directive('mxPanelTitle', function mxPanelTitleDirective() {\r\n\t\treturn {\r\n\t\t\trestrict: 'A',\r\n\t\t\tlink: function (scope, element) {\r\n\t\t\t\telement.append('.');\r\n\t\t\t},\r\n\t\t};\r\n\t});\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxPropertyBindingMapper', {\r\n\t\tbindings: {\r\n\t\t\tvalue: '=?',\r\n\t\t\tlabel: '@',\r\n\t\t\tdisabled: '=ngDisabled',\r\n\t\t},\r\n\t\tcontroller: MxPropertyBindingMapperCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-property-binding-mapper/mx-property-binding-mapper.html',\r\n\t});\r\n\r\n\tMxPropertyBindingMapperCtrl.$inject = ['$scope', '$timeout'];\r\n\r\n\tfunction MxPropertyBindingMapperCtrl($scope, $timeout) {\r\n\t\tvar vm = this;\r\n\t\tvar localChanged;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.propertyName = '';\r\n\t\t\tlocalChanged = false;\r\n\r\n\t\t\tvm.mappingTypes = [\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'None',\r\n\t\t\t\t\tvalue: -1,\r\n\t\t\t\t\tshowMappingName: false,\r\n\t\t\t\t\tshowPropertyName: false,\r\n\t\t\t\t\tshowMappingValueType: false,\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Attribute',\r\n\t\t\t\t\tvalue: 0,\r\n\t\t\t\t\tshowMappingName: true,\r\n\t\t\t\t\tshowPropertyName: true,\r\n\t\t\t\t\tshowMappingValueType: false,\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Child',\r\n\t\t\t\t\tvalue: 1,\r\n\t\t\t\t\tshowMappingName: true,\r\n\t\t\t\t\tshowPropertyName: true,\r\n\t\t\t\t\tshowMappingValueType: true,\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Self',\r\n\t\t\t\t\tvalue: 2,\r\n\t\t\t\t\tshowMappingName: false,\r\n\t\t\t\t\tshowPropertyName: true,\r\n\t\t\t\t\tshowMappingValueType: true,\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Parent',\r\n\t\t\t\t\tvalue: 3,\r\n\t\t\t\t\tshowMappingName: false,\r\n\t\t\t\t\tshowPropertyName: true,\r\n\t\t\t\t\tshowMappingValueType: true,\r\n\t\t\t\t},\r\n\t\t\t];\r\n\r\n\t\t\tvm.mappingValueTypes = [\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'By Editor Type',\r\n\t\t\t\t\tvalue: 0,\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Object Name',\r\n\t\t\t\t\tvalue: 1,\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Object',\r\n\t\t\t\t\tvalue: 2,\r\n\t\t\t\t},\r\n\t\t\t];\r\n\r\n\t\t\tvm.mappingTypes.getCurrentItem = function () {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t_.find(vm.mappingTypes, function (obj) {\r\n\t\t\t\t\t\treturn obj.value === vm.mappingType;\r\n\t\t\t\t\t}) || {}\r\n\t\t\t\t);\r\n\t\t\t};\r\n\r\n\t\t\tvm.mappingTypes.showMappingName = function () {\r\n\t\t\t\treturn vm.mappingTypes.getCurrentItem().showMappingName;\r\n\t\t\t};\r\n\r\n\t\t\tvm.mappingTypes.showMappingValueType = function () {\r\n\t\t\t\treturn vm.mappingTypes.getCurrentItem().showMappingValueType;\r\n\t\t\t};\r\n\r\n\t\t\tvm.mappingTypes.showPropertyName = function () {\r\n\t\t\t\treturn vm.mappingTypes.getCurrentItem().showPropertyName;\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\t$scope.$watch('vm.value', function (newValue) {\r\n\t\t\tif (localChanged) {\r\n\t\t\t\tlocalChanged = false;\r\n\t\t\t} else {\r\n\t\t\t\tvm._value = newValue ? JSON.parse(newValue) : { MappingType: -1 };\r\n\t\t\t\tvm.mappingType = vm._value.MappingType;\r\n\t\t\t\tvm.mappingValueType = vm._value.MappingValueType || 0;\r\n\t\t\t\tvm.mappingName = vm._value.MappingName;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$scope.$watch(\r\n\t\t\t'vm._value',\r\n\t\t\tfunction (newValue) {\r\n\t\t\t\tlocalChanged = true;\r\n\t\t\t\tprocessValue(newValue);\r\n\t\t\t},\r\n\t\t\ttrue\r\n\t\t);\r\n\r\n\t\t$scope.$watch('vm.mappingType', function (newValue, oldValue) {\r\n\t\t\tif (newValue === oldValue) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvm._value.MappingType = newValue;\r\n\t\t});\r\n\r\n\t\t$scope.$watch('vm.mappingValueType', function (newValue, oldValue) {\r\n\t\t\tif (newValue === oldValue) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvm._value.MappingValueType = newValue;\r\n\t\t});\r\n\r\n\t\tvm.propertyNameUpdate = function () {\r\n\t\t\tvm._value.PropertyName = vm.propertyName ? vm.propertyName : undefined;\r\n\t\t};\r\n\r\n\t\tvm.mappingNameUpdate = function () {\r\n\t\t\tvm._value.MappingName = vm.mappingName ? vm.mappingName : undefined;\r\n\t\t};\r\n\r\n\t\tfunction processValue(value) {\r\n\t\t\t$timeout(function () {\r\n\t\t\t\tif (value.PropertyName) {\r\n\t\t\t\t\tvm.propertyName = value.PropertyName;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (value.MappingValueType !== undefined) {\r\n\t\t\t\t\tvm.mappingValueType = value.MappingValueType;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (value.MappingName) {\r\n\t\t\t\t\tvm.mappingName = value.MappingName;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tprocessType(value);\r\n\r\n\t\t\t\tvar obj = angular.copy(value);\r\n\r\n\t\t\t\tif (obj.MappingType === -1) {\r\n\t\t\t\t\tvm.value = undefined;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tobj.PropertyName = obj.PropertyName || undefined;\r\n\t\t\t\tvm.value = JSON.stringify(obj);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction processType(value) {\r\n\t\t\tvar item = vm.mappingTypes.getCurrentItem();\r\n\r\n\t\t\tif (item.showMappingValueType) {\r\n\t\t\t\tvalue.MappingValueType = vm.mappingValueType;\r\n\t\t\t} else {\r\n\t\t\t\tvalue.MappingValueType = undefined;\r\n\t\t\t}\r\n\r\n\t\t\tif (item.showMappingName) {\r\n\t\t\t\tvalue.MappingName = vm.mappingName;\r\n\t\t\t} else {\r\n\t\t\t\tvalue.MappingName = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc component\r\n\t * @name mx.agent:mxQuickStartPanel\r\n\t * @module mx.agent\r\n\t * @description Displays quick link for quick starts\r\n\t * @param {string} data@ - Complex data. Array of objects\r\n\t * @param {string} navigateTo@ - enum: ['dataset', 'navigation'], what should be used for navigation: contentWidgetId or baseNavigationId\r\n\t * \t\t\tDataset can be used if the same DataSetWidget is used in different applications with different NavigationItem.\r\n\t * \t\t\tIn this case baseNavigationId will be different for each application, so it cannot be configured correctly.\r\n\t * @param {string} baseNavigationId@ - ID of navigation item, in which object will be shown\r\n\t * @param {string} contentWidgetId@ - ID of Widget, in which object will be shown\r\n\t * @param {string} titleFieldName@ - name of field with title of object\r\n\t * @param {string} objectIdFieldName@ - name of field with ObjectId of object\r\n\t * @param {string} imageFieldName@ - name of field with image of object\r\n\t */\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxQuickStartPanel', {\r\n\t\tbindings: {\r\n\t\t\tdata: '<',\r\n\t\t\tnavigateTo: '@',\r\n\t\t\tbaseNavigationId: '@',\r\n\t\t\tcontentWidgetId: '@',\r\n\t\t\ttitleFieldName: '@',\r\n\t\t\tobjectIdFieldName: '@',\r\n\t\t\timageFieldName: '@',\r\n\t\t},\r\n\t\tcontroller: MxQuickStartPanelCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-quick-start-panel/mx-quick-start-panel.html',\r\n\t});\r\n\r\n\tMxQuickStartPanelCtrl.$inject = [\r\n\t\t'$element',\r\n\t\t'$scope',\r\n\t\t'$stateParams',\r\n\t\t'$q',\r\n\t\t'mx.shell.AppsService',\r\n\t\t'mx.shell.RoutingService',\r\n\t\t'mx.internationalization',\r\n\t\t'mx.shell.HostUrlHelper',\r\n\t\t'mx.shell.EventService',\r\n\t\t'mx.shell.NavigationItemsLoaderService',\r\n\t];\r\n\r\n\tfunction MxQuickStartPanelCtrl($element, $scope, $stateParams, $q, appsService, routingService, i18n, hostUrlHelper, eventService, navigationItemsLoaderService) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.columns = 0;\r\n\t\tvm.tileWidth = 250;\r\n\t\tvm.maxNumOfRows = 2;\r\n\t\tvm.maxChildrenPerColumn = 10;\r\n\t\tvm.columnsPerTile = 1.5;\r\n\t\tvm.maxNumberOfSubCategoriesInTile = 4;\r\n\t\tvm.gutter = 8;\r\n\r\n\t\tvm.i18n = i18n.get('solutionBuilderAgent.common');\r\n\r\n\t\tvm.openLink = openLink;\r\n\t\tvm.getImage = getImage;\r\n\t\tvm.showAllCategories = showAllCategories;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvar dataWatcher = $scope.$watch('vm.data', function () {\r\n\t\t\t\tif (vm.data && vm.data.length > 0) {\r\n\t\t\t\t\tdataWatcher();\r\n\r\n\t\t\t\t\tgetNavigationId().then(function (navigationId) {\r\n\t\t\t\t\t\tif (navigationId) {\r\n\t\t\t\t\t\t\tnavigationItemsLoaderService.setNavigationIdForStructure(navigationId, vm.data, vm.objectIdFieldName);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t/* DON'T REMOVE THIS COMMENT. clone subitems for debug */\r\n\t\t\t\t\t/*vm.data.forEach(function(item, key) {\r\n\t\t\t\t\t\tvar children = [];\r\n\t\t\t\t\t\tfor (var i = 0; i < (key+1)*3; i++) {\r\n\t\t\t\t\t\t\titem.Children.forEach(function(child) {\r\n\t\t\t\t\t\t\t\tvar cloneChild = angular.copy(child);\r\n\t\t\t\t\t\t\t\tcloneChild[vm.objectIdFieldName] = child[vm.objectIdFieldName] + '' + i;\r\n\t\t\t\t\t\t\t\tchildren.push(cloneChild);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\titem.Children = children;\r\n\t\t\t\t\t});\r\n\t\t\t\t\tvar cloneData = [];\r\n\t\t\t\t\tfor (var i = 0; i < 3; i++) {\r\n\t\t\t\t\t\tvm.data.forEach(function (item) {\r\n\t\t\t\t\t\t\tvar cloneItem = angular.copy(item);\r\n\t\t\t\t\t\t\tcloneItem[vm.objectIdFieldName] = item[vm.objectIdFieldName] + '' + i;\r\n\t\t\t\t\t\t\tcloneData.push (cloneItem);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvm.data = cloneData;*/\r\n\t\t\t\t\t/* end cloning */\r\n\r\n\t\t\t\t\tupdateLayout();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tupdateLayout();\r\n\t\t\t});\r\n\r\n\t\t\teventService.subscribeTo(mx.shell.EventCodes.LayoutChanged, updateLayout, $scope);\r\n\r\n\t\t\tappsService.getCurrentApplication().then(function (app) {\r\n\t\t\t\tvm.appName = app.name;\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tvar debouncedRecalculatePages = $.debounce(500, recalculatePages);\r\n\r\n\t\tfunction updateLayout() {\r\n\t\t\t$scope.$evalAsync(function () {\r\n\t\t\t\tif (!$element.is(':visible')) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar elementWidth = $element.width();\r\n\t\t\t\tvar newColumns = Math.max(Math.floor(elementWidth / vm.tileWidth), 1);\r\n\t\t\t\tvm.needPaging = vm.data.length > newColumns * 2;\r\n\r\n\t\t\t\tif (vm.needPaging) {\r\n\t\t\t\t\telementWidth -= 90; // padding of carousel 45 + 45\r\n\t\t\t\t\tnewColumns = Math.max(Math.floor(elementWidth / vm.tileWidth), 1);\r\n\t\t\t\t}\r\n\t\t\t\tvm.twoLinesMode = vm.data.length > newColumns;\r\n\t\t\t\tdebouncedRecalculatePages(newColumns);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction recalculatePages(newColumns) {\r\n\t\t\t$scope.$evalAsync(function () {\r\n\t\t\t\tif (vm.columns !== newColumns) {\r\n\t\t\t\t\tvm.columns = newColumns;\r\n\t\t\t\t\tif (Array.isArray(vm.data)) {\r\n\t\t\t\t\t\tvm.carouselPages = calcCarouselPages(vm.data, vm.columns);\r\n\t\t\t\t\t\tvm.childrenGroups = calcShowAllChildrenView(vm.data, vm.columns);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvm.showAll = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Get Navigation Item Id which are configured directly or related to configured DataSetWdiget\r\n\t\t *\r\n\t\t * @returns {GUID}\r\n\t\t */\r\n\t\tfunction getNavigationId() {\r\n\t\t\tif ((vm.navigateTo === 'dataset' || typeof vm.navigateTo === 'undefined') && vm.contentWidgetId) {\r\n\t\t\t\treturn navigationItemsLoaderService.getNavigationItemsOfWidget(vm.contentWidgetId).then(function (navItems) {\r\n\t\t\t\t\treturn (navItems[0] || {}).id;\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\treturn $q.when(vm.baseNavigationId);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/** forming children columns to show in big tile **/\r\n\t\tfunction calcShowAllChildrenView(categories, columns) {\r\n\t\t\tvar childrenGroups = {};\r\n\t\t\tcategories.forEach(function (category) {\r\n\t\t\t\tif (!category.Children || category.Children.length <= vm.maxNumberOfSubCategoriesInTile) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar numOfTiles = Math.min(columns, Math.ceil(Math.ceil(category.Children.length / vm.maxChildrenPerColumn) / vm.columnsPerTile));\r\n\r\n\t\t\t\tchildrenGroups[category[vm.objectIdFieldName]] = {\r\n\t\t\t\t\tnumOfTiles: numOfTiles,\r\n\t\t\t\t\tcolumns: [],\r\n\t\t\t\t\tleftPos: category.__numOfTileInRow,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (numOfTiles + category.__numOfTileInRow > vm.columns) {\r\n\t\t\t\t\tchildrenGroups[category[vm.objectIdFieldName]].leftPos = vm.columns - numOfTiles;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tchildrenGroups[category[vm.objectIdFieldName]].childrenPerColumn = Math.ceil(\r\n\t\t\t\t\tcategory.Children.length / Math.floor(vm.columnsPerTile * childrenGroups[category[vm.objectIdFieldName]].numOfTiles)\r\n\t\t\t\t);\r\n\r\n\t\t\t\tcategory.Children.forEach(function (child, key) {\r\n\t\t\t\t\tvar column = Math.floor(key / childrenGroups[category[vm.objectIdFieldName]].childrenPerColumn);\r\n\t\t\t\t\tif (typeof childrenGroups[category[vm.objectIdFieldName]].columns[column] === 'undefined') {\r\n\t\t\t\t\t\tchildrenGroups[category[vm.objectIdFieldName]].columns[column] = [];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tchildrenGroups[category[vm.objectIdFieldName]].columns[column].push(child);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\treturn childrenGroups;\r\n\t\t}\r\n\r\n\t\tfunction calcBigItemPosition() {\r\n\t\t\tif (!vm.bigItem || !vm.childrenGroups[vm.bigItem[vm.objectIdFieldName]]) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar group = vm.childrenGroups[vm.bigItem[vm.objectIdFieldName]];\r\n\r\n\t\t\tvar tilePercentWidth = 1 / vm.columns;\r\n\t\t\tvar gutterBorder = vm.gutter * (1 - tilePercentWidth);\r\n\t\t\tvar gutterOffset = (group.numOfTiles - 1) * vm.gutter;\r\n\t\t\ttilePercentWidth *= 100;\r\n\r\n\t\t\tgroup.left = 'calc(((' + tilePercentWidth + '% - ' + gutterBorder + 'px) + ' + vm.gutter + 'px) * ' + group.leftPos + ')';\r\n\t\t\tgroup.width = 'calc(((' + tilePercentWidth + '% - ' + gutterBorder + 'px) * ' + group.numOfTiles + ') + ' + gutterOffset + 'px)';\r\n\t\t}\r\n\r\n\t\tfunction calcCarouselPages(categories, columns) {\r\n\t\t\tvar carouselPages = [];\r\n\t\t\tif (Array.isArray(categories)) {\r\n\t\t\t\tcategories.forEach(function (category, index) {\r\n\t\t\t\t\tvar page = Math.floor(index / (columns * vm.maxNumOfRows));\r\n\t\t\t\t\tif (typeof carouselPages[page] === 'undefined') {\r\n\t\t\t\t\t\tcarouselPages[page] = {\r\n\t\t\t\t\t\t\tcategories: [],\r\n\t\t\t\t\t\t\tbody: '',\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcategory.__numOfTileInRow = (index - page * (columns * vm.maxNumOfRows)) % columns;\r\n\t\t\t\t\tcarouselPages[page].categories.push(category);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\treturn carouselPages;\r\n\t\t}\r\n\r\n\t\tfunction showAllCategories(item) {\r\n\t\t\tvm.showAll = true;\r\n\t\t\tvm.bigItem = item;\r\n\t\t\tcalcBigItemPosition();\r\n\t\t}\r\n\r\n\t\tfunction openLink(item) {\r\n\t\t\tif (item.navigationId) {\r\n\t\t\t\troutingService.go('searchPage', {\r\n\t\t\t\t\tnavigationId: item.navigationId,\r\n\t\t\t\t\tappString: vm.appName,\r\n\t\t\t\t\tfilterType: 'structure',\r\n\t\t\t\t\tfilterId: item[vm.objectIdFieldName],\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction getImage(item) {\r\n\t\t\treturn hostUrlHelper.getFullImageUrl(item[vm.imageFieldName]);\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxReadonlyForm', {\r\n\t\trequire: {\r\n\t\t\tmxFormCtrl: '?^mxForm',\r\n\t\t},\r\n\t\tbindings: {\r\n\t\t\treadOnly: '<',\r\n\t\t},\r\n\t\ttemplate: '',\r\n\t\tcontroller: MxReadonlyFormCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t});\r\n\r\n\tMxReadonlyFormCtrl.$inject = [];\r\n\tfunction MxReadonlyFormCtrl() {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onChanges = function (changes) {\r\n\t\t\tif (vm.mxFormCtrl && changes.readOnly && typeof changes.readOnly.currentValue === 'boolean') {\r\n\t\t\t\tvm.mxFormCtrl.setExternalReadOnly(changes.readOnly.currentValue, 'mxReadonlyFormComponent');\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxRecalculateActions', {\r\n\t\trequire: {\r\n\t\t\tmxDialogContainerCtrl: '?^mxDialogContainer',\r\n\t\t},\r\n\t\tbindings: {\r\n\t\t\tsourceState: '<',\r\n\t\t\tcondition: '<',\r\n\t\t},\r\n\t\tcontroller: MxRecalculateActionsCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t});\r\n\r\n\tMxRecalculateActionsCtrl.$inject = ['mx.shell.SidePanelActionsService'];\r\n\r\n\tfunction MxRecalculateActionsCtrl(sidePanelActionsService) {\r\n\t\tvar vm = this;\r\n\t\tvm.$onChanges = function (changes) {\r\n\t\t\tvar conditionChanged = changes.condition && changes.condition.currentValue !== changes.condition.previousValue && changes.condition.currentValue;\r\n\t\t\tvar sourceStateChanged =\r\n\t\t\t\tchanges.sourceState &&\r\n\t\t\t\tchanges.sourceState.currentValue !== changes.sourceState.previousValue &&\r\n\t\t\t\tchanges.sourceState.currentValue === mx.SolutionBuilderAgent.SourceLoadingStatus.LOADED;\r\n\t\t\tvar isSourceSet = changes.sourceState?.currentValue !== mx.SolutionBuilderAgent.SourceLoadingStatus.NOT_SET;\r\n\r\n\t\t\tif (!isSourceSet || conditionChanged || sourceStateChanged) {\r\n\t\t\t\tsidePanelActionsService.calculateViewActions(vm.mxDialogContainerCtrl.view);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","//Legacy control. Should not be used\r\nclass MxSearchControlCtrl {\r\n\tstatic $inject = [];\r\n\tconstructor() {\r\n\t\tconsole.warn('Search Control is a legacy control. Should be replace with Global Search Manager');\r\n\t}\r\n}\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxSearchControl', {\r\n\tname: 'mxSearchControl',\r\n\ttemplate: '',\r\n\tcontroller: MxSearchControlCtrl,\r\n\tcontrollerAs: 'vm',\r\n\tbindings: {\r\n\t\tnavigationItems: '<',\r\n\t},\r\n});\r\n","angular.module('mx.SolutionBuilderAgent').directive('mxSearchQueryGroupCustom', [\r\n\t'mx.SolutionBuilderAgent.SearchQueryService',\r\n\t'mx.SolutionBuilderAgent.SearchQueryGroup',\r\n\tfunction mxSearchQueryGroupCustomDirective(searchQueryService, SearchQueryGroup) {\r\n\t\tMxSearchQueryGroupCustomCtrl.$inject = ['$scope', '$timeout'];\r\n\r\n\t\tfunction MxSearchQueryGroupCustomCtrl($scope, $timeout) {\r\n\t\t\tconst vm = this;\r\n\t\t\tlet watcher;\r\n\t\t\tvm.$onInit = function () {\r\n\t\t\t\tlet value = vm.value;\r\n\t\t\t\tconst query = {};\r\n\r\n\t\t\t\tvm.context = { datasource: vm.value2, widgetId: vm.value3 };\r\n\r\n\t\t\t\tObject.defineProperty(vm, 'value2', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn vm.context.datasource;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (pValue) {\r\n\t\t\t\t\t\tconst p = vm.context.datasource;\r\n\t\t\t\t\t\tvm.context.datasource = pValue;\r\n\t\t\t\t\t\tif (!p) {\r\n\t\t\t\t\t\t\tsetValue(value);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\r\n\t\t\t\tObject.defineProperty(vm, 'value3', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn vm.context.widgetId;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (pValue) {\r\n\t\t\t\t\t\tvm.context.widgetId = pValue;\r\n\t\t\t\t\t\tsetValue(value);\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\r\n\t\t\t\tObject.defineProperty(vm, 'value', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: setValue,\r\n\t\t\t\t});\r\n\r\n\t\t\t\tsetValue(vm.value);\r\n\r\n\t\t\t\tfunction setValue(pValue) {\r\n\t\t\t\t\tvalue = pValue || '{\"Groups\":[],\"Conditions\":[],\"LogicalOperator\":1}';\r\n\r\n\t\t\t\t\tif (!vm.context.datasource) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (watcher) {\r\n\t\t\t\t\t\twatcher();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvm.group = undefined;\r\n\t\t\t\t\tquery.group = new SearchQueryGroup(JSON.parse(value));\r\n\t\t\t\t\tsearchQueryService.initQueryByContext(query, vm.context).then(function () {\r\n\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\tvm.group = query.group;\r\n\t\t\t\t\t\t\twatcher = $scope.$watch(\r\n\t\t\t\t\t\t\t\t'vm.group',\r\n\t\t\t\t\t\t\t\tfunction () {\r\n\t\t\t\t\t\t\t\t\tvalue = JSON.stringify(vm.group);\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\ttrue\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$scope.$on('$destroy', function () {\r\n\t\t\t\t\tif (watcher) {\r\n\t\t\t\t\t\twatcher();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\trestrict: 'E',\r\n\t\t\tscope: {},\r\n\t\t\tbindToController: {\r\n\t\t\t\tvalue: '=', // !!! `value` should support 2-way-binding (e.g. Bug: https://matrix42.visualstudio.com/BPM/_workitems/edit/203643 ) !!!\r\n\t\t\t\tvalue2: '<',\r\n\t\t\t\tvalue3: '<',\r\n\t\t\t},\r\n\t\t\tcontroller: MxSearchQueryGroupCustomCtrl,\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t\ttemplate: '
',\r\n\t\t};\r\n\t},\r\n]);\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxSearchQueryConditionBoolean', {\r\n\t\tbindings: {\r\n\t\t\tcondition: '<',\r\n\t\t\toperators: '<',\r\n\t\t},\r\n\t\tcontroller: MxSearchQueryConditionBooleanCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-boolean.html',\r\n\t});\r\n\r\n\tMxSearchQueryConditionBooleanCtrl.$inject = ['$scope'];\r\n\r\n\tfunction MxSearchQueryConditionBooleanCtrl($scope) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tif (vm.condition) {\r\n\t\t\t\tif (!Array.isArray(vm.condition.value) || !vm.condition.value.length) {\r\n\t\t\t\t\tvm.condition.value = [false];\r\n\t\t\t\t} else if (vm.condition.value.length) {\r\n\t\t\t\t\tvm.condition.value = [vm.condition.value[0].toString().toLowerCase() === 'true'];\r\n\t\t\t\t}\r\n\t\t\t\tvm.condition.operator = vm.operators.Equals.value;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar w = $scope.$watch('vm.condition.value[0]', updateConditionValidity);\r\n\t\t$scope.$on('$destroy', () => w());\r\n\t\treturn vm;\r\n\r\n\t\tfunction updateConditionValidity() {\r\n\t\t\tvar values = vm.condition.value;\r\n\t\t\tconst stateMode = vm.condition.operator === vm.operators.IsNotSet.value || vm.condition.operator === vm.operators.IsSet.value;\r\n\r\n\t\t\tvm.condition.__valid = stateMode || values[0].toString().length > 0;\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxSearchQueryConditionDate', {\r\n\t\tbindings: {\r\n\t\t\tcondition: '<',\r\n\t\t\toperators: '<',\r\n\t\t},\r\n\t\tcontroller: MxSearchQueryConditionDateCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-date.html',\r\n\t});\r\n\r\n\tMxSearchQueryConditionDateCtrl.$inject = ['$scope', '$filter', 'mx.internationalization'];\r\n\r\n\tfunction MxSearchQueryConditionDateCtrl($scope, $filter, i18n) {\r\n\t\tvar vm = this;\r\n\t\tvar watchers = [];\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.showFixedDate = false;\r\n\r\n\t\t\tvm.fromLabel = i18n.get('solutionBuilderAgent.components.mx-search-query-condition-date.from');\r\n\t\t\tvm.tillLable = i18n.get('solutionBuilderAgent.components.mx-search-query-condition-date.till');\r\n\t\t\tvm.daysLable = i18n.get('solutionBuilderAgent.components.mx-search-query-condition-date.days');\r\n\t\t\tvm.minsLable = i18n.get('solutionBuilderAgent.components.mx-search-query-condition-date.mins');\r\n\t\t\tvm.andLable = i18n.get('solutionBuilderAgent.components.mx-search-query-condition.and');\r\n\t\t\tvm.todayLable = i18n.get('solutionBuilderAgent.common.today');\r\n\t\t\tvm.nowLable = i18n.get('solutionBuilderAgent.components.mx-search-query-condition.now');\r\n\r\n\t\t\tvm.fromDays = '0';\r\n\t\t\tvm.fromSign = '+';\r\n\t\t\tvm.fromType = 'n';\r\n\t\t\tvm.tillSign = '+';\r\n\t\t\tvm.tillType = 'n';\r\n\t\t\tvm.tillDays = '0';\r\n\t\t\tvm.fromDatepart = 'd';\r\n\t\t\tvm.tillDatepart = 'd';\r\n\t\t\tvm.fromEnabled = false;\r\n\t\t\tvm.tillEnabled = false;\r\n\t\t\tsetView();\r\n\r\n\t\t\tif (vm.condition) {\r\n\t\t\t\tif (!Array.isArray(vm.condition.value) || !vm.condition.value.length) {\r\n\t\t\t\t\tvm.condition.value = ['', ''];\r\n\t\t\t\t} else if (vm.condition.value.length > 2) {\r\n\t\t\t\t\tvm.condition.value = [vm.condition.value[0], vm.condition.value[1]];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (vm.showFixedDate) {\r\n\t\t\t\tvar data = parseFlexDate(vm.condition.value[0]);\r\n\r\n\t\t\t\tif (data !== null) {\r\n\t\t\t\t\tvm.fromEnabled = true;\r\n\t\t\t\t\tvm.fromDays = Math.abs(data[0]);\r\n\t\t\t\t\tvm.fromSign = data[0] < 0 ? '-' : '+';\r\n\t\t\t\t\tvm.fromDatepart = data[2];\r\n\t\t\t\t\tvm.fromType = data[1];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdata = parseFlexDate(vm.condition.value[1]);\r\n\r\n\t\t\t\tif (data !== null) {\r\n\t\t\t\t\tvm.tillEnabled = true;\r\n\t\t\t\t\tvm.tillDays = Math.abs(data[0]);\r\n\t\t\t\t\tvm.tillSign = data[0] < 0 ? '-' : '+';\r\n\t\t\t\t\tvm.tillDatepart = data[2];\r\n\t\t\t\t\tvm.tillType = data[1];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\twatchers.push(\r\n\t\t\t$scope.$watch('vm.condition.operator', function () {\r\n\t\t\t\tsetView();\r\n\t\t\t\tsetValueString();\r\n\t\t\t})\r\n\t\t);\r\n\t\twatchers.push(\r\n\t\t\t$scope.$watchGroup(['vm.fromType', 'vm.fromDays', 'vm.fromSign', 'vm.fromEnabled', 'vm.tillEnabled', 'vm.tillDays', 'vm.tillDatepart', 'vm.fromDatepart'], setValues)\r\n\t\t);\r\n\r\n\t\twatchers.push($scope.$watchCollection('vm.condition.value', setValueString));\r\n\t\t$scope.$on('$destroy', function () {\r\n\t\t\twatchers.forEach(function (w) {\r\n\t\t\t\tw();\r\n\t\t\t});\r\n\t\t\twatchers = [];\r\n\t\t});\r\n\r\n\t\tfunction parseFlexDate(val) {\r\n\t\t\tif (val) {\r\n\t\t\t\tvar datePart = 'd';\r\n\t\t\t\tvar type = 'n';\r\n\r\n\t\t\t\tif (val.indexOf('m') === 0) {\r\n\t\t\t\t\tdatePart = 'm';\r\n\t\t\t\t\tval = val.substring(1);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (val.indexOf('t') === 0) {\r\n\t\t\t\t\ttype = 't';\r\n\t\t\t\t\tval = val.substring(1);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!val) {\r\n\t\t\t\t\tval = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!isNaN(val)) {\r\n\t\t\t\t\tval = parseInt(val);\r\n\t\t\t\t\treturn [val, type, datePart];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tfunction setView() {\r\n\t\t\tvm.showFixedDate = vm.condition.operator === vm.operators.FlexDateBetween.value;\r\n\t\t\tif (vm.condition.operator === vm.operators.Between.value) {\r\n\t\t\t\tvm.fromEnabled = vm.tillEnabled = true;\r\n\t\t\t\tvm.condition.value[0] = vm.condition.value[0] ? new Date(vm.condition.value[0]) : '';\r\n\t\t\t\tvm.condition.value[1] = vm.condition.value[1] ? new Date(vm.condition.value[1]) : '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction setValues() {\r\n\t\t\tif (vm.showFixedDate) {\r\n\t\t\t\tif (vm.fromEnabled) {\r\n\t\t\t\t\tvm.condition.value[0] = (vm.fromDatepart === 'd' ? '' : 'm') + (vm.fromType === 't' ? 't' : '') + (vm.fromSign === '-' ? -1 : 1) * (vm.fromDays || 0);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvm.condition.value[0] = '';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (vm.tillEnabled) {\r\n\t\t\t\t\tvm.condition.value[1] = (vm.tillDatepart === 'd' ? '' : 'm') + (vm.tillType === 't' ? 't' : '') + (vm.tillSign === '-' ? -1 : 1) * (vm.tillDays || 0);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvm.condition.value[1] = '';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction valueToDisplayString(value) {\r\n\t\t\tif (value || value === 0) {\r\n\t\t\t\tif (vm.showFixedDate) {\r\n\t\t\t\t\tvar data = parseFlexDate(value);\r\n\t\t\t\t\tif (!data) {\r\n\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvalue = data[1] === 't' ? vm.todayLable : vm.nowLable;\r\n\r\n\t\t\t\t\tif (data[0]) {\r\n\t\t\t\t\t\tvalue += (data[0] > 0 ? ' +' : ' -') + data[0] + ' ' + (data[2] === 'm' ? vm.minsLable : vm.daysLable);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvalue = i18n.formatDate(value, 'longDate');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tfunction setValueString() {\r\n\t\t\tvar res = '';\r\n\r\n\t\t\tvar from = vm.fromEnabled ? valueToDisplayString(vm.condition.value[0]) : null;\r\n\t\t\tvar till = vm.tillEnabled ? valueToDisplayString(vm.condition.value[1]) : null;\r\n\r\n\t\t\tif (from) {\r\n\t\t\t\tres = vm.fromLabel + ' ' + from;\r\n\t\t\t}\r\n\r\n\t\t\tif (till) {\r\n\t\t\t\tif (res) {\r\n\t\t\t\t\tres += ' ';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tres += vm.tillLable + ' ' + till;\r\n\t\t\t}\r\n\r\n\t\t\tvm.condition.valueString = res;\r\n\t\t\tvar isSetCondition = vm.condition.operator === vm.operators.IsNotSet.value || vm.condition.operator === vm.operators.IsSet.value;\r\n\t\t\tvm.condition.__valid = vm.fromEnabled || vm.tillEnabled || isSetCondition;\r\n\t\t}\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxSearchQueryConditionDecimal', {\r\n\t\tbindings: {\r\n\t\t\tcondition: '<',\r\n\t\t\toperators: '<',\r\n\t\t},\r\n\t\tcontroller: MxSearchQueryConditionDecimalCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-decimal.html',\r\n\t});\r\n\r\n\tMxSearchQueryConditionDecimalCtrl.$inject = ['$scope'];\r\n\r\n\tfunction MxSearchQueryConditionDecimalCtrl($scope) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tif (vm.condition) {\r\n\t\t\t\tif (!Array.isArray(vm.condition.value) || !vm.condition.value.length) {\r\n\t\t\t\t\tvm.condition.value = [''];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t$scope.$watchCollection('vm.condition.value', updateConditionValidity);\r\n\t\treturn vm;\r\n\r\n\t\tfunction updateConditionValidity() {\r\n\t\t\tconst withoutParamsMode = vm.condition.operator === vm.operators.IsNotSet.value || vm.condition.operator === vm.operators.IsSet.value;\r\n\t\t\tif (vm.condition.operator === vm.operators.Between.value) {\r\n\t\t\t\tvm.condition.__valid = Array.isArray(vm.condition.value) && !isNaN(vm.condition.value[0]) && !isNaN(vm.condition.value[1]);\r\n\t\t\t} else {\r\n\t\t\t\tvm.condition.__valid = Array.isArray(vm.condition.value) && !isNaN(vm.condition.value[0]);\r\n\t\t\t}\r\n\t\t\tvm.condition.__valid = vm.condition.__valid || withoutParamsMode;\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxSearchQueryConditionEnumReference', {\r\n\t\tbindings: {\r\n\t\t\tcondition: '<',\r\n\t\t\toperators: '<',\r\n\t\t},\r\n\t\tcontroller: MxSearchQueryConditionEnumReferenceCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-enum-reference.html',\r\n\t});\r\n\r\n\tMxSearchQueryConditionEnumReferenceCtrl.$inject = ['$scope', 'mx.shell.Config'];\r\n\r\n\tfunction MxSearchQueryConditionEnumReferenceCtrl($scope, mxConfig) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.enumerationValues = {};\r\n\t\tvar watchers = [];\r\n\t\tvar localEnumeration = [];\r\n\t\tvar showHiddenValues = false;\r\n\t\tObject.defineProperty(vm, 'showHiddenValues', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn showHiddenValues;\r\n\t\t\t},\r\n\t\t\tset: function (val) {\r\n\t\t\t\tshowHiddenValues = val;\r\n\t\t\t\tfilterItems();\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tfunction filterItems() {\r\n\t\t\tvm.enumeration = localEnumeration.filter(function (item) {\r\n\t\t\t\treturn vm.showHiddenValues || !item.hidden;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\t// TMP: have to convert to int type\r\n\t\t\tvm.condition.value = vm.condition.value.map(function (val) {\r\n\t\t\t\treturn Number(val);\r\n\t\t\t});\r\n\r\n\t\t\tif (vm.condition.__enumeration) {\r\n\t\t\t\tvm.multiGroup = Object.keys(_.groupBy(vm.condition.__enumeration, 'Extentions.StateGroup')).length > 1;\r\n\t\t\t\tvm.showHiddenValuesInSearch = mxConfig.settings.dataSource.showHiddenValuesInSearch !== false;\r\n\r\n\t\t\t\tvar hiddenExists = false;\r\n\t\t\t\tvm.condition.__enumeration.forEach(function (item) {\r\n\t\t\t\t\tvar checked = vm.condition.value && vm.condition.value.length && vm.condition.value.indexOf(item.Value) !== -1;\r\n\r\n\t\t\t\t\tif (item.Hidden && !checked) {\r\n\t\t\t\t\t\thiddenExists = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlocalEnumeration.push({\r\n\t\t\t\t\t\ttitle: item.DisplayString,\r\n\t\t\t\t\t\tvalue: item.Value,\r\n\t\t\t\t\t\thidden: item.Hidden && !checked,\r\n\t\t\t\t\t\tchecked: checked,\r\n\t\t\t\t\t});\r\n\t\t\t\t\tvm.enumerationValues[item.Value] = checked;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvm.showHiddenValuesInSearch = vm.showHiddenValuesInSearch && hiddenExists;\r\n\t\t\t\tfilterItems();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\twatchers.push(\r\n\t\t\t$scope.$watchCollection('vm.enumerationValues', function () {\r\n\t\t\t\tvar value = [];\r\n\r\n\t\t\t\tObject.keys(vm.enumerationValues).forEach(function (status) {\r\n\t\t\t\t\tif (vm.enumerationValues[status]) {\r\n\t\t\t\t\t\tvalue.push(status);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tvm.condition.value = value;\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\twatchers.push($scope.$watch('vm.condition.value', updateConditionValidity));\r\n\r\n\t\t$scope.$on('$destroy', function () {\r\n\t\t\twatchers.forEach(function (w) {\r\n\t\t\t\tw();\r\n\t\t\t});\r\n\t\t\twatchers = [];\r\n\t\t});\r\n\t\treturn vm;\r\n\r\n\t\tfunction updateConditionValidity() {\r\n\t\t\tvar values = vm.condition.value;\r\n\t\t\tconst withoutParamsMode = vm.condition.operator === vm.operators.IsNotSet.value || vm.condition.operator === vm.operators.IsSet.value;\r\n\t\t\tvm.condition.__valid = values.length > 0 || withoutParamsMode;\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc component\r\n\t * @name mx.SolutionBuilderAgent:mxSearchQueryConditionExpression\r\n\t * @module mx.SolutionBuilderAgent\r\n\t * @requires $scope\r\n\t * @requires mx.shell.UserProfileService\r\n\t * @description\r\n\t * A search query condition that displays conditions as expressions\r\n\t * @param {SearchQueryCondition} condition= - related {@ref SearchQueryCondition} instance\r\n\t * @usage \r\n\t */\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxSearchQueryConditionExpression', {\r\n\t\tbindings: {\r\n\t\t\tcondition: '<',\r\n\t\t\toperators: '<',\r\n\t\t\tclassName: '@',\r\n\t\t},\r\n\t\tcontroller: MxSearchQueryConditionExpressionController,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-expression.html',\r\n\t});\r\n\r\n\tMxSearchQueryConditionExpressionController.$inject = ['mx.shell.UserProfileService', '$scope'];\r\n\r\n\tfunction MxSearchQueryConditionExpressionController(userProfileService, $scope) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tuserProfileService.isCustomizationMode().then(function (result) {\r\n\t\t\t\tvm.showExpression = result;\r\n\t\t\t});\r\n\r\n\t\t\tif (vm.condition) {\r\n\t\t\t\tvm.condition.value = Array.isArray(vm.condition.value) ? [vm.condition.value[0] || '', vm.condition.value[1] || ''] : ['', ''];\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar w = $scope.$watchGroup(['vm.condition.value[0]', 'vm.condition.value[1]'], updateConditionValidity);\r\n\t\t$scope.$on('$destroy', () => w());\r\n\t\treturn vm;\r\n\r\n\t\tfunction updateConditionValidity(newValues) {\r\n\t\t\tvm.condition.__valid = Boolean(newValues[0]) && Boolean(newValues[1]);\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxSearchQueryConditionFloat', {\r\n\t\tbindings: {\r\n\t\t\tcondition: '<',\r\n\t\t\toperators: '<',\r\n\t\t},\r\n\t\tcontroller: MxSearchQueryConditionFloatCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-float.html',\r\n\t});\r\n\r\n\tMxSearchQueryConditionFloatCtrl.$inject = ['$scope'];\r\n\r\n\tfunction MxSearchQueryConditionFloatCtrl($scope) {\r\n\t\tconst vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tif (vm.condition) {\r\n\t\t\t\tif (!Array.isArray(vm.condition.value) || !vm.condition.value.length) {\r\n\t\t\t\t\tvm.condition.value = [''];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t$scope.$watchCollection('vm.condition.value', updateConditionValidity);\r\n\t\treturn vm;\r\n\r\n\t\tfunction updateConditionValidity() {\r\n\t\t\tconst withoutParamsMode = vm.condition.operator === vm.operators.IsNotSet.value || vm.condition.operator === vm.operators.IsSet.value;\r\n\t\t\tif (vm.condition.operator === vm.operators.Between.value) {\r\n\t\t\t\tvm.condition.__valid = Array.isArray(vm.condition.value) && !isNaN(vm.condition.value[0]) && !isNaN(vm.condition.value[1]);\r\n\t\t\t} else {\r\n\t\t\t\tvm.condition.__valid = Array.isArray(vm.condition.value) && !isNaN(vm.condition.value[0]);\r\n\t\t\t}\r\n\t\t\tvm.condition.__valid = vm.condition.__valid || withoutParamsMode;\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxSearchQueryConditionObjectReference', {\r\n\t\tbindings: {\r\n\t\t\tcondition: '<',\r\n\t\t\toperators: '<',\r\n\t\t},\r\n\t\tcontroller: MxSearchQueryConditionObjectReferenceCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-object-reference.html',\r\n\t});\r\n\r\n\tMxSearchQueryConditionObjectReferenceCtrl.$inject = ['$scope', 'mx.internationalization'];\r\n\r\n\tfunction MxSearchQueryConditionObjectReferenceCtrl($scope, i18n) {\r\n\t\tvar vm = this;\r\n\t\tvar orignShowCurrentUser, _pickupValues;\r\n\t\tvar watchers = [];\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.textMode = isTextMode();\r\n\t\t\tvm.stateMode = isStateMode();\r\n\t\t\tvm.condition.value = vm.condition.value || [];\r\n\t\t\tvm.reference = vm.condition.__property.ReferenceTo;\r\n\r\n\t\t\tvar treeTypes = ['spssccategoryclassbase', 'spsarticlecategoryclassbase', 'plslcomponentcategoryclassbase'];\r\n\t\t\tvm.parent = vm.reference && treeTypes.indexOf(vm.reference.toLowerCase()) !== -1 ? 'Parent' : '';\r\n\r\n\t\t\torignShowCurrentUser = vm.reference && vm.reference.toLowerCase() === 'spsuserclassbase';\r\n\t\t\tvm.showCurrentUser = orignShowCurrentUser && !vm.textMode && !vm.stateMode;\r\n\t\t\tvm.currentUser = false;\r\n\t\t\tvm._notSet = false;\r\n\r\n\t\t\tObject.defineProperty(vm, 'values', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn _pickupValues;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (val) {\r\n\t\t\t\t\t_pickupValues = val;\r\n\t\t\t\t\tsetConditionValues();\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(vm, 'notSet', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn vm._notSet;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (val) {\r\n\t\t\t\t\tvm._notSet = val;\r\n\t\t\t\t\tsetConditionValues();\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (vm.condition.value.length > 0 && !vm.textMode) {\r\n\t\t\t\tsetPickupValues();\r\n\t\t\t}\r\n\r\n\t\t\tif (!_pickupValues) {\r\n\t\t\t\t_pickupValues = vm.condition.value;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\twatchers.push($scope.$watch('vm.selectedItems[0].DisplayString', setConditionDisplayValue));\r\n\r\n\t\twatchers.push($scope.$watch('vm.currentUser', setConditionValues));\r\n\r\n\t\twatchers.push(\r\n\t\t\t$scope.$watch('vm.condition.operator', function (newVal, oldVal) {\r\n\t\t\t\tvar operatorChanged = newVal !== oldVal;\r\n\t\t\t\tvm.textMode = isTextMode();\r\n\t\t\t\tvm.stateMode = isStateMode();\r\n\t\t\t\tvm.condition.value = operatorChanged ? [] : vm.condition.value;\r\n\t\t\t\tsetPickupValues();\r\n\r\n\t\t\t\tif ((vm.textMode && operatorChanged) || vm.stateMode) {\r\n\t\t\t\t\tvm.showCurrentUser = false;\r\n\r\n\t\t\t\t\tvm.values = null;\r\n\t\t\t\t\tvm.selectedItems = (vm.selectedItems || []).length = 0;\r\n\t\t\t\t\tvm.notSet = newVal === vm.operators.IsNotSet.value;\r\n\r\n\t\t\t\t\tif (vm.stateMode) {\r\n\t\t\t\t\t\tvm.condition.value.push('null');\r\n\t\t\t\t\t} else if (vm.textMode) {\r\n\t\t\t\t\t\tvm.condition.value = [''];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tsetConditionDisplayValue();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvm.showCurrentUser = orignShowCurrentUser;\r\n\t\t\t\t\tsetConditionValues();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\twatchers.push($scope.$watch('vm.condition.value[0]', updateConditionValidity));\r\n\t\t$scope.$on('$destroy', function () {\r\n\t\t\twatchers.forEach(function (w) {\r\n\t\t\t\tw();\r\n\t\t\t});\r\n\t\t\twatchers = [];\r\n\t\t});\r\n\r\n\t\treturn vm;\r\n\r\n\t\tfunction isTextMode() {\r\n\t\t\treturn (\r\n\t\t\t\tvm.condition.operator === vm.operators.Contains.value ||\r\n\t\t\t\tvm.condition.operator === vm.operators.NotContains.value ||\r\n\t\t\t\tvm.condition.operator === vm.operators.StartsWith.value ||\r\n\t\t\t\tvm.condition.operator === vm.operators.EndsWith.value\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tfunction isStateMode() {\r\n\t\t\treturn vm.condition.operator === vm.operators.IsNotSet.value || vm.condition.operator === vm.operators.IsSet.value;\r\n\t\t}\r\n\r\n\t\tfunction setPickupValues() {\r\n\t\t\tvar tmpArr = [];\r\n\r\n\t\t\tvm.condition.value.forEach(function (val) {\r\n\t\t\t\tif (val === '@me' || val === 'CURRENTUSERID()') {\r\n\t\t\t\t\tvm.currentUser = true;\r\n\t\t\t\t} else if (val === 'null') {\r\n\t\t\t\t\tvm._notSet = true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttmpArr.push(val);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t_pickupValues = tmpArr;\r\n\t\t}\r\n\r\n\t\tfunction setConditionValues() {\r\n\t\t\tif (!vm.textMode && !vm.stateMode) {\r\n\t\t\t\tvm.condition.value = _pickupValues ? _pickupValues.slice() : [];\r\n\t\t\t\tif (vm.currentUser) {\r\n\t\t\t\t\tvm.condition.value.push('@me');\r\n\t\t\t\t}\r\n\t\t\t\tif (vm.notSet) {\r\n\t\t\t\t\tvm.condition.value.push('null');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsetConditionDisplayValue();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction setConditionDisplayValue() {\r\n\t\t\tif (vm.selectedItems && vm.selectedItems.length > 0) {\r\n\t\t\t\tvm.condition.valueString =\r\n\t\t\t\t\t'\"' +\r\n\t\t\t\t\tvm.selectedItems\r\n\t\t\t\t\t\t.map(function (item) {\r\n\t\t\t\t\t\t\treturn item.DisplayString;\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.join('\", \"') +\r\n\t\t\t\t\t'\"';\r\n\t\t\t} else {\r\n\t\t\t\tvm.condition.valueString = vm.stateMode ? ' ' : '';\r\n\t\t\t}\r\n\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tval: vm.currentUser,\r\n\t\t\t\t\tlbl: 'solutionBuilderAgent.components.mx-search-query-condition-object-reference.me',\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tval: vm.notSet && !vm.textMode && !vm.stateMode,\r\n\t\t\t\t\tlbl: 'solutionBuilderAgent.components.mx-search-query-condition-object-reference.notSet',\r\n\t\t\t\t},\r\n\t\t\t].forEach(function (itm) {\r\n\t\t\t\tif (itm.val) {\r\n\t\t\t\t\tif (vm.condition.valueString) {\r\n\t\t\t\t\t\tvm.condition.valueString += ' ' + i18n.get('solutionBuilderAgent.common.or_label') + ' ';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvm.condition.valueString += ' ' + i18n.get(itm.lbl) + ' ';\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction updateConditionValidity() {\r\n\t\t\tconst values = vm.condition.value;\r\n\t\t\tconst withoutParamsMode = vm.condition.operator === vm.operators.IsNotSet.value || vm.condition.operator === vm.operators.IsSet.value;\r\n\t\t\tvm.condition.__valid = values.length > 0 || withoutParamsMode;\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxSearchQueryConditionString', {\r\n\t\tbindings: {\r\n\t\t\tcondition: '<',\r\n\t\t\toperators: '<',\r\n\t\t},\r\n\t\tcontroller: MxSearchQueryConditionStringCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-string.html',\r\n\t});\r\n\r\n\tMxSearchQueryConditionStringCtrl.$inject = ['$scope', 'mx.shell.Config', 'mx.internationalization'];\r\n\r\n\tfunction MxSearchQueryConditionStringCtrl($scope, configService, i18n) {\r\n\t\tconst vm = this;\r\n\t\tvm.maxWordsPerCondition = configService.get('maxWordsPerCondition');\r\n\t\tvm.maxWordsValidationMessage = i18n.getFormatted('solutionBuilderAgent.components.mx-search-query-condition.tooManyWords', vm.maxWordsPerCondition);\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tif (vm.condition) {\r\n\t\t\t\tif (!Array.isArray(vm.condition.value) || !vm.condition.value.length) {\r\n\t\t\t\t\tvm.condition.value = [''];\r\n\t\t\t\t} else if (vm.condition.value.length > 1) {\r\n\t\t\t\t\tvm.condition.value = [vm.condition.value[0]];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst w = $scope.$watchGroup(['vm.condition.value[0]', 'vm.condition.operator'], updateConditionValidity);\r\n\t\t$scope.$on('$destroy', () => w());\r\n\t\treturn vm;\r\n\r\n\t\tfunction updateConditionValidity() {\r\n\t\t\tconst searchText = (vm.condition.value && vm.condition.value[0]) || '';\r\n\t\t\tvm.condition.__valid = false;\r\n\t\t\tvm.customValidation = null;\r\n\r\n\t\t\tswitch (vm.condition.operator) {\r\n\t\t\t\tcase vm.operators.IsNotSet.value:\r\n\t\t\t\tcase vm.operators.IsSet.value:\r\n\t\t\t\t\tvm.condition.__valid = true;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase vm.operators.ContainsAllWords.value:\r\n\t\t\t\tcase vm.operators.ContainsAnyWord.value:\r\n\t\t\t\tcase vm.operators.DoesNotContainAnyWord.value:\r\n\t\t\t\tcase vm.operators.DoesNotContainAllWords.value:\r\n\t\t\t\t\tvm.condition.__valid = searchText && searchText.split(/[,|.|;| ]/).length <= vm.maxWordsPerCondition;\r\n\t\t\t\t\tif (searchText && !vm.condition.__valid) {\r\n\t\t\t\t\t\tvm.customValidation = {\r\n\t\t\t\t\t\t\tIsValid: false,\r\n\t\t\t\t\t\t\tErrorMessage: vm.maxWordsValidationMessage,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tvm.condition.__valid = searchText.length > 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxSearchQueryConditionOperator', {\r\n\t\tbindings: {\r\n\t\t\tmodel: '=ngModel',\r\n\t\t\tconditionOperators: '=items',\r\n\t\t},\r\n\t\tcontroller: MxSearchQueryConditionOperatorCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-search-query-condition/mx-search-query-condition-operator.html',\r\n\t});\r\n\r\n\tMxSearchQueryConditionOperatorCtrl.$inject = ['$scope', 'mx.sb.Agent.DataQuery.FilterOperatorsFactory'];\r\n\r\n\tfunction MxSearchQueryConditionOperatorCtrl($scope, filterOperatorsFactory) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.openDropDown = openDropDown;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.showDropDown = false;\r\n\t\t\tvm.conditionOperatorsDropdownList = [];\r\n\r\n\t\t\tif (vm.model !== undefined) {\r\n\t\t\t\tconst operator = filterOperatorsFactory.getOperatorByValue(vm.model);\r\n\t\t\t\tif (operator) {\r\n\t\t\t\t\tvm.operator = operator;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar watcher = $scope.$watch('vm.conditionOperators', function () {\r\n\t\t\tif (Array.isArray(vm.conditionOperators)) {\r\n\t\t\t\tvm.conditionOperatorsDropdownList = vm.conditionOperators\r\n\t\t\t\t\t.filter(function (op) {\r\n\t\t\t\t\t\treturn op;\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.map(function (op) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tlabel: op.name,\r\n\t\t\t\t\t\t\tonItemClick: function () {\r\n\t\t\t\t\t\t\t\tchoose(op);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$scope.$on('$destroy', function () {\r\n\t\t\twatcher();\r\n\t\t});\r\n\r\n\t\treturn vm;\r\n\r\n\t\tfunction choose(operator) {\r\n\t\t\tvm.operator = operator;\r\n\t\t\tvm.model = operator.value;\r\n\t\t}\r\n\r\n\t\tfunction openDropDown($event) {\r\n\t\t\t$event.stopPropagation();\r\n\t\t\tvm.showDropDown = true;\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').directive('mxSearchQueryCondition', [\r\n\t\tfunction mxSearchQueryConditionDirective() {\r\n\t\t\tMxSearchQueryConditionCtrl.$inject = [\r\n\t\t\t\t'$rootScope',\r\n\t\t\t\t'$compile',\r\n\t\t\t\t'$element',\r\n\t\t\t\t'$scope',\r\n\t\t\t\t'mx.SolutionBuilderAgent.SearchQueryService',\r\n\t\t\t\t'mx.sb.Agent.DataQuery.FilterOperatorsFactory',\r\n\t\t\t];\r\n\r\n\t\t\tfunction MxSearchQueryConditionCtrl($rootScope, $compile, $element, $scope, searchQueryService, filterOperatorsFactory) {\r\n\t\t\t\tvar vm = this;\r\n\t\t\t\tvar directive = '';\r\n\t\t\t\tvar watchers = [];\r\n\t\t\t\tconst operators = filterOperatorsFactory.operators;\r\n\t\t\t\tvm.remove = remove;\r\n\t\t\t\tvm.toggleParentLogicalOperator = toggleParentLogicalOperator;\r\n\t\t\t\tvm.toggleExpanded = toggleExpanded;\r\n\r\n\t\t\t\tvm.$onInit = function () {\r\n\t\t\t\t\tvm.expanded = !vm.readOnly;\r\n\t\t\t\t\tvm.operators = [];\r\n\t\t\t\t\tvm.conditionString = '';\r\n\t\t\t\t\tvm.isExpression = vm.condition.type === 'Expression';\r\n\r\n\t\t\t\t\tif (vm.condition.__property && vm.condition.__property.ReferenceTo) {\r\n\t\t\t\t\t\tif (vm.condition.__enumeration) {\r\n\t\t\t\t\t\t\tdirective = 'mx-search-query-condition-enum-reference';\r\n\t\t\t\t\t\t\tvm.operators = filterOperatorsFactory.getOperatorsByType('EnumReference');\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tdirective = 'mx-search-query-condition-object-reference';\r\n\t\t\t\t\t\t\tvm.operators = filterOperatorsFactory.getOperatorsByType('ObjectReference');\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!_.find(vm.operators, ['value', vm.condition.operator])) {\r\n\t\t\t\t\t\t\tvm.condition.operator = operators.In.value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tswitch (vm.condition.type) {\r\n\t\t\t\t\t\t\tcase 'BoolType':\r\n\t\t\t\t\t\t\t\tdirective = 'mx-search-query-condition-boolean';\r\n\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase 'IntType':\r\n\t\t\t\t\t\t\tcase 'DecimalType':\r\n\t\t\t\t\t\t\t\tvm.operators = getOperators(vm.condition.type);\r\n\t\t\t\t\t\t\t\tdirective = 'mx-search-query-condition-decimal';\r\n\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase 'FloatType':\r\n\t\t\t\t\t\t\tcase 'Currency':\r\n\t\t\t\t\t\t\t\tvm.operators = getOperators(vm.condition.type);\r\n\t\t\t\t\t\t\t\tdirective = 'mx-search-query-condition-float';\r\n\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase 'DateType':\r\n\t\t\t\t\t\t\t\tvm.operators = getOperators(vm.condition.type);\r\n\t\t\t\t\t\t\t\tdirective = 'mx-search-query-condition-date';\r\n\r\n\t\t\t\t\t\t\t\tif (vm.condition.operator === operators.Equals.value) {\r\n\t\t\t\t\t\t\t\t\tvm.condition.operator = operators.Between.value;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase 'Expression':\r\n\t\t\t\t\t\t\t\tdirective = 'mx-search-query-condition-expression';\r\n\t\t\t\t\t\t\t\tvm.operators = filterOperatorsFactory.getOperatorsByType('Expression');\r\n\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t// Case 'StringType':\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\tvm.operators = getOperators(vm.condition.type);\r\n\t\t\t\t\t\t\t\tdirective = 'mx-search-query-condition-string';\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (directive) {\r\n\t\t\t\t\t\tinitCondition(directive);\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\twatchers.push($scope.$watchCollection('vm.condition.value', updateCondition));\r\n\t\t\t\twatchers.push($scope.$watch('vm.condition.valueString', updateCondition));\r\n\t\t\t\twatchers.push($scope.$watch('vm.condition.operator', updateCondition));\r\n\r\n\t\t\t\t$scope.$on('$destroy', function () {\r\n\t\t\t\t\twatchers.forEach((w) => w());\r\n\t\t\t\t\twatchers = [];\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn vm;\r\n\r\n\t\t\t\tfunction getOperators(conditionType) {\r\n\t\t\t\t\tvar type = _.findKey(mx.shell.ObjectPropertyType, ['name', conditionType]);\r\n\r\n\t\t\t\t\treturn type ? filterOperatorsFactory.getOperatorsByType(type) : [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction initCondition(directive) {\r\n\t\t\t\t\tvar itemScope = $rootScope.$new();\r\n\t\t\t\t\twatchers.push(function () {\r\n\t\t\t\t\t\titemScope.$destroy();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\titemScope.condition = vm.condition;\r\n\t\t\t\t\titemScope.operators = filterOperatorsFactory.operators;\r\n\t\t\t\t\titemScope.className = vm.className;\r\n\t\t\t\t\tvar el = $compile(`<${directive} condition=\"condition\" operators=\"operators\" class-name=\"{{className}}\">`)(itemScope);\r\n\r\n\t\t\t\t\tangular.element($element[0].querySelector('.mx-search-condition--body')).append(el);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction remove() {\r\n\t\t\t\t\tif (vm.parent) {\r\n\t\t\t\t\t\tvm.parent.removeCondition(vm.condition.id);\r\n\t\t\t\t\t\tif (vm.onRemove) {\r\n\t\t\t\t\t\t\tvm.onRemove({ condition: vm.condition });\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction toggleExpanded() {\r\n\t\t\t\t\tif (vm.readOnly) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvm.condition.__expanded = !vm.condition.__expanded;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction toggleParentLogicalOperator(event) {\r\n\t\t\t\t\tif (event) {\r\n\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvm.parent.logicalOperator =\r\n\t\t\t\t\t\tvm.parent.logicalOperator === mx.SolutionBuilderAgent.SearchQueryLogicalOperator.AND\r\n\t\t\t\t\t\t\t? mx.SolutionBuilderAgent.SearchQueryLogicalOperator.OR\r\n\t\t\t\t\t\t\t: mx.SolutionBuilderAgent.SearchQueryLogicalOperator.AND;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction updateCondition() {\r\n\t\t\t\t\tvm.conditionString = searchQueryService.getConditionString(vm.condition);\r\n\t\t\t\t\tvm.operatorInfo = vm.operators.filter(function (op) {\r\n\t\t\t\t\t\treturn op && op.value === vm.condition.operator;\r\n\t\t\t\t\t})[0];\r\n\t\t\t\t\tvm.condition.__expanded = !vm.readOnly;\r\n\t\t\t\t\tif (vm.condition.operator === operators.IsNotSet.value || vm.condition.operator === operators.IsSet.value) {\r\n\t\t\t\t\t\tvm.condition.value = [];\r\n\t\t\t\t\t\tvm.condition.__valid = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\trestrict: 'E',\r\n\t\t\t\tscope: {},\r\n\t\t\t\treplace: true,\r\n\t\t\t\tbindToController: {\r\n\t\t\t\t\tcondition: '=',\r\n\t\t\t\t\tparent: '=',\r\n\t\t\t\t\tclassName: '@',\r\n\t\t\t\t\tonRemove: '&',\r\n\t\t\t\t\treadOnly: '\r\n\t */\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxSettingViewhelpEditor', {\r\n\t\tbindings: {\r\n\t\t\tvalue: '=',\r\n\t\t\tvalue2: '=',\r\n\t\t},\r\n\t\tcontroller: MxSettingViewhelpEditorCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-setting-viewhelp-editor/mx-setting-viewhelp-editor.html',\r\n\t});\r\n\r\n\tMxSettingViewhelpEditorCtrl.$inject = ['$scope', '$http', 'mx.shell.Http', 'mx.shell.Config', 'mx.internationalization'];\r\n\r\n\tfunction MxSettingViewhelpEditorCtrl($scope, $http, mxHttp, mxConfig, i18n) {\r\n\t\tvar vm = this;\r\n\t\tvm.i18n = i18n.get('solutionBuilderAgent.components.mx-setting-viewhelp-editor');\r\n\t\tvm.hashtags = [];\r\n\t\tvm.hashtag = null;\r\n\t\tvm.onlineHashtags = [];\r\n\t\tvm.onlineHashtag = null;\r\n\t\tvm.localKBArticleID = '';\r\n\t\tvm.localKBArticleObjID = '';\r\n\t\tvm.onlineKBArticle = '';\r\n\t\tvm.onlineKBArticleFound = '';\r\n\r\n\t\tvar _helpSourceType = '0';\r\n\t\tvar _localKBArticleValue = '';\r\n\t\tvar _onlineKBArticleValue = '';\r\n\t\tvar _onlineHelpRestHosts = '';\r\n\t\tvar _initHashtag = '';\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvar panels = [];\r\n\t\t\tpanels.push({ id: '135DFB2D-D36B-4DC3-857F-470E0609BEEA', title: vm.i18n.None, name: '0', visible: true, disabled: false, position: 1, count: '', description: '' });\r\n\t\t\tpanels.push({\r\n\t\t\t\tid: '1117709A-8A5F-4CCA-A4DB-AAE87A381B6F',\r\n\t\t\t\ttitle: vm.i18n.KBArticle,\r\n\t\t\t\tname: '1',\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdisabled: false,\r\n\t\t\t\tposition: 2,\r\n\t\t\t\tcount: '',\r\n\t\t\t\tdescription: '',\r\n\t\t\t});\r\n\t\t\tpanels.push({\r\n\t\t\t\tid: '0A05A299-F5FA-4633-A627-8EAE573D993C',\r\n\t\t\t\ttitle: vm.i18n.M42OnlineHelp,\r\n\t\t\t\tname: '2',\r\n\t\t\t\tvisible: false,\r\n\t\t\t\tdisabled: false,\r\n\t\t\t\tposition: 3,\r\n\t\t\t\tcount: '',\r\n\t\t\t\tdescription: '',\r\n\t\t\t});\r\n\t\t\tpanels.push({\r\n\t\t\t\tid: '440817BE-B63A-41E6-972B-1D9CDAE83ADA',\r\n\t\t\t\ttitle: vm.i18n.ExternalURL,\r\n\t\t\t\tname: '3',\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdisabled: false,\r\n\t\t\t\tposition: 4,\r\n\t\t\t\tcount: '',\r\n\t\t\t\tdescription: '',\r\n\t\t\t});\r\n\t\t\tvm.panels = panels;\r\n\r\n\t\t\tvm.hiddenPanels = mxConfig.settings.productName !== 'Workspace Management' ? '1' : '';\r\n\t\t\t_onlineHelpRestHosts = mxConfig.settings.restHosts.onlineHelp + '/api/kbarticle/Check';\r\n\r\n\t\t\t_helpSourceType = vm.value + '';\r\n\t\t\tif (vm.value2) {\r\n\t\t\t\tswitch (vm.helpSourceType) {\r\n\t\t\t\t\tcase '1':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvar _obj1 = JSON.parse(vm.value2);\r\n\t\t\t\t\t\t\tif (typeof _obj1 === 'object') {\r\n\t\t\t\t\t\t\t\tvm.localKBArticleID = _obj1.Id;\r\n\t\t\t\t\t\t\t\t_initHashtag = _obj1.Hashtag;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase '2':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvar _obj2 = JSON.parse(vm.value2);\r\n\t\t\t\t\t\t\tif (typeof _obj2 === 'object') {\r\n\t\t\t\t\t\t\t\tvm.onlineKBArticle = _obj2.Title;\r\n\t\t\t\t\t\t\t\t_initHashtag = _obj2.Hashtag;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t$scope.$watchCollection('vm.localKBArticleObjID', function (newVal) {\r\n\t\t\t\tif (vm.value + '' === '1') {\r\n\t\t\t\t\tvm.hashtags = [];\r\n\t\t\t\t\tvm.hashtag = null;\r\n\t\t\t\t\tvm.value2 = '';\r\n\r\n\t\t\t\t\tif (newVal) {\r\n\t\t\t\t\t\tvm.value2 = _localKBArticleValue = '{\"Id\":\"' + vm.localKBArticleID + '\",\"ObjID\":\"' + newVal + '\"}';\r\n\t\t\t\t\t\t_loadHeadings(newVal, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t$scope.$watchCollection('vm.hashtag', function (newVal) {\r\n\t\t\t\tif (vm.value + '' === '1' && vm.value2) {\r\n\t\t\t\t\tvar obj = JSON.parse(vm.value2);\r\n\t\t\t\t\tdelete obj.Hashtag;\r\n\t\t\t\t\tif (newVal) {\r\n\t\t\t\t\t\tobj.Hashtag = newVal;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvm.value2 = _localKBArticleValue = JSON.stringify(obj);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t$scope.$watchCollection('vm.onlineKBArticle', function (newVal) {\r\n\t\t\t\tif (vm.value + '' === '2') {\r\n\t\t\t\t\tvm.onlineHashtags = [];\r\n\t\t\t\t\tvm.onlineHashtag = null;\r\n\t\t\t\t\tvm.value2 = '';\r\n\t\t\t\t\tvm.onlineKBArticleFound = '';\r\n\r\n\t\t\t\t\tif (newVal) {\r\n\t\t\t\t\t\t$http.get(_onlineHelpRestHosts + '/?data=' + encodeURIComponent(newVal)).then(function (response) {\r\n\t\t\t\t\t\t\tif (typeof response === 'object' && response.data.ObjectID) {\r\n\t\t\t\t\t\t\t\tvm.value2 = _onlineKBArticleValue = '{\"Title\":\"' + newVal + '\",\"ObjID\":\"' + response.data.ObjectID + '\"}';\r\n\t\t\t\t\t\t\t\tvm.setValidity('kbArticleNotFound', true);\r\n\t\t\t\t\t\t\t\tvm.onlineKBArticleFound = i18n.getFormatted(\r\n\t\t\t\t\t\t\t\t\t'solutionBuilderAgent.components.mx-setting-viewhelp-editor.kbArticleFound',\r\n\t\t\t\t\t\t\t\t\tnewVal,\r\n\t\t\t\t\t\t\t\t\tresponse.data.Subject\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t_loadHeadings(response.data.ObjectID, true);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tvm.setValidity('kbArticleNotFound', false);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t$scope.$watchCollection('vm.onlineHashtag', function (newVal) {\r\n\t\t\t\tif (vm.value + '' === '2' && vm.value2) {\r\n\t\t\t\t\tvar obj = JSON.parse(vm.value2);\r\n\t\t\t\t\tdelete obj.Hashtag;\r\n\t\t\t\t\tif (newVal) {\r\n\t\t\t\t\t\tobj.Hashtag = newVal;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvm.value2 = _onlineKBArticleValue = JSON.stringify(obj);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tObject.defineProperty(vm, 'helpSourceType', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn _helpSourceType;\r\n\t\t\t},\r\n\t\t\tset: function (newVal) {\r\n\t\t\t\tif (_helpSourceType !== newVal) {\r\n\t\t\t\t\tswitch (newVal) {\r\n\t\t\t\t\t\tcase '1':\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvm.value2 = _localKBArticleValue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase '2':\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvm.value2 = _onlineKBArticleValue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault: {\r\n\t\t\t\t\t\t\tvm.value2 = '';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tvm.value = _helpSourceType = newVal;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tfunction _loadHeadings(kbObjId, isOnline) {\r\n\t\t\tif (isOnline) {\r\n\t\t\t\t$http.get(mxConfig.settings.restHosts.onlineHelp + '/api/kbarticle/' + kbObjId + '/html').then(function (response) {\r\n\t\t\t\t\tif (typeof response === 'object' && response.data) {\r\n\t\t\t\t\t\t_setHashtags(response.data.Hashtags, isOnline);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tmxHttp.get('api/kbarticle/' + kbObjId + '/html').then(function (data) {\r\n\t\t\t\t\tif (typeof data === 'object' && Array.isArray(data.Hashtags)) {\r\n\t\t\t\t\t\t_setHashtags(data.Hashtags, isOnline);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction _setHashtags(hashtags, isOnline) {\r\n\t\t\tif (Array.isArray(hashtags)) {\r\n\t\t\t\tvar selectedHasgTag = null;\r\n\t\t\t\tif (_initHashtag) {\r\n\t\t\t\t\tselectedHasgTag = _.find(hashtags, { ID: _initHashtag });\r\n\t\t\t\t\t_initHashtag = '';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isOnline) {\r\n\t\t\t\t\tvm.onlineHashtags = hashtags;\r\n\t\t\t\t\tif (selectedHasgTag) {\r\n\t\t\t\t\t\tvm.onlineHashtag = [selectedHasgTag.ID];\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvm.hashtags = hashtags;\r\n\t\t\t\t\tif (selectedHasgTag) {\r\n\t\t\t\t\t\tvm.hashtag = [selectedHasgTag.ID];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn vm;\r\n\t}\r\n})(window);\r\n","(function () {\r\n\t'use strict';\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxSidePanelTabBody', {\r\n\t\tcontroller: function () {},\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-side-panel/mx-side-panel-tab-body.html',\r\n\t\tbindings: { view: '<' },\r\n\t});\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc component\r\n\t *\r\n\t * @name mx.shell:mxSidePanel\r\n\t *\r\n\t * @module mx.shell\r\n\t * @requires {@ref mx.shell.SideLayout mx.shell.SideLayout}\r\n\t * @requires {@ref mx.shell.SidePanelService mx.shell.SidePanelService}\r\n\t * @requires {@ref mx.shell.DetailsView mx.shell.DetailsView}\r\n\t * @requires {@ref mx.shell.EventService mx.shell.EventService}\r\n\t * @requires {@ref mx.shell.HelpService mx.shell.ViewHelpService}\r\n\t * @requires $scope\r\n\t * @requires $timeout\r\n\t *\r\n\t * @description A panel, that shows actual information about current selected items,\r\n\t * edit-forms and similar or wizards in separated tabs\r\n\t *\r\n\t * @usage \r\n\t */\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxSidePanel', {\r\n\t\tcontroller: MxSidePanelCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-side-panel/mx-side-panel.html',\r\n\t});\r\n\r\n\tMxSidePanelCtrl.$inject = [\r\n\t\t'mx.shell.SideLayout',\r\n\t\t'mx.shell.SidePanelService',\r\n\t\t'mx.shell.EventService',\r\n\t\t'$scope',\r\n\t\t'$timeout',\r\n\t\t'$element',\r\n\t\t'mx.shell.KeyboardNavigationService',\r\n\t\t'mx.internationalization',\r\n\t\t'mx.shell.AriaService',\r\n\t];\r\n\r\n\tfunction MxSidePanelCtrl(sideLayoutService, sidePanelService, eventService, $scope, $timeout, $element, keyboardNavigationService, i18n, ariaService) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.i18n = i18n.get('shell.common');\r\n\r\n\t\tvm.sideLayoutService = sideLayoutService;\r\n\t\tvm.sidePanelService = sidePanelService;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tregisterHotkeys();\r\n\t\t\tinitAriaEvents();\r\n\t\t};\r\n\r\n\t\tvar linkHelperShowTextEventHandler = eventService.subscribeTo(\r\n\t\t\tmx.shell.EventCodes.HelpShowText,\r\n\t\t\tfunction (e, elem) {\r\n\t\t\t\tif (elem) {\r\n\t\t\t\t\tvm.isMoreViewHelp = false;\r\n\t\t\t\t\t// showViewHelp(elem);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\r\n\t\t$scope.$on('$destroy', function () {\r\n\t\t\tlinkHelperShowTextEventHandler();\r\n\t\t});\r\n\r\n\t\tfunction registerHotkeys() {\r\n\t\t\tvar invalidInputsSelector = ['.md-input-invalid input', 'mx-picker.ng-invalid input', '.mx-picker--invalid input'].join(',');\r\n\r\n\t\t\tkeyboardNavigationService.registerKey({\r\n\t\t\t\tscope: $scope,\r\n\t\t\t\tkey: 'alt+shift+n',\r\n\t\t\t\thint: '⇧+n',\r\n\t\t\t\tdescription: 'Focus next invalid required input',\r\n\t\t\t\tcallback: function () {\r\n\t\t\t\t\tvar invalidInputs = $(invalidInputsSelector);\r\n\t\t\t\t\tvar currentInput = invalidInputs.filter(':focus');\r\n\t\t\t\t\tvar currentInputIndex = invalidInputs.index(currentInput);\r\n\r\n\t\t\t\t\tif (currentInputIndex === -1 || currentInputIndex === invalidInputs.length - 1) {\r\n\t\t\t\t\t\tinvalidInputs.first().focus();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tinvalidInputs.eq(currentInputIndex + 1).focus();\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tkeyboardNavigationService.registerKey({\r\n\t\t\t\tscope: $scope,\r\n\t\t\t\tkey: 'alt+shift+p',\r\n\t\t\t\thint: '⇧+p',\r\n\t\t\t\tdescription: 'Focus previous invalid required input',\r\n\t\t\t\tcallback: function () {\r\n\t\t\t\t\tvar invalidInputs = $(invalidInputsSelector);\r\n\t\t\t\t\tvar currentInput = invalidInputs.filter(':focus');\r\n\t\t\t\t\tvar currentInputIndex = invalidInputs.index(currentInput);\r\n\r\n\t\t\t\t\tif (currentInputIndex < 1) {\r\n\t\t\t\t\t\tinvalidInputs.last().focus();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tinvalidInputs.eq(currentInputIndex - 1).focus();\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tkeyboardNavigationService.registerKey([\r\n\t\t\t\t{\r\n\t\t\t\t\tscope: $scope,\r\n\t\t\t\t\tnameInTemplate: 'expandedHint',\r\n\t\t\t\t\tkey: 'alt+shift+e',\r\n\t\t\t\t\thint: '⇧+e',\r\n\t\t\t\t\tdescription: i18n.get('shell.mx-side-panel.expand'),\r\n\t\t\t\t\tcallback: function () {\r\n\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\tvm.sideLayoutService.switchFullScreenMode();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tscope: $scope,\r\n\t\t\t\t\tkey: 'alt+q',\r\n\t\t\t\t\tnameInTemplate: 'closeTabHint',\r\n\t\t\t\t\tdescription: i18n.get('shell.mx-side-panel.closeTab'),\r\n\t\t\t\t\tcallback: function () {\r\n\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\t$('.mx-side-panel-content .mx-side-panel-close-button:visible').click();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\t/* {\r\n\t\t\t\tscope: $scope,\r\n\t\t\t\tkey: 'alt+shift+q',\r\n\t\t\t\tnameInTemplate: 'closeAllTabsHint',\r\n\t\t\t\thint: '⇧+q',\r\n\t\t\t\tdescription: i18n.get('shell.mx-side-panel.closeAllTabs'),\r\n\t\t\t\tcallback: function () {\r\n\t\t\t\t\t$timeout(function() {\r\n\t\t\t\t\t\t$('.mx-side-panel-content .md-tab .mx-view-close:visible').click();\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t},*/ {\r\n\t\t\t\t\tscope: $scope,\r\n\t\t\t\t\tkey: 'alt+shift+d',\r\n\t\t\t\t\thint: '⇧+d',\r\n\t\t\t\t\tdescription: i18n.get('shell.mx-side-panel.closePanel'),\r\n\t\t\t\t\tcallback: function () {\r\n\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\tvm.sideLayoutService.hide();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t},\r\n\t\t\t\t} /*{\r\n\t\t\t\tscope: $scope,\r\n\t\t\t\tkey: 'alt+left',\r\n\t\t\t\tnameInTemplate: 'prevTab',\r\n\t\t\t\tdescription: i18n.get('shell.mx-side-panel.prevTab'),\r\n\t\t\t\t// OnRegister: function() {\r\n\t\t\t\t// \t$timeout(function() {\r\n\t\t\t\t// \t\t$('.mx-side-panel-content > md-tabs > md-tabs-wrapper .md-tab.md-active').attr('hint-key', '←→');\r\n\t\t\t\t// \t}, 500);\r\n\t\t\t\t// },\r\n\t\t\t\tcallback: function () {\r\n\t\t\t\t\t$timeout(function() {\r\n\t\t\t\t\t\t$('.mx-side-panel-content > md-tabs > md-tabs-wrapper .md-tab.md-active:visible').prev().click();\r\n\r\n\t\t\t\t\t\t// $timeout(function() {\r\n\t\t\t\t\t\t// \t$('.mx-side-panel-content > md-tabs > md-tabs-wrapper .md-tab').attr('hint-key', null);\r\n\t\t\t\t\t\t// \t$('.mx-side-panel-content > md-tabs > md-tabs-wrapper .md-tab.md-active').attr('hint-key', '←→');\r\n\t\t\t\t\t\t// });\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}, {\r\n\t\t\t\tscope: $scope,\r\n\t\t\t\tkey: 'alt+right',\r\n\t\t\t\tnameInTemplate: 'nextTab',\r\n\t\t\t\tdescription: i18n.get('shell.mx-side-panel.nextTab'),\r\n\t\t\t\t// OnRegister: function() {\r\n\t\t\t\t// \t$timeout(function() {\r\n\t\t\t\t// \t\t$('.mx-side-panel-content > md-tabs > md-tabs-wrapper .md-tab.md-active').attr('hint-key', '←→');\r\n\t\t\t\t// \t}, 500);\r\n\t\t\t\t// },\r\n\t\t\t\tcallback: function () {\r\n\t\t\t\t\t$timeout(function() {\r\n\t\t\t\t\t\t$('.mx-side-panel-content > md-tabs > md-tabs-wrapper .md-tab.md-active:visible').next().click();\r\n\r\n\t\t\t\t\t\t// $timeout(function() {\r\n\t\t\t\t\t\t// \t$('.mx-side-panel-content > md-tabs > md-tabs-wrapper .md-tab').attr('hint-key', null);\r\n\t\t\t\t\t\t// \t$('.mx-side-panel-content > md-tabs > md-tabs-wrapper .md-tab.md-active').attr('hint-key', '←→');\r\n\t\t\t\t\t\t// }, 500);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t},*/ /* {\r\n\t\t\t\tscope: $scope,\r\n\t\t\t\tkey: 'f2',\r\n\t\t\t\tnameInTemplate: 'showHelp',\r\n\t\t\t\tdescription: i18n.get('shell.mx-side-panel.showHelpLabel'),\r\n\t\t\t\tcallback: function () {\r\n\t\t\t\t\t$timeout(function() {\r\n\t\t\t\t\t\tonClickShowViewHelp();\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}*/,\r\n\t\t\t]);\r\n\t\t}\r\n\r\n\t\tfunction initAriaEvents() {\r\n\t\t\tvar moveFocusToDialog = () => {};\r\n\t\t\tvar activeSidePanelTabSelector = '.active-tab mx-side-panel-tab-body';\r\n\r\n\t\t\teventService.subscribeTo(\r\n\t\t\t\tmx.shell.EventCodes.SidePanelViewAdded,\r\n\t\t\t\tfunction (e, view) {\r\n\t\t\t\t\tmoveFocusToDialog = ariaService.createPoliteFocusSettingFn(activeSidePanelTabSelector);\r\n\t\t\t\t\tif (view && view.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.Preview) {\r\n\t\t\t\t\t\tariaService.readMessage(i18n.get('solutionBuilderAgent.aria.loading-item'));\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t$scope\r\n\t\t\t);\r\n\r\n\t\t\t[mx.SolutionBuilderAgent.Events.ViewDataLoaded, mx.shell.EventCodes.SidePanelCurrentViewChanged].forEach((event) =>\r\n\t\t\t\teventService.subscribeTo(event, () => setTimeout(moveFocusToDialog, 500), $scope)\r\n\t\t\t);\r\n\r\n\t\t\teventService.subscribeTo(\r\n\t\t\t\tmx.SolutionBuilderAgent.Events.ActionConfirmDialogCanceled,\r\n\t\t\t\tfunction () {\r\n\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\t$(activeSidePanelTabSelector).focus();\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t},\r\n\t\t\t\t$scope\r\n\t\t\t);\r\n\r\n\t\t\teventService.subscribeTo(\r\n\t\t\t\tmx.shell.EventCodes.SidePanelVisibility,\r\n\t\t\t\tfunction (e, visibility) {\r\n\t\t\t\t\tif (!visibility) {\r\n\t\t\t\t\t\tariaService.readMessage(i18n.get('shell.aria.dialogHasBeenClosed'));\r\n\t\t\t\t\t\tmoveFocusToDialog = () => {};\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t$scope\r\n\t\t\t);\r\n\r\n\t\t\t$element.find('.mx-side-panel-tab--end').on('focus', function () {\r\n\t\t\t\t$element.find('.active-tab .mx-side-panel-tab-header--buttons-panel button:first').focus();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxSupportedWidgetTypes', {\r\n\t\tbindings: {\r\n\t\t\tvalue: '=?',\r\n\t\t\tlabel: '@',\r\n\t\t\tdisabled: '=ngDisabled',\r\n\t\t},\r\n\t\tcontroller: MxSupportedWidgetTypesCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-supported-widget-types/mx-supported-widget-types.html',\r\n\t});\r\n\r\n\tMxSupportedWidgetTypesCtrl.$inject = ['$scope', 'mx.internationalization'];\r\n\r\n\tfunction MxSupportedWidgetTypesCtrl($scope, $i18n) {\r\n\t\tvar vm = this;\r\n\t\tvar localChanged = false;\r\n\r\n\t\tvm.i18n = $i18n.get('solutionBuilderAgent.widgetTypes');\r\n\t\tvm.types = [];\r\n\t\tvm.$onInit = function () {\r\n\t\t\t_.forIn(mx.SolutionBuilderAgent.ContentWidgetType, function (widgetType, widgetName) {\r\n\t\t\t\tvm.types.push({\r\n\t\t\t\t\tvalue: widgetType + 1,\r\n\t\t\t\t\tflag: widgetType > 0 ? Math.pow(2, widgetType) : 1,\r\n\t\t\t\t\tname: vm.i18n[widgetName] || widgetName,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tvm.supportedTypes = {};\r\n\t\t\tprocessTypes(vm.value);\r\n\t\t};\r\n\r\n\t\t$scope.$watch('vm.value', function (newValue) {\r\n\t\t\tif (localChanged) {\r\n\t\t\t\tlocalChanged = false;\r\n\t\t\t} else {\r\n\t\t\t\tprocessTypes(newValue);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$scope.$watch(\r\n\t\t\t'vm.supportedTypes',\r\n\t\t\tfunction (newValue) {\r\n\t\t\t\tlocalChanged = true;\r\n\t\t\t\tvar flTypes = 0;\r\n\r\n\t\t\t\t_.forIn(newValue, function (value, key) {\r\n\t\t\t\t\tif (value) {\r\n\t\t\t\t\t\tflTypes |= vm.types[Number(key) - 1].flag;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tvm.value = flTypes;\r\n\t\t\t},\r\n\t\t\ttrue\r\n\t\t);\r\n\r\n\t\tfunction processTypes(value) {\r\n\t\t\tvm.supportedTypes = {};\r\n\t\t\tvm.types.forEach(function (item) {\r\n\t\t\t\tif (value & item.flag) {\r\n\t\t\t\t\tvm.supportedTypes[item.value] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxTranslationEditor', {\r\n\t\tbindings: {\r\n\t\t\tlocalizedValue: '=',\r\n\t\t\tsupportedLanguages: '<',\r\n\t\t},\r\n\t\tcontroller: MxTranslationEditorCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-translation-editor/mx-translation-editor.html',\r\n\t});\r\n\r\n\tMxTranslationEditorCtrl.$inject = ['mx.shell.SidePanelService', 'mx.SolutionBuilderAgent.TranslationService', 'mx.internationalization', 'mx.shell.NotificationService'];\r\n\r\n\tfunction MxTranslationEditorCtrl(sidePanelService, translationService, internationalization, notificationService) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.hideClick = function () {\r\n\t\t\t\tsidePanelService.closeView(sidePanelService.currentView);\r\n\t\t\t};\r\n\r\n\t\t\tvm.saveClick = function () {\r\n\t\t\t\tif (!vm.localizedValue.id || !vm.prepareProperty) {\r\n\t\t\t\t\tthrow new Error('Inconsistent model state.');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar property = vm.prepareProperty(vm.localizedValue.id);\r\n\t\t\t\tif (\r\n\t\t\t\t\t!property.translations.some(function (t) {\r\n\t\t\t\t\t\treturn t.lcid === 9;\r\n\t\t\t\t\t})\r\n\t\t\t\t) {\r\n\t\t\t\t\tproperty.translations.push(new mx.SolutionBuilderAgent.LocalizationPropertyTranslation({ Value: property.value, Lcid: 9 }));\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttranslationService.updateTranslation(vm.localizedValue.id, property).then(function () {\r\n\t\t\t\t\tnotificationService.success(internationalization.get('solutionBuilderAgent.layouts.dialog.dialog-content.object-saved'));\r\n\t\t\t\t\tvm.hideClick();\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxExtraWizard', {\r\n\t\tbindings: {\r\n\t\t\tisActive: '=',\r\n\t\t\twizardContext: '',\r\n\t\tcontroller: MxExtraWizardCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t});\r\n\r\n\tMxExtraWizardCtrl.$inject = ['$scope', '$q', 'mx.SolutionBuilderAgent.WizardService', 'mx.shell.View'];\r\n\r\n\tfunction MxExtraWizardCtrl($scope, $q, mxWizardService, View) {\r\n\t\tvar vm = this;\r\n\t\tvar _thisExtraWizard;\r\n\t\tvar freeDataSourceDefer = $q.defer();\r\n\r\n\t\t$scope.$watchGroup(['vm.isActive', 'vm.mainWizard', 'vm.wizardContext'], handleExtraWizardActivation);\r\n\r\n\t\tvm.$onDestroy = function () {\r\n\t\t\tfreeDataSourceDefer.resolve(true);\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\r\n\t\tfunction handleExtraWizardActivation() {\r\n\t\t\tif (!vm.mainWizard) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (vm.isActive) {\r\n\t\t\t\t// Init extra wizard\r\n\t\t\t\tmxWizardService\r\n\t\t\t\t\t.getWizardAndDataModel(\r\n\t\t\t\t\t\tvm.typeName, // TypeName\r\n\t\t\t\t\t\tmx.SolutionBuilderAgent.WizardMode.Default,\r\n\t\t\t\t\t\tvm.wizardWidgetId, // WidgetId\r\n\t\t\t\t\t\tundefined, // WizardView\r\n\t\t\t\t\t\tundefined, // ActionId\r\n\t\t\t\t\t\tundefined, // ActionName\r\n\t\t\t\t\t\tundefined, // FinishTitle\r\n\t\t\t\t\t\tundefined, // CustomHeader\r\n\t\t\t\t\t\tvm.selectedObjects, // SelectedObjects\r\n\t\t\t\t\t\tvm.wizardContext, // OuterContext\r\n\t\t\t\t\t\tvm.mainWizard, // MainWizardRef,\r\n\t\t\t\t\t\tfreeDataSourceDefer.promise // FreeDataSourcePromise\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.then(function (res) {\r\n\t\t\t\t\t\tif (vm.isActive) {\r\n\t\t\t\t\t\t\t_thisExtraWizard = res.wizard;\r\n\t\t\t\t\t\t\t_thisExtraWizard.positionInBaseWizard = parseInt(vm.positionInMainWizard) || 0;\r\n\r\n\t\t\t\t\t\t\t// Remove inner extra wizards\r\n\t\t\t\t\t\t\tvar template = res.nonVisualTemplate;\r\n\t\t\t\t\t\t\ttemplate = vm.mainWizard ? template.replace(//gi, '') : template;\r\n\r\n\t\t\t\t\t\t\tvm.nonVisuals = new View({\r\n\t\t\t\t\t\t\t\ttemplate: template,\r\n\t\t\t\t\t\t\t\tid: 'nvc_' + _thisExtraWizard.id,\r\n\t\t\t\t\t\t\t\tcontroller: angular.noop,\r\n\t\t\t\t\t\t\t\tlocals: res,\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tvm.mainWizard.addExtraWizard(_thisExtraWizard, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tvm.mainWizard.removeExtraWizard(_thisExtraWizard);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxPostactionWizard', {\r\n\t\tbindings: {\r\n\t\t\tisActive: '=',\r\n\t\t\taction: '@',\r\n\t\t},\r\n\t\tcontroller: MxPostActionWizardCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t});\r\n\r\n\tMxPostActionWizardCtrl.$inject = ['mx.shell.EventService', 'mx.shell.ActionManagerService', 'mx.shell.ActionExecutorService', '$scope'];\r\n\r\n\tfunction MxPostActionWizardCtrl(eventService, actionManagerService, actionExecutorService, $scope) {\r\n\t\tvar vm = this;\r\n\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.shell.EventCodes.WizardPostAction,\r\n\t\t\tfunction (event, context) {\r\n\t\t\t\tif (vm.isActive && Boolean(vm.action) && Boolean(context) && Boolean(context.ObjectReferences) && context.ObjectReferences.length > 0) {\r\n\t\t\t\t\tactionManagerService.getAllActions().then(function (actions) {\r\n\t\t\t\t\t\tfor (var action in actions) {\r\n\t\t\t\t\t\t\tif (actions.hasOwnProperty(action)) {\r\n\t\t\t\t\t\t\t\tif (actions[action].name === vm.action) {\r\n\t\t\t\t\t\t\t\t\tactionExecutorService.execute(actions[action], context.ObjectReferences).catch(mx.logCatch);\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxValidateWizard', {\r\n\t\tbindings: {\r\n\t\t\tsourceState: '@',\r\n\t\t\tisValid: '=valid',\r\n\t\t\tmessage: '@',\r\n\t\t\twizard: '=?',\r\n\t\t},\r\n\t\tcontroller: MxValidateWizardCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t});\r\n\r\n\tMxValidateWizardCtrl.$inject = ['mx.shell.EventService', '$scope'];\r\n\r\n\tfunction MxValidateWizardCtrl(eventService, $scope) {\r\n\t\tvar vm = this;\r\n\t\tvar off = null;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tif (vm.sourceState !== undefined && vm.sourceState !== mx.SolutionBuilderAgent.SourceLoadingStatus.NOT_SET.toString()) {\r\n\t\t\t\toff = $scope.$watch('vm.sourceState', function () {\r\n\t\t\t\t\tif (vm.sourceState === mx.SolutionBuilderAgent.SourceLoadingStatus.LOADED.toString()) {\r\n\t\t\t\t\t\tvalidate();\r\n\t\t\t\t\t} else if (vm.sourceState === mx.SolutionBuilderAgent.SourceLoadingStatus.REJECTED.toString()) {\r\n\t\t\t\t\t\tvm.isValid = false;\r\n\t\t\t\t\t\tvm.message = '';\r\n\t\t\t\t\t\tvalidate();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tvalidate();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\r\n\t\tfunction validate() {\r\n\t\t\teventService.dispatchEvent(\r\n\t\t\t\tmx.shell.EventCodes.ToggleWizardEnabled,\r\n\t\t\t\t{\r\n\t\t\t\t\tenabled: vm.isValid,\r\n\t\t\t\t\tmessage: vm.message,\r\n\t\t\t\t\twizard: vm.wizard,\r\n\t\t\t\t},\r\n\t\t\t\t$scope\r\n\t\t\t);\r\n\t\t\tif (typeof off === 'function') {\r\n\t\t\t\toff();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxWizardManager', {\r\n\t\tbindings: {\r\n\t\t\tfinishButtonText: '@?',\r\n\t\t\tsuccessSubmitMessage: '@?',\r\n\t\t\treloadOnFinish: '@?',\r\n\t\t\tresetActionsCache: '@?',\r\n\t\t\tresetNavigationCache: '@?',\r\n\t\t\tresetEnumCache: '@?',\r\n\t\t\tresetWidgetCache: '@?',\r\n\t\t\tresetCacheForWidgets: '=?',\r\n\t\t\tresetSchemaLocalCache: '@?',\r\n\t\t\thideFinishButton: '=?',\r\n\t\t\thideDetails: '=?',\r\n\t\t\tpagesToSkip: '=?',\r\n\t\t\tcurrentPage: '=?',\r\n\t\t\tdisableNextButton: '=?',\r\n\t\t\tdisableSuccessMessage: '@?',\r\n\t\t\twizard: '=',\r\n\t\t\topenFullScreen: '@?',\r\n\t\t\t// Post action contracts\r\n\t\t\tpaType: '@type',\r\n\t\t\tpaActive: '@active',\r\n\r\n\t\t\tpaAction: '@?action',\r\n\t\t\tpaActionContext: '=?actionContext',\r\n\r\n\t\t\tpaEntityType: '@?entityType',\r\n\t\t\tpaObjectId: '@?objectId',\r\n\t\t\tpaFullScreen: '@?fullScreen',\r\n\r\n\t\t\t// End of post action contracts\r\n\t\t},\r\n\t\tcontroller: MxWizardManager,\r\n\t\tcontrollerAs: 'vm',\r\n\t});\r\n\r\n\tMxWizardManager.$inject = ['$scope', '$timeout', 'mx.SolutionBuilderAgent.WizardService', 'mx.SolutionBuilderAgent.MixedActionHelper', 'mx.shell.SideLayout'];\r\n\r\n\tfunction MxWizardManager($scope, $timeout, wizardService, mixedActionHelper, sideLayoutService) {\r\n\t\tvar vm = this;\r\n\t\tvar paActive = false;\r\n\t\tvar paObjectId = '';\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.managerId = vm.wizard.registerWizardManager(vm);\r\n\r\n\t\t\tvm.postAction = {\r\n\t\t\t\trun: function () {},\r\n\t\t\t};\r\n\t\t\tvar finishButton = vm.wizard.allWizardPages[vm.wizard.allWizardPages.length - 1].buttons.finish;\r\n\t\t\tvar oldCallback = finishButton.callback;\r\n\r\n\t\t\tfinishButton.callback = function (_result) {\r\n\t\t\t\tfinishButton.successSubmitMessage = vm.disableSuccessMessage === 'true' ? false : vm.successSubmitMessage;\r\n\r\n\t\t\t\treturn oldCallback(_result).then(function (result) {\r\n\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\twizardService.processFinishEvents(\r\n\t\t\t\t\t\t\tvm.resetActionsCache === 'true',\r\n\t\t\t\t\t\t\tvm.resetNavigationCache === 'true',\r\n\t\t\t\t\t\t\tvm.resetEnumCache === 'true',\r\n\t\t\t\t\t\t\tvm.resetWidgetCache === 'true',\r\n\t\t\t\t\t\t\ttypeof vm.resetCacheForWidgets === 'string' ? vm.resetCacheForWidgets.split(',') : vm.resetCacheForWidgets,\r\n\t\t\t\t\t\t\tvm.resetSchemaLocalCache,\r\n\t\t\t\t\t\t\tvm.reloadOnFinish === 'true',\r\n\t\t\t\t\t\t\tvm.postAction\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t\tpaActive = vm.paActive === 'true';\r\n\t\t\tObject.defineProperty(vm, 'paActive', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn paActive;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (value) {\r\n\t\t\t\t\tpaActive = value === 'true';\r\n\r\n\t\t\t\t\tvm.postAction.isActive = paActive;\r\n\t\t\t\t\tvm.postAction.run = mixedActionHelper.init(getPostActionSettings());\r\n\t\t\t\t\tvm.wizard.allWizardPages.forEach(function (page) {\r\n\t\t\t\t\t\tpage.buttons.cancel.isVisible = vm.paActive !== undefined;\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t\tpaObjectId = vm.paObjectId;\r\n\t\t\tObject.defineProperty(vm, 'paObjectId', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn paObjectId;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (value) {\r\n\t\t\t\t\tpaObjectId = value;\r\n\t\t\t\t\tvm.postAction.run = mixedActionHelper.init(getPostActionSettings());\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tvar openFullScreen = (vm.openFullScreen || '').toLowerCase() === 'true';\r\n\t\t\tif (openFullScreen) {\r\n\t\t\t\tsideLayoutService.switchFullScreenMode(openFullScreen);\r\n\t\t\t}\r\n\r\n\t\t\t$scope.$watch('vm.finishButtonText', function () {\r\n\t\t\t\tif (vm.finishButtonText) {\r\n\t\t\t\t\tupdateFinishButtonTitles(vm.wizard.pages, vm.finishButtonText);\r\n\t\t\t\t\tupdateFinishButtonTitles(vm.wizard.allWizardPages, vm.finishButtonText);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t$scope.$watch('vm.hideFinishButton', function (newValue) {\r\n\t\t\t\tvm.wizard.hideFinishButton = newValue;\r\n\t\t\t});\r\n\r\n\t\t\t$scope.$watch('vm.hideDetails', function () {\r\n\t\t\t\tvar page = vm.wizard.pages[0];\r\n\r\n\t\t\t\tif (page && page.dataModel) {\r\n\t\t\t\t\tpage.dataModel.Context.__hideDetails = vm.hideDetails;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t$scope.$watch('vm.pagesToSkip', onChangeSkippedPages);\r\n\r\n\t\t\t$scope.$watch('vm.paEntityType', function () {\r\n\t\t\t\tvm.postAction.run = mixedActionHelper.init(getPostActionSettings());\r\n\t\t\t});\r\n\r\n\t\t\t$scope.$watch(\r\n\t\t\t\tfunction (scope) {\r\n\t\t\t\t\treturn scope.vm.wizard.allWizardPages;\r\n\t\t\t\t},\r\n\t\t\t\tfunction () {\r\n\t\t\t\t\tonChangeSkippedPages(vm.pagesToSkip);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\t\t$scope.$watch(\r\n\t\t\t\tfunction (scope) {\r\n\t\t\t\t\treturn scope.vm.wizard.currentPage.id;\r\n\t\t\t\t},\r\n\t\t\t\tfunction () {\r\n\t\t\t\t\tvm.currentPage = vm.wizard.currentPage.key;\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\t\t$scope.$watch('vm.disableNextButton', function () {\r\n\t\t\t\tif (vm.wizard && vm.wizard.currentPage && vm.wizard.currentPage.buttons.next) {\r\n\t\t\t\t\tvm.wizard.currentPage.buttons.next.isDisabled = Boolean(vm.disableNextButton);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\r\n\t\tfunction getPostActionSettings() {\r\n\t\t\treturn {\r\n\t\t\t\ttype: vm.paType,\r\n\t\t\t\taction: vm.paAction,\r\n\t\t\t\tactionContext: vm.paActionContext,\r\n\t\t\t\tentityType: vm.paEntityType,\r\n\t\t\t\tobjectId: vm.paObjectId,\r\n\t\t\t\tfullScreen: vm.paFullScreen === 'true',\r\n\t\t\t\t// TODO: extend with navigation, landing, external link, etc\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tfunction updateFinishButtonTitles(pages, finishButtonTitle) {\r\n\t\t\tpages.forEach(function (page) {\r\n\t\t\t\tpage.buttons.finish.title = finishButtonTitle;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction onChangeSkippedPages(pagesToSkip) {\r\n\t\t\tvm.wizard.skipPagesByManager(vm.managerId, pagesToSkip);\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxWizardPageValidate', {\r\n\t\tbindings: {\r\n\t\t\tpageKey: '@',\r\n\t\t\tsourcePath: '@',\r\n\t\t\tisValid: '=?',\r\n\t\t\tmessage: '=?',\r\n\t\t\twizard: '=?',\r\n\t\t},\r\n\t\tcontroller: MxWizardPageValidateCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t});\r\n\r\n\tMxWizardPageValidateCtrl.$inject = ['$q', '$scope', 'mx.SolutionBuilderAgent.DataModelService'];\r\n\r\n\tfunction MxWizardPageValidateCtrl($q, $scope, dataModelService) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvar widgetId = vm.wizard && vm.wizard.__widgetHtmlData && vm.wizard.__widgetHtmlData.Id;\r\n\r\n\t\t\tif (widgetId && vm.pageKey && vm.sourcePath) {\r\n\t\t\t\tvar pages = vm.pageKey.split(',');\r\n\r\n\t\t\t\tpages.forEach(function (page) {\r\n\t\t\t\t\tvar wizardPage = getWizardPageByKey(vm.wizard, page);\r\n\r\n\t\t\t\t\tif (wizardPage) {\r\n\t\t\t\t\t\tvar button = null;\r\n\t\t\t\t\t\tif (wizardPage.buttons.next.isVisible) {\r\n\t\t\t\t\t\t\tbutton = wizardPage.buttons.next;\r\n\t\t\t\t\t\t} else if (wizardPage.buttons.finish.isVisible) {\r\n\t\t\t\t\t\t\tbutton = wizardPage.buttons.finish;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!button) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvar newError = null;\r\n\t\t\t\t\t\tvar oldError = null;\r\n\r\n\t\t\t\t\t\tbutton.validate = function () {\r\n\t\t\t\t\t\t\treturn dataModelService.reloadSourceByPath(vm.sourcePath, wizardPage.dataModel, widgetId).then(function () {\r\n\t\t\t\t\t\t\t\tvar deferred = $q.defer();\r\n\r\n\t\t\t\t\t\t\t\t$scope.$applyAsync(function () {\r\n\t\t\t\t\t\t\t\t\tvar errors = vm.wizard.errors ? vm.wizard.errors.slice(0) : [];\r\n\r\n\t\t\t\t\t\t\t\t\tif (!vm.isValid) {\r\n\t\t\t\t\t\t\t\t\t\tvar oldErrorIndex = errors.indexOf(oldError);\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (oldErrorIndex !== -1) {\r\n\t\t\t\t\t\t\t\t\t\t\terrors.splice(oldErrorIndex, 1);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tnewError = {\r\n\t\t\t\t\t\t\t\t\t\t\tmessage: vm.message,\r\n\t\t\t\t\t\t\t\t\t\t\ttype: 'error',\r\n\t\t\t\t\t\t\t\t\t\t\tactive: true,\r\n\t\t\t\t\t\t\t\t\t\t\ttransient: true,\r\n\t\t\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\t\t\terrors.unshift(newError);\r\n\t\t\t\t\t\t\t\t\t\toldError = newError;\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tvar oldErrorIndexNew = errors.indexOf(oldError);\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (oldErrorIndexNew !== -1) {\r\n\t\t\t\t\t\t\t\t\t\t\terrors.splice(oldErrorIndexNew, 1);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tvm.wizard.errors = errors;\r\n\t\t\t\t\t\t\t\t\tdeferred.resolve(vm.isValid);\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\treturn deferred.promise;\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction getWizardPageByKey(wizard, key) {\r\n\t\t\tif (!wizard || !key) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\tvar allPages = wizard.allWizardPages || [];\r\n\r\n\t\t\tfor (var i = 0; i < allPages.length; i++) {\r\n\t\t\t\tif (allPages[i].key === key) {\r\n\t\t\t\t\treturn allPages[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxWizardView', {\r\n\t\tbindings: {\r\n\t\t\twizard: '=',\r\n\t\t\tnonVisualTemplate: '=',\r\n\t\t\tdataModel: '=model',\r\n\t\t\twizardHeaderText: '=',\r\n\t\t\tisLazy: ' 0;\r\n\t}\r\n\r\n\tfunction resetSelectionActionCtrl() {\r\n\t\treturn {\r\n\t\t\texecute: function () {\r\n\t\t\t\tsearchService.currentSearch().dataQueryList.clearSelection();\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.SidePanelService#enableReactionOnContextSelection\r\n\t *\r\n\t * @description\r\n\t * Set an 'reactOnContextSelection' flag to 'true',\r\n\t * so SidePanel should be activated automatically\r\n\t * when {@ref mx.shell.ContextService mx.shell.ContextService} get some data.\r\n\t *\r\n\t * @param {boolean} `flag` - if true then SidePanel should be activated automatically\r\n\t * when {@ref mx.shell.ContextService mx.shell.ContextService} get some data.\r\n\t * @param {$scope} `scope` - corresponding controller's `$scope`.\r\n\t * If controller's scope was passed then ones this scope is destroyed\r\n\t * the flag will be set to false and all views will be closed automatically.\r\n\t * Otherwise - it's need to manage it manually.\r\n\t */\r\n\tfunction enableReactionOnContextSelection(flag, scope) {\r\n\t\treactOnContextSelection = flag;\r\n\t\tif (scope) {\r\n\t\t\tscope.$on('$destroy', function () {\r\n\t\t\t\tenableReactionOnContextSelection(false);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nangular.module('mx.SolutionBuilderAgent').controller('mx.SolutionBuilderAgent.HelpArticlePageController', MxViewHelpController);\r\n\r\nMxViewHelpController.$inject = [\r\n\t'$stateParams',\r\n\t'mx.internationalization',\r\n\t'mx.SolutionBuilderAgent.ViewHelpService',\r\n\t'mx.shell.Config',\r\n\t'mx.shell.ToolbarManager',\r\n\t'mx.shell.LeftSidebarService',\r\n];\r\n\r\nfunction MxViewHelpController($stateParams, i18n, viewHelpService, mxConfig, mxToolbarManager, leftSidebarService) {\r\n\tconst vm = this;\r\n\tvm.i18n = i18n.get('shell.common');\r\n\tvm.error = i18n.get('solutionBuilderAgent.layouts.help-article-page.page-cant-be-loaded');\r\n\tvm.isWorkspaceManagement = mxConfig.settings.productName === 'Workspace Management';\r\n\tvm.loaded = false;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tif (!vm.popup) {\r\n\t\t\t//standalone mode\r\n\t\t\tmxToolbarManager.setToolbarVisibility(false);\r\n\t\t\tleftSidebarService.isVisible = false;\r\n\t\t\tvm.helpSourceType = 2;\r\n\t\t\tvm.helpValue = '{\"ObjID\":\"' + $stateParams.objectId + '\"}';\r\n\t\t}\r\n\r\n\t\tif (vm.helpData) {\r\n\t\t\tvm.loaded = true;\r\n\t\t} else {\r\n\t\t\tviewHelpService.getHelpData(vm.helpSourceType, vm.helpValue).then(\r\n\t\t\t\tfunction (helpData) {\r\n\t\t\t\t\tif (helpData && helpData.data) {\r\n\t\t\t\t\t\tvm.helpData = helpData.data;\r\n\t\t\t\t\t\tvm.articleId = helpData.articleId;\r\n\r\n\t\t\t\t\t\tif (helpData.hash) {\r\n\t\t\t\t\t\t\twindow.setTimeout(function () {\r\n\t\t\t\t\t\t\t\twindow.location.hash = helpData.hash;\r\n\t\t\t\t\t\t\t}, 500);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvm.loaded = true;\r\n\t\t\t\t},\r\n\t\t\t\tfunction () {\r\n\t\t\t\t\tvm.loaded = true;\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\t};\r\n\r\n\tvm.cancelViewHelp = function (calledFromSidePanel) {\r\n\t\tviewHelpService.cancelViewHelp(calledFromSidePanel);\r\n\t};\r\n\r\n\tvm.showMore = function () {\r\n\t\tviewHelpService.showMore(vm.helpSourceType, vm.helpValue);\r\n\t};\r\n}\r\n","angular.module('mx.SolutionBuilderAgent').controller('mx.SolutionBuilderAgent.ObjectPickerHierarchyViewController', [\r\n\t'mx.SolutionBuilderAgent.Http',\r\n\t'$scope',\r\n\t'$q',\r\n\t'$timeout',\r\n\tfunction mxObjectPickerHierarchyViewController(http, $scope, $q, $timeout) {\r\n\t\tconst vm = this;\r\n\r\n\t\tvm.tree = [];\r\n\r\n\t\tvm.loaded = false;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tloadHierarchy();\r\n\t\t};\r\n\r\n\t\tvm.selectedNodeId = null;\r\n\t\tvm.selectedNode = null;\r\n\r\n\t\tvm.findNodeById = findNodeById;\r\n\r\n\t\t$scope.$watch('vm.selectedNodeId', function (newN, oldN) {\r\n\t\t\tif (newN) {\r\n\t\t\t\tif (newN !== oldN) {\r\n\t\t\t\t\tvm.selectedNode = findNodeById(vm.tree, newN);\r\n\t\t\t\t\tcloseAllTree(vm.tree);\r\n\t\t\t\t\thighlightNodeInTree(vm.tree, vm.selectedNode);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcloseAllTree(vm.tree);\r\n\t\t\t\t// eslint-disable-next-line angular/controller-as\r\n\t\t\t\t$scope.__treeLevel = vm.tree;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvm.expandNode = function (node) {\r\n\t\t\tnode._expanded = !node._expanded;\r\n\t\t};\r\n\r\n\t\tvm.select = function (node) {\r\n\t\t\tvm.finishDefer.resolve(node);\r\n\t\t};\r\n\r\n\t\tvm.cancel = function () {\r\n\t\t\tvm.finishDefer.reject(mx.noLogCatchMessage('hierarchy view was canceled'));\r\n\t\t};\r\n\r\n\t\tvm.onSearchReset = function () {\r\n\t\t\tvm.searchText = '';\r\n\t\t};\r\n\r\n\t\tvm.loadTreeBySearchText = function (searchText, id, parentId) {\r\n\t\t\tsearchText = searchText && searchText.split('%').join(' ');\r\n\t\t\tlet resTree = parentId ? [findNodeById(vm.tree, parentId)] : vm.tree;\r\n\t\t\tconst parents = resTree[0].__parents;\r\n\t\t\tlet i, closestParentClone;\r\n\t\t\tif (parents && parents.length) {\r\n\t\t\t\tfor (i = parents.length - 1; i >= 0; i--) {\r\n\t\t\t\t\tclosestParentClone = $.extend({}, parents[i]);\r\n\t\t\t\t\tclosestParentClone.children = resTree;\r\n\t\t\t\t\tresTree = [closestParentClone];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn $q.when(resTree);\r\n\t\t};\r\n\r\n\t\tfunction getParameter(parameter) {\r\n\t\t\treturn vm[parameter] || vm.__view.locals[parameter];\r\n\t\t}\r\n\r\n\t\tfunction loadHierarchy() {\r\n\t\t\tconst options = {\r\n\t\t\t\tentityClass: vm.entityClassName,\r\n\t\t\t\tparentExpression: getParameter('parentExpression'),\r\n\t\t\t\tdisplayExpression: getParameter('displayExpression'),\r\n\t\t\t\trootElement: getParameter('rootElement'),\r\n\t\t\t\tincludeRoot: getParameter('includeRoot'),\r\n\t\t\t\tdataQueryName: getParameter('dataQueryName'),\r\n\t\t\t};\r\n\r\n\t\t\tconst requestFilter = getParameter('filter')?.toRequest() || {};\r\n\r\n\t\t\tif ('WhereExpression' in requestFilter) {\r\n\t\t\t\trequestFilter.filter = requestFilter.WhereExpression;\r\n\t\t\t\tdelete requestFilter.WhereExpression;\r\n\t\t\t}\r\n\r\n\t\t\thttp.post('api/entity/tree', { ...options, ...requestFilter }).then((res) => prepareTree(res));\r\n\t\t}\r\n\r\n\t\tfunction prepareTree(res) {\r\n\t\t\tvm.tree = prepareData(res);\r\n\t\t\tvm.loaded = true;\r\n\t\t\tif (vm.selectedId) {\r\n\t\t\t\tvm.selectedNodeId = vm.selectedId;\r\n\t\t\t\t$timeout(function () {\r\n\t\t\t\t\thighlightNodeInTree(vm.tree, findNodeById(vm.tree, vm.selectedId));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t// eslint-disable-next-line angular/controller-as\r\n\t\t\t$scope.__treeLevel = vm.tree;\r\n\t\t\treturn vm.tree;\r\n\t\t}\r\n\t},\r\n]);\r\n\r\nfunction prepareData(dirtyTree) {\r\n\treturn dirtyTree.map(function (n) {\r\n\t\tn.id = n.Id;\r\n\t\tn.title = n.DisplayString;\r\n\t\tif (n.Chidren) {\r\n\t\t\tn.children = prepareData(n.Chidren);\r\n\t\t\tdelete n.Chidren;\r\n\t\t}\r\n\t\treturn n;\r\n\t});\r\n}\r\n\r\nfunction findNodeById(tree, id) {\r\n\tlet res = null;\r\n\ttree.forEach(function (node) {\r\n\t\tif (!res) {\r\n\t\t\tif (node.id === id) {\r\n\t\t\t\tres = node;\r\n\t\t\t} else if (node.children && node.children.length) {\r\n\t\t\t\tres = findNodeById(node.children, id);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\treturn res;\r\n}\r\n\r\nfunction highlightNodeInTree(tree, selectedNode) {\r\n\tconst parents = selectedNode.__parents;\r\n\tlet nodesChain = [];\r\n\tif (parents && parents.length) {\r\n\t\tnodesChain = nodesChain.concat(parents);\r\n\t}\r\n\tnodesChain.push(selectedNode);\r\n\tlet level = tree;\r\n\tlet subLevel;\r\n\tnodesChain.forEach(function (n) {\r\n\t\tif (level) {\r\n\t\t\tlevel.forEach(function (li) {\r\n\t\t\t\tif (li.id === n.id) {\r\n\t\t\t\t\tli._highlighted = true;\r\n\t\t\t\t\tif (li.children) {\r\n\t\t\t\t\t\tli._expanded = true;\r\n\t\t\t\t\t\tsubLevel = li.children;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tlevel = subLevel;\r\n\t\tsubLevel = undefined;\r\n\t});\r\n}\r\n\r\nfunction closeAllTree(tree) {\r\n\ttree.forEach(function (n) {\r\n\t\tn._highlighted = false;\r\n\t\tif (n.children) {\r\n\t\t\tn._expanded = false;\r\n\t\t\tcloseAllTree(n.children);\r\n\t\t}\r\n\t});\r\n}\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').controller('mx.SolutionBuilderAgent.WizardPageController', [function wizardPageController() {}]);\r\n})();\r\n","'use strict';\r\n\r\nvar baseListenerDataExtention = function () {\r\n\treturn {\r\n\t\t__listeners: {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: false,\r\n\t\t\tvalue: [],\r\n\t\t},\r\n\t};\r\n};\r\nvar baseListenerExtention = {\r\n\t__notifyListeners: {\r\n\t\tvalue: function (fnName, args) {\r\n\t\t\tthis.__listeners.forEach(function (handler) {\r\n\t\t\t\thandler(this, fnName, args);\r\n\t\t\t}, this);\r\n\t\t},\r\n\t},\r\n\tonChange: {\r\n\t\tvalue: function (handler) {\r\n\t\t\tif (this.__listeners.indexOf(handler) === -1) {\r\n\t\t\t\tthis.__listeners.push(handler);\r\n\t\t\t}\r\n\t\t\treturn function () {\r\n\t\t\t\tvar index = this.__listeners.indexOf(handler);\r\n\t\t\t\tif (index !== -1) {\r\n\t\t\t\t\tthis.__listeners.splice(index, 1);\r\n\t\t\t\t}\r\n\t\t\t}.bind(this);\r\n\t\t},\r\n\t},\r\n\tchanged: {\r\n\t\tvalue: function () {\r\n\t\t\tthis.__notifyListeners(this, 'changed');\r\n\t\t},\r\n\t},\r\n};\r\n\r\nvar solutionBulderDataObjectExtention = function () {\r\n\tvar entityClassName, entityType, objectId;\r\n\r\n\treturn {\r\n\t\tobjectId: {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: false,\r\n\t\t\tget: function () {\r\n\t\t\t\treturn objectId;\r\n\t\t\t},\r\n\t\t\tset: function (value) {\r\n\t\t\t\tobjectId = value || '';\r\n\t\t\t},\r\n\t\t},\r\n\t\tentityClassName: {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: false,\r\n\t\t\tget: function () {\r\n\t\t\t\treturn entityClassName;\r\n\t\t\t},\r\n\t\t\tset: function (value) {\r\n\t\t\t\tentityClassName = value || '';\r\n\t\t\t},\r\n\t\t},\r\n\t\tentityType: {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: false,\r\n\t\t\tget: function () {\r\n\t\t\t\treturn entityType;\r\n\t\t\t},\r\n\t\t\tset: function (value) {\r\n\t\t\t\tentityType = value || '';\r\n\t\t\t},\r\n\t\t},\r\n\t};\r\n};\r\n\r\nfunction DataModelObject() {\r\n\tObject.defineProperties(this, baseListenerDataExtention());\r\n}\r\n\r\nDataModelObject.prototype = Object.create({}, baseListenerExtention);\r\n\r\nfunction DataModelArray(data) {\r\n\tObject.defineProperties(this, baseListenerDataExtention());\r\n\tthis.set(data);\r\n}\r\n\r\nDataModelArray.prototype = Object.create(Array.prototype, baseListenerExtention);\r\n\r\n['push', 'pop', 'shift', 'splice', 'unshift', 'reverse', 'sort'].forEach(function (fnName) {\r\n\tDataModelArray.prototype[fnName] = function () {\r\n\t\treturn function (fnName) {\r\n\t\t\tvar res,\r\n\t\t\t\targs = Array.prototype.slice.call(arguments, 1),\r\n\t\t\t\tarrayFn = Array.prototype[fnName];\r\n\r\n\t\t\tif (arrayFn) {\r\n\t\t\t\tres = arrayFn.apply(this, args);\r\n\t\t\t\tthis.__notifyListeners(fnName, args);\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t}\r\n\t\t\t.bind(this, fnName)\r\n\t\t\t.apply(this, Array.prototype.slice.call(arguments, 0));\r\n\t};\r\n});\r\n\r\nDataModelArray.prototype.set = function (data) {\r\n\tif (data instanceof DataModelArray) {\r\n\t\tthis.splice.apply(this, [0, this.length].concat(Array.prototype.slice.call(data, 0)));\r\n\t} else if (Array.isArray(data)) {\r\n\t\tthis.splice.apply(this, [0, this.length].concat(data));\r\n\t}\r\n};\r\n\r\nDataModelArray.prototype.slice = function () {\r\n\tvar args = Array.prototype.slice.call(arguments, 0);\r\n\tvar newArr = new DataModelArray(Array.prototype.slice.apply(this, args));\r\n\treturn newArr;\r\n};\r\n\r\nDataModelArray.prototype.concat = function () {\r\n\tvar args = Array.prototype.slice.call(arguments, 0);\r\n\tvar pureArray = Array.prototype.slice.call(this, 0);\r\n\tvar newArr = new DataModelArray(pureArray.concat.apply(pureArray, args));\r\n\treturn newArr;\r\n};\r\n\r\nDataModelArray.prototype.toJSON = function () {\r\n\treturn Array.prototype.slice.call(this, 0);\r\n};\r\n\r\nfunction DataModelMultiFragmentArray(data, options) {\r\n\tDataModelArray.call(this, data);\r\n\tObject.defineProperties(this, solutionBulderDataObjectExtention());\r\n\r\n\tif (typeof options === 'object' && options) {\r\n\t\tthis.entityType = options.entityType || '';\r\n\t\tthis.entityClassName = options.entityClassName || '';\r\n\t\tthis.objectId = options.objectId || '';\r\n\t}\r\n}\r\n\r\nDataModelMultiFragmentArray.prototype = Object.create(DataModelArray.prototype);\r\n\r\nDataModelMultiFragmentArray.prototype.set = function (data, options) {\r\n\tDataModelArray.prototype.set.call(this, data);\r\n\tif (options && options.objectId) {\r\n\t\tthis.objectId = options.objectId;\r\n\t}\r\n};\r\n\r\nDataModelMultiFragmentArray.prototype.slice = function () {\r\n\tvar args = Array.prototype.slice.call(arguments, 0);\r\n\tvar newArr = new DataModelMultiFragmentArray(Array.prototype.slice.apply(this, args));\r\n\tnewArr.entityType = this.entityType;\r\n\tnewArr.entityClassName = this.entityClassName;\r\n\tnewArr.objectId = this.objectId;\r\n\treturn newArr;\r\n};\r\nDataModelMultiFragmentArray.prototype.concat = function () {\r\n\tvar args = Array.prototype.slice.call(arguments, 0);\r\n\tvar pureArray = Array.prototype.slice.call(this, 0);\r\n\tvar newArr = new DataModelMultiFragmentArray(pureArray.concat.apply(pureArray, args));\r\n\tnewArr.entityType = this.entityType;\r\n\tnewArr.entityClassName = this.entityClassName;\r\n\tnewArr.objectId = this.objectId;\r\n\treturn newArr;\r\n};\r\n\r\nvar RelationCardinality = {\r\n\tManyToZeroOne: 61443,\r\n\tManyToOne: 61440,\r\n\tManyToMany: 1,\r\n\tOneToOneZero: 61442,\r\n\tOneToMany: 0,\r\n\tOneZeroToOne: 2,\r\n\tOneZeroToMany: 3,\r\n\tOneToOne: 4,\r\n\tNoRelation: 5,\r\n};\r\n\r\nfunction RelationsConfig(options) {\r\n\toptions = typeof options === 'object' && options !== null ? options : {};\r\n\tObject.defineProperties(this, {\r\n\t\tcardinality: {\r\n\t\t\tvalue: options.RelationCardinality || RelationCardinality.OneToMany,\r\n\t\t},\r\n\t\treferenceFrom: {\r\n\t\t\tvalue: typeof options.ReferenceFrom === 'string' ? options.ReferenceFrom : '',\r\n\t\t},\r\n\t\tattributeFrom: {\r\n\t\t\tvalue: typeof options.AttributeFrom === 'string' ? options.AttributeFrom : '',\r\n\t\t},\r\n\t\treferenceTo: {\r\n\t\t\tvalue: typeof options.ReferenceTo === 'string' ? options.ReferenceTo : '',\r\n\t\t},\r\n\t\tattributeTo: {\r\n\t\t\tvalue: typeof options.AttributeTo === 'string' ? options.AttributeTo : '',\r\n\t\t},\r\n\t});\r\n\tObject.freeze(this);\r\n}\r\nRelationsConfig.prototype = {\r\n\tcreateRelation: function () {\r\n\t\treturn new Relation(this);\r\n\t},\r\n\totherSideIsMany: function () {\r\n\t\treturn this.cardinality === RelationCardinality.ManyToMany || this.cardinality === RelationCardinality.OneZeroToMany || this.cardinality === RelationCardinality.OneToMany;\r\n\t},\r\n\tthisSideIsMany: function () {\r\n\t\treturn this.cardinality === RelationCardinality.ManyToMany || this.cardinality === RelationCardinality.ManyToZeroOne || this.cardinality === RelationCardinality.ManyToOne;\r\n\t},\r\n\totherSideIsSingle: function () {\r\n\t\treturn (\r\n\t\t\tthis.cardinality === RelationCardinality.ManyToZeroOne ||\r\n\t\t\tthis.cardinality === RelationCardinality.ManyToOne ||\r\n\t\t\tthis.cardinality === RelationCardinality.OneZeroToOne ||\r\n\t\t\tthis.cardinality === RelationCardinality.OneToOneZero\r\n\t\t);\r\n\t},\r\n};\r\n\r\nfunction Relation(relationsConfig) {\r\n\tif (!(relationsConfig instanceof RelationsConfig)) {\r\n\t\tthrow Error('Relation cannot be created without correct RelationsConfig');\r\n\t}\r\n\tvar addedRelations = [],\r\n\t\tremovedRelations = [],\r\n\t\tfragmentId;\r\n\r\n\tObject.defineProperties(this, baseListenerDataExtention());\r\n\r\n\tObject.defineProperties(this, {\r\n\t\tfragmentId: {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn fragmentId;\r\n\t\t\t},\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tif (mx.components.Utils.isGuid(newValue)) {\r\n\t\t\t\t\tfragmentId = newValue;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t},\r\n\t\trelationsConfig: {\r\n\t\t\tvalue: relationsConfig,\r\n\t\t},\r\n\t\taddedRelations: {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn addedRelations;\r\n\t\t\t},\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tif (Array.isArray(newValue)) {\r\n\t\t\t\t\taddedRelations.splice.apply(addedRelations, [0, addedRelations.length].concat(newValue));\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t},\r\n\t\tremovedRelations: {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn removedRelations;\r\n\t\t\t},\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tif (Array.isArray(newValue)) {\r\n\t\t\t\t\tremovedRelations.splice.apply(removedRelations, [0, removedRelations.length].concat(newValue));\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t},\r\n\r\n\t\t//properties for request\r\n\t\tAddedRelations: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function () {\r\n\t\t\t\treturn addedRelations;\r\n\t\t\t},\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tif (Array.isArray(newValue)) {\r\n\t\t\t\t\taddedRelations = newValue;\r\n\t\t\t\t\tthis.__notifyListeners('AddedRelations', [newValue]);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t},\r\n\t\tRemovedRelations: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function () {\r\n\t\t\t\treturn removedRelations;\r\n\t\t\t},\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tif (Array.isArray(newValue)) {\r\n\t\t\t\t\tremovedRelations = newValue;\r\n\t\t\t\t\tthis.__notifyListeners('RemovedRelations', [newValue]);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t},\r\n\t});\r\n}\r\n\r\nRelation.prototype = {\r\n\tset: function (data, options) {\r\n\t\toptions = options || {};\r\n\t\tdata = data || {};\r\n\r\n\t\tvar previousId = this.fragmentId;\r\n\r\n\t\tthis.fragmentId = options.fragmentId;\r\n\r\n\t\tthis.addedRelations = data.AddedRelations;\r\n\t\tthis.removedRelations = data.RemovedRelations;\r\n\t\tthis.Count = data.Count;\r\n\r\n\t\tif (this.fragmentId && this.fragmentId !== previousId) {\r\n\t\t\tthis.__notifyListeners('fragmentId', [this.fragmentId]);\r\n\t\t}\r\n\t},\r\n\tinitNewChanges: function (changes) {\r\n\t\tvar changed = false;\r\n\t\tif (typeof changes === 'object') {\r\n\t\t\tif (Array.isArray(changes.AddedRelations)) {\r\n\t\t\t\tthis.AddedRelations = changes.AddedRelations.slice();\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t\tif (Array.isArray(changes.RemovedRelations)) {\r\n\t\t\t\tthis.RemovedRelations = changes.RemovedRelations.slice();\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn changed;\r\n\t},\r\n\tchangedInternal: function () {\r\n\t\tthis.__notifyListeners('changedInternal');\r\n\t},\r\n\t_itemsToString: function (items) {\r\n\t\treturn items\r\n\t\t\t.map(function (item) {\r\n\t\t\t\treturn \"'\" + item + \"'\";\r\n\t\t\t})\r\n\t\t\t.join(',');\r\n\t},\r\n};\r\nObject.defineProperties(Relation.prototype, baseListenerExtention);\r\n\r\nconst mxOriginalIsArray = Array.isArray;\r\nArray.isArray = function (arg) {\r\n\treturn mxOriginalIsArray.call(undefined, arg) || arg instanceof DataModelArray;\r\n};\r\n\r\nexport { DataModelArray, DataModelObject, DataModelMultiFragmentArray, RelationsConfig, Relation, RelationCardinality };\r\n","'use strict';\r\nimport DataModelHelper from './data-model-helper';\r\nimport { DataModelArray, Relation } from './data-model-base-objects';\r\nimport { DataModelPropertyDirection } from './enumerations';\r\n\r\nvar constants = {\r\n\twindowAlias: 'w',\r\n\tcalcValueSuffix: '_$$calcValue',\r\n\tdefaultExpression: 'return $value;',\r\n\tvalueProperty: '$value',\r\n\toldValueProperty: '$oldValue',\r\n\toriginalProperty: '$originalValue',\r\n\tnewValueProperty: '$newValue',\r\n\thasChangesProperty: '$hasChanges',\r\n\ttargetProperty: '$target',\r\n\ttriggeredBy: '$triggeredBy',\r\n\tconfigProperty: '$config',\r\n\tforceValueChanged: '$forceValueChanged',\r\n\tpreventValueChanged: '$preventValueChanged',\r\n\tsetValue: '$setValue',\r\n\tmaximumRecalculationsAllowed: 50,\r\n\tcurrentThemeColors: '$currentThemeColors',\r\n\tfilterExpressionDefaultDdValue: 'id=@id:guid',\r\n\tfilterExpressionDefaultDqObjectIdValue: '[Expression-ObjectID]=@objectId:guid',\r\n\tfilterExpressionDefaultDqFragmentIdsValue: 'id in (@id:guid[])',\r\n};\r\n\r\nvar DataModelSystemProperty = {\r\n\tSourceState: '$sourceState',\r\n\tFirst: '$first',\r\n\tCount: 'Count',\r\n\tObjectId: 'ObjectId',\r\n\tReturn: 'return',\r\n\tItem: '$item',\r\n\tInactive: '$inactive',\r\n\tId: '$id',\r\n\tErrorMessage: '$errorMessage',\r\n\tCatchError: '$catchError',\r\n\tShared: 'Shared',\r\n\tFilter: '$filter',\r\n\tOrderBy: '$orderBy',\r\n\tPageNumber: '$pageNumber',\r\n\tPageSize: '$pageSize',\r\n\tTotalCount: '$totalCount',\r\n\tOuterContext: 'OuterContext',\r\n\tParameters: '$parameters',\r\n\tFragmentIds: 'FragmentIds',\r\n};\r\n\r\nvar MxDataModelDefaultValues = {\r\n\tIntType: 0,\r\n\tGuidType: undefined,\r\n\tArrayType: [],\r\n\tObjectType: {},\r\n\tStringType: '',\r\n\tDateType: null,\r\n\tBoolType: false,\r\n\tCurrency: { CC: '', Value: null },\r\n};\r\n\r\nconstants.initilizationCode =\r\n\t'var ' +\r\n\tconstants.windowAlias +\r\n\t' = window;' +\r\n\t'var ' +\r\n\tconstants.originalProperty +\r\n\t' = v.defaultValue;' +\r\n\t'var ' +\r\n\tconstants.oldValueProperty +\r\n\t' = v.oldValue;' +\r\n\t'var ' +\r\n\tconstants.valueProperty +\r\n\t' = v.value;' +\r\n\t'var ' +\r\n\tconstants.configProperty +\r\n\t' = c;';\r\n\r\nDataModelCalculatedProperty.prototype.constants = constants;\r\n\r\nfunction DataModelCalculatedProperty(options, isParameter) {\r\n\toptions = options || {};\r\n\tvar descriptor = {};\r\n\r\n\tthis.define.call(descriptor, 'ParentPath', options);\r\n\tthis.define.call(descriptor, 'Path', options);\r\n\tthis.define.call(descriptor, 'Name', options);\r\n\tthis.define.call(descriptor, 'Direction', options, DataModelPropertyDirection.NONE);\r\n\tthis.define.call(descriptor, 'Expression', options, this.constants.defaultExpression);\r\n\r\n\tObject.defineProperty(descriptor, 'Parameters', {\r\n\t\tenumerable: true,\r\n\t\twritable: true,\r\n\t\tvalue: (options.Parameters || []).filter(function (param) {\r\n\t\t\treturn param.__type !== 2 && !param.localizedValue;\r\n\t\t}),\r\n\t});\r\n\r\n\tObject.defineProperty(descriptor, 'Localization', {\r\n\t\tenumerable: true,\r\n\t\twritable: true,\r\n\t\tvalue: (options.Parameters || []).filter(function (param) {\r\n\t\t\treturn param.__type === 2 || param.localizedValue;\r\n\t\t}),\r\n\t});\r\n\r\n\tthis.define.call(descriptor, 'Type', options);\r\n\tthis.define.call(descriptor, 'IsArray', options, false);\r\n\tthis.descriptor = descriptor;\r\n\tthis.callBacks = {};\r\n\tthis.isParameter = isParameter === true;\r\n}\r\n\r\nDataModelCalculatedProperty.prototype.prepareCode = function () {\r\n\tvar calcProperty = this;\r\n\tvar _formatContext = [];\r\n\tcalcProperty.constants.initilizationCode.replace(/(\\$[\\w_]+)\\s*=\\s*([^;]+)/g, function (f, varName, value) {\r\n\t\t_formatContext.push(`formatContext.${varName} = ${value};`);\r\n\t});\r\n\tvar declarations = [calcProperty.constants.initilizationCode];\r\n\tdeclarations.push(`var ${constants.forceValueChanged} = function() { v.forceChanged = true; };`);\r\n\tdeclarations.push(`var ${constants.preventValueChanged} = function() { v.forceChanged = false; };`);\r\n\tdeclarations.push(`var ${constants.triggeredBy} = t;`);\r\n\tdeclarations.push(`var ${constants.currentThemeColors} = mx.currentThemeColors;`);\r\n\r\n\tcalcProperty.descriptor.Localization.forEach(function (param) {\r\n\t\tdeclarations.push(`var ${param.varName} = \"${param.localizedValue.replace(/\"/g, '\\\\\"')}\";`);\r\n\t\t_formatContext.push(`formatContext.${param.varName} = ${param.varName};`);\r\n\t});\r\n\tcalcProperty.descriptor.Parameters.forEach(function (param) {\r\n\t\tvar path = param.localPath ? param.localPath : param.path;\r\n\t\tvar targetObj = param.localPath ? 'p' : 'r';\r\n\t\tvar initParameter = `${param.varName} = DataModelCalculatedProperty.prototype.getParameter(${targetObj}, \"${path}\", \"${param.name}\", \"${calcProperty.descriptor.Path}\");`;\r\n\t\tdeclarations.push(`var ${initParameter}`);\r\n\t\t_formatContext.push(`formatContext.${initParameter}`);\r\n\t});\r\n\r\n\treturn `/* ${calcProperty.descriptor.Name} [${calcProperty.descriptor.Path}] */\r\n\t\t(function execute(r,p,v,c,t) {\r\n\t\t\t${declarations.join('')}\r\n\t\t\tvar formatContext = {};\r\n\t\t\t${_formatContext.join('')}\r\n\t\t\tvar $format = function(){\r\n\t\t\t\tvar args = [].slice.call(arguments);\r\n\t\t\t\targs.push(formatContext);\r\n\t\t\t\treturn DataModelCalculatedProperty.prototype._format.apply(this,args);\r\n\t\t\t};\r\n\r\n\t\t\t${calcProperty.descriptor.Expression}\r\n\r\n\t\t})`;\r\n};\r\n\r\nDataModelCalculatedProperty.prototype._format = function () {\r\n\tvar args = [].slice.call(arguments);\r\n\tvar len = args.length;\r\n\tif (len > 0) {\r\n\t\tvar template = args[0];\r\n\t\tif (len === 1) {\r\n\t\t\treturn template;\r\n\t\t}\r\n\t\tvar scope = args[len - 1];\r\n\t\treturn template.replace(/{([\\w_$]+)}/g, function (m, sd) {\r\n\t\t\tif (!isFinite(sd)) {\r\n\t\t\t\tvar value = scope[sd];\r\n\t\t\t\tif (value.hasOwnProperty('$value')) {\r\n\t\t\t\t\tvalue = value.$value;\r\n\t\t\t\t}\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t\tvar d = +sd;\r\n\t\t\treturn args[d + 1];\r\n\t\t});\r\n\t}\r\n};\r\n\r\nDataModelCalculatedProperty.prototype.register = function (root) {\r\n\troot.$calcProperties = root.$calcProperties || new DataModelCalculatedPropertiesInfo();\r\n\r\n\tvar property = root.$calcProperties[this.descriptor.Path];\r\n\r\n\tif (!property) {\r\n\t\tproperty = root.$calcProperties[this.descriptor.Path] = this;\r\n\t} else if (!this.isParameter) {\r\n\t\tangular.extend(property.descriptor, this.descriptor);\r\n\t}\r\n\r\n\treturn property;\r\n};\r\n\r\nDataModelCalculatedProperty.prototype.apply = function (root, additionalData) {\r\n\tvar calcProperty = this;\r\n\r\n\tvar dataModelHelper = new DataModelHelper();\r\n\r\n\tvar parts = calcProperty.descriptor.ParentPath.split('.'),\r\n\t\tpathAfter = '',\r\n\t\tarrayPath = '';\r\n\tvar curr = root,\r\n\t\tparentArray = null;\r\n\r\n\tfor (var i = 0; i < parts.length; i++) {\r\n\t\tvar p = parts[i];\r\n\r\n\t\tif (curr.hasOwnProperty(p)) {\r\n\t\t\tcurr = curr[p];\r\n\t\t\tif (curr instanceof Array) {\r\n\t\t\t\tarrayPath = parts.slice(0, i + 1).join('.');\r\n\t\t\t\tpathAfter = parts.slice(i + 1).join('.');\r\n\t\t\t\tparentArray = curr;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (typeof curr === 'undefined' || curr === null) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (parentArray) {\r\n\t\tapplyInArray(calcProperty, root, parentArray, arrayPath, pathAfter, additionalData);\r\n\t} else {\r\n\t\tapplyInObject(calcProperty, root, root, calcProperty.descriptor.ParentPath, calcProperty.descriptor.ParentPath, additionalData);\r\n\t}\r\n\r\n\treturn calcProperty;\r\n\r\n\tfunction applyInArray(calcProperty, root, array, arrayPath, pathInArray, additionalData) {\r\n\t\tvar arrayInfo = calcProperty.getParentInfo(root, arrayPath);\r\n\r\n\t\tif (arrayInfo.parent !== null) {\r\n\t\t\tvar arrayCalcPropertyOptions = {\r\n\t\t\t\tName: arrayInfo.name,\r\n\t\t\t\tPath: arrayPath,\r\n\t\t\t\tParentPath: arrayInfo.parentPath,\r\n\t\t\t\tIsArray: true,\r\n\t\t\t};\r\n\r\n\t\t\tvar p = new DataModelCalculatedProperty(arrayCalcPropertyOptions);\r\n\r\n\t\t\tp.isParameter = true;\r\n\t\t\tvar x = p.register(root);\r\n\t\t\tx.apply.call(x, root, additionalData);\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < array.length; i++) {\r\n\t\t\tapplyInObject(calcProperty, root, array[i], arrayPath, pathInArray, additionalData);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction applyInObject(calcProperty, root, parentObject, parentObjectPath, localParentPath, additionalData) {\r\n\t\tvar parent = localParentPath ? _.get(parentObject, localParentPath) : parentObject;\r\n\r\n\t\tif (parent !== null) {\r\n\t\t\tadditionalData = additionalData || {};\r\n\t\t\tvar config = additionalData.config;\r\n\r\n\t\t\tconfig = config || {}; // Used inside eval. TODO: initialize all necessary config values\r\n\r\n\t\t\tvar calcValue = _.get(parent, calcProperty.descriptor.Name + constants.calcValueSuffix);\r\n\r\n\t\t\tif (!calcValue) {\r\n\t\t\t\tvar defaultValue = parent[calcProperty.descriptor.Name];\r\n\r\n\t\t\t\tif (typeof defaultValue === 'undefined') {\r\n\t\t\t\t\tdefaultValue = calcProperty.getDefaultValueByType();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcalcValue = initValue(parent, calcProperty /*calcProperty.descriptor.Name*/, defaultValue);\r\n\r\n\t\t\t\tcalcProperty.descriptor.Parameters.forEach(function (param) {\r\n\t\t\t\t\tvar pathParts = param.path.split('.');\r\n\r\n\t\t\t\t\tpathParts.pop();\r\n\r\n\t\t\t\t\tvar paramProperty = root.$calcProperties[param.path];\r\n\r\n\t\t\t\t\tif (!paramProperty) {\r\n\t\t\t\t\t\tparamProperty = new DataModelCalculatedProperty(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tName: param.name,\r\n\t\t\t\t\t\t\t\tPath: param.path,\r\n\t\t\t\t\t\t\t\tParentPath: pathParts.join('.'),\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\ttrue\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tparamProperty = paramProperty.register(root);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tparamProperty.apply.call(paramProperty, root, additionalData);\r\n\r\n\t\t\t\t\tif (param.watchable !== false) {\r\n\t\t\t\t\t\tparamProperty.onChange(\r\n\t\t\t\t\t\t\tcalcProperty.descriptor.Path,\r\n\t\t\t\t\t\t\tfunction () {\r\n\t\t\t\t\t\t\t\trecalculate(undefined, parentObject, getCalcValue(calcProperty, parent), calcProperty, config, param.path);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tcalcProperty.descriptor.ParentPath !== localParentPath\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (localParentPath !== parentObjectPath && param.path.indexOf(parentObjectPath + '.') === 0) {\r\n\t\t\t\t\t\tparam.localPath = param.path.substr(parentObjectPath.length + 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvar firstGet = evaluatePropertyExpression(parentObject, calcValue, calcProperty, config);\r\n\t\t\t\tif (firstGet && typeof firstGet.then === 'function') {\r\n\t\t\t\t\tcalcProperty.promiseToWaitBeforeProseed = firstGet.then(function (newResult) {\r\n\t\t\t\t\t\tcalcValue.value = newResult;\r\n\t\t\t\t\t\tcalcValue.oldValue = newResult;\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (firstGet instanceof Array) {\r\n\t\t\t\t\t\tinitArrayValue(firstGet, calcProperty, root, additionalData);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcalcValue.value = firstGet;\r\n\t\t\t\t\tcalcValue.oldValue = firstGet;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (firstGet instanceof Relation) {\r\n\t\t\t\t\tfirstGet.onChange(function () {\r\n\t\t\t\t\t\tcalcProperty.runCallBacks();\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if (calcProperty.descriptor.Name !== DataModelSystemProperty.Item || localParentPath === parentObjectPath) {\r\n\t\t\t\t\t/*!calcProperty.descriptor.IsArray*/\r\n\r\n\t\t\t\t\tObject.defineProperty(parent, calcProperty.descriptor.Name, {\r\n\t\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\t\treturn parent[calcProperty.descriptor.Name + calcProperty.constants.calcValueSuffix].value;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tset: function (value) {\r\n\t\t\t\t\t\t\tvar calcValue = getCalcValue(calcProperty, parent);\r\n\t\t\t\t\t\t\tif (calcValue.value !== value) {\r\n\t\t\t\t\t\t\t\trecalculate(value, parentObject, calcValue, calcProperty, config, calcValue.triggeredBy);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn calcProperty;\r\n\t}\r\n\r\n\tfunction getCalcValue(calcProperty, parent) {\r\n\t\treturn parent[calcProperty.descriptor.Name + calcProperty.constants.calcValueSuffix];\r\n\t}\r\n\r\n\t// parameters are used in scope of dynamic expression\r\n\tfunction evaluatePropertyExpression(parentObject, calcValue, calcProperty, config, triggeredBy) {\r\n\t\tvar _getValue;\r\n\t\ttry {\r\n\t\t\tif (typeof calcProperty.execute !== 'function') {\r\n\t\t\t\tcalcProperty.execute = eval(calcProperty.prepareCode());\r\n\t\t\t}\r\n\t\t\t_getValue = calcProperty.execute(root, parentObject, calcValue, config, triggeredBy);\r\n\t\t} catch (e) {\r\n\t\t\tconsole.error('Calculated property exception:', {\r\n\t\t\t\tPath: calcProperty.descriptor.Path,\r\n\t\t\t\tExpression: calcProperty.descriptor.Expression,\r\n\t\t\t\tError: e.message,\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn _getValue;\r\n\t}\r\n\r\n\tfunction initArrayValue(value, calcProperty, root, additionalData) {\r\n\t\tif (value.$arrayInitialized) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (value instanceof DataModelArray) {\r\n\t\t\tvalue.onChange(function (newValue, fnName, args) {\r\n\t\t\t\tif (fnName === 'push' || fnName === 'unshift') {\r\n\t\t\t\t\tif (value && typeof value.getDefaultItem === 'function') {\r\n\t\t\t\t\t\targs.forEach(function (item) {\r\n\t\t\t\t\t\t\tdataModelHelper.initRelations(item, value.getDefaultItem());\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tapplyToArrayItems(args, calcProperty.descriptor.Path, root, additionalData);\r\n\t\t\t\t}\r\n\t\t\t\tcalcProperty.runCallBacks();\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t['pop', 'shift', 'splice', 'changed'].forEach(function (fn) {\r\n\t\t\t\tarrayOn(fn, value, [\r\n\t\t\t\t\tfunction () {\r\n\t\t\t\t\t\tcalcProperty.runCallBacks();\r\n\t\t\t\t\t},\r\n\t\t\t\t]);\r\n\t\t\t});\r\n\r\n\t\t\t['push', 'unshift'].forEach(function (fn) {\r\n\t\t\t\tarrayOn(fn, value, [\r\n\t\t\t\t\tfunction () {\r\n\t\t\t\t\t\tvar args = Array.prototype.slice.call(arguments, 0);\r\n\t\t\t\t\t\tif (value && typeof value.getDefaultItem === 'function') {\r\n\t\t\t\t\t\t\targs.forEach(function (item) {\r\n\t\t\t\t\t\t\t\tdataModelHelper.initRelations(item, value.getDefaultItem());\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tapplyToArrayItems(args, calcProperty.descriptor.Path, root, additionalData);\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfunction () {\r\n\t\t\t\t\t\tcalcProperty.runCallBacks();\r\n\t\t\t\t\t},\r\n\t\t\t\t]);\r\n\t\t\t});\r\n\t\t}\r\n\t\tObject.defineProperty(value, '$arrayInitialized', {\r\n\t\t\tvalue: true,\r\n\t\t\tenumerable: false,\r\n\t\t\twritable: false,\r\n\t\t});\r\n\r\n\t\tfunction arrayOn(fnName, object, handlers) {\r\n\t\t\tvar func = function () {\r\n\t\t\t\tvar args = Array.prototype.slice.call(arguments, 0);\r\n\r\n\t\t\t\tdataModelHelper.profiler.arrayChanged(calcProperty, fnName);\r\n\t\t\t\tif (Array.prototype[fnName]) {\r\n\t\t\t\t\tArray.prototype[fnName].apply(this, args);\r\n\t\t\t\t\thandlers.forEach(function (handler) {\r\n\t\t\t\t\t\thandler.apply(this, args);\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if (fnName === 'changed') {\r\n\t\t\t\t\thandlers.forEach(function (handler) {\r\n\t\t\t\t\t\thandler.apply(this, args);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tObject.defineProperty(object, fnName, {\r\n\t\t\t\tvalue: func,\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\twritable: true,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction applyToArrayItems(items, arrayPath, root, additionalData) {\r\n\t\t_.forOwn(root.$calcProperties, function (property) {\r\n\t\t\tif (property.descriptor.Path.indexOf(arrayPath + '.') === 0) {\r\n\t\t\t\tvar pathInArray = property.descriptor.ParentPath.substr(arrayPath.length + 1);\r\n\r\n\t\t\t\t_.forEach(items, function (item) {\r\n\t\t\t\t\tif (typeof item === 'object') {\r\n\t\t\t\t\t\tapplyInObject(property, root, item, arrayPath, pathInArray, additionalData);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction initValue(parent, calcProperty, defaultValue) {\r\n\t\tvar name = calcProperty.descriptor.Name;\r\n\t\tvar calcValue = {\r\n\t\t\tdefaultValue: defaultValue,\r\n\t\t\tvalue: defaultValue,\r\n\t\t\tchanged: false,\r\n\t\t\toldValue: defaultValue,\r\n\t\t\thash: name + '_' + new Date().getMilliseconds(),\r\n\t\t};\r\n\t\tcalcValue.__callsResetDebounced = $.debounce(0, function () {\r\n\t\t\tcalcValue.__calls = 0;\r\n\t\t});\r\n\t\tcalcValue.__callsInc = function () {\r\n\t\t\tcalcValue.__calls++;\r\n\t\t\tcalcValue.__callsResetDebounced();\r\n\t\t};\r\n\r\n\t\tvar __calls = 0;\r\n\t\tObject.defineProperty(calcValue, '__calls', {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function () {\r\n\t\t\t\treturn __calls;\r\n\t\t\t},\r\n\t\t\tset: function (value) {\r\n\t\t\t\t__calls = value;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(parent, name + constants.calcValueSuffix, {\r\n\t\t\tconfigurable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\twritable: true,\r\n\t\t\tvalue: calcValue,\r\n\t\t});\r\n\r\n\t\tif (defaultValue instanceof Array) {\r\n\t\t\tinitArrayValue(defaultValue, calcProperty, root, additionalData);\r\n\t\t}\r\n\r\n\t\treturn calcValue;\r\n\t}\r\n\r\n\tfunction recalculate(value, parentObject, calcValue, calcProperty, config, triggeredBy) {\r\n\t\tif (value !== calcValue.value && calcValue.__calls > calcProperty.constants.maximumRecalculationsAllowed) {\r\n\t\t\tthrow new Error('Maximum relcalculations exeeded: ' + calcProperty.descriptor.Path + '. Last call triggered by: ' + triggeredBy);\r\n\t\t} else {\r\n\t\t\tcalcValue.__callsInc();\r\n\t\t\tvar valueChanged = calculatePropertyValue(value, parentObject, calcValue, calcProperty, config, triggeredBy);\r\n\t\t\tif (valueChanged) {\r\n\t\t\t\tnotifyListeners(calcValue, calcProperty, root, additionalData);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction notifyListeners(calcValue, calcProperty, root, additionalData) {\r\n\t\tif (calcValue.value instanceof Array) {\r\n\t\t\tinitArrayValue(calcValue.value, calcProperty, root, additionalData);\r\n\t\t\tapplyToArrayItems(calcValue.value, calcProperty.descriptor.Path, root, additionalData);\r\n\t\t}\r\n\t\tcalcValue.changed = true;\r\n\t\tcalcProperty.runCallBacks(calcValue.value, calcValue.oldValue);\r\n\t\tcalcValue.changed = false;\r\n\t}\r\n\r\n\tfunction calculatePropertyValue(incomeValue, parentObject, calcValue, calcProperty, config, triggeredBy) {\r\n\t\tvar newValue, valueBefore, valueChanged;\r\n\r\n\t\tvar updateMode = typeof incomeValue === 'undefined';\r\n\r\n\t\t// value before recalculation.\r\n\t\t// TODO: not fully implemented yet\r\n\t\tvalueBefore = safeValueCopy(calcValue.value);\r\n\r\n\t\tif (!updateMode) {\r\n\t\t\tif (incomeValue instanceof Array) {\r\n\t\t\t\tinitArrayValue(incomeValue, calcProperty, root, additionalData);\r\n\t\t\t}\r\n\t\t\t// prepare scope for expression: $value equals income value\r\n\t\t\tcalcValue.value = incomeValue;\r\n\t\t}\r\n\r\n\t\t// prepare scope for expression: $oldValue is the value before recalculation.\r\n\t\tcalcValue.oldValue = valueBefore;\r\n\r\n\t\t// run expression\r\n\t\tnewValue = evaluatePropertyExpression(parentObject, calcValue, calcProperty, config, triggeredBy);\r\n\r\n\t\tif (newValue && typeof newValue.then === 'function') {\r\n\t\t\tdataModelHelper.profiler.propertyChanged(calcValue, calcProperty, triggeredBy, { propertyReturnPromise: true });\r\n\r\n\t\t\tconst asyncExecutor = async () => {\r\n\t\t\t\tcalcValue.value = await newValue;\r\n\t\t\t\tdelete calcValue.forceChanged;\r\n\r\n\t\t\t\tdataModelHelper.profiler.propertyChanged(calcValue, calcProperty, triggeredBy, { resultFromPromise: true });\r\n\r\n\t\t\t\tnotifyListeners(calcValue, calcProperty, root, additionalData);\r\n\t\t\t};\r\n\t\t\tasyncExecutor();\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (valueBefore instanceof Relation && newValue !== valueBefore) {\r\n\t\t\tcalcValue.value = valueBefore;\r\n\t\t\treturn valueBefore.initNewChanges(newValue);\r\n\t\t} else if (valueBefore instanceof DataModelArray && newValue !== valueBefore) {\r\n\t\t\tcalcValue.value = valueBefore;\r\n\t\t\tvalueBefore.set(newValue);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tcalcValue.value = newValue;\r\n\r\n\t\t// check actual result value changed (compare old and new values)\r\n\t\tvalueChanged = safeValueCompare(valueBefore, newValue);\r\n\t\t// check if $forceValueChanged or $preventValueChanged was called\r\n\t\tvalueChanged = (valueChanged || calcValue.forceChanged === true) && calcValue.forceChanged !== false;\r\n\r\n\t\tdataModelHelper.profiler.propertyChanged(calcValue, calcProperty, triggeredBy, {\r\n\t\t\tchangeForced: calcValue.forceChanged === true,\r\n\t\t\tchangePrevented: calcValue.forceChanged === false,\r\n\t\t});\r\n\r\n\t\tdelete calcValue.forceChanged;\r\n\r\n\t\treturn valueChanged;\r\n\t}\r\n\r\n\tfunction safeValueCompare(oldValue, value) {\r\n\t\tvar dateCompare = value instanceof Date && oldValue instanceof Date;\r\n\r\n\t\treturn dateCompare ? oldValue.toISOString() !== value.toISOString() : value !== oldValue || !_.isEqual(value, oldValue);\r\n\t}\r\n\r\n\tfunction safeValueCopy(value) {\r\n\t\t// TODO: implement copying of all reference types here\r\n\t\tif (value instanceof Date) {\r\n\t\t\treturn new Date(value);\r\n\t\t}\r\n\r\n\t\tif (Array.isArray(value)) {\r\n\t\t\t// TODO: not implemented yet\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tif (typeof value === 'object') {\r\n\t\t\t// TODO: not implemented yet\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n};\r\n\r\nDataModelCalculatedProperty.prototype.getDefaultValueByType = function getDefaultObjectByType() {\r\n\tvar defValue = this.descriptor.IsArray ? MxDataModelDefaultValues.ArrayType : MxDataModelDefaultValues[this.descriptor.Type];\r\n\r\n\treturn angular.copy(defValue);\r\n};\r\n\r\nDataModelCalculatedProperty.prototype.onChange = function (key, callBack, appendCallback) {\r\n\tvar calcProperty = this;\r\n\r\n\tif (key && angular.isFunction(callBack)) {\r\n\t\tif (appendCallback) {\r\n\t\t\tcalcProperty.callBacks[key] = calcProperty.callBacks[key] || [];\r\n\t\t\tcalcProperty.callBacks[key].push(callBack);\r\n\t\t} else {\r\n\t\t\tcalcProperty.callBacks[key] = [callBack];\r\n\t\t}\r\n\t}\r\n\treturn calcProperty;\r\n};\r\n\r\nDataModelCalculatedProperty.prototype.runCallBacks = function (value, oldValue) {\r\n\tvar calcProperty = this;\r\n\r\n\t_.forEach(calcProperty.callBacks, function (keyCallBacks) {\r\n\t\t_.forEach(keyCallBacks, function (callBack) {\r\n\t\t\tcallBack(value, oldValue);\r\n\t\t});\r\n\t});\r\n};\r\n\r\nDataModelCalculatedProperty.prototype.triggerChange = function (parent, oldValue) {\r\n\tvar calcProperty = this;\r\n\r\n\tvar calcValue = parent[calcProperty.descriptor.Name + calcProperty.constants.calcValueSuffix];\r\n\tif (calcValue) {\r\n\t\tcalcValue.oldValue = oldValue;\r\n\t\tcalcValue.changed = true;\r\n\t\tcalcProperty.runCallBacks(parent[calcProperty.descriptor.Name], oldValue);\r\n\t\tcalcValue.changed = false;\r\n\t}\r\n};\r\n\r\nDataModelCalculatedProperty.prototype.getParameter = function (parentObject, path, name, triggeredBy) {\r\n\tvar parameter = {};\r\n\tvar constants = DataModelCalculatedProperty.prototype.constants;\r\n\tvar calcValue = _.get(parentObject, path + constants.calcValueSuffix);\r\n\tif (calcValue) {\r\n\t\tparameter[constants.valueProperty] = calcValue.value;\r\n\t\tparameter[constants.oldValueProperty] = calcValue.oldValue;\r\n\t\tparameter[constants.hasChangesProperty] = calcValue.changed;\r\n\t\tparameter.hash = calcValue.hash;\r\n\r\n\t\tvar paramParentInfo = DataModelCalculatedProperty.prototype.getParentInfo(parentObject, path);\r\n\t\tparameter[constants.setValue] = function (value) {\r\n\t\t\tcalcValue.triggeredBy = triggeredBy;\r\n\t\t\tparamParentInfo.parent[paramParentInfo.name] = value && value.$value ? value.$value : value;\r\n\t\t\tdelete calcValue.triggeredBy;\r\n\t\t\tparameter[constants.valueProperty] = calcValue.value;\r\n\t\t\tparameter[constants.oldValueProperty] = calcValue.oldValue;\r\n\t\t\tparameter[constants.hasChangesProperty] = calcValue.changed;\r\n\t\t};\r\n\t}\r\n\r\n\treturn parameter;\r\n};\r\n\r\nDataModelCalculatedProperty.prototype.getParentInfo = function (obj, path) {\r\n\tvar parts = path.split('.');\r\n\tvar name = parts.pop();\r\n\tvar parentPath = parts.join('.');\r\n\r\n\treturn {\r\n\t\tparentPath: parentPath,\r\n\t\tparent: parentPath ? _.get(obj, parentPath) : obj,\r\n\t\tname: name,\r\n\t};\r\n};\r\nDataModelCalculatedProperty.prototype.define = function (name, source, defaultValue) {\r\n\tdefaultValue = typeof defaultValue !== 'undefined' ? defaultValue : '';\r\n\tObject.defineProperty(this, name, {\r\n\t\tenumerable: true,\r\n\t\twritable: true,\r\n\t\tvalue: source[name] || defaultValue,\r\n\t});\r\n};\r\n\r\nDataModelCalculatedPropertiesInfo.prototype.$$applyTo = function (path, root, additionalData) {\r\n\tvar calcProperties = this;\r\n\tvar toRunCallbacks = []; // var pathPropertyExists = _get(root, path + constants.calcValueSuffix);\r\n\r\n\t_.forOwn(calcProperties, function (property) {\r\n\t\tif (property.descriptor.Path.indexOf(path + '.') === 0) {\r\n\t\t\tproperty.apply(root, additionalData);\r\n\t\t} else {\r\n\t\t\t_.some(property.descriptor.Parameters, function (param) {\r\n\t\t\t\tif (param.watchable !== false && param.path.indexOf(path + '.') === 0) {\r\n\t\t\t\t\ttoRunCallbacks.push(param.path);\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\ttoRunCallbacks.forEach(function (path) {\r\n\t\tvar property = calcProperties[path];\r\n\r\n\t\tif (property) {\r\n\t\t\tproperty.runCallBacks();\r\n\t\t}\r\n\t});\r\n};\r\n\r\nDataModelCalculatedPropertiesInfo.prototype.$$merge = function (parent, property, data, path) {\r\n\tvar that = this;\r\n\treturn merge(parent, property, data, path);\r\n\r\n\tfunction merge(parent, property, data, path) {\r\n\t\tif (Array.isArray(data)) {\r\n\t\t\tif (parent[property] && parent[property] instanceof DataModelArray) {\r\n\t\t\t\tparent[property].set(data);\r\n\t\t\t} else {\r\n\t\t\t\tparent[property] = data; // ?? .slice(0);\r\n\t\t\t}\r\n\t\t} else if (typeof data === 'object' && typeof parent[property] === 'object') {\r\n\t\t\t// && data !== null) {\r\n\t\t\tif (data === null) {\r\n\t\t\t\t// Will not destroy existing objects (usecases???)\r\n\t\t\t\t//We need to check inner calcFields exist. Usecase : http://localhost:4000/app-solutionbuilder/designer/PDRContentWidgetTypeWizard/fb5d75a3-3ef8-c104-ca1f-08d3ac901554\r\n\t\t\t\tparent[property] = data;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (data instanceof Relation || data instanceof DataModelArray) {\r\n\t\t\t\tparent[property] = data;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar calcProperty = that[path];\r\n\t\t\tif (calcProperty && !calcProperty.isParameter) {\r\n\t\t\t\tif (typeof parent[property] === 'object') {\r\n\t\t\t\t\tconsole.warn('Warning!. Data model property `' + calcProperty.descriptor.Path + '` may contain child properties which could be ignored during data update');\r\n\t\t\t\t\t// TODO: handle inner $calcValue properies here\r\n\t\t\t\t}\r\n\t\t\t\tparent[property] = data;\r\n\t\t\t} else {\r\n\t\t\t\tvar objOldValue = angular.copy(parent[property]);\r\n\r\n\t\t\t\tparent[property] = parent[property] || {};\r\n\t\t\t\t_.forOwn(data, function (value, key) {\r\n\t\t\t\t\t// Deep processing\r\n\t\t\t\t\tmerge(parent[property], key, value, path + '.' + key);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (calcProperty) {\r\n\t\t\t\t\t// Manualy trigger change callbacks for Object, because there is no direct Set call\r\n\t\t\t\t\tcalcProperty.triggerChange(parent, objOldValue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// Assign value directly and call calc property setter if it exists\r\n\t\t\tparent[property] = data;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction DataModelCalculatedPropertiesInfo() {}\r\n\r\nexport { DataModelCalculatedProperty, DataModelCalculatedPropertiesInfo, DataModelSystemProperty };\r\n","'use strict';\r\nimport DataModelProfiler from './data-model-profiler';\r\nimport { DataModelSystemProperty, DataModelCalculatedProperty } from './data-model-calculated-property';\r\nimport { Relation, DataModelMultiFragmentArray } from './data-model-base-objects';\r\nimport '../enumerations';\r\nimport '../../../Pandora/model/enumerations';\r\n\r\nexport default function DataModelHelper() {\r\n\tif (DataModelHelper.prototype._instance) {\r\n\t\treturn DataModelHelper.prototype._instance;\r\n\t}\r\n\r\n\tconst additionalData = { config: {} };\r\n\tconst sysProperties = DataModelSystemProperty;\r\n\r\n\tconst service = {\r\n\t\tadditionalData: additionalData,\r\n\t\tpreparePath: preparePath,\r\n\t\tapplySourceResult: applySourceResult,\r\n\t\tcreateModelDefaultObject: createModelDefaultObject,\r\n\t\tupdateDirections: updateDirections,\r\n\t\tapplyCalculatedProperties: applyCalculatedProperties,\r\n\t\tinitRelations: initRelations,\r\n\t\tprofiler: new DataModelProfiler(),\r\n\t};\r\n\r\n\tDataModelHelper.prototype._instance = service;\r\n\treturn DataModelHelper.prototype._instance;\r\n\r\n\tasync function applyCalculatedProperties(record, properties) {\r\n\t\tconst calcProperties = [];\r\n\t\tconst sortedProperties = sortByPath(properties || []);\r\n\r\n\t\tsortedProperties.forEach(function (property) {\r\n\t\t\tif (!property.Path) {\r\n\t\t\t\tproperty.Path = property.ParentPath + '.' + property.Name;\r\n\t\t\t}\r\n\t\t\tcalcProperties.push(new DataModelCalculatedProperty(property).register(record));\r\n\t\t});\r\n\r\n\t\tfor (const property of calcProperties) {\r\n\t\t\tproperty.apply(record, additionalData);\r\n\t\t\tif (property.promiseToWaitBeforeProseed) {\r\n\t\t\t\tawait property.promiseToWaitBeforeProseed;\r\n\t\t\t\tdelete property.promiseToWaitBeforeProseed;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction sortByPath(properties) {\r\n\t\t\tconst sortedProperties = [];\r\n\t\t\t// fields = fields.slice();\r\n\t\t\tlet field;\r\n\t\t\tfor (field = properties[0]; field; field = properties[0]) {\r\n\t\t\t\tpush(properties, sortedProperties, field.Path);\r\n\t\t\t}\r\n\t\t\treturn sortedProperties;\r\n\r\n\t\t\tfunction indexOf(properties, path) {\r\n\t\t\t\tlet i = 0;\r\n\t\t\t\tconst len = properties.length;\r\n\t\t\t\tfor (; i < len; i++) {\r\n\t\t\t\t\tif (properties[i].Path === path) {\r\n\t\t\t\t\t\treturn i;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\r\n\t\t\tfunction push(properties, sortedProperties, path) {\r\n\t\t\t\tconst index = indexOf(properties, path);\r\n\t\t\t\tif (index !== -1) {\r\n\t\t\t\t\tconst property = properties.splice(index, 1)[0];\r\n\t\t\t\t\tproperty.Parameters.forEach(function (param) {\r\n\t\t\t\t\t\tpush(properties, sortedProperties, param.path);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tsortedProperties.push(property);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction updateDirections(sources, properties) {\r\n\t\tproperties.forEach(function (propertyDescriptor) {\r\n\t\t\tconst path = propertyDescriptor.Path;\r\n\t\t\tlet property;\r\n\t\t\tsources.some(function (source) {\r\n\t\t\t\tif (path.indexOf(source.path) === 0) {\r\n\t\t\t\t\tproperty = source.find(path);\r\n\t\t\t\t\tif (property) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (source.path === path) {\r\n\t\t\t\t\tproperty = source;\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tif (property) {\r\n\t\t\t\tpropertyDescriptor.Direction = property.direction;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction applySourceResult(model, newData, source, response) {\r\n\t\tconst modelSourceData = model[source.path];\r\n\t\tlet sourceReturnPath = '';\r\n\t\tconst calcProperties = model.$calcProperties;\r\n\r\n\t\tif (source.dataDefinition) {\r\n\t\t\tnewData = newData && newData.Entity && newData.Entity;\r\n\t\t\tif (newData) {\r\n\t\t\t\tif (!source.isArray && Array.isArray(newData[source.dataDefinition])) {\r\n\t\t\t\t\tconst result = newData[source.dataDefinition];\r\n\t\t\t\t\tnewData[source.dataDefinition] = result && result[0];\r\n\t\t\t\t}\r\n\t\t\t\tconst sysPropertiesNames = getPropertiesNames(sysProperties);\r\n\t\t\t\t_.forOwn(newData, function (value, prop) {\r\n\t\t\t\t\tif (prop !== source.dataDefinition && sysPropertiesNames.indexOf(prop) === -1) {\r\n\t\t\t\t\t\tmodelSourceData[prop] = newData[prop];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\textendData(modelSourceData, source.dataDefinition, newData[source.dataDefinition], source.path + '.' + source.dataDefinition);\r\n\t\t\t\tmodelSourceData[sysProperties.TotalCount] = Number(response.headers('TotalCount') || '');\r\n\t\t\t}\r\n\t\t} else if (source.entityName) {\r\n\t\t\tsourceReturnPath = source.path + '.' + source.entityName;\r\n\t\t\tnewData = newData && newData.Entity ? newData.Entity : newData;\r\n\t\t\textendData(modelSourceData, source.entityName, newData, sourceReturnPath);\r\n\t\t} else {\r\n\t\t\tsourceReturnPath = source.path + '.' + sysProperties.Return;\r\n\t\t\textendData(modelSourceData, sysProperties.Return, newData, sourceReturnPath);\r\n\r\n\t\t\tif (source.dataQueryId && Object.prototype.hasOwnProperty.call(modelSourceData, sysProperties.First)) {\r\n\t\t\t\tmodelSourceData[sysProperties.TotalCount] = Number(response.headers('TotalCount') || '');\r\n\t\t\t\tmodelSourceData[sysProperties.First] = modelSourceData[sysProperties.Return][0];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tservice.profiler.sourceExecuted(source.name, newData, modelSourceData);\r\n\r\n\t\tfunction getPropertiesNames(obj) {\r\n\t\t\tconst names = [];\r\n\t\t\t_.forOwn(obj, function (val) {\r\n\t\t\t\tnames.push(val);\r\n\t\t\t});\r\n\t\t\treturn names;\r\n\t\t}\r\n\r\n\t\tfunction extendData(parent, property, data, applyPath) {\r\n\t\t\tinitRelations(data, parent[property]);\r\n\r\n\t\t\tif (!Array.isArray(data) && ((source.rewriteResponse && typeof data === 'object') || data === null || data === undefined)) {\r\n\t\t\t\tconst defaultObj = createModelDefaultObject([source]);\r\n\r\n\t\t\t\tdata = merge(defaultObj[source.path][property], data, function (value) {\r\n\t\t\t\t\treturn !(value instanceof Relation);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tcalcProperties.$$merge(parent, property, data, applyPath);\r\n\t\t}\r\n\t}\r\n\tfunction merge(defaultValue, rawData, goDeeper) {\r\n\t\tif (isMergable(rawData) && isMergable(defaultValue)) {\r\n\t\t\tObject.keys(rawData).forEach(function (key) {\r\n\t\t\t\tif (isMergable(rawData[key]) && isMergable(defaultValue[key]) && goDeeper(rawData[key])) {\r\n\t\t\t\t\tmerge(defaultValue[key], rawData[key], goDeeper);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdefaultValue[key] = rawData[key];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn defaultValue;\r\n\t\t}\r\n\r\n\t\treturn rawData || defaultValue;\r\n\t}\r\n\r\n\tfunction isMergable(value) {\r\n\t\treturn typeof value === 'object' && !Array.isArray(value) && value !== null && typeof value !== 'undefined';\r\n\t}\r\n\r\n\tfunction createModelDefaultObject(sources, defaultData) {\r\n\t\tconst result = {};\r\n\r\n\t\tsources.forEach(function (source) {\r\n\t\t\tresult[source.path] = {};\r\n\t\t\tresult[source.path][DataModelSystemProperty.SourceState] = mx.SolutionBuilderAgent.SourceLoadingStatus.INITIAL;\r\n\t\t\tsource.items.forEach(function (item) {\r\n\t\t\t\t_initValue(result[source.path], item);\r\n\t\t\t});\r\n\t\t});\r\n\t\treturn result;\r\n\r\n\t\tfunction _initValue(obj, sourceItem) {\r\n\t\t\tconst defaultValue = getDefaultObjectByType(defaultData, sourceItem);\r\n\r\n\t\t\tif (sourceItem.items && !sourceItem.isArray) {\r\n\t\t\t\tsourceItem.items.forEach(function (item) {\r\n\t\t\t\t\t_initValue(defaultValue, item);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (sourceItem.isArray) {\r\n\t\t\t\tdefaultValue.getDefaultItem = function () {\r\n\t\t\t\t\tconst defaultItem = {};\r\n\t\t\t\t\t(sourceItem.items || []).forEach(function (item) {\r\n\t\t\t\t\t\t_initValue(defaultItem, item);\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn defaultItem;\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tobj[sourceItem.name] = defaultValue;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction initRelations(entityProp, defaultModelProp, parentArray) {\r\n\t\tif (!defaultModelProp || !entityProp) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (Array.isArray(entityProp) && typeof defaultModelProp.getDefaultItem === 'function') {\r\n\t\t\tentityProp.forEach(function (item) {\r\n\t\t\t\tinitRelations(item, defaultModelProp.getDefaultItem(), entityProp);\r\n\t\t\t});\r\n\r\n\t\t\tentityProp.getDefaultItem = defaultModelProp.getDefaultItem;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tObject.keys(defaultModelProp).forEach(function (key) {\r\n\t\t\tif (defaultModelProp[key] instanceof Relation) {\r\n\t\t\t\tdefaultModelProp[key].set(entityProp[key], { fragmentId: entityProp.ID });\r\n\t\t\t\tentityProp[key] = defaultModelProp[key];\r\n\t\t\t} else if (defaultModelProp[key] instanceof DataModelMultiFragmentArray) {\r\n\t\t\t\tif (Array.isArray(entityProp[key])) {\r\n\t\t\t\t\tdefaultModelProp[key].set(entityProp[key], { objectId: entityProp._id });\r\n\t\t\t\t\tentityProp[key] = defaultModelProp[key];\r\n\r\n\t\t\t\t\tif (defaultModelProp[key] && defaultModelProp[key].getDefaultItem) {\r\n\t\t\t\t\t\tentityProp[key].forEach(function (item) {\r\n\t\t\t\t\t\t\tinitRelations(item, defaultModelProp[key].getDefaultItem());\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tentityProp[key].getDefaultItem = defaultModelProp[key].getDefaultItem;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (typeof defaultModelProp[key] === 'object' && defaultModelProp[key] !== null) {\r\n\t\t\t\tif (typeof entityProp[key] === 'object' && entityProp[key] !== null) {\r\n\t\t\t\t\tinitRelations(entityProp[key], defaultModelProp[key]);\r\n\t\t\t\t} else if (parentArray) {\r\n\t\t\t\t\tconst entityPropObject = {};\r\n\t\t\t\t\tinitRelations(entityPropObject, defaultModelProp[key]);\r\n\r\n\t\t\t\t\tif (Object.keys(entityPropObject).length) {\r\n\t\t\t\t\t\tentityProp[key] = entityPropObject;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getDefaultArray(defaultData, sourceItem) {\r\n\t\tif (sourceItem.isMultiFragment) {\r\n\t\t\treturn defaultData instanceof DataModelMultiFragmentArray\r\n\t\t\t\t? defaultData\r\n\t\t\t\t: new DataModelMultiFragmentArray(defaultData, {\r\n\t\t\t\t\t\tentityClassName: sourceItem.name,\r\n\t\t\t\t\t\tentityType: sourceItem.entityName,\r\n\t\t\t\t });\r\n\t\t} else {\r\n\t\t\treturn Array.isArray(defaultData) ? defaultData : [];\r\n\t\t}\r\n\t}\r\n\tfunction getDefaultObjectByType(/* type, isArray, path, relationsConfig, */ defaultData, sourceItem) {\r\n\t\tconst defaultValue = defaultData ? _.get(defaultData, sourceItem.path) : null;\r\n\t\tconst type = sourceItem.type;\r\n\t\tconst relationsConfig = sourceItem.relationsConfig;\r\n\r\n\t\t/* \tsourceItem.isArray,\r\n\t\tsourceItem.path,\r\n\t\tsourceItem.relationsConfig, */\r\n\r\n\t\tif (sourceItem.isArray) {\r\n\t\t\treturn getDefaultArray(defaultData, sourceItem);\r\n\t\t}\r\n\t\t//TODO: After thinking TODO section below and finding solution remove comments, VirtualRelationEnd section and this line\r\n\t\t// if (relationsConfig) {\r\n\t\t// \treturn relationsConfig.createRelation();\r\n\t\t// }\r\n\r\n\t\tswitch (type) {\r\n\t\t\tcase 'IntType':\r\n\t\t\tcase 'DecimalType':\r\n\t\t\t\treturn angular.isNumber(defaultValue) ? defaultValue : 0;\r\n\t\t\tcase 'DateType':\r\n\t\t\t\tif (angular.isDate(defaultValue)) {\r\n\t\t\t\t\treturn defaultValue.toISOString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (angular.isString(defaultValue) && angular.isDate(new Date(defaultValue))) {\r\n\t\t\t\t\treturn new Date(defaultValue).toISOString();\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\tcase 'GuidType':\r\n\t\t\tcase 'StringType':\r\n\t\t\tcase 'TextType':\r\n\t\t\t\treturn angular.isString(defaultValue) ? defaultValue : null;\r\n\t\t\tcase 'BoolType':\r\n\t\t\t\treturn defaultValue === true;\r\n\t\t\tcase 'Currency':\r\n\t\t\t\tif (angular.isObject(defaultValue)) {\r\n\t\t\t\t\treturn angular.extend({}, defaultValue);\r\n\t\t\t\t}\r\n\t\t\t\treturn {};\r\n\t\t\tcase 'VirtualRelationEnd':\r\n\t\t\t\tif (relationsConfig.otherSideIsMany()) {\r\n\t\t\t\t\treturn relationsConfig.createRelation();\r\n\t\t\t\t}\r\n\t\t\t\t//TODO: Think about using relationConfig in ObjectPickers\r\n\t\t\t\treturn angular.isString(defaultValue) ? defaultValue : null;\r\n\t\t\tdefault:\r\n\t\t\t\treturn {};\r\n\t\t}\r\n\t}\r\n\r\n\tfunction preparePath(path, data, source, extOptions) {\r\n\t\textOptions = extOptions || {};\r\n\t\tconst options = {\r\n\t\t\tuseQueryObject: true,\r\n\t\t\tskipEmptyParameters: false,\r\n\t\t};\r\n\r\n\t\tangular.extend(options, extOptions);\r\n\r\n\t\tconst result = {\r\n\t\t\tpath: path,\r\n\t\t\tqueryObjectString: '',\r\n\t\t\tqueryObject: {},\r\n\t\t\texecute: true,\r\n\t\t};\r\n\r\n\t\tlet queryObject;\r\n\r\n\t\tconst split = path\r\n\t\t\t.replace('?}', '_#######_')\r\n\t\t\t.split('?')\r\n\t\t\t.map(function (v) {\r\n\t\t\t\treturn v.replace('_#######_', '?}');\r\n\t\t\t});\r\n\r\n\t\tif (split.length > 2) {\r\n\t\t\tresult.execute = false;\r\n\t\t} else {\r\n\t\t\tconst pathPart = split[0];\r\n\t\t\tconst queryString = split[1] || '';\r\n\r\n\t\t\tresult.path = replace(pathPart, data, source);\r\n\t\t\tqueryObject = getQueryObject(queryString, data, source);\r\n\t\t}\r\n\r\n\t\tif (!options.useQueryObject && queryObject) {\r\n\t\t\tlet queryObjectString = '';\r\n\r\n\t\t\tObject.keys(queryObject).forEach(function (key) {\r\n\t\t\t\tlet val = queryObject[key];\r\n\r\n\t\t\t\tif (options.skipEmptyParameters && (typeof val === 'undefined' || val === null)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (queryObjectString) {\r\n\t\t\t\t\tqueryObjectString += '&';\r\n\t\t\t\t}\r\n\t\t\t\tif (typeof val === 'undefined' || val === null) {\r\n\t\t\t\t\tval = '';\r\n\t\t\t\t}\r\n\t\t\t\tif (Array.isArray(val)) {\r\n\t\t\t\t\tval = val.join();\r\n\t\t\t\t}\r\n\t\t\t\tqueryObjectString += key + '=' + val;\r\n\t\t\t});\r\n\r\n\t\t\tif (queryObjectString) {\r\n\t\t\t\tresult.queryObjectString = queryObjectString;\r\n\t\t\t\tresult.path += '?' + queryObjectString;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tresult.queryObject = queryObject;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\r\n\t\tfunction getQueryObject(queryString, data, source) {\r\n\t\t\tconst obj = {};\r\n\r\n\t\t\tif (queryString) {\r\n\t\t\t\t// Fill queryObject with properties used in query string template\r\n\t\t\t\tqueryString.split('&').forEach(function (n) {\r\n\t\t\t\t\tconst param = n.split('=');\r\n\r\n\t\t\t\t\t// convert array params correctly\r\n\t\t\t\t\tparam[0] = param[0].replace('[0]', '').replace('[1]', '');\r\n\t\t\t\t\tparam[1] = param[1].replace('[0]', '').replace('[1]', '');\r\n\r\n\t\t\t\t\tif (/{([^:}]+)(:?:[^}]+)?}/g.test(param[1])) {\r\n\t\t\t\t\t\tconst value = getValue(\r\n\t\t\t\t\t\t\tparam[1].replace(/{([^:}]+)(:?:[^}]+)?}/g, function (match, param) {\r\n\t\t\t\t\t\t\t\treturn param;\r\n\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\tdata,\r\n\t\t\t\t\t\t\tsource\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tif (typeof value === 'undefined') {\r\n\t\t\t\t\t\t\tresult.execute = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tobj[param[0]] = value;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tobj[param[0]] = param[1];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else if (source && source.httpMethod === mx.shell.HttpMethod.Get) {\r\n\t\t\t\t// Fill queryObject with all source data properties (except internal)\r\n\t\t\t\tconst keys = Object.keys(data);\r\n\r\n\t\t\t\tfor (let i = 0, len = keys.length; i < len; i++) {\r\n\t\t\t\t\tconst key = keys[i];\r\n\t\t\t\t\tconst prop = data[key];\r\n\t\t\t\t\t// TODO: Create uniform rule to get only data properties.\r\n\t\t\t\t\t// Avoid having '' (empty string) in unassigned data.\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tkey !== 'return' &&\r\n\t\t\t\t\t\tkey !== 'undefined' &&\r\n\t\t\t\t\t\tkey.charAt(0) !== '$' &&\r\n\t\t\t\t\t\ttypeof prop !== 'function' &&\r\n\t\t\t\t\t\ttypeof prop !== 'undefined' &&\r\n\t\t\t\t\t\t!(prop === null || prop === '')\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tobj[key] = prop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn obj;\r\n\t\t}\r\n\r\n\t\tfunction replace(path, data, source) {\r\n\t\t\tlet replaceResult = path.replace(/{([^:}]+)(:?:[^}]+)?}/g, function (match, param) {\r\n\t\t\t\tlet value = getValue(param, data, source);\r\n\t\t\t\tif (typeof value === 'undefined' || value === null) {\r\n\t\t\t\t\tresult.execute = false;\r\n\t\t\t\t}\r\n\t\t\t\treturn value === null ? '' : value;\r\n\t\t\t});\r\n\t\t\t// replace consequent slashes ('/') with single one, remove trailing slash\r\n\t\t\treturn replaceResult.replace(/\\/+/g, '/').replace(/\\/+$/, '');\r\n\t\t}\r\n\r\n\t\tfunction getValueSafe(data, property) {\r\n\t\t\tif (Object.prototype.hasOwnProperty.call(data, property)) {\r\n\t\t\t\treturn data[property];\r\n\t\t\t}\r\n\r\n\t\t\tif (typeof property === 'string' && property.length) {\r\n\t\t\t\tlet key = property[0];\r\n\t\t\t\tkey = key === key.toUpperCase() ? key.toLowerCase() : key.toUpperCase();\r\n\r\n\t\t\t\tkey += property.substr(1);\r\n\t\t\t\treturn data[key];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction getValue(property, data, source) {\r\n\t\t\t//try get value with a key or with a key that has case-inverted first letter\r\n\t\t\tlet value = getValueSafe(data, property);\r\n\r\n\t\t\tif (value === null && source) {\r\n\t\t\t\t// Exec with default value\r\n\t\t\t\tconst items = source.items.filter(function (item) {\r\n\t\t\t\t\treturn item.name === property;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (items.length === 1) {\r\n\t\t\t\t\tvalue = getDefaultValue(items[0].type, items[0].isArray);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvalue = undefined;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tfunction getDefaultValue(type, isArray) {\r\n\t\t\tif (isArray) {\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t\tswitch (type) {\r\n\t\t\t\tcase 'IntType':\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\tcase 'DateType':\r\n\t\t\t\t\treturn null;\r\n\t\t\t\tcase 'GuidType':\r\n\t\t\t\tcase 'StringType':\r\n\t\t\t\t\treturn null;\r\n\t\t\t\tcase 'BoolType':\r\n\t\t\t\t\treturn false;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn {};\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","'use strict';\r\nexport default function DataModelProfiler() {\r\n\tthis.propertyChanged = propertyChanged;\r\n\tthis.arrayChanged = arrayChanged;\r\n\tthis.sourceExecuted = sourceExecuted;\r\n\tthis.sourceTriggered = sourceTriggered;\r\n\tthis.sourceExecuting = sourceExecuting;\r\n\tthis.sourceRejected = sourceRejected;\r\n\r\n\tfunction log(header, innerLogs) {\r\n\t\tif (mx.__mx$dataModelProfilingOn || mx.__mx$dataModelProfilingOn_PROD) {\r\n\t\t\tvar groupMethod = mx.__mx$dataModelProfilingOn_PROD ? console.group : console.groupCollapsed;\r\n\t\t\tif (groupMethod) {\r\n\t\t\t\theader[0] = 'mx-debug #dataModel. ' + header[0];\r\n\t\t\t\tgroupMethod.apply(console, header);\r\n\t\t\t\tinnerLogs.forEach(function (innerLogItem) {\r\n\t\t\t\t\tvar output = mx.__mx$dataModelProfilingOn_PROD ? JSON.stringify(innerLogItem) : innerLogItem;\r\n\t\t\t\t\tif (Array.isArray(output)) {\r\n\t\t\t\t\t\tconsole.log.apply(console, output);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconsole.log(output);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tconsole.groupEnd();\r\n\t\t\t} else {\r\n\t\t\t\tconsole.log.apply(console, ['mx-debug #dataModel. ' + header].concat(innerLogs));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction propertyChanged(calcValue, calcProperty, triggeredBy, meta) {\r\n\t\tvar logs = [];\r\n\r\n\t\tlogs.push(['New Value:', calcValue.value]);\r\n\t\tlogs.push(['Old Value:', calcValue.oldValue]);\r\n\t\tlogs.push(['Calc Value Object:', calcValue]);\r\n\t\tlogs.push(['Property Descriptor:', calcProperty]);\r\n\t\tlogs.push(['Execution options:', meta]);\r\n\r\n\t\tvar headerColors = [];\r\n\t\tvar formattedValue = calcValue.value ? calcValue.value.toString() : calcValue.value;\r\n\t\tif (formattedValue !== null && formattedValue !== undefined && formattedValue.length > 36) {\r\n\t\t\tformattedValue = formattedValue.substring(0, 20) + '...';\r\n\t\t}\r\n\t\tvar header = ' --- %c[property changed]: %c' + calcProperty.descriptor.Path + '%c = ' + formattedValue;\r\n\r\n\t\tif (triggeredBy) {\r\n\t\t\theader = header + ' %c<--- triggered by: %c' + triggeredBy;\r\n\t\t}\r\n\t\theaderColors.push('color:green'); // color for --- [prop changed]\r\n\t\theaderColors.push('color:black'); // color for path\r\n\t\theaderColors.push('color:gray'); // color for path\r\n\r\n\t\tif (triggeredBy) {\r\n\t\t\theaderColors.push('color:darkgray'); // color for triggered path\r\n\t\t\theaderColors.push('color:gray'); // color for triggered arrow\r\n\t\t}\r\n\r\n\t\tlog([header].concat(headerColors), logs);\r\n\t}\r\n\r\n\tfunction arrayChanged(calcProperty, fnName) {\r\n\t\tvar header = ' --- %c[array changed `' + fnName + '` function]: %c' + calcProperty.descriptor.Path;\r\n\t\tlog([header, 'color:green', 'color:black'], [calcProperty]);\r\n\t}\r\n\r\n\tfunction sourceExecuted(sourceName, newData, modelSourceData) {\r\n\t\tlog(\r\n\t\t\t['%c[SOURCE_EXECUTED]: %c' + sourceName, 'color: red', 'color: black'],\r\n\t\t\t[\r\n\t\t\t\t['Response Data: ', newData],\r\n\t\t\t\t['ResultSourceData: ', modelSourceData],\r\n\t\t\t]\r\n\t\t);\r\n\t}\r\n\r\n\tfunction sourceTriggered(sourceName, inactive, triggeredBy, sourceData) {\r\n\t\tvar headerMsg = inactive ? 'SOURCE_INACTIVE' : 'SOURCE_TRIGGERED';\r\n\t\tvar headerMsgColor = inactive ? 'darkgray' : 'blue';\r\n\r\n\t\tvar header = '%c[' + headerMsg + ']: %c' + sourceName;\r\n\t\tvar headerColors = [];\r\n\t\tif (triggeredBy) {\r\n\t\t\theader += ' %c<--- %c' + triggeredBy;\r\n\t\t}\r\n\r\n\t\theaderColors.push('color:' + headerMsgColor + '');\r\n\t\theaderColors.push('color:black');\r\n\r\n\t\tif (triggeredBy) {\r\n\t\t\theaderColors.push('color:gray');\r\n\t\t\theaderColors.push('color:darkgray');\r\n\t\t}\r\n\t\tlog([header].concat(headerColors), [['Source Data: ', sourceData]]);\r\n\t}\r\n\r\n\tfunction sourceExecuting(sourceName, url, data) {\r\n\t\tlog(['%c ... [executing]: %c' + sourceName + '%c URL: %c' + url, 'color:blue', 'color:black', 'color:gray', 'color:darkcyan'], [['Request data: ', data]]);\r\n\t}\r\n\tfunction sourceRejected(sourceName, msg) {\r\n\t\tlog(['%c[SOURCE_REJECTED]: %c' + sourceName, 'color: darkred', 'color:black'], [[msg, 'darkred']]);\r\n\t}\r\n}\r\n","(function (w) {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc type\r\n\t * @name mx.SolutionBuilderAgent.LocalizableResource\r\n\t * @module mx.SolutionBuilderAgent\r\n\t *\r\n\t * @description\r\n\t * An implementation of localizable resource\r\n\t *\r\n\t * @property {boolean} global - Gets the localizable resource type (either global or context specific).\r\n\t * @property {string} name - Gets the localizable resource name.\r\n\t * @property {string} description - Gets the localizable resource description.\r\n\t * @property {string} values - Gets the localizable resource values object.\r\n\t */\r\n\tfunction LocalizableResource(options) {\r\n\t\toptions = options || {};\r\n\t\tvar that = this;\r\n\r\n\t\tObject.defineProperty(that, '__type', {\r\n\t\t\twritable: false,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: mx.SolutionBuilderAgent.TemplatePropertyValueTypes.local.id,\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'datatype', {\r\n\t\t\twritable: false,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.datatype || 'local',\r\n\t\t});\r\n\r\n\t\tvar resKey = options.resourceKey || options.ResourceKey;\r\n\t\tvar id = options.Id || options.Key;\r\n\r\n\t\tObject.defineProperty(that, 'global', {\r\n\t\t\twritable: false,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.global,\r\n\t\t});\r\n\t\tObject.defineProperty(that, 'id', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: id,\r\n\t\t});\r\n\t\tObject.defineProperty(that, 'Key', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: id,\r\n\t\t});\r\n\t\tObject.defineProperty(that, 'ResourceKey', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: resKey,\r\n\t\t});\r\n\t\tObject.defineProperty(that, 'Description', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.Description || '',\r\n\t\t});\r\n\t\tObject.defineProperty(that, 'Value', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.Value || '',\r\n\t\t});\r\n\t\tObject.defineProperty(that, 'lower', {\r\n\t\t\tenumerable: false,\r\n\t\t\tget: function () {\r\n\t\t\t\treturn this.Value.toLowerCase();\r\n\t\t\t},\r\n\t\t});\r\n\t\tObject.defineProperty(that, 'editMode', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: false,\r\n\t\t});\r\n\t\tObject.defineProperty(that, 'notUsed', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: false,\r\n\t\t});\r\n\t\tObject.defineProperty(that, '_descr', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: false,\r\n\t\t});\r\n\t\tObject.defineProperty(that, '_name', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: false,\r\n\t\t});\r\n\t\tObject.defineProperty(that, '__hover', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: false,\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'name', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: that.Value,\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'Translations', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.Translations,\r\n\t\t});\r\n\t}\r\n\r\n\tLocalizableResource.prototype.toString = function () {\r\n\t\treturn '[' + this.name + '::' + (this.global ? 'GLOBAL ' : '') + 'RES]';\r\n\t};\r\n\tLocalizableResource.prototype.toJSON = function () {\r\n\t\tvar res = {\r\n\t\t\t__type: mx.SolutionBuilderAgent.TemplatePropertyValueTypes.local.id,\r\n\t\t\tdatatype: this.datatype,\r\n\t\t};\r\n\r\n\t\tif (this.datatype === 'datamodel') {\r\n\t\t\tres.ResourceKey = this.ResourceKey;\r\n\t\t} else {\r\n\t\t\tres.Id = this.Key || this.Id;\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t};\r\n\tLocalizableResource.prototype.format = function (lcid) {\r\n\t\tvar localized;\r\n\t\tif (this.Translations) {\r\n\t\t\tlocalized = _.find(this.Translations, { lcid: lcid }) || _.find(this.Translations, { Lcid: lcid });\r\n\t\t}\r\n\r\n\t\tvar localizedValue = (localized && (localized.value || localized.Value)) || this.Value;\r\n\t\treturn '[' + localizedValue + '::' + (this.global ? 'GLOBAL ' : '') + 'RES]';\r\n\t};\r\n\r\n\tw.mx = w.mx || {};\r\n\tw.mx.SolutionBuilderAgent = w.mx.SolutionBuilderAgent || {};\r\n\tw.mx.SolutionBuilderAgent.LocalizableResource = LocalizableResource;\r\n})(window);\r\n","(function (w) {\r\n\t'use strict';\r\n\r\n\tfunction MxLocalizationPropertyShort(options) {\r\n\t\tvar that = this;\r\n\r\n\t\toptions = options || {};\r\n\r\n\t\tObject.defineProperty(that, 'key', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.Key || options.Id,\r\n\t\t});\r\n\t\tObject.defineProperty(that, 'value', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.Value,\r\n\t\t});\r\n\t\tObject.defineProperty(that, 'description', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.Description,\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'lower', {\r\n\t\t\tenumerable: false,\r\n\t\t\tget: function () {\r\n\t\t\t\treturn this.value.toLowerCase();\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tMxLocalizationPropertyShort.prototype.toJSON = function () {\r\n\t\treturn {\r\n\t\t\tKey: this.key,\r\n\t\t\tValue: this.value,\r\n\t\t\tDescription: this.description,\r\n\t\t};\r\n\t};\r\n\r\n\tfunction MxLocalizationProperty(options) {\r\n\t\tvar that = this;\r\n\r\n\t\toptions = options || {};\r\n\r\n\t\tmx.SolutionBuilderAgent.LocalizationPropertyShort.call(that, options);\r\n\r\n\t\tvar translations = [];\r\n\r\n\t\tif (options.Translations && options.Translations.length) {\r\n\t\t\ttranslations = options.Translations.map(function (item) {\r\n\t\t\t\treturn new MxLocalizationPropertyTranslation(item);\r\n\t\t\t});\r\n\t\t}\r\n\t\tObject.defineProperty(that, 'translations', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: translations,\r\n\t\t});\r\n\t}\r\n\r\n\tfunction MxLocalizationPropertyTranslation(options) {\r\n\t\tvar that = this;\r\n\r\n\t\toptions = options || {};\r\n\r\n\t\tObject.defineProperty(that, 'value', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.Value || '',\r\n\t\t});\r\n\t\tObject.defineProperty(that, 'lcid', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.Lcid,\r\n\t\t});\r\n\t}\r\n\r\n\tw.mx = w.mx || {};\r\n\tw.mx.SolutionBuilderAgent = w.mx.SolutionBuilderAgent || {};\r\n\tw.mx.SolutionBuilderAgent.LocalizationPropertyShort = MxLocalizationPropertyShort;\r\n\tw.mx.SolutionBuilderAgent.LocalizationProperty = MxLocalizationProperty;\r\n\tw.mx.SolutionBuilderAgent.LocalizationPropertyTranslation = MxLocalizationPropertyTranslation;\r\n})(window);\r\n","(function (w) {\r\n\t'use strict';\r\n\r\n\tSearchContext.prototype = Object.create((((mx || {}).shell || {}).SearchContext || {}).prototype || {});\r\n\r\n\tfunction SearchContext(options) {\r\n\t\tmx.shell.SearchContext.call(this, options);\r\n\t\tObject.defineProperty(this, 'datasource', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: options.dataQuery || '',\r\n\t\t});\r\n\t\tObject.defineProperty(this, 'widgetId', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: options.widgetId || '',\r\n\t\t});\r\n\t\tObject.defineProperty(this, 'userEntityName', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: options.userEntityName || 'SPSUserClassBase',\r\n\t\t});\r\n\t\tObject.defineProperty(this, 'statusEntityName', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: options.statusEntityName || 'SPSCommonPickupObjectStatus',\r\n\t\t});\r\n\t\tObject.defineProperty(this, 'statusEntityStateGroup', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: options.statusEntityStateGroup || 7,\r\n\t\t});\r\n\t\tObject.defineProperty(this, 'selected', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: options.selected || false,\r\n\t\t});\r\n\t\tObject.defineProperty(this, 'navigationItem', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: options.navigationItem,\r\n\t\t});\r\n\t}\r\n\r\n\tw.mx = w.mx || {};\r\n\tw.mx.SolutionBuilderAgent = w.mx.SolutionBuilderAgent || {};\r\n\tw.mx.SolutionBuilderAgent.SearchContext = SearchContext;\r\n})(window);\r\n","(function (w) {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc enum\r\n\t * @name mx.SolutionBuilderAgent.SearchQueryLogicalOperator\r\n\t * @module mx.SolutionBuilderAgent\r\n\t *\r\n\t * @description\r\n\t * Logical operators enumerable\r\n\t */\r\n\tvar mxSearchQueryLogicalOperator = {\r\n\t\t/**\r\n\t\t * @ngdoc property\r\n\t\t * @name mx.SolutionBuilderAgent.SearchQueryLogicalOperator#AND\r\n\t\t *\r\n\t\t * @description\r\n\t\t * Logical operator And\r\n\t\t */\r\n\t\tAND: 1,\r\n\r\n\t\t/**\r\n\t\t * @ngdoc property\r\n\t\t * @name mx.SolutionBuilderAgent.SearchQueryLogicalOperator#OR\r\n\t\t *\r\n\t\t * @description\r\n\t\t * Logical operator Or\r\n\t\t */\r\n\t\tOR: 2,\r\n\t};\r\n\r\n\tvar mxSearchQueryTypeView = {\r\n\t\t/**\r\n\t\t * @ngdoc property\r\n\t\t * @name mx.SolutionBuilderAgent.SearchQueryLogicalOperator#AND\r\n\t\t *\r\n\t\t * @description\r\n\t\t * Logical operator And\r\n\t\t */\r\n\t\tFull: 1,\r\n\r\n\t\t/**\r\n\t\t * @ngdoc property\r\n\t\t * @name mx.SolutionBuilderAgent.SearchQueryLogicalOperator#OR\r\n\t\t *\r\n\t\t * @description\r\n\t\t * Logical operator Or\r\n\t\t */\r\n\t\tShort: 2,\r\n\t};\r\n\r\n\tw.mx = w.mx || {};\r\n\tw.mx.SolutionBuilderAgent = w.mx.SolutionBuilderAgent || {};\r\n\tw.mx.SolutionBuilderAgent.SearchQueryLogicalOperator = mxSearchQueryLogicalOperator;\r\n\tw.mx.SolutionBuilderAgent.SearchQueryTypeView = mxSearchQueryTypeView;\r\n})(window);\r\n","import type { IQService, ITimeoutService, IDeferred } from 'angular';\r\n\r\nimport type { ExternalServiceManager } from './external-service-manager';\r\nimport type { HttpService } from '../../../App/services/http-service';\r\nimport type { EventService } from '../../../App/services/event-service';\r\nimport { EventCodes } from '../../../App/model/event-codes';\r\nimport { WithRequired } from '../../../Types/WithRequired';\r\nimport { FilterExpressionRequestParams, IFilterExpression } from '../model/filterExpressionUtils';\r\n\r\nexport type FragmentDescriptorRequest = {\r\n\tentityClass: string;\r\n\tfilter?: IFilterExpression;\r\n\ttop?: number;\r\n\tallowedTypes?: string;\r\n\texclude?: string;\r\n\tids?: string[];\r\n\tobjectId?: string;\r\n\tfragmentId?: string;\r\n\tparent?: string;\r\n\trootElement?: string;\r\n\tincludeRoot?: boolean;\r\n\trelationName?: string;\r\n\tuseObjectId?: boolean;\r\n\tdisplayExpression?: string;\r\n\tnotStrictAutocomplete?: boolean;\r\n\tarchived?: boolean;\r\n\tdataQueryName?: string;\r\n};\r\n\r\nexport type FragmentDescriptorPostRequest = WithRequired;\r\n\r\nexport type FragmentDescriptorRequestExtraResult = {\r\n\tEntityClass?: string;\r\n};\r\n\r\nexport type FragmentDescriptor = {\r\n\tId: string;\r\n\tObjectId: string;\r\n\tDisplayString: string;\r\n\tEntityType: string;\r\n\r\n\tDisplayExpression?: string; //TODO: is it legacy?\r\n\tParentDisplayString?: string;\r\n\tParents?: FragmentDescriptor[];\r\n};\r\n\r\nexport type ObjectPreprocessorParams = {\r\n\tEntityType: string;\r\n\tId: string;\r\n\tIsArchived?: boolean;\r\n};\r\n\r\nexport type EntityContext = {\r\n\t_id: string;\r\n\t_type: string;\r\n\t_name?: string;\r\n\t_state?: string;\r\n\t_displayName: string;\r\n\t_archived?: boolean;\r\n};\r\n\r\nexport type ObjectPreprocessor = (params: ObjectPreprocessorParams) => Promise;\r\n\r\nexport type FragmentsApiResult = {\r\n\tEntityClass: string;\r\n\tFragments: FragmentDescriptor[];\r\n};\r\n\r\ntype FragmentRequestPromise = {\r\n\tId: string;\r\n\tDisplayExpression: string;\r\n\tPromise: IDeferred;\r\n};\r\n\r\nexport type EnumerationValue = {\r\n\tDisplayString: string;\r\n\tImage: string;\r\n\tPosition: number;\r\n\tStateGroup: number;\r\n\tValue: number;\r\n\tHidden: boolean;\r\n};\r\n\r\nexport type Enumeration = {\r\n\tName: string;\r\n\tValues: EnumerationValue[] | null;\r\n};\r\n\r\ntype EnumerationCache = {\r\n\tenums: Record>;\r\n\ttypePermissions: Record;\r\n};\r\n\r\nexport class EntityService {\r\n\tstatic $inject = ['$q', 'mx.SolutionBuilderAgent.Http', 'mx.SolutionBuilderAgent.ExternalServiceManager', '$timeout', 'mx.shell.EventService'];\r\n\tprivate readonly entityServiceUrl = 'api/entity/';\r\n\tprivate readonly _defaultKey = '*';\r\n\tprivate _itemsRequest: Map | null = null;\r\n\tprivate readonly _pendingPromise = new Map();\r\n\tprivate readonly _objectParameterProcessors: ObjectPreprocessor[] = [];\r\n\tprivate readonly cache: EnumerationCache = {\r\n\t\tenums: {},\r\n\t\ttypePermissions: {},\r\n\t};\r\n\r\n\tconstructor(\r\n\t\tprivate readonly $q: IQService,\r\n\t\tprivate readonly http: HttpService,\r\n\t\tprivate readonly externalServiceManager: ReturnType,\r\n\t\tprivate readonly $timeout: ITimeoutService,\r\n\t\tprivate readonly eventService: EventService\r\n\t) {\r\n\t\teventService.subscribeGlobal(EventCodes.ActionsContextChanged, (eventObj, context) => {\r\n\t\t\tthis._pendingPromise.delete(context?.widgetId || this._defaultKey);\r\n\t\t});\r\n\r\n\t\t/* properties for calc-fields */\r\n\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n\t\t// @ts-ignore\r\n\t\twindow.mx.Schema = {\r\n\t\t\tgetPickup: (name: string, filter: string) => this.getEnumerationValues(name, filter),\r\n\t\t};\r\n\t\t/* end */\r\n\t}\r\n\r\n\tprivate mapFragmentRequest(requestOptions: FragmentDescriptorRequest & { searchFilter?: string }) {\r\n\t\tconst { ids, filter: filterExpression, ...otherOptions } = requestOptions;\r\n\r\n\t\tconst filterRequestParams: FilterExpressionRequestParams & { filter?: string; WhereExpression?: string } = filterExpression?.toRequest() || {};\r\n\t\tif ('WhereExpression' in filterRequestParams) {\r\n\t\t\tfilterRequestParams.filter = filterRequestParams.WhereExpression;\r\n\t\t\tdelete filterRequestParams.WhereExpression;\r\n\t\t}\r\n\r\n\t\treturn { ids, ...filterRequestParams, ...otherOptions };\r\n\t}\r\n\r\n\tprivate async getPostFragments(requestOptions: FragmentDescriptorPostRequest[]): Promise {\r\n\t\treturn await this.http.post(`${this.entityServiceUrl}fragments`, requestOptions);\r\n\t}\r\n\r\n\tprivate async getFragments(requestOptions: FragmentDescriptorRequest): Promise {\r\n\t\treturn await this.http.post(`${this.entityServiceUrl}fragments/forControl`, this.mapFragmentRequest(requestOptions));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the details about Entity fragment. To avoid multiple Server requests functions accumulates the calls\r\n\t * received within half a second, and send them in batch.\r\n\t */\r\n\tpublic async getFragmentDescriptors(\r\n\t\trequest: FragmentDescriptorRequest,\r\n\t\tsearchText: string,\r\n\t\textraResult: FragmentDescriptorRequestExtraResult = {}\r\n\t): Promise {\r\n\t\tif (this.externalServiceManager.isService(request.entityClass)) {\r\n\t\t\treturn this.externalServiceManager.getFragmentDescriptors(request, searchText);\r\n\t\t}\r\n\r\n\t\tconst data = await this.getFragments(Object.assign({ searchFilter: searchText }, request));\r\n\r\n\t\tif (extraResult) {\r\n\t\t\textraResult.EntityClass = data.EntityClass;\r\n\t\t}\r\n\r\n\t\treturn data.Fragments;\r\n\t}\r\n\r\n\t/**\r\n\t * Register a processor of object parameters\r\n\t *\r\n\t * @param {function} processor - A function-processor with one input Object parameter:\r\n\t * {\r\n\t * \t\tEntityType: string,\r\n\t *\t\tId: Guid,\r\n\t *\t\tIsArchived: boolean\r\n\t * }\r\n\t * Processor must return {Object} - Normalized object description\r\n\t */\r\n\tpublic registerObjectParameterProcessor(processor: ObjectPreprocessor): void {\r\n\t\tif (typeof processor === 'function') {\r\n\t\t\tthis._objectParameterProcessors.push(processor);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Normalizes object parameters for any purpose needed. Chain overridable method.\r\n\t * @returns Normalized object description\r\n\t */\r\n\tpublic async processObjectContext(context: EntityContext): Promise {\r\n\t\tlet result: ObjectPreprocessorParams = {\r\n\t\t\tEntityType: context._type,\r\n\t\t\tId: context._id,\r\n\t\t\tIsArchived: context._archived,\r\n\t\t};\r\n\t\tfor (let i = 0; i < this._objectParameterProcessors.length; i++) {\r\n\t\t\ttry {\r\n\t\t\t\tresult = await this._objectParameterProcessors[i](result);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tconsole.error(e);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (context._type !== result.EntityType) {\r\n\t\t\tthis.eventService.dispatchEvent(EventCodes.ObjectTypeChanged, {\r\n\t\t\t\tobjectId: context._id,\r\n\t\t\t\tentityType: context._type,\r\n\t\t\t\tnewEntityType: result.EntityType,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (typeof result.Id !== 'undefined') {\r\n\t\t\tcontext._id = result.Id;\r\n\t\t}\r\n\r\n\t\tif (typeof result.EntityType !== 'undefined') {\r\n\t\t\tcontext._type = result.EntityType;\r\n\t\t}\r\n\r\n\t\treturn context;\r\n\t}\r\n\r\n\tprivate addPendingPromise(key: string, entityId: string, displayExpression: string): IDeferred {\r\n\t\tkey = key || this._defaultKey;\r\n\r\n\t\tlet promiseForKey = this._pendingPromise.get(key);\r\n\t\tif (!promiseForKey) {\r\n\t\t\tpromiseForKey = [];\r\n\t\t\tthis._pendingPromise.set(key, promiseForKey);\r\n\t\t}\r\n\r\n\t\tlet foundDefer = promiseForKey.find(({ Id, DisplayExpression }) => Id === entityId && DisplayExpression === displayExpression)?.Promise;\r\n\r\n\t\tif (!foundDefer) {\r\n\t\t\tfoundDefer = this.$q.defer();\r\n\r\n\t\t\tconst newPromise = {\r\n\t\t\t\tId: entityId,\r\n\t\t\t\tDisplayExpression: displayExpression,\r\n\t\t\t\tPromise: foundDefer,\r\n\t\t\t};\r\n\r\n\t\t\tpromiseForKey.push(newPromise);\r\n\t\t}\r\n\r\n\t\treturn foundDefer;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the details about Entity fragment. To avoid multiple Server requests functions accumulates the calls\r\n\t * received within half a second, and send them in batch.\r\n\t *\r\n\t * @param {string} entityClassName - Name of the Entity class.\r\n\t * @param {string} id - id of the Entity\r\n\t * @param {string} parentExpression - Specifies the Data Expression to obtain an extra info about fragment .\r\n\t * @param {string} useObjectId - Use objectId instead ClassId.\r\n\t * @param {string} rootElement -\r\n\t * @param {boolean} includeRoot -\r\n\t * @param {string} [widgetId] - ID of widget with control which calls the method, used for response caching.\r\n\t * @param {string} [displayExpression] - A-SQL display expression for the result fragments.\r\n\t * @param {string} [dataQueryName] - Data Query name\r\n\t *\r\n\t * @returns {FragmentDescriptor} item\r\n\t */\r\n\tpublic async getFragmentDescriptorsInBatch(\r\n\t\tentityClassName: string,\r\n\t\tid: string,\r\n\t\tparentExpression: string,\r\n\t\tuseObjectId: boolean,\r\n\t\trootElement: string,\r\n\t\tincludeRoot: boolean,\r\n\t\twidgetId: string,\r\n\t\tdisplayExpression: string,\r\n\t\tdataQueryName: string\r\n\t): Promise {\r\n\t\tif (!id || !entityClassName) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst entityId = typeof id === 'string' ? id.toLowerCase() : id;\r\n\r\n\t\tconst entityClass = (entityClassName || '').toLowerCase();\r\n\t\tconst reqKey = entityClass + (displayExpression ? displayExpression.toLowerCase() : '') + '_' + useObjectId;\r\n\r\n\t\tif (!this._itemsRequest) {\r\n\t\t\tthis._itemsRequest = new Map>();\r\n\r\n\t\t\tthis.$timeout(async () => {\r\n\t\t\t\tconst requestData = Array.from(this._itemsRequest || [], ([, value]) => value);\r\n\r\n\t\t\t\tconst data = await this.getPostFragments(requestData);\r\n\r\n\t\t\t\tthis._pendingPromise.forEach((values) => {\r\n\t\t\t\t\tvalues.forEach((pendingPromise) => {\r\n\t\t\t\t\t\tconst foundItem = data.find((dataItem) => {\r\n\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t(dataItem.Id.toLowerCase() === pendingPromise.Id || dataItem.ObjectId?.toLowerCase() === pendingPromise.Id) &&\r\n\t\t\t\t\t\t\t\t(dataItem.DisplayExpression || '') === (pendingPromise.DisplayExpression || '')\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (foundItem) {\r\n\t\t\t\t\t\t\tpendingPromise.Promise.resolve(foundItem);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._itemsRequest = null;\r\n\t\t\t}, 500);\r\n\t\t}\r\n\r\n\t\tconst defer = this.addPendingPromise(widgetId, entityId, displayExpression);\r\n\r\n\t\tlet classIds = this._itemsRequest.get(reqKey);\r\n\r\n\t\tif (!classIds) {\r\n\t\t\tclassIds = {\r\n\t\t\t\tentityClass: entityClassName,\r\n\t\t\t\tdisplayExpression,\r\n\t\t\t\tids: [],\r\n\t\t\t\tdataQueryName,\r\n\t\t\t};\r\n\t\t\tthis._itemsRequest.set(reqKey, classIds);\r\n\t\t}\r\n\r\n\t\tif (parentExpression) {\r\n\t\t\tclassIds.parent = parentExpression;\r\n\t\t\tclassIds.rootElement = rootElement;\r\n\t\t\tclassIds.includeRoot = includeRoot;\r\n\t\t}\r\n\r\n\t\tif (useObjectId) {\r\n\t\t\tclassIds.useObjectId = useObjectId;\r\n\t\t}\r\n\r\n\t\tif (!classIds.ids?.includes(entityId)) {\r\n\t\t\tclassIds.ids.push(entityId);\r\n\t\t}\r\n\r\n\t\treturn defer.promise;\r\n\t}\r\n\r\n\t/**\r\n\t * Check uniqueness of the Entity class attribute value. Validates there is no other value in specified\r\n\t * ´entityClass´ table in column ´attributeName´, except the record with provided ´objectId´\r\n\t *\r\n\t * @param {string} entityClass - Name of the Entity class.\r\n\t * @param {string} attributeName - Name of the Entity attribute.\r\n\t * @param {string} objectId - Id of the object.\r\n\t * @param {string} attrValue - Attribute value to validate.\r\n\t * @param {string} entityType - Name of Entity Type of the edited object.\r\n\t *\r\n\t * @returns {boolean} Indicates that the checked value is unique\r\n\t */\r\n\tpublic async ensureUniqueValue(entityClass: string, attributeName: string, objectId: string, attrValue: string, entityType: string): Promise {\r\n\t\treturn this.http.get(this.entityServiceUrl + 'ensureUnique', {\r\n\t\t\tattributeName: attributeName,\r\n\t\t\tentityClass: entityClass,\r\n\t\t\tobjectId: objectId,\r\n\t\t\tvalue: attrValue,\r\n\t\t\tentityType: entityType,\r\n\t\t});\r\n\t}\r\n\r\n\tprivate async loadEnumeration(name: string): Promise {\r\n\t\ttry {\r\n\t\t\treturn this.externalServiceManager.isService(name) ? this.externalServiceManager.getEnumeration(name) : this.http.get(this.entityServiceUrl + 'enumeration/' + name);\r\n\t\t} catch (e) {\r\n\t\t\treturn {\r\n\t\t\t\tName: name,\r\n\t\t\t\tValues: null,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getEnumeration(name: string): Promise {\r\n\t\tthis.cache.enums[name] = this.cache.enums[name] || this.loadEnumeration(name);\r\n\t\treturn this.cache.enums[name] as Promise;\r\n\t}\r\n\r\n\tprivate filterFunction(values: EnumerationValue[] | null, filter?: string) {\r\n\t\tif (!values) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tif (!filter) {\r\n\t\t\treturn values.slice();\r\n\t\t}\r\n\r\n\t\tconst fnEval = (str: string) => eval(str);\r\n\r\n\t\tconst userExpression = filter\r\n\t\t\t.replace(/\\sand\\s/gi, ' && ')\r\n\t\t\t.replace(/\\sor\\s/gi, ' || ')\r\n\t\t\t.replace(/<>/gi, '!=')\r\n\t\t\t.replace(/([^=])=([^=])/gi, (ex, g1, g2) => `${g1}==${g2}`);\r\n\r\n\t\tconst result: EnumerationValue[] = [];\r\n\t\tvalues.forEach((value) => {\r\n\t\t\tlet evalExpression = '';\r\n\r\n\t\t\tObject.entries(value).forEach(([key, val]) => {\r\n\t\t\t\tif (typeof val === 'number') {\r\n\t\t\t\t\tevalExpression += 'var ' + key + '=' + val + '; var ' + key.toLowerCase() + '=' + key + ';';\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tevalExpression += userExpression;\r\n\t\t\tevalExpression += ';';\r\n\t\t\tif (fnEval.call({}, evalExpression)) {\r\n\t\t\t\tresult.push(value);\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic async getEnumerationValues(name: string, filter?: string) {\r\n\t\tconst data = await this.getEnumeration(name);\r\n\t\treturn this.filterFunction(data.Values, filter);\r\n\t}\r\n\r\n\t/**\r\n\t * Update some properties of Entity\r\n\t *\r\n\t * @param {string} entityType - EntityType.\r\n\t * @param {string} objectId - Id of the object.\r\n\t * @param {string} entityClassName - base EntityClassName of the Object.\r\n\t * @param {string} values - Array of properties which will be updated. Format:\r\n\t * \t\t\t[{\r\n\t * \t\t\t\tExpression: 'Title',\r\n\t * \t\t\t\tValue: 'New awesome title of the Object'\r\n\t * \t\t\t}]\r\n\t *\r\n\t * @returns {promise} Result from the server\r\n\t */\r\n\tpublic updateEntity(entityType: string, objectId: string, entityClassName: string, values: { Expression: string; Value: string }[]): Promise {\r\n\t\treturn this.http.post('api/data', {\r\n\t\t\tEntityName: entityType,\r\n\t\t\tObjectId: objectId,\r\n\t\t\tExpressionBaseClassName: entityClassName,\r\n\t\t\tValues: values,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Get Type name an object belongs to.\r\n\t *\r\n\t * @param {string} objectId - id of the object.\r\n\t *\r\n\t * @returns {promise} Result from the server\r\n\t */\r\n\tpublic async getObjectTypeName(objectId: string): Promise {\r\n\t\tif (objectId) {\r\n\t\t\treturn this.http.get('api/data/objectTypeName/' + objectId);\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n}\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc directive\r\n\t * @name mx.shell:mxAction\r\n\t * @module mx.shell\r\n\t * @restrict 'EA'\r\n\t * @scope {}\r\n\t * @requires {@ref mx.shell.ActionManagerService mx.shell.ActionManagerService}\r\n\t * @description A button linked to an action\r\n\t * @param {mx.shell.Action} action= - Related {@ref mx.shell.Action Action}\r\n\t * @param {bool} is-background@ - Defines whether a component has background.
Default: true\r\n\t * @param {bool} use-icon@ - Is it necessary to display icon (icon should be stored in action.icon).
Default: true\r\n\t * @param {bool} use-title@ - Is it necessary to display action title (title should be stored in action.title).
Default: false\r\n\t * @param {string} html-class@ - A html class for button if needed (optional)\r\n\t * @usage \r\n\t */\r\n\tangular.module('mx.shell').directive('mxAction', function mxActionDirective() {\r\n\t\tMxActionCtrl.$inject = ['mx.shell.ActionExecutorService', '$scope'];\r\n\r\n\t\tfunction MxActionCtrl(actionExecutorService, $scope) {\r\n\t\t\tvar vm = this;\r\n\t\t\tvar action;\r\n\r\n\t\t\tvm.$onInit = function () {\r\n\t\t\t\tinit();\r\n\t\t\t};\r\n\r\n\t\t\tObject.defineProperty(vm, 'action', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn action;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (newAction) {\r\n\t\t\t\t\taction = newAction;\r\n\t\t\t\t\tinit();\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\t$scope.$watch('vm.action.htmlClass', function (newHtmlClass) {\r\n\t\t\t\tvm._htmlClasses = [\r\n\t\t\t\t\tvm._useTitle ? '' : vm._isBackground ? 'md-fab' : 'md-icon-button',\r\n\t\t\t\t\t'mx-action-' + (vm.action ? vm.action.name : '').replace(/\\./g, '--'),\r\n\t\t\t\t].concat(vm.htmlClass ? vm.htmlClass.split(' ') : []);\r\n\t\t\t\tvm._htmlClasses.push(newHtmlClass);\r\n\t\t\t});\r\n\r\n\t\t\tvm.execute = execute;\r\n\r\n\t\t\treturn vm;\r\n\r\n\t\t\tfunction init() {\r\n\t\t\t\tObject.defineProperty(vm.action, 'count', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn vm._count;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (value) {\r\n\t\t\t\t\t\tvm._count = value;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvm._isBackground = typeof vm.isBackground === 'undefined' || vm.isBackground.toLowerCase() !== 'false' || (vm.action && vm.action.isBackground === true);\r\n\t\t\t\tvm._useIcon = typeof vm.useIcon === 'undefined' || vm.useIcon.toLowerCase() !== 'false' || (vm.action && vm.action.useIcon === true);\r\n\t\t\t\tvm._useTitle = (typeof vm.useTitle !== 'undefined' && vm.useTitle.toLowerCase() === 'true') || (vm.action && vm.action.useTitle === true);\r\n\t\t\t\tvm.hideForMobile = vm.action ? vm.action.hideForMobile : false;\r\n\t\t\t\tvm._count = 0;\r\n\r\n\t\t\t\tvm._htmlClasses = [\r\n\t\t\t\t\tvm._useTitle ? '' : vm._isBackground ? 'md-fab' : 'md-icon-button',\r\n\t\t\t\t\t'mx-action-' + (vm.action ? vm.action.name : '').replace(/\\./g, '--'),\r\n\t\t\t\t].concat(vm.htmlClass ? vm.htmlClass.split(' ') : []);\r\n\t\t\t}\r\n\r\n\t\t\tfunction execute() {\r\n\t\t\t\tif (!vm.action) {\r\n\t\t\t\t\tthrow new Error('Action directive: an action was not provided.');\r\n\t\t\t\t}\r\n\t\t\t\tvar selectedObjects = vm.context ? [vm.context] : undefined;\r\n\r\n\t\t\t\tactionExecutorService.execute(vm.action, selectedObjects).catch(mx.logCatch);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tscope: {},\r\n\t\t\tbindToController: {\r\n\t\t\t\taction: '<',\r\n\t\t\t\tcontext: '<',\r\n\t\t\t\tisBackground: '@',\r\n\t\t\t\tuseIcon: '@',\r\n\t\t\t\tuseTitle: '@',\r\n\t\t\t\thtmlClass: '@',\r\n\t\t\t},\r\n\t\t\tcontroller: MxActionCtrl,\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t\ttemplateUrl: 'components/mx-action/mx-action.html',\r\n\t\t};\r\n\t});\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc component\r\n\t * @name mx.shell:mxActionsDropdown\r\n\t * @module mx.shell\r\n\t * @requires {@ref mx.shell.ActionManagerService mx.shell.ActionManagerService}\r\n\t * @description A dropdown with list of actions\r\n\t * @param {mx.shell.Action} actions= - List of {@ref mx.shell.Action Actions}\r\n\t * @param context= - context\r\n\t * @usage \r\n\t */\r\n\r\n\tangular.module('mx.shell').component('mxActionsDropdown', {\r\n\t\tbindings: {\r\n\t\t\ticon: '@',\r\n\t\t\tactions: '=',\r\n\t\t\tcontext: '=',\r\n\t\t\tdropdownHtmlClass: '@?',\r\n\t\t},\r\n\t\tcontroller: MxActionsDropdownCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'components/mx-actions-dropdown/mx-actions-dropdown.html',\r\n\t});\r\n\r\n\tMxActionsDropdownCtrl.$inject = ['mx.shell.ActionExecutorService'];\r\n\r\n\tfunction MxActionsDropdownCtrl(actionExecutorService) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.icon = vm.icon || 'more_horiz';\r\n\t\t};\r\n\r\n\t\tvm.executeAction = function (action) {\r\n\t\t\tvar selectedObjects = vm.context ? [vm.context] : undefined;\r\n\r\n\t\t\tactionExecutorService.execute(action, selectedObjects).catch(mx.logCatch);\r\n\t\t};\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc directive\r\n\t * @name mx.shell:mxCommandPalette\r\n\t * @module mx.shell\r\n\t * @restrict 'E'\r\n\t * @scope {}\r\n\t * @requires $window\r\n\t * @requires $timeout\r\n\t * @requires $mdDialog\r\n\t * @requires {@ref mx.shell.SidePanelActionsService mx.shell.SidePanelActionsService}\r\n\t * @requires {@ref mx.shell.EventService mx.shell.EventService}\r\n\t * @requires {@ref mx.internationalization mx.internationalization}\r\n\t * @requires {@ref mx.shell.KeyboardNavigationService mx.shell.KeyboardNavigationService}\r\n\t * @requires {@ref mx.shell.ContextService mx.shell.ContextService}\r\n\t * @requires {@ref mx.shell.ActionExecutorService mx.shell.ActionExecutorService}\r\n\t * @requires {@ref mx.shell.NavigationService mx.shell.NavigationService}\r\n\t * @requires {@ref mx.shell.RoutingService mx.shell.RoutingService}\r\n\t * @requires {@ref mx.shell.AppsService mx.shell.AppsService}\r\n\t * @description\r\n\t * Command palette component\r\n\t * @usage \r\n\t */\r\n\r\n\tangular.module('mx.shell').directive('mxCommandPalette', [\r\n\t\t'$window',\r\n\t\t'mx.shell.SidePanelActionsService',\r\n\t\t'mx.shell.EventService',\r\n\t\t'mx.internationalization',\r\n\t\t'mx.shell.KeyboardNavigationService',\r\n\t\t'$mdDialog',\r\n\t\t'mx.shell.ContextService',\r\n\t\t'mx.shell.ActionExecutorService',\r\n\t\t'mx.shell.NavigationService',\r\n\t\t'mx.shell.RoutingService',\r\n\t\t'mx.shell.AppsService',\r\n\t\t'$timeout',\r\n\t\tfunction mxCommandPaletteDirective(\r\n\t\t\t$window,\r\n\t\t\tsidePanelActionsService,\r\n\t\t\teventService,\r\n\t\t\tinternationalization,\r\n\t\t\tkeyboardNavigationService,\r\n\t\t\t$mdDialog,\r\n\t\t\tcontextService,\r\n\t\t\tactionExecutorService,\r\n\t\t\tnavigationService,\r\n\t\t\troutingService,\r\n\t\t\tappsService,\r\n\t\t\t$timeout\r\n\t\t) {\r\n\t\t\treturn {\r\n\t\t\t\trestrict: 'E',\r\n\t\t\t\tscope: {},\r\n\t\t\t\tlink: link,\r\n\t\t\t};\r\n\r\n\t\t\tfunction link(scope) {\r\n\t\t\t\tvar isPaletteOpen = false;\r\n\t\t\t\tvar isAutocompleteActive = false;\r\n\r\n\t\t\t\tvar appTitle = internationalization.get('shell.mx-command-palette.open');\r\n\t\t\t\tvar actionTitle = internationalization.get('shell.mx-command-palette.action');\r\n\t\t\t\tvar navTitle = internationalization.get('shell.mx-command-palette.navigate');\r\n\t\t\t\tvar settingsTitle = internationalization.get('shell.mx-command-palette.settings');\r\n\r\n\t\t\t\tregisterHotkeys(scope);\r\n\r\n\t\t\t\tfunction registerHotkeys(scope) {\r\n\t\t\t\t\tvar callback = $.throttle(1000, function (ev) {\r\n\t\t\t\t\t\tscope.$evalAsync(function () {\r\n\t\t\t\t\t\t\tif (isPaletteOpen) {\r\n\t\t\t\t\t\t\t\t$mdDialog.hide();\r\n\t\t\t\t\t\t\t\tisPaletteOpen = false;\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tvar childrenCollection;\r\n\r\n\t\t\t\t\t\t\tisPaletteOpen = true;\r\n\r\n\t\t\t\t\t\t\t$mdDialog.show({\r\n\t\t\t\t\t\t\t\tcontroller: dialogCtrl,\r\n\t\t\t\t\t\t\t\tcontrollerAs: 'vm',\r\n\t\t\t\t\t\t\t\ttemplateUrl: 'components/mx-command-palette/mx-command-palette.html',\r\n\t\t\t\t\t\t\t\tparent: angular.element(document.body),\r\n\t\t\t\t\t\t\t\ttargetEvent: ev,\r\n\t\t\t\t\t\t\t\tclickOutsideToClose: true,\r\n\t\t\t\t\t\t\t\topenFrom: document.body,\r\n\t\t\t\t\t\t\t\tcloseTo: document.body,\r\n\t\t\t\t\t\t\t\tonComplete: function (scope) {\r\n\t\t\t\t\t\t\t\t\tvar input = $('.command-palette-dialog input');\r\n\r\n\t\t\t\t\t\t\t\t\tinput.on('keydown', function (ev) {\r\n\t\t\t\t\t\t\t\t\t\tif (ev.key === 'Tab') {\r\n\t\t\t\t\t\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\t\t\t\t\t\tvar selectedItem = scope.vm.selectedItem;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (!selectedItem) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (selectedItem.children && selectedItem.children.length) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tisAutocompleteActive = true;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tvar children = selectedItem.children.filter(function (item) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (item.disabled) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titem.displayType = navTitle;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titem.itemType = 'navitem';\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titem.mainTitle = selectedItem.title + ' > ';\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn item;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tchildrenCollection = children;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tscope.vm.items = children;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tscope.vm.searchText = '';\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tinput.focus();\r\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tisAutocompleteActive = false;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\texecuteItem(selectedItem);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t$mdDialog.hide();\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}, 100);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (ev.key === 'Enter') {\r\n\t\t\t\t\t\t\t\t\t\t\tisAutocompleteActive = false;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\t\t\t\t\t\texecuteItem(scope.vm.selectedItem);\r\n\t\t\t\t\t\t\t\t\t\t\t\t$mdDialog.hide();\r\n\t\t\t\t\t\t\t\t\t\t\t}, 100);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (ev.key === 'Escape') {\r\n\t\t\t\t\t\t\t\t\t\t\t$mdDialog.hide();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tonRemoving: function cleanUp() {\r\n\t\t\t\t\t\t\t\t\tvar input = $('.command-palette-dialog input');\r\n\r\n\t\t\t\t\t\t\t\t\tinput.off();\r\n\r\n\t\t\t\t\t\t\t\t\tisAutocompleteActive = false;\r\n\t\t\t\t\t\t\t\t\tisPaletteOpen = false;\r\n\t\t\t\t\t\t\t\t\tchildrenCollection = null;\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tfunction executeAction(action) {\r\n\t\t\t\t\t\t\t\tactionExecutorService.execute(action, contextService.selectedObjects).catch(mx.logCatch);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tfunction executeItem(item) {\r\n\t\t\t\t\t\t\t\tif (!item.itemType) {\r\n\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tswitch (item.itemType) {\r\n\t\t\t\t\t\t\t\t\tcase 'settings':\r\n\t\t\t\t\t\t\t\t\t\tnavigationService.openSettingHandler();\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\tcase 'navitem':\r\n\t\t\t\t\t\t\t\t\t\tnavigate(item);\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\tcase 'application':\r\n\t\t\t\t\t\t\t\t\t\titem.onItemClick();\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\tcase 'action':\r\n\t\t\t\t\t\t\t\t\t\texecuteAction(item);\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tfunction navigate(item) {\r\n\t\t\t\t\t\t\t\tnavigationService.currentItem = item;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tdialogCtrl.$inject = ['$scope', '$element'];\r\n\r\n\t\t\t\t\t\t\tfunction dialogCtrl($scope, $element) {\r\n\t\t\t\t\t\t\t\t$scope.vm.getPaletteItems = getPaletteItems;\r\n\r\n\t\t\t\t\t\t\t\t$element.find('.command-palette').on('keydown', blockHints);\r\n\t\t\t\t\t\t\t\t$element.find('md-autocomplete').on('keydown', onKeyPress);\r\n\r\n\t\t\t\t\t\t\t\t$scope.vm.onSearchTextChange = function (query) {\r\n\t\t\t\t\t\t\t\t\t$scope.vm.items = getPaletteItems(query);\r\n\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\t$scope.vm.onSelectedItemChange = function (selectedItem) {\r\n\t\t\t\t\t\t\t\t\tif (!selectedItem.hasChildren) {\r\n\t\t\t\t\t\t\t\t\t\texecuteItem(selectedItem);\r\n\t\t\t\t\t\t\t\t\t\t$mdDialog.hide();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\t$scope.vm.items = getPaletteItems($scope.vm.searchText);\r\n\r\n\t\t\t\t\t\t\t\tfunction blockHints(ev) {\r\n\t\t\t\t\t\t\t\t\tvar SPACE_KEY = 32;\r\n\r\n\t\t\t\t\t\t\t\t\tif (ev.which === SPACE_KEY) {\r\n\t\t\t\t\t\t\t\t\t\tev.stopPropagation();\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tif (ev.altKey) {\r\n\t\t\t\t\t\t\t\t\t\tev.stopPropagation();\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (ev.key === 'p') {\r\n\t\t\t\t\t\t\t\t\t\t\t$scope.$evalAsync(function () {\r\n\t\t\t\t\t\t\t\t\t\t\t\t$('input:focus').blur();\r\n\t\t\t\t\t\t\t\t\t\t\t\t$mdDialog.hide();\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tfunction onKeyPress(ev) {\r\n\t\t\t\t\t\t\t\t\tif (ev.key !== 'Enter') {\r\n\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t$scope.$evalAsync(function () {\r\n\t\t\t\t\t\t\t\t\t\t$mdDialog.hide();\r\n\t\t\t\t\t\t\t\t\t\tif ($scope.vm.selectedItem) {\r\n\t\t\t\t\t\t\t\t\t\t\texecuteItem($scope.vm.selectedItem);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tfunction getPaletteItems(query) {\r\n\t\t\t\t\t\t\t\t\tvar items = [];\r\n\r\n\t\t\t\t\t\t\t\t\tquery = query || '';\r\n\r\n\t\t\t\t\t\t\t\t\tif (isAutocompleteActive) {\r\n\t\t\t\t\t\t\t\t\t\treturn filterItems(childrenCollection, query);\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn addApplications().then(addActions).then(addNavigationItems).then(addSettings).then(filterItems.bind(null, items, query));\r\n\r\n\t\t\t\t\t\t\t\t\tfunction addApplications() {\r\n\t\t\t\t\t\t\t\t\t\treturn getApplications().then(function (apps) {\r\n\t\t\t\t\t\t\t\t\t\t\tdecorateItems(apps, appTitle, 'application');\r\n\t\t\t\t\t\t\t\t\t\t\titems.push.apply(items, apps);\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tfunction addActions() {\r\n\t\t\t\t\t\t\t\t\t\treturn getActions().then(function (actions) {\r\n\t\t\t\t\t\t\t\t\t\t\tdecorateItems(actions, actionTitle, 'action');\r\n\t\t\t\t\t\t\t\t\t\t\titems.push.apply(items, actions);\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tfunction addNavigationItems() {\r\n\t\t\t\t\t\t\t\t\t\treturn getNavigationItems().then(function (navigationItems) {\r\n\t\t\t\t\t\t\t\t\t\t\tdecorateItems(navigationItems, navTitle, 'navitem');\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tnavigationItems = navigationItems.filter(function (navItem) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn navItem.disabled ? undefined : navItem;\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\titems.push.apply(items, navigationItems);\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tfunction addSettings() {\r\n\t\t\t\t\t\t\t\t\t\tif (navigationService.openSettingHandler) {\r\n\t\t\t\t\t\t\t\t\t\t\titems.push({\r\n\t\t\t\t\t\t\t\t\t\t\t\ttitle: settingsTitle,\r\n\t\t\t\t\t\t\t\t\t\t\t\ticon: 'settings',\r\n\t\t\t\t\t\t\t\t\t\t\t\titemType: 'settings',\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tfunction decorateItems(items, displayType, itemType) {\r\n\t\t\t\t\t\t\t\t\t\titems.forEach(function (item) {\r\n\t\t\t\t\t\t\t\t\t\t\titem.displayType = displayType;\r\n\t\t\t\t\t\t\t\t\t\t\titem.itemType = itemType;\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tfunction filterItems(items, query) {\r\n\t\t\t\t\t\t\t\t\tif (items.length) {\r\n\t\t\t\t\t\t\t\t\t\treturn items.filter(filter);\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn [];\r\n\r\n\t\t\t\t\t\t\t\t\tfunction filter(item) {\r\n\t\t\t\t\t\t\t\t\t\treturn item.title.toLowerCase().indexOf(query.toLowerCase()) !== -1;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tfunction getNavigationItems() {\r\n\t\t\t\t\t\t\t\t\treturn navigationService.get();\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tfunction getApplications() {\r\n\t\t\t\t\t\t\t\t\treturn appsService.getCurrentApplication().then(function (currentApp) {\r\n\t\t\t\t\t\t\t\t\t\treturn appsService.getApplications().filter(function (app) {\r\n\t\t\t\t\t\t\t\t\t\t\treturn app !== currentApp;\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tfunction getActions() {\r\n\t\t\t\t\t\t\t\t\treturn sidePanelActionsService.calculateCommonActions();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tkeyboardNavigationService.registerKey({\r\n\t\t\t\t\t\tscope: scope,\r\n\t\t\t\t\t\tkey: 'alt+p',\r\n\t\t\t\t\t\tdescription: internationalization.get('shell.mx-command-palette.description'),\r\n\t\t\t\t\t\tcallback: callback,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t]);\r\n})();\r\n","/**\r\n * @ngdoc component\r\n * @name mx.shell:mxCommonActions\r\n * @module mx.shell\r\n * @requires {@ref mx.shell.ActionManagerService mx.shell.ActionManagerService}\r\n * @requires $scope\r\n * @description A list of {@ref mx.shell:mxAction action buttons} that are common for current page context\r\n */\r\n\r\nangular.module('mx.shell').component('mxCommonActions', {\r\n\tbindings: {},\r\n\tcontroller: MxCommonActionsCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplateUrl: 'components/mx-common-actions/mx-common-actions.html',\r\n});\r\n\r\nMxCommonActionsCtrl.$inject = [\r\n\t'mx.shell.ActionManagerService',\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.KeyboardNavigationService',\r\n\t'mx.internationalization',\r\n\t'$scope',\r\n\t'$timeout',\r\n\t'mx.shell.SideLayout',\r\n\t'mx.shell.RoutingService',\r\n];\r\n\r\nfunction MxCommonActionsCtrl(actionManagerService, eventService, keyboardNavigationService, i18n, $scope, $timeout, sideLayoutService, routingService) {\r\n\tif (routingService.getCurrent()?.name === 'globalSearch') {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst vm = this;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvm.isVisible = true;\r\n\t\tvm.actions = [];\r\n\t};\r\n\r\n\teventService.subscribeTo(mx.shell.EventCodes.DisplayModeChanged, (event, newMode) => (vm.isVisible = newMode === mx.shell.DisplayMode.Normal), $scope);\r\n\tvm.sideLayoutService = sideLayoutService;\r\n\r\n\teventService.subscribeTo(\r\n\t\tmx.shell.EventCodes.ActionsContextChanged,\r\n\t\t(eventObj, context) => {\r\n\t\t\tconst actionTypes = [mx.shell.ActionContextType.None];\r\n\r\n\t\t\tif (context && context.uiZone === mx.shell.ActionUiZone.SearchPage) {\r\n\t\t\t\tactionManagerService\r\n\t\t\t\t\t.getActions(context, actionTypes, [])\r\n\t\t\t\t\t.then(function (actions) {\r\n\t\t\t\t\t\treturn actionManagerService.filterActions(actions);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.then(function (filteredActions) {\r\n\t\t\t\t\t\tvm.actions = filteredActions;\r\n\t\t\t\t\t\tvm.actions = filteredActions;\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (!context || context.uiZone === mx.shell.ActionUiZone.LandingPage) {\r\n\t\t\t\tvm.actions = [];\r\n\t\t\t}\r\n\t\t},\r\n\t\t$scope\r\n\t);\r\n\r\n\tvm.$postLink = function () {\r\n\t\tkeyboardNavigationService.registerKey({\r\n\t\t\tcallback: function () {\r\n\t\t\t\t$timeout(() => $('mx-common-actions .md-button:visible').get(0).click());\r\n\t\t\t},\r\n\t\t\tdescription: i18n.get('shell.mx-common-actions.newObject'),\r\n\t\t\tkey: 'alt+n',\r\n\t\t\tnameInTemplate: 'newHint',\r\n\t\t\tscope: $scope,\r\n\t\t});\r\n\t};\r\n}\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.shell').component('mxExtraPanel', {\r\n\t\tbindings: { view: '<' },\r\n\t\ttemplateUrl: 'components/mx-extra-panel/mx-extra-panel.html',\r\n\t\tcontrollerAs: 'vm',\r\n\t\tcontroller: MxExtraPanelCtrl,\r\n\t});\r\n\r\n\tMxExtraPanelCtrl.$inject = ['mx.shell.ExtraPanelManager'];\r\n\r\n\tfunction MxExtraPanelCtrl(mxExtraPanelManager) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.mxExtraPanelManager = mxExtraPanelManager;\r\n\t\t};\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.shell').component('mxHorizontalActionList', {\r\n\t\tbindings: {\r\n\t\t\tactions: '<',\r\n\t\t\tcontext: ' firstBtnOffset) {\r\n\t\t\t\t\t\tmoreThan1Line = true;\r\n\t\t\t\t\t\t$(btn).hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tvm.showMoreButton = moreThan1Line;\r\n\t\t\t\tif (vm.showMoreButton) {\r\n\t\t\t\t\tvm.morePanelTopOffset = container.position().top + 35;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tvm.showMorePanel = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction initKeyboardControl() {\r\n\t\t\t$element.keydown(function (e) {\r\n\t\t\t\tvar focusedEl;\r\n\r\n\t\t\t\tif (vm.showMorePanel) {\r\n\t\t\t\t\tif (e.keyCode === $mdConstant.KEY_CODE.DOWN_ARROW || e.keyCode === $mdConstant.KEY_CODE.UP_ARROW) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\tfocusedEl = $element.find('.mx-horizontal-action-list--more-action:focus');\r\n\t\t\t\t\t\tif (e.keyCode === $mdConstant.KEY_CODE.DOWN_ARROW) {\r\n\t\t\t\t\t\t\tif (focusedEl.length) {\r\n\t\t\t\t\t\t\t\tfocusedEl.next().focus();\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t$($element.find('.mx-horizontal-action-list--more-action')[0]).focus();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else if (e.keyCode === $mdConstant.KEY_CODE.UP_ARROW && focusedEl.length) {\r\n\t\t\t\t\t\t\tfocusedEl.prev().focus();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (e.keyCode === $mdConstant.KEY_CODE.ESCAPE) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\tvm.showMorePanel = false;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction registerHotkeys(scope, i18n, keyboardNavigationService) {\r\n\t\t\tkeyboardNavigationService.registerKey([\r\n\t\t\t\t{\r\n\t\t\t\t\t// Scope: scope,\r\n\t\t\t\t\tkey: 'alt+s',\r\n\t\t\t\t\tdescription: i18n.get('shell.mx-side-panel-actions.save'),\r\n\t\t\t\t\tonRegister: function () {\r\n\t\t\t\t\t\twindow.setTimeout(function () {\r\n\t\t\t\t\t\t\t$element.find('.mx-side-panel-details-view-actions .mx-horizontal-action-list--action[mx-at-id*=\"save\"]').attr('hint-key', 's');\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcallback: function () {\r\n\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\t$('.mx-side-panel-details-view-actions .mx-horizontal-action-list--action[mx-at-id*=\"save\"]:not([disabled]):visible').click();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t// Scope: scope,\r\n\t\t\t\t\tkey: 'alt+e',\r\n\t\t\t\t\tdescription: i18n.get('shell.mx-side-panel-actions.edit'),\r\n\t\t\t\t\tonRegister: function () {\r\n\t\t\t\t\t\twindow.setTimeout(function () {\r\n\t\t\t\t\t\t\t$('.mx-side-panel-details-view-actions .mx-horizontal-action-list--action[mx-at-id*=\"edit\"]').attr('hint-key', 'e');\r\n\t\t\t\t\t\t\t$('.mx-side-panel-selection-actions .mx-horizontal-action-list--action[mx-at-id*=\"edit\"]').attr('hint-key', 'e');\r\n\t\t\t\t\t\t}, 800);\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcallback: function () {\r\n\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\t$('.mx-side-panel-details-view-actions .mx-horizontal-action-list--action[mx-at-id*=\"edit\"]:not([disabled]):visible').click();\r\n\t\t\t\t\t\t\t$('.mx-side-panel-selection-actions .mx-horizontal-action-list--action[mx-at-id*=\"edit\"]:not([disabled]):visible').click();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t// Scope: scope,\r\n\t\t\t\t\tkey: 'alt+x',\r\n\t\t\t\t\tdescription: i18n.get('shell.mx-side-panel-actions.delete'),\r\n\t\t\t\t\tonRegister: function () {\r\n\t\t\t\t\t\twindow.setTimeout(function () {\r\n\t\t\t\t\t\t\t$('.mx-side-panel-details-view-actions .mx-horizontal-action-list--action[mx-at-id*=\"cancel\"]:not([Deleteobjects]):visible').attr('hint-key', 'x');\r\n\t\t\t\t\t\t\t$('.mx-side-panel-selection-actions .mx-horizontal-action-list--action[mx-at-id*=\"cancel\"]:not([Deleteobjects]):visible').attr('hint-key', 'x');\r\n\t\t\t\t\t\t}, 800);\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcallback: function () {\r\n\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\t$('.mx-side-panel-details-view-actions .mx-horizontal-action-list--action[mx-at-id*=\"Deleteobjects\"]:not([disabled]):visible').click();\r\n\t\t\t\t\t\t\t$('.mx-side-panel-selection-actions .mx-horizontal-action-list--action[mx-at-id*=\"Deleteobjects\"]:not([disabled]):visible').click();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t// Scope: scope,\r\n\t\t\t\t\tkey: 'alt+c',\r\n\t\t\t\t\tdescription: i18n.get('shell.mx-side-panel-actions.cancel'),\r\n\t\t\t\t\tonRegister: function () {\r\n\t\t\t\t\t\twindow.setTimeout(function () {\r\n\t\t\t\t\t\t\t$('.mx-side-panel-details-view-actions .mx-horizontal-action-list--action[mx-at-id*=\"cancel\"]').attr('hint-key', 'c');\r\n\t\t\t\t\t\t\t$('.mx-side-panel-selection-actions .mx-horizontal-action-list--action[mx-at-id*=\"cancel\"]').attr('hint-key', 'c');\r\n\t\t\t\t\t\t}, 800);\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcallback: function () {\r\n\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\t$('.mx-side-panel-details-view-actions .mx-horizontal-action-list--action[mx-at-id*=\"cancel\"]:not([disabled]):visible').click();\r\n\t\t\t\t\t\t\t$('.mx-side-panel-selection-actions .mx-horizontal-action-list--action[mx-at-id*=\"cancel\"]:not([disabled]):visible').click();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t// Scope: scope,\r\n\t\t\t\t\tkey: 'alt+d',\r\n\t\t\t\t\tdescription: i18n.get('shell.mx-side-panel-actions.done'),\r\n\t\t\t\t\tonRegister: function () {\r\n\t\t\t\t\t\twindow.setTimeout(function () {\r\n\t\t\t\t\t\t\t$('.mx-side-panel-details-view-actions .mx-horizontal-action-list--action[mx-at-id*=\"done\"]').attr('hint-key', 'd');\r\n\t\t\t\t\t\t\t$('.mx-side-panel-selection-actions .mx-horizontal-action-list--action[mx-at-id*=\"done\"]').attr('hint-key', 'd');\r\n\t\t\t\t\t\t}, 800);\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcallback: function () {\r\n\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\t$('.mx-side-panel-details-view-actions .mx-horizontal-action-list--action[mx-at-id*=\"done\"]:not([disabled]):visible').click();\r\n\t\t\t\t\t\t\t$('.mx-side-panel-selection-actions .mx-horizontal-action-list--action[mx-at-id*=\"done\"]:not([disabled]):visible').click();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t]);\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.shell').directive('mxMainContentZone', [\r\n\t\tfunction mxMainContentZoneDirective() {\r\n\t\t\tMxMainContentZoneCtrl.$inject = ['mx.shell.EventService', 'mx.shell.SideLayout', 'mx.app.DeviceService'];\r\n\r\n\t\t\tfunction MxMainContentZoneCtrl(eventService, mxSideLayout, mxDeviceService) {\r\n\t\t\t\tconst vm = this;\r\n\r\n\t\t\t\tvm.$onInit = function () {\r\n\t\t\t\t\tvm.sideLayout = mxSideLayout;\r\n\t\t\t\t\tvm.mxDeviceService = mxDeviceService;\r\n\t\t\t\t};\r\n\r\n\t\t\t\treturn vm;\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\trestrict: 'E',\r\n\t\t\t\tscope: {},\r\n\t\t\t\treplace: true,\r\n\t\t\t\tbindToController: {},\r\n\t\t\t\tcontroller: MxMainContentZoneCtrl,\r\n\t\t\t\tcontrollerAs: 'vm',\r\n\t\t\t\ttemplateUrl: 'components/mx-main-content-zone/mx-main-content-zone.html',\r\n\t\t\t};\r\n\t\t},\r\n\t]);\r\n})(window);\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc directive\r\n\t * @name mx.shell:mxRelinkEvent\r\n\t * @module mx.shell\r\n\t * @restrict 'A'\r\n\t * @description\r\n\t * Rerender transluded html content on some event\r\n\t *\r\n\t * @usage \r\n\t */\r\n\r\n\tangular.module('mx.components').directive('mxRelinkEvent', MxRelinkEvent);\r\n\r\n\tMxRelinkEvent.$inject = ['mx.shell.EventService'];\r\n\tfunction MxRelinkEvent(eventService) {\r\n\t\treturn {\r\n\t\t\ttransclude: 'element',\r\n\t\t\trestrict: 'A',\r\n\t\t\tlink: function (scope, element, attr, ctrl, transclude) {\r\n\t\t\t\tvar previousContent = null;\r\n\r\n\t\t\t\tvar triggerRelink = function () {\r\n\t\t\t\t\tif (previousContent) {\r\n\t\t\t\t\t\tpreviousContent.remove();\r\n\t\t\t\t\t\tpreviousContent = null;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttransclude(function (clone) {\r\n\t\t\t\t\t\telement.parent().append(clone);\r\n\t\t\t\t\t\tpreviousContent = clone;\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\ttriggerRelink();\r\n\t\t\t\teventService.subscribeTo(attr.mxRelinkEvent, triggerRelink, scope);\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n})();\r\n","'use strict';\r\n\r\n/**\r\n * @ngdoc component\r\n * @name mx.shell:mxShellAvatar\r\n * @module mx.shell\r\n * @description A combination of user's name, surname and avatar picture\r\n * @param {string} name= - User's name\r\n * @param {string} surname= - User's surname\r\n * @param {string} photo= - An url to user's photo/avatar\r\n * @usage \r\n */\r\n\r\nangular.module('mx.shell').component('mxShellAvatar', {\r\n\tbindings: {\r\n\t\tphoto: '<',\r\n\t\tname: '<',\r\n\t\tsurname: '<',\r\n\t},\r\n\tcontroller: MxShellAvatarCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplateUrl: 'components/mx-shell-avatar/mx-shell-avatar.html',\r\n});\r\n\r\nMxShellAvatarCtrl.$inject = ['$scope', 'mx.app.ColorService', 'mx.app.ThemeService'];\r\n\r\nfunction MxShellAvatarCtrl($scope, colorService, themeService) {\r\n\tconst vm = this;\r\n\r\n\tthemeService.getCurrentTheme().then((currentTheme) => {\r\n\t\tvm.isDark = colorService.getLightness(currentTheme['header-bg-color']) <= colorService.getLightness(currentTheme['header-icon-color']);\r\n\t});\r\n\r\n\tfunction getPhotoUrl(photo) {\r\n\t\tif (!photo || photo.toLowerCase().includes('/emptyuser')) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\tconst url = photo.split('\"').join('\\\\\"');\r\n\t\treturn `url(\"${url}\")`;\r\n\t}\r\n\r\n\t$scope.$watch('vm.photo', function (photo) {\r\n\t\tvm.photoCss = getPhotoUrl(photo);\r\n\t\tvm.alternativeAbbreviation = vm.photoCss ? '' : (((vm.name && vm.name[0]) || '') + ((vm.surname && vm.surname[0]) || '')).toUpperCase();\r\n\t});\r\n}\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc component\r\n\t * @name mx.shell:mxShellInfoPanel\r\n\t * @module mx.shell\r\n\t *\r\n\t * @description Component to show some info-widgets from infoPanelService (widgets can be added by external services)\r\n\t */\r\n\tangular.module('mx.shell').component('mxShellInfoPanel', {\r\n\t\tcontroller: MxShellInfoPanelCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplate: '
',\r\n\t});\r\n\r\n\tMxShellInfoPanelCtrl.$inject = ['mx.shell.InfoPanelService'];\r\n\r\n\tfunction MxShellInfoPanelCtrl(infoPanelService) {\r\n\t\tvar vm = this;\r\n\t\tvm.infoPanelService = infoPanelService;\r\n\r\n\t\tvm.$onInit = function () {};\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc component\r\n\t * @name mx.shell:mxShellLeftSidebar\r\n\t * @module mx.shell\r\n\t * @requires
$document\r\n\t * @requires $timeout\r\n\t * @requires $mdSidenav\r\n\t * @requires {@ref mx.internationalization mx.internationalization}\r\n\t * @requires {@ref mx.shell.NavigationService mx.shell.NavigationService}\r\n\t * @requires {@ref mx.shell.EventService mx.shell.EventService}\r\n\t * @requires {@ref mx.shell.NavigationManager mx.shell.NavigationManager}\r\n\t * @requires {@ref mx.shell.Config mx.shell.Config}\r\n\t * @requires {@ref mx.app.DeviceService mx.components.DeviceService}\r\n\t * @description\r\n\t * Side panel that contains navigation items\r\n\t * @usage \r\n\t */\r\n\r\n\tangular.module('mx.shell').component('mxShellLeftSidebar', {\r\n\t\tcontroller: MxShellLeftSidebarCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'components/mx-shell-left-sidebar/mx-shell-left-sidebar.html',\r\n\t});\r\n\r\n\tMxShellLeftSidebarCtrl.$inject = [\r\n\t\t'$timeout',\r\n\t\t'$mdSidenav',\r\n\t\t'mx.internationalization',\r\n\t\t'mx.shell.NavigationService',\r\n\t\t'mx.shell.EventService',\r\n\t\t'mx.shell.NavigationManager',\r\n\t\t'mx.shell.Config',\r\n\t\t'mx.app.DeviceService',\r\n\t\t'$document',\r\n\t\t'$scope',\r\n\t\t'$q',\r\n\t\t'$element',\r\n\t\t'$window',\r\n\t\t'mx.shell.KeyboardNavigationService',\r\n\t\t'mx.shell.LeftSidebarService',\r\n\t\t'mx.shell.InternationalizationService',\r\n\t];\r\n\r\n\tfunction MxShellLeftSidebarCtrl(\r\n\t\t$timeout,\r\n\t\t$mdSidenav,\r\n\t\ti18n,\r\n\t\tnavigationService,\r\n\t\teventService,\r\n\t\tnavigationManager,\r\n\t\tconfig,\r\n\t\tdeviceService,\r\n\t\t$document,\r\n\t\t$scope,\r\n\t\t$q,\r\n\t\t$element,\r\n\t\t$window,\r\n\t\tkeyboardNavigationService,\r\n\t\tleftSidebarService,\r\n\t\ti18nService\r\n\t) {\r\n\t\tvar vm = this;\r\n\t\tvar _cssHtmlEl;\r\n\t\tvar navbarPlaceholder;\r\n\t\tvar _enableNavResizeMode = false;\r\n\t\tvar mxShellNav;\r\n\t\tvar collapsedWidth = 0;\r\n\t\tvar minNavWidth = 200;\r\n\t\tvar HALF_DRAGSTRAP_WIDTH = 3;\r\n\r\n\t\tvar getStoredNavWidth = function () {\r\n\t\t\tvar width = localStorage && parseInt(localStorage.getItem('mxShellNavWidth'), 10);\r\n\r\n\t\t\treturn width || 220;\r\n\t\t};\r\n\r\n\t\tvar navWidth = getStoredNavWidth();\r\n\r\n\t\tvar RAF = (function () {\r\n\t\t\treturn (\r\n\t\t\t\t$window.requestAnimationFrame ||\r\n\t\t\t\t$window.webkitRequestAnimationFrame ||\r\n\t\t\t\t$window.mozRequestAnimationFrame ||\r\n\t\t\t\t$window.oRequestAnimationFrame ||\r\n\t\t\t\t$window.msRequestAnimationFrame ||\r\n\t\t\t\tfunction (callback) {\r\n\t\t\t\t\t$timeout(callback);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t})();\r\n\r\n\t\tvm.close = closeNav;\r\n\r\n\t\t// TODO: rework resizing with `mxComponent:mxResizable` somehow\r\n\t\tvm.startNavResize = startNavResize;\r\n\t\tvm.stopNavResize = stopNavResize;\r\n\r\n\t\tvm.showNavigation = true;\r\n\r\n\t\tvm.leftSidebarService = leftSidebarService;\r\n\t\tvm.NavigationManager = navigationManager;\r\n\t\tvm.deviceService = deviceService;\r\n\t\tvm.onTabClick = onTabClick;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.isVisible = true;\r\n\t\t\tinit();\r\n\t\t\tinitWatchers();\r\n\t\t\tregisterHotkeys();\r\n\t\t\tinitAria();\r\n\t\t};\r\n\r\n\t\tvm.$postLink = function () {\r\n\t\t\t$document.on('mouseup', vm.stopNavResize);\r\n\t\t};\r\n\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.shell.EventCodes.DisplayModeChanged,\r\n\t\t\tfunction (event, newMode) {\r\n\t\t\t\tvm.isVisible = newMode === mx.shell.DisplayMode.Normal;\r\n\t\t\t\tvar styleValue = vm.isVisible ? '' : '0 !important';\r\n\r\n\t\t\t\tstyleValue = 'left: ' + styleValue + '; top: ' + styleValue + ';';\r\n\t\t\t\t$('.mx-main-content-zone-container').attr('style', styleValue);\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\r\n\t\tvar _debouncedLayoutChangeDispatcher = $.debounce(500, function () {\r\n\t\t\teventService.dispatchEvent(mx.shell.EventCodes.LayoutChanged);\r\n\t\t});\r\n\r\n\t\treturn vm;\r\n\r\n\t\tfunction init() {}\r\n\r\n\t\tfunction initWatchers() {\r\n\t\t\t$scope.$watch('vm.leftSidebarService.isVisible', function (res) {\r\n\t\t\t\tif (res) {\r\n\t\t\t\t\tRAF(function () {\r\n\t\t\t\t\t\tsetNavSizes(vm.NavigationManager.collapsedMode ? collapsedWidth : navWidth);\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tremoveSizes();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t$scope.$watch('vm.NavigationManager.collapsedMode', function (newVal, oldVal) {\r\n\t\t\t\tif (vm.NavigationManager.collapsedMode !== undefined) {\r\n\t\t\t\t\tsetNavSizes(vm.NavigationManager.collapsedMode ? collapsedWidth : navWidth, true);\r\n\t\t\t\t\tvm.NavigationManager.collapsedState = vm.NavigationManager.collapsedMode;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ((!newVal && oldVal) || (newVal && !oldVal)) {\r\n\t\t\t\t\tvm.NavigationManager.__navAnimationInProgress = true;\r\n\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\tvm.NavigationManager.__navAnimationInProgress = false;\r\n\t\t\t\t\t}, 500);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t$scope.$watch('vm.NavigationManager.collapsedState', function (newVal, prevVal) {\r\n\t\t\t\tif (newVal === true && prevVal === false) {\r\n\t\t\t\t\tsetNavSizes(collapsedWidth, true);\r\n\t\t\t\t}\r\n\t\t\t\tif (newVal === false && prevVal === true) {\r\n\t\t\t\t\tsetNavSizes(navWidth, true);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction closeNav() {\r\n\t\t\t$mdSidenav('mx-shell-left-sidebar').close();\r\n\t\t}\r\n\r\n\t\tfunction startNavResize() {\r\n\t\t\tvar doc = $document[0],\r\n\t\t\t\thtml = angular.element(doc.documentElement),\r\n\t\t\t\tbody = angular.element(doc.body);\r\n\r\n\t\t\t_enableNavResizeMode = true;\r\n\t\t\t$document.on('mousemove', handleNavResize);\r\n\r\n\t\t\thtml.addClass('is-resizing');\r\n\r\n\t\t\tif (navbarPlaceholder) {\r\n\t\t\t\tnavbarPlaceholder.show();\r\n\t\t\t} else {\r\n\t\t\t\tnavbarPlaceholder = angular.element('
');\r\n\r\n\t\t\t\tnavbarPlaceholder.prependTo(body);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction stopNavResize() {\r\n\t\t\tif (!_enableNavResizeMode) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t_enableNavResizeMode = false;\r\n\t\t\t$document.off('mousemove', handleNavResize);\r\n\r\n\t\t\tif (localStorage) {\r\n\t\t\t\tlocalStorage.setItem('mxShellNavWidth', navWidth);\r\n\t\t\t}\r\n\r\n\t\t\tangular.element($document[0].documentElement).removeClass('is-resizing');\r\n\r\n\t\t\tif (navbarPlaceholder) {\r\n\t\t\t\tnavbarPlaceholder.trigger('mouseleave').hide();\r\n\t\t\t}\r\n\r\n\t\t\tsetNavSizes(navWidth, vm.NavigationManager.collapsedMode);\r\n\t\t}\r\n\r\n\t\tfunction handleNavResize(event) {\r\n\t\t\tif (!_enableNavResizeMode) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar windowWidth = mx.components.Utils.windowSize().width;\r\n\r\n\t\t\tvar minWidth = minNavWidth;\r\n\t\t\tvar maxWidth = windowWidth;\r\n\r\n\t\t\tRAF(function () {\r\n\t\t\t\tconst logicalClientX = i18nService.currentLanguage.isRightToLeft ? windowWidth - event.clientX : event.clientX;\r\n\t\t\t\tnavWidth = logicalClientX - HALF_DRAGSTRAP_WIDTH;\r\n\t\t\t\tif (navWidth > maxWidth) {\r\n\t\t\t\t\tnavWidth = maxWidth;\r\n\t\t\t\t}\r\n\t\t\t\tif (navWidth < minWidth) {\r\n\t\t\t\t\tnavWidth = minWidth;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnavbarPlaceholder.css({ width: navWidth + 2 * HALF_DRAGSTRAP_WIDTH });\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// TODO: debug why this method is called times on app init and switching Navigation (open/closed)\r\n\t\tfunction setNavSizes(navWidth, useAnimation) {\r\n\t\t\tvar navWidthCss = navWidth + 'px';\r\n\t\t\tvar cssHtml;\r\n\r\n\t\t\tmxShellNav = mxShellNav && mxShellNav[0] ? mxShellNav : $('.mx-shell-left-sidebar');\r\n\r\n\t\t\tif (mxShellNav[0]) {\r\n\t\t\t\tmxShellNav.css({\r\n\t\t\t\t\t'max-width': navWidthCss,\r\n\t\t\t\t\t'min-width': navWidthCss,\r\n\t\t\t\t\twidth: navWidthCss,\r\n\t\t\t\t\ttransition: useAnimation ? '' : 'initial',\r\n\t\t\t\t});\r\n\r\n\t\t\t\tcssHtml = '.mx-shell-left-nav-left-offset {' + 'left: ' + (vm.leftSidebarService.isVisible ? navWidthCss : '0') + ' !important;' + '}';\r\n\r\n\t\t\t\tif (_cssHtmlEl && _cssHtmlEl[0]) {\r\n\t\t\t\t\t_cssHtmlEl.html(cssHtml);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$('head').append('');\r\n\t\t\t\t\t_cssHtmlEl = $('#mx-shell-nav-styles');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t_debouncedLayoutChangeDispatcher();\r\n\t\t}\r\n\r\n\t\tfunction removeSizes() {\r\n\t\t\t$('#mx-shell-nav-styles').remove();\r\n\t\t}\r\n\r\n\t\tfunction onTabClick(panel) {\r\n\t\t\tleftSidebarService.showPanel(panel, true);\r\n\t\t}\r\n\r\n\t\tfunction registerHotkeys() {\r\n\t\t\tkeyboardNavigationService.registerKey({\r\n\t\t\t\tcallback: $.throttle(300, function () {\r\n\t\t\t\t\t$scope.$evalAsync(function () {\r\n\t\t\t\t\t\tvm.NavigationManager.collapsedMode = !vm.NavigationManager.collapsedMode;\r\n\t\t\t\t\t});\r\n\t\t\t\t}),\r\n\t\t\t\tdescription: i18n.get('shell.mx-shell-nav.toggleSidebar'),\r\n\t\t\t\tkey: 'alt+/',\r\n\t\t\t\tnameInTemplate: 'sidebarHint',\r\n\t\t\t\tscope: $scope,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction initAria() {\r\n\t\t\tsetTimeout(() => $element.find('md-tabs-canvas, md-tab-item').attr('tabindex', '-1'), 500);\r\n\t\t}\r\n\t}\r\n})();\r\n","const { EventCodes } = require('../../../../App/model/event-codes');\r\n\r\nMxShellOperationMonitorController.$inject = [\r\n\t'$timeout',\r\n\t'mx.internationalization',\r\n\t'mx.shell.BackgroundProcessesService',\r\n\t'mx.shell.SidebarService',\r\n\t'mx.shell.View',\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.AppsService',\r\n\t'$scope',\r\n];\r\n\r\nfunction MxShellOperationMonitorController($timeout, i18n, backgroundProcesses, sidebarService, MxView, eventService, appsService, $scope) {\r\n\tconst vm = this;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvm.service = backgroundProcesses;\r\n\t\tvm.openBackgroundProcesses = openBackgroundProcesses;\r\n\t\tvm.isReloadingRequired = false;\r\n\r\n\t\t// TODO: temporary solution, sidebar needs to have stack design\r\n\t\tvm._sidebarCurrentView = null;\r\n\t\tvm._sidebarCurrentButtons = null;\r\n\t};\r\n\r\n\teventService.subscribeTo(\r\n\t\tEventCodes.ForegroundProcessCreated,\r\n\t\tfunction (_, process) {\r\n\t\t\tconst currentApp = appsService.getCurrentApplicationSync();\r\n\t\t\tif (currentApp?.showOperationMonitor && process.longRunning) {\r\n\t\t\t\tvm.openBackgroundProcesses();\r\n\t\t\t}\r\n\t\t},\r\n\t\t$scope\r\n\t);\r\n\r\n\treturn vm;\r\n\r\n\tfunction openBackgroundProcesses() {\r\n\t\tif (sidebarService.view && sidebarService.view.id === '__background_processes_view__') {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvm._sidebarCurrentView = sidebarService.view;\r\n\t\tvm._sidebarCurrentButtons = sidebarService.additionalButtons;\r\n\r\n\t\tconst backgroundProcessesView = new MxView({\r\n\t\t\tcontroller: [\r\n\t\t\t\t'$element',\r\n\t\t\t\tfunction ($element) {\r\n\t\t\t\t\tonShow();\r\n\t\t\t\t\t$element.on('$destroy', onClose);\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t\tid: '__background_processes_view__',\r\n\t\t\tname: i18n.get('shell.mx-shell-background-processes.operations-in-process'),\r\n\t\t\ttemplate: '',\r\n\t\t});\r\n\r\n\t\tsidebarService.open(backgroundProcessesView);\r\n\t}\r\n\r\n\tfunction onShow() {\r\n\t\tvm.isReloadingRequired = true;\r\n\t\tvm.service.reloadOnAdd = true;\r\n\t\treload();\r\n\t}\r\n\r\n\tfunction reload() {\r\n\t\tif (vm.isReloadingRequired) {\r\n\t\t\tvm.service.loadBackgroundProcesses();\r\n\t\t\t$timeout(reload, 10000);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction onClose() {\r\n\t\tvm.isReloadingRequired = false;\r\n\t\tvm.service.reloadOnAdd = false;\r\n\t\tif (vm._sidebarCurrentView) {\r\n\t\t\tsidebarService.open(vm._sidebarCurrentView, vm._sidebarCurrentButtons);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nangular.module('mx.components').component('mxShellOperationMonitor', {\r\n\tcontroller: MxShellOperationMonitorController,\r\n\tcontrollerAs: 'vm',\r\n\ttemplateUrl: 'components/mx-shell-operation-monitor/mx-shell-operation-monitor.html',\r\n});\r\n","(function (w) {\r\n\t'use strict';\r\n\r\n\tfunction mxSearchHotkeysManager() {\r\n\t\tvar listItemSelected, listItems;\r\n\t\tvar search;\r\n\t\tvar elements = {\r\n\t\t\tgetListItems: function () {\r\n\t\t\t\treturn elements.list.find('md-list-item');\r\n\t\t\t},\r\n\t\t\tgetSelectedListItem: function () {\r\n\t\t\t\treturn elements.list.find('md-list-item.selected');\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tvar handle = {\r\n\t\t\t// Arrow down\r\n\t\t\t40: handleArrowDown,\r\n\t\t\t// Arrow up\r\n\t\t\t38: handleArrowUp,\r\n\t\t\t// Tab\r\n\t\t\t9: handleTab,\r\n\t\t\t// Arrow right\r\n\t\t\t39: handleArrowRight,\r\n\t\t\t// Enter\r\n\t\t\t13: handleEnter,\r\n\t\t\t// Backspace\r\n\t\t\t8: handleBackspace,\r\n\t\t\t// Esc\r\n\t\t\t27: handleEsc,\r\n\t\t};\r\n\r\n\t\treturn { init: init };\r\n\r\n\t\tfunction init(s, $element) {\r\n\t\t\tsearch = s;\r\n\r\n\t\t\telements.searchPanel = $element.find('.mx-search__panel');\r\n\t\t\telements.list = $element.find('.mx-search__list');\r\n\t\t\telements.input = $element.find('md-input-container input');\r\n\r\n\t\t\tif (search) {\r\n\t\t\t\telements.searchPanel.bind('keydown', function (event) {\r\n\t\t\t\t\tif (handle.hasOwnProperty(event.which)) {\r\n\t\t\t\t\t\thandle[event.which]();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\telements.input.bind('keyup', handleInput);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction handleInput(event) {\r\n\t\t\tswitch (event.which) {\r\n\t\t\t\tcase 40:\r\n\t\t\t\tcase 38:\r\n\t\t\t\tcase 9:\r\n\t\t\t\tcase 39:\r\n\t\t\t\tcase 27:\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 13:\r\n\t\t\t\t\thandleEnter();\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction handleArrowDown() {\r\n\t\t\tlistItemSelected = elements.getSelectedListItem();\r\n\t\t\tlistItems = elements.getListItems();\r\n\r\n\t\t\tif (listItemSelected.length !== 0) {\r\n\t\t\t\tlistItemSelected.removeClass('selected');\r\n\t\t\t\tvar nextItem = listItemSelected.nextAll('md-list-item').eq(0);\r\n\r\n\t\t\t\tif (nextItem.length > 0) {\r\n\t\t\t\t\tlistItemSelected = nextItem.addClass('selected');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlistItemSelected = listItems.eq(0).addClass('selected');\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tlistItemSelected = listItems.eq(0).addClass('selected');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction handleArrowUp() {\r\n\t\t\tlistItemSelected = elements.getSelectedListItem();\r\n\t\t\tlistItems = elements.getListItems();\r\n\r\n\t\t\tif (listItemSelected.length !== 0) {\r\n\t\t\t\tlistItemSelected.removeClass('selected');\r\n\t\t\t\tvar prevItem = listItemSelected.prevAll('md-list-item').eq(0);\r\n\r\n\t\t\t\tif (prevItem.length > 0) {\r\n\t\t\t\t\tlistItemSelected = prevItem.addClass('selected');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlistItemSelected = listItems.last().addClass('selected');\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tlistItemSelected = listItems.last().addClass('selected');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction handleArrowRight() {\r\n\t\t\t_handleSelection();\r\n\t\t\tif (listItemSelected.length === 0 && search.searchText === '') {\r\n\t\t\t\tlistItems = elements.getListItems();\r\n\t\t\t\tlistItemSelected = listItems.eq(0).addClass('selected');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction handleTab() {\r\n\t\t\t_handleSelection();\r\n\t\t\tif (listItemSelected.length === 0) {\r\n\t\t\t\tlistItems = elements.getListItems();\r\n\t\t\t\tlistItemSelected = listItems.eq(0).addClass('selected');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction handleEnter() {\r\n\t\t\t_handleSelection();\r\n\t\t\tif (listItemSelected.length === 0) {\r\n\t\t\t\tsearch.performSearch();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction handleBackspace() {}\r\n\r\n\t\tfunction handleEsc() {\r\n\t\t\tif (search.searchText) {\r\n\t\t\t\tsearch.clearInput();\r\n\t\t\t} else {\r\n\t\t\t\tsearch.close();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction _handleSelection() {\r\n\t\t\tlistItemSelected = elements.getSelectedListItem();\r\n\t\t\tif (listItemSelected.length !== 0) {\r\n\t\t\t\tlistItemSelected.find('.md-button button').click();\r\n\t\t\t\tlistItemSelected.removeClass('selected');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tw.mx = w.mx || {};\r\n\tw.mx.shell = w.mx.shell || {};\r\n\tw.mx.shell.SearchHotkeysManager = mxSearchHotkeysManager;\r\n})(window);\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc component\r\n\t * @name mx.shell:mxShellNavItem\r\n\t * @module mx.shell\r\n\t * @requires $rootScope\r\n\t * @requires $scope\r\n\t * @requires $document\r\n\t * @requires {@ref mx.shell.SidebarService mx.shell.SidebarService}\r\n\t * @requires {@ref mx.shell.EventService mx.shell.EventService}\r\n\t * @description\r\n\t * Sidebar control\r\n\t * @usage \r\n\t */\r\n\r\n\tangular.module('mx.shell').component('mxShellSidebar', {\r\n\t\tcontroller: MxShellSidebarCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'components/mx-shell-sidebar/mx-shell-sidebar.html',\r\n\t});\r\n\r\n\tMxShellSidebarCtrl.$inject = ['$rootScope', '$scope', '$document', '$element', 'mx.shell.SidebarService', 'mx.shell.EventService'];\r\n\r\n\tfunction MxShellSidebarCtrl($rootScope, $scope, $document, $element, sidebarService, eventService) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.sidebarService = sidebarService;\r\n\t\t\tvm.additionalButtonClick = additionalButtonClick;\r\n\t\t\tvm.hintKey = '⇑+r';\r\n\t\t};\r\n\r\n\t\tvm._debouncedLayoutChangeDispatcher = $.debounce(500, function () {\r\n\t\t\teventService.dispatchEvent(mx.shell.EventCodes.LayoutChanged);\r\n\t\t});\r\n\r\n\t\t$rootScope.$on('$locationChangeSuccess', function () {\r\n\t\t\tvm.sidebarService.close();\r\n\t\t});\r\n\r\n\t\tfunction additionalButtonClick(name) {\r\n\t\t\tvm.sidebarService.show();\r\n\t\t\teventService.dispatchEvent(mx.shell.EventCodes.SidenavAdditionalButtonClick, { name: name });\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc controller\r\n\t * @name mx.shell.Controller\r\n\t * @module mx.shell\r\n\t *\r\n\t * @description\r\n\t * The controller to associate with a Item-Chooser located on the toolbar\r\n\t * @requires {@ref mx.shell.AppsService mx.shell.AppsService}\r\n\t */\r\n\r\n\tangular.module('mx.shell').controller('mx.shell.ToolbarAppSwitcherController', [\r\n\t\t'$scope',\r\n\t\t'mx.shell.AppsService',\r\n\t\tfunction mxToolbarAppSwitcherController($scope, appsService) {\r\n\t\t\t// eslint-disable-next-line angular/controller-as\r\n\t\t\t$scope.items = _.map(appsService.getApplications(), function (app) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\t$at_id: app.name,\r\n\t\t\t\t\t$at_type: 'application_switcher',\r\n\t\t\t\t\tname: app.title,\r\n\t\t\t\t\ticon: app.icon,\r\n\t\t\t\t\texecute: app.onItemClick,\r\n\t\t\t\t\tisFocused: app.isChecked,\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t},\r\n\t]);\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.shell').component('mxShellUserMenu', {\r\n\t\tbindings: { isMobile: '@' },\r\n\t\tcontroller: MxShellUserMenuCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'components/mx-shell-user-menu/mx-shell-user-menu.html',\r\n\t});\r\n\r\n\tMxShellUserMenuCtrl.$inject = ['mx.shell.ToolbarManager', '$mdSidenav', '$scope'];\r\n\r\n\tfunction MxShellUserMenuCtrl(ToolbarManager, $mdSidenav, $scope) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.ToolbarManager = ToolbarManager;\r\n\t\t};\r\n\r\n\t\tvm.processItemClick = function (item) {\r\n\t\t\tif (vm.isMobile) {\r\n\t\t\t\t$mdSidenav('mx-shell-left-sidebar').close();\r\n\t\t\t}\r\n\t\t\titem.onItemClick();\r\n\t\t};\r\n\r\n\t\t$scope.$on('$mdMenuOpen', function () {\r\n\t\t\tvm.__isOpened = true;\r\n\t\t});\r\n\r\n\t\t$scope.$on('$mdMenuClose', function () {\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tvm.__isOpened = false;\r\n\t\t\t}, 10);\r\n\t\t});\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc directive\r\n\t * @name mx.shell:mxSideLayout\r\n\t * @module mx.shell\r\n\t * @restrict 'E'\r\n\t * @scope {}\r\n\t * @requires {@ref mx.shell.SideLayout mx.shell.SideLayout}\r\n\t * @description An aside panel, a placeholder that can be used for some details information\r\n\t * @usage Some transcluded html\r\n\t */\r\n\tangular.module('mx.shell').directive('mxSideLayout', function mxSideLayoutDirective() {\r\n\t\tMxSideLayoutCtrl.$inject = ['mx.shell.SideLayout'];\r\n\r\n\t\tfunction MxSideLayoutCtrl(mxSideLayout) {\r\n\t\t\tvar vm = this;\r\n\r\n\t\t\tvm.$onInit = function () {\r\n\t\t\t\tvm.mxSideLayout = mxSideLayout;\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\trestrict: 'E',\r\n\t\t\tscope: {},\r\n\t\t\tbindToController: {},\r\n\t\t\tcontroller: MxSideLayoutCtrl,\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t\treplace: true,\r\n\t\t\ttemplateUrl: 'components/mx-side-layout/mx-side-layout.html',\r\n\t\t};\r\n\t});\r\n})();\r\n","/**\r\n * @ngdoc component\r\n * @name mx.shell:mxToolbarActions\r\n * @module mx.shell\r\n * @requires {@ref mx.shell.ActionManagerService mx.shell.ActionManagerService}\r\n * @requires $scope\r\n * @description\r\n * A toolbar that contains a set of {@ref mx.shell:mxAction action buttons}.
\r\n */\r\n\r\nangular.module('mx.shell').component('mxToolbarActions', {\r\n\tbindings: {},\r\n\tcontroller: MxToolbarActionsCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplateUrl: 'components/mx-toolbar-actions/mx-toolbar-actions.html',\r\n});\r\n\r\nMxToolbarActionsCtrl.$inject = ['mx.shell.ActionManagerService', 'mx.shell.EventService', 'mx.shell.ContextService', '$scope'];\r\n\r\nfunction MxToolbarActionsCtrl(actionManagerService, eventService, contextService, $scope) {\r\n\tconst vm = this;\r\n\tconst actionTypes = [mx.shell.ActionContextType.None, mx.shell.ActionContextType.Single, mx.shell.ActionContextType.Multiple];\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvm.selectedObjects = [];\r\n\t\tif (contextService.selectedObjects) {\r\n\t\t\t_handleObjectSelectionChanged(null, contextService.selectedObjects);\r\n\t\t}\r\n\t\tif (!contextService.actionsContext) {\r\n\t\t\tcontextService.actionsContext = new mx.shell.ActionsContext([], [], mx.shell.ActionUiZone.Application);\r\n\t\t} else {\r\n\t\t\tif (contextService.actionsContext.uiZone === mx.shell.ActionUiZone.Application) {\r\n\t\t\t\tsetActionsContext(contextService.actionsContext);\r\n\t\t\t} else {\r\n\t\t\t\tsetActionsContext(new mx.shell.ActionsContext([], [], mx.shell.ActionUiZone.Application));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\teventService.subscribeTo(mx.shell.EventCodes.ActionsContextChanged, (eventObj, context) => setActionsContext(context), $scope);\r\n\r\n\teventService.subscribeTo(mx.shell.EventCodes.ObjectSelectionChanged, _handleObjectSelectionChanged, $scope);\r\n\teventService.subscribeTo(\r\n\t\tmx.shell.EventCodes.SidePanelCurrentViewChanged,\r\n\t\tfunction (eventObj, view) {\r\n\t\t\tif (view) {\r\n\t\t\t\t_handleObjectSelectionChanged(eventObj, view.context ? [view.context] : [{ _type: view.type }]);\r\n\t\t\t}\r\n\t\t},\r\n\t\t$scope\r\n\t);\r\n\r\n\tfunction setActionsContext(context) {\r\n\t\tif (context && context.uiZone === mx.shell.ActionUiZone.Application) {\r\n\t\t\tactionManagerService\r\n\t\t\t\t.getActions(context, actionTypes, vm.selectedObjects)\r\n\t\t\t\t.then(function (actions) {\r\n\t\t\t\t\treturn actionManagerService.filterActions(actions);\r\n\t\t\t\t})\r\n\t\t\t\t.then(function (filteredActions) {\r\n\t\t\t\t\tvm.actions = filteredActions;\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction _handleObjectSelectionChanged(e, objectsCollection) {\r\n\t\tlet objectTypes = [];\r\n\r\n\t\tlet selectedItems = [];\r\n\r\n\t\tif (Array.isArray(objectsCollection)) {\r\n\t\t\tselectedItems = objectsCollection;\r\n\t\t} else {\r\n\t\t\tobjectsCollection.objects = objectsCollection.objects || [];\r\n\t\t\tif (objectsCollection.objects.length > 0) {\r\n\t\t\t\tselectedItems = objectsCollection.objects;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (selectedItems.length > 0) {\r\n\t\t\tobjectTypes = selectedItems\r\n\t\t\t\t// Get array of types\r\n\t\t\t\t.map(function (item) {\r\n\t\t\t\t\treturn item._type;\r\n\t\t\t\t})\r\n\t\t\t\t// Filter just unique types\r\n\t\t\t\t.filter(function (_type, i, newArr) {\r\n\t\t\t\t\treturn _type && _type !== 'undefined' && newArr.indexOf(_type) === i;\r\n\t\t\t\t});\r\n\r\n\t\t\tif (objectTypes.length > 0) {\r\n\t\t\t\tvm.selectedObjects = selectedItems;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc directive\r\n\t * @name mx.shell:mxView\r\n\t * @module mx.shell\r\n\t * @restrict 'A'\r\n\t * @scope {}\r\n\t * @requires $element\r\n\t * @requires $mdCompiler\r\n\t * @requires $rootScope\r\n\t * @description A directive, main purpose of which is to render and show instance of {@ref mx.shell.View mx.shell.View} or derived types\r\n\t * @usage
\r\n\t */\r\n\tangular.module('mx.shell').directive('mxView', function mxViewDirective() {\r\n\t\tViewController.$inject = ['$scope', '$element', '$mdCompiler'];\r\n\r\n\t\tfunction ViewController($scope, $element, $mdCompiler) {\r\n\t\t\tvar vm = this;\r\n\t\t\tvar currentScope;\r\n\r\n\t\t\t$scope.$watch('vm.mxView', function () {\r\n\t\t\t\tif (vm.mxView) {\r\n\t\t\t\t\tinit();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfunction init() {\r\n\t\t\t\t// TODO: Why do we need `initView` at all here ???\r\n\t\t\t\tif (typeof vm.mxView.initView === 'function') {\r\n\t\t\t\t\t// TODO: What `vm.mxView.locals.selectedObjects` is doing inside `mxView` ???\r\n\t\t\t\t\t// TODO: Why don't do it inside of corresponding control??? or at least inside of Wizard View ???\r\n\t\t\t\t\tvm.mxView.initView(vm.mxView.locals.selectedObjects).then(function (newData) {\r\n\t\t\t\t\t\tvm.mxView.locals = angular.extend(vm.mxView.locals, newData);\r\n\t\t\t\t\t\tcompileView();\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcompileView();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction compileView() {\r\n\t\t\t\tif (currentScope) {\r\n\t\t\t\t\tcurrentScope.$destroy();\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$mdCompiler.compile(vm.mxView).then(function (compileData) {\r\n\t\t\t\t\tcurrentScope = $scope.$new(true);\r\n\r\n\t\t\t\t\t$element.html(compileData.element);\r\n\t\t\t\t\tcompileData.link(currentScope);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\trestrict: 'A',\r\n\t\t\tscope: {},\r\n\t\t\tbindToController: { mxView: '<' },\r\n\t\t\tcontroller: ViewController,\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t};\r\n\t});\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc component\r\n\t * @name mx.shell:mxWizardRoadmap\r\n\t * @module mx.shell\r\n\t * @description\r\n\t * Directive that represents wizard's roadmap.\r\n\t * @param {mx.shell.Wizard} wizard= - A wizard object that should be mapped to directive\r\n\t * @usage \r\n\t */\r\n\r\n\tangular.module('mx.shell').component('mxWizardRoadmap', {\r\n\t\tbindings: { wizard: '=' },\r\n\t\tcontroller: WizardRoadmapController,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'components/mx-wizard/mx-wizard-roadmap.html',\r\n\t});\r\n\r\n\tWizardRoadmapController.$inject = ['$scope'];\r\n\r\n\tfunction WizardRoadmapController($scope) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.roadmap = vm.wizard.roadmap;\r\n\t\t};\r\n\r\n\t\t$scope.$watchGroup(['vm.wizard.allWizardSteps.length', 'vm.wizard.currentStep'], updateSteps);\r\n\r\n\t\tfunction updateSteps() {\r\n\t\t\tvm.steps = vm.wizard.allWizardSteps.map(function (step) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tActive: step.isCurrent ? true : undefined,\r\n\t\t\t\t\tTitle: step.title,\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc component\r\n\t *\r\n\t * @name mx.shell:mxWizard\r\n\t *\r\n\t * @module mx.shell\r\n\t *\r\n\t * @requires {@ref mx.shell.EventService mx.shell.EventService}\r\n\t * @requires $scope\r\n\t *\r\n\t * @description\r\n\t * Directive that represents a wizard itself.\r\n\t *\r\n\t * @param {mx.shell.Wizard} wizard= - A wizard object that should be mapped to directive\r\n\t * @param {function} onClose= - A function to be called after wizard is successfully finished or cancelled\r\n\t *\r\n\t * @usage \r\n\t */\r\n\r\n\tangular.module('mx.shell').component('mxWizard', {\r\n\t\ttransclude: true,\r\n\t\tbindings: {\r\n\t\t\twizard: '=',\r\n\t\t\ttoBeValidated: '@',\r\n\t\t\tisLazy: '' + vm.wizard.contextDescription + '';\r\n\r\n\t\t\t\t\tvm.wizardHeaderText = i18n.getFormatted('shell.wizard.headerTemplate', roadmapTitle, link);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvm.wizardHeaderText = i18n.getFormatted('shell.wizard.emptyHeaderTemplate', roadmapTitle);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tvm.wizardHeaderText = vm.wizardCustomHeader;\r\n\t\t\t}\r\n\r\n\t\t\tif (vm.toBeValidated === 'true') {\r\n\t\t\t\tvm.wizardState = vm.validationState.Validating;\r\n\t\t\t\teventService.subscribeTo(\r\n\t\t\t\t\tmx.shell.EventCodes.ToggleWizardEnabled,\r\n\t\t\t\t\tfunction (e, state) {\r\n\t\t\t\t\t\tif (vm.wizard !== state.wizard) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (!state.enabled) {\r\n\t\t\t\t\t\t\tvm.wizardState = vm.validationState.Failed;\r\n\t\t\t\t\t\t\tvm.wizardInvalidMessage = state.message || i18n.get('shell.wizard.invalidDefaultMessage');\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tvm.wizardState = vm.validationState.Ok;\r\n\t\t\t\t\t\t\tvm.wizardInvalidMessage = '';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t$scope\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tvm.wizardState = vm.validationState.Ok;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t$scope.$watchGroup(['vm.wizard.allWizardSteps.length', 'vm.wizard.currentStep'], updatePageTitleText);\r\n\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.shell.EventCodes.SideLayoutWideModeSwitched,\r\n\t\t\tfunction (e, isWideMode) {\r\n\t\t\t\tvm.isWideMode = isWideMode && vm.wizard.allWizardPages.length > 1;\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.shell.EventCodes.WizardClose,\r\n\t\t\tfunction (e, data) {\r\n\t\t\t\tif (vm.wizard === data.wizard && vm.onClose && typeof vm.onClose === 'function') {\r\n\t\t\t\t\tvm.onClose();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\r\n\t\tvm.goToPreviousPage = function () {\r\n\t\t\tvar keys = Object.keys($scope.wizardForm);\r\n\r\n\t\t\tvm.wizard.goToPreviousPage();\r\n\r\n\t\t\t$timeout(function () {\r\n\t\t\t\tkeys.forEach(function (key) {\r\n\t\t\t\t\tif ($scope.wizardForm[key] && $scope.wizardForm[key].$validate && !$scope.wizardForm[key].$valid) {\r\n\t\t\t\t\t\tdelete $scope.wizardForm[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t$scope.wizardForm.$error = {};\r\n\t\t\t\t$scope.wizardForm.$invalid = false;\r\n\t\t\t\t$scope.wizardForm.$valid = true;\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tvm.showContextDetails = function ($event) {\r\n\t\t\tvar targetIsLink = (($event.target || {}).tagName || '').toLowerCase() === 'a';\r\n\r\n\t\t\tif (targetIsLink) {\r\n\t\t\t\tvm.wizard.displayContextFn();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvm.externalValidatorsPass = function () {\r\n\t\t\tvar isValid = true;\r\n\t\t\tvm.__externalValidators.forEach(function (validatingFn) {\r\n\t\t\t\tisValid = isValid === true ? validatingFn() : isValid;\r\n\t\t\t});\r\n\t\t\treturn isValid;\r\n\t\t};\r\n\r\n\t\tfunction updatePageTitleText() {\r\n\t\t\tif (vm.wizard.allWizardPages.length > 1) {\r\n\t\t\t\tvm.pageTitleText = i18n.getFormatted('shell.wizard.pageTitleTemplate', vm.wizard.currentStep + 1, vm.wizard.allWizardSteps.length, vm.wizard.currentPage.title);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction registerHotkeys() {\r\n\t\t\tkeyboardNavigationService.registerKey([\r\n\t\t\t\t{\r\n\t\t\t\t\tscope: $scope,\r\n\t\t\t\t\tkey: 'alt+>',\r\n\t\t\t\t\tnameInTemplate: 'nextHint',\r\n\t\t\t\t\tdescription: i18n.get('shell.mx-wizard.next'),\r\n\t\t\t\t\tcallback: function () {\r\n\t\t\t\t\t\tif (vm.wizard.currentPage.buttons.next.isDisabled || $scope.wizardForm.$invalid) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvm.wizard.goToNextPage();\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tscope: $scope,\r\n\t\t\t\t\tkey: 'alt+<',\r\n\t\t\t\t\tnameInTemplate: 'previousHint',\r\n\t\t\t\t\tdescription: i18n.get('shell.mx-wizard.previous'),\r\n\t\t\t\t\tcallback: function () {\r\n\t\t\t\t\t\tif (vm.wizard.currentPage.buttons.back.isDisabled) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvm.wizard.goToPreviousPage();\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tscope: $scope,\r\n\t\t\t\t\tkey: 'alt+c',\r\n\t\t\t\t\tnameInTemplate: 'cancelHint',\r\n\t\t\t\t\tdescription: i18n.get('shell.mx-wizard.cancel'),\r\n\t\t\t\t\tcallback: function () {\r\n\t\t\t\t\t\tif (vm.wizard.currentPage.buttons.cancel && vm.wizard.currentPage.buttons.cancel.isDisabled) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvm.wizard.cancelWizard();\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tscope: $scope,\r\n\t\t\t\t\tkey: 'alt+s',\r\n\t\t\t\t\tnameInTemplate: 'finishHint',\r\n\t\t\t\t\tdescription: i18n.get('shell.mx-wizard.finish'),\r\n\t\t\t\t\tcallback: function () {\r\n\t\t\t\t\t\tif (vm.wizard.currentPage.buttons.finish.isDisabled || $scope.wizardForm.$invalid) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvm.wizard.finishWizard();\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t]);\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.shell').controller('mx.shell.PageNotFoundController', function pageNotFoundController() {\r\n\t\tconst vm = this;\r\n\r\n\t\tvm.attemptUrl = window.location.href;\r\n\t});\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.shell').controller('mx.shell.UnauthorizedPageController', function unauthorizedPageController() {});\r\n})();\r\n","(function (wnd) {\r\n\t'use strict';\r\n\r\n\twnd.mx = wnd.mx || {};\r\n\twnd.mx.shell = wnd.mx.shell || {};\r\n\r\n\t/**\r\n\t * @ngdoc enum\r\n\t * @name mx.shell.DisplayMode\r\n\t * @module mx.shell\r\n\t *\r\n\t * @description\r\n\t * Represents a set of predefined application display modes.\r\n\t */\r\n\twnd.mx.shell.DisplayMode = {\r\n\t\t/**\r\n\t\t * @ngdoc property\r\n\t\t * @name mx.shell.DisplayMode#BigScreen\r\n\t\t */\r\n\t\tBigScreen: 1,\r\n\r\n\t\t/**\r\n\t\t * @ngdoc property\r\n\t\t * @name mx.shell.DisplayMode#Normal\r\n\t\t */\r\n\t\tNormal: 0,\r\n\t};\r\n})(window);\r\n","(function (w) {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc type\r\n\t * @name mx.shell.HttpMethod\r\n\t * @module mx.shell\r\n\t *\r\n\t * @description\r\n\t * Codes of http methods\r\n\t */\r\n\r\n\tfunction MxHttpMethod() {\r\n\t\tthis.None = 0;\r\n\t\tthis.Get = 1;\r\n\t\tthis.Post = 2;\r\n\t\tthis.Put = 3;\r\n\t\tthis.Delete = 4;\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc type\r\n\t * @name mx.shell.HttpMethod#find\r\n\t * @module mx.shell\r\n\t *\r\n\t * @param {string|number} value - name or value of http method\r\n\t * @description\r\n\t * Get http method code by name or valuemx.shell.ObjectPropertyType\r\n\t *\r\n\t */\r\n\tMxHttpMethod.prototype.find = function (value) {\r\n\t\tvar self = this;\r\n\r\n\t\tif (typeof value === 'number') {\r\n\t\t\treturn value;\r\n\t\t} else if (typeof value === 'string' && value.length === 1) {\r\n\t\t\treturn Number(value);\r\n\t\t}\r\n\r\n\t\tvalue = (value || '').toUpperCase();\r\n\t\tswitch (value) {\r\n\t\t\tcase 'GET':\r\n\t\t\t\treturn self.Get;\r\n\r\n\t\t\tcase 'POST':\r\n\t\t\t\treturn self.Post;\r\n\r\n\t\t\tcase 'PUT':\r\n\t\t\t\treturn self.Put;\r\n\r\n\t\t\tcase 'DELETE':\r\n\t\t\t\treturn self.Delete;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\treturn self.None;\r\n\t\t}\r\n\t};\r\n\r\n\tw.mx = w.mx || {};\r\n\tw.mx.shell = w.mx.shell || {};\r\n\tw.mx.shell.HttpMethod = new MxHttpMethod();\r\n})(window);\r\n","'use strict';\r\n\r\n/**\r\n * @ngdoc type\r\n * @name mx.shell.SearchContext\r\n * @module mx.shell\r\n *\r\n * @description\r\n * An object containing search context information (Search context model)\r\n * Constructor accepts options object that may contain properties values like:\r\n * ```javascript\r\n\t var options = {\r\n\t name: 'some name',\r\n\t title: 'some title',\r\n\t routeName: 'route name',\r\n\t parameters: {}\r\n\t };\r\n\t var context = new mx.shell.SearchContext(options);\r\n * ```\r\n\r\n * @property {string} name - Gets or sets name of the context. Default: ''\r\n * @property {string} title - Gets or sets title (display name) of the context. Default: ''\r\n * @property {string} routeName - Gets or sets route name for the context or route Url. Default: ''\r\n * @property {object} parameters - Search parameters object that contains data like columns definition etc. May vary for different applications. Default: {}\r\n */\r\nfunction MxSearchContext(options) {\r\n\tObject.defineProperty(this, 'name', {\r\n\t\tenumerable: true,\r\n\t\twritable: true,\r\n\t\tvalue: options.name || '',\r\n\t});\r\n\tObject.defineProperty(this, 'title', {\r\n\t\tenumerable: true,\r\n\t\twritable: true,\r\n\t\tvalue: options.title || '',\r\n\t});\r\n\tObject.defineProperty(this, 'routeName', {\r\n\t\tenumerable: true,\r\n\t\twritable: true,\r\n\t\tvalue: options.routeName || '',\r\n\t});\r\n\tObject.defineProperty(this, 'parameters', {\r\n\t\tenumerable: true,\r\n\t\twritable: true,\r\n\t\tvalue: options.parameters || {},\r\n\t});\r\n\r\n\tObject.defineProperty(this, 'showInGlobalSearch', {\r\n\t\tenumerable: true,\r\n\t\twritable: true,\r\n\t\tvalue: !!(options.showInGlobalSearch === undefined || options.showInGlobalSearch),\r\n\t});\r\n}\r\n\r\nwindow.mx = window.mx || {};\r\nwindow.mx.shell = window.mx.shell || {};\r\nwindow.mx.shell.SearchContext = MxSearchContext;\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc type\r\n\t * @name mx.shell.WizardButton\r\n\t * @module mx.shell\r\n\t *\r\n\t * @description\r\n\t * Type that contains ultimate information about wizard page.\r\n\t * A constructor accepts `title`, `isVisible` and `callback` parameters that may contain fields to extend corresponding properties. Created like:\r\n\t * ```javascript\r\n\t var button = new MxWizardButton('Next', true, callbackFunction);\r\n\t * ```\r\n\t *\r\n\t * @property {string} title - Gets or sets wizard's title.
Default value is `to be titled`\r\n\t * @property {boolean} isVisible - Gets or sets button's visibility.
Default value is `true`\r\n\t * @property {function} callback - A function to be called when button is pressed. Wizard shared object will be passed\r\n\t * @property {boolean} isDisabled - Gets or sets flag if button is disabled.
Default value is `false`\r\n\t */\r\n\tangular.module('mx.shell').factory('mx.shell.WizardButton', [\r\n\t\tfunction wizardButtonFactory() {\r\n\t\t\treturn WizardButton;\r\n\t\t},\r\n\t]);\r\n\r\n\tfunction WizardButton(title, isVisible, callback, isDisabled) {\r\n\t\tObject.defineProperty(this, 'isVisible', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: isVisible !== false,\r\n\t\t});\r\n\t\tObject.defineProperty(this, 'isDisabled', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: isDisabled === true,\r\n\t\t});\r\n\t\tObject.defineProperty(this, 'title', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: title || 'to be titled',\r\n\t\t});\r\n\t\tObject.defineProperty(this, 'callback', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: callback,\r\n\t\t});\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc type\r\n\t * @name mx.shell.WizardPage\r\n\t * @module mx.shell\r\n\t *\r\n\t * @description\r\n\t * Type that contains ultimate information about wizard page.\r\n\t * A constructor accepts `options` parameter that may contain fields to extend corresponding properties. Created like:\r\n\t * ```javascript\r\n\t var options = {\r\n\t\tid: 'wiz_1',\r\n\t\ttitle: 'Single wizard page',\r\n\t\tbuttons: {\r\n\t\t\tfinish: new MxWizardButton('Finish wizard', true),\r\n\t\t\tcancel: new MxWizardButton('Cancel wizard', true),\r\n\t\t\tnext: new MxWizardButton('Next page', false),\r\n\t\t\tback: new MxWizardButton('Previous page', false)\r\n\t\t},\r\n\t\ttemplateUrl: 'wizard-page-1.html',\r\n\t\tcontroller: 'firstPageController',\r\n\t\twizardStep: 'Step 1. And final.'\r\n\t };\r\n\r\n\t var page = new MxWizardPage(options);\r\n\t * ```\r\n\t * @property {string} id - Gets or sets wizard's page identifier\r\n\t * @property {string} title - Gets or sets wizard's page title.
Default value is `Untitled`\r\n\t * @property {mx.shell.WizardButton[]} buttons - Gets or sets wizard's page buttons.\r\n\t * There are should be buttons with names 'back', 'next', 'cancel', 'finish'\r\n\t * @property {string | function} controller - Controller function that should be associated with a newly created\r\n\t * scope or the name of a registered controller if passed as a string\r\n\t * @property {string} templateUrl - Gets or sets path to html template\r\n\t * @property {string} template - Gets or sets html template\r\n\t * @property {string} header - Gets or sets page's header\r\n\t * @property {boolean} toBeSkipped - Determine if this page should be skipped.
Default value is `false`\r\n\t * @property {mx.shell.View} view - Gets page's view.
`readonly`\r\n\t * @property {string} wizardStepId - Gets or sets wizard step identifier this page is related to.
Default value is `base`\r\n\t * @property {int} orderNum - Gets or sets page's order in wizard if page order is not handled by page controller.
\r\n\t * Default value is `0`.\r\n\t * @property {object} sharedWizardData - Gets or sets an object that holds information, already collected by wizard.\r\n\t * It is set by wizard usually once on page enter and should be handled in view controller.\r\n\t */\r\n\tangular.module('mx.shell').factory('mx.shell.WizardPage', [\r\n\t\t'mx.shell.WizardView',\r\n\t\tfunction wizardPageFactory(View) {\r\n\t\t\tfunction WizardPage(options) {\r\n\t\t\t\tvar that = this;\r\n\r\n\t\t\t\tObject.defineProperty(that, 'id', { writable: true });\r\n\t\t\t\tObject.defineProperty(that, 'widgetId', { writable: true });\r\n\t\t\t\tObject.defineProperty(that, 'title', {\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tvalue: 'Untitled',\r\n\t\t\t\t});\r\n\t\t\t\tObject.defineProperty(that, 'key', {\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tvalue: 'Undefined',\r\n\t\t\t\t});\r\n\t\t\t\tObject.defineProperty(that, 'buttons', { writable: true });\r\n\t\t\t\tObject.defineProperty(that, 'controller', {\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tvalue: {},\r\n\t\t\t\t});\r\n\t\t\t\tObject.defineProperty(that, 'templateUrl', { writable: true });\r\n\t\t\t\tObject.defineProperty(that, 'template', { writable: true });\r\n\t\t\t\tObject.defineProperty(that, 'wizardStepId', {\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tvalue: 'base',\r\n\t\t\t\t});\r\n\t\t\t\tObject.defineProperty(that, 'orderNum', {\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tvalue: 0,\r\n\t\t\t\t});\r\n\t\t\t\tObject.defineProperty(that, 'header', {\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tvalue: '',\r\n\t\t\t\t});\r\n\t\t\t\tObject.defineProperty(that, 'toBeSkipped', {\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tvalue: false,\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvar pageView;\r\n\r\n\t\t\t\tObject.defineProperty(that, 'view', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\tif (!pageView) {\r\n\t\t\t\t\t\t\tconst template = that.template?.replace('>', ' mx-service-context=\"vm.dataModel\" mx-service-context-info=\"vm.serviceContextInfo\">');\r\n\t\t\t\t\t\t\tpageView = new View({\r\n\t\t\t\t\t\t\t\tdisplayName: that.title,\r\n\t\t\t\t\t\t\t\tcontroller: that.controller,\r\n\t\t\t\t\t\t\t\ttemplateUrl: that.templateUrl,\r\n\t\t\t\t\t\t\t\ttemplate: template,\r\n\t\t\t\t\t\t\t\tlocals: {\r\n\t\t\t\t\t\t\t\t\tsharedWizardData: that.sharedWizardData,\r\n\t\t\t\t\t\t\t\t\tdataModel: that.dataModel,\r\n\t\t\t\t\t\t\t\t\tloadSource: that.loadSource,\r\n\t\t\t\t\t\t\t\t\tserviceContextInfo: {\r\n\t\t\t\t\t\t\t\t\t\twidgetId: that.widgetId,\r\n\t\t\t\t\t\t\t\t\t\tviewName: that.key,\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn pageView;\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvar sharedData;\r\n\r\n\t\t\t\tObject.defineProperty(that, 'sharedWizardData', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn sharedData;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (value) {\r\n\t\t\t\t\t\tsharedData = value;\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthat = angular.extend(that, options);\r\n\r\n\t\t\t\tthat.buttons = that.buttons || [];\r\n\t\t\t}\r\n\r\n\t\t\treturn WizardPage;\r\n\t\t},\r\n\t]);\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc type\r\n\t * @name mx.shell.WizardRoadmapStep\r\n\t * @module mx.shell\r\n\t *\r\n\t * @description\r\n\t * Type that contains information about wizard's roadmap step.\r\n\t * A constructor accepts `options` parameter that may contain fields to extend corresponding properties.\r\n\t * ```javascript\r\n\t var roadmapStep = new RoadmapStep({\r\n\t \ttitle: 'Step 1',\r\n\t \tdescription: 'On this step we perform actions related to step 1.',\r\n\t\torderNum: 1\r\n\t });\r\n\t * ```\r\n\t *\r\n\t * @property {string} id - Gets or sets wizard step identifier this page is related to.
Defaults to `base`\r\n\t * @property {string} title - Gets or sets step's title\r\n\t * @property {string} description - Gets or sets descriptive information about step\r\n\t * @property {boolean} passed - Gets or sets a flag indicating if wizard step is passed already.
Defaults to `false`\r\n\t * @property {boolean} isCurrent - Gets or sets a flag indicating that wizard step is current wizard step.
Defaults to `false`\r\n\t * @property {int} orderNum - Gets or sets step's order number to be displayed near step.
Defaults to `1`\r\n\t */\r\n\tangular.module('mx.shell').factory('mx.shell.WizardRoadmapStep', [\r\n\t\tfunction wizardRoadmapStepFactory() {\r\n\t\t\treturn WizardRoadmapStep;\r\n\t\t},\r\n\t]);\r\n\r\n\tfunction WizardRoadmapStep(options) {\r\n\t\tvar that = this;\r\n\r\n\t\tObject.defineProperty(that, 'id', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: 'base',\r\n\t\t});\r\n\t\tObject.defineProperty(that, 'title', { writable: true });\r\n\t\tObject.defineProperty(that, 'key', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: 'Undefined',\r\n\t\t});\r\n\t\tObject.defineProperty(that, 'description', { writable: true });\r\n\t\tObject.defineProperty(that, 'passed', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: false,\r\n\t\t});\r\n\t\tObject.defineProperty(that, 'orderNum', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: 1,\r\n\t\t});\r\n\t\tObject.defineProperty(that, 'isCurrent', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: false,\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'toBeSkipped', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: false,\r\n\t\t});\r\n\r\n\t\tthat = angular.extend(that, options);\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc type\r\n\t * @name mx.shell.WizardRoadmap\r\n\t * @module mx.shell\r\n\t *\r\n\t * @description\r\n\t * Type that contains information about wizard steps, areas and all additional info needed to support user following wizard steps.\r\n\t * A constructor accepts `options` parameter that may contain fields to extend corresponding properties.\r\n\t *\r\n\t * ```javascript\r\n\t var roadmap = new WizardRoadmap({\r\n\t\ttitle: 'Sample Wizard! ',\r\n\t\tdescription: 'Some general info about wizard',\r\n\t\tsteps: [\r\n\t\t\tnew WizardRoadmapStep({\r\n\t\t\t\ttitle: 'Step 1',\r\n\t\t\t\tdescription: 'On this step we perform actions related to step 1.',\r\n\t\t\t\torderNum: 1\r\n\t\t\t}),\r\n\t\t\tnew WizardRoadmapStep({\r\n\t\t\t\ttitle: 'Step 2',\r\n\t\t\t\tdescription: 'On this step we perform actions related to step 2.',\r\n\t\t\t\torderNum: 2\r\n\t\t\t})\r\n\t\t]\r\n\t });\r\n\t * ```\r\n\t * @property {string} title - Gets or sets a title to be shown on roadmap's top\r\n\t * @property {string} description - Gets or sets detailed information about wizard this roadmap is related to\r\n\t * @property {mx.shell.WizardRoadmapStep[]} steps - Gets or sets an array of {@ref mx.shell.WizardRoadmapStep wizard steps}.
Default is `[]`\r\n\t */\r\n\tangular.module('mx.shell').factory('mx.shell.WizardRoadmap', [\r\n\t\tfunction wizardRoadmapFactory() {\r\n\t\t\treturn WizardRoadmap;\r\n\t\t},\r\n\t]);\r\n\r\n\tfunction WizardRoadmap(options) {\r\n\t\tlet that = this;\r\n\r\n\t\tObject.defineProperty(that, 'title', { writable: true });\r\n\t\tObject.defineProperty(that, 'key', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: 'Undefined',\r\n\t\t});\r\n\t\tObject.defineProperty(that, 'description', { writable: true });\r\n\t\tObject.defineProperty(that, 'steps', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: [],\r\n\t\t});\r\n\r\n\t\tthat = angular.extend(that, options);\r\n\r\n\t\t// Sorting steps by orderNum\r\n\t\tif (Array.isArray(that.steps)) {\r\n\t\t\tthat.steps.sort(function (step1, step2) {\r\n\t\t\t\treturn step1.orderNum - step2.orderNum;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc type\r\n\t * @name mx.shell.Wizard\r\n\t * @module mx.shell\r\n\t *\r\n\t * @requires {@ref mx.shell.EventService mx.shell.EventService}\r\n\t * @requires $q\r\n\t * @description\r\n\t * Type that contains ultimate information about wizard.\r\n\t * A constructor accepts `options` parameter that may contain fields to extend corresponding properties. Created like:\r\n\t * ```javascript\r\n\t var pageOptions = {\r\n\t\tid: 'wiz_1',\r\n\t\ttitle: 'Single wizard page',\r\n\t\tbuttons: {\r\n\t\t\tfinish: new WizardButton('Finish', true, function (wizardData) {\r\n\t\t\t\talert('Wizard finished!\\n\\n\\nCollected data:' +\r\n\t\t\t\t\t'\\nFirst field: ' + (wizardData.firstField || 'no value') +\r\n\t\t\t\t\t'\\nSecond field: ' + (wizardData.secondField || 'no value') + '\\n\\n');\r\n\t\t\t}),\r\n\t\t\tcancel: new WizardButton('Cancel', true),\r\n\t\t\tnext: new WizardButton('Next page', false),\r\n\t\t\tback: new WizardButton('Previous page', false)\r\n\t\t},\r\n\t\tcontroller: 'mx.tmp.SampleWizardPageController',\r\n\t\ttemplateUrl: 'temp/wizard/wizard-page.html',\r\n\t\tsharedWizardData: {}\r\n\t};\r\n\r\n\t var page = new WizardPage(pageOptions);\r\n\r\n\t var roadmap = new WizardRoadmap({\r\n\t\ttitle: 'Sample Wizard! ',\r\n\t\tdescription: 'Some general info about wizard',\r\n\t\tsteps: [\r\n\t\t\tnew WizardRoadmapStep({\r\n\t\t\t\ttitle: 'Step 1',\r\n\t\t\t\tdescription: 'On this step we perform actions related to step 1.',\r\n\t\t\t\torderNum: 1\r\n\t\t\t})\r\n\t\t]\r\n\r\n\tvar wizardOptions = {\r\n\t\tname: 'Simple wizard',\r\n\t\tdescription: 'Long and pretty wizard description',\r\n\t\tcontextDescription: 'vm.contextObject.name',\r\n\t\tpages: [page],\r\n\t\troadmap: roadmap\r\n\t};\r\n\r\n\tvar wizard = new Wizard(wizardOptions);\r\n\t * ```\r\n\t *\r\n\t * @property {string} id - Gets or sets wizard's unique identifier.
Default value is the result of `Math.random().toString()`\r\n\t * @property {string} name - Gets or sets wizard's name.
Default value is `Untitled wizard`\r\n\t * @property {string} description - Gets or sets detailed information about wizard\r\n\t * @property {string} contextDescription - Gets or sets information about wizard's context\r\n\t * @property {function} displayContextFn - Gets or sets a function to display wizard's context\r\n\t * @property {mx.shell.WizardPage[]} pages - Provides access to {@ref mx.shell.WizardPage wizard pages}.
Default value is `[]`\r\n\t * @property {mx.shell.Wizard[]} extraWizards - Gets additional {@ref mx.shell.Wizard wizards} to be processed within current one.
Default value is `[]`\r\n\t * @property {mx.shell.WizardRoadmap} roadmap - Gets or sets wizard's {@ref mx.shell.WizardRoadmap roadmap}\r\n\t * It contains information about wizard steps and all related info\r\n\t * @property {int} positionInBaseWizard - Gets or sets wizard's position as an extra wizard.
\r\n\t * Applies only if a wizard is a part of an Extra wizards array of another (base) wizard.
Default value is `0`\r\n\t * @property {mx.shell.WizardPage} currentPage - Gets or sets current {@ref mx.shell.WizardPage wizard page}\r\n\t * @property {mx.shell.WizardPage[]} allWizardPages gets all {@ref mx.shell.WizardPage wizard pages} including self pages and extra wizards pages\r\n\t * @property {mx.shell.WizardRoadmapStep[]} allWizardSteps gets all {@ref mx.shell.WizardRoadmapStep wizard steps} including self steps and extra wizards steps\r\n\t */\r\n\tangular.module('mx.shell').factory('mx.shell.Wizard', [\r\n\t\t'mx.shell.EventService',\r\n\t\t'$q',\r\n\t\t'$timeout',\r\n\t\tfunction wizardFactory(eventService, $q, $timeout) {\r\n\t\t\tfunction Wizard(options) {\r\n\t\t\t\toptions = options || {};\r\n\t\t\t\tvar that = this;\r\n\t\t\t\tvar currentStep = 0;\r\n\t\t\t\tthat.sourceState = {\r\n\t\t\t\t\tSubmiting: 1,\r\n\t\t\t\t\tOk: 2,\r\n\t\t\t\t\tFailed: 3,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tObject.defineProperty(that, 'id', {\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tvalue: Math.random().toString(),\r\n\t\t\t\t});\r\n\t\t\t\tObject.defineProperty(that, 'name', {\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tvalue: 'Untitled wizard',\r\n\t\t\t\t});\r\n\t\t\t\tObject.defineProperty(that, 'description', { writable: true });\r\n\t\t\t\tObject.defineProperty(that, 'contextDescription', { writable: true });\r\n\t\t\t\tObject.defineProperty(that, 'displayContextFn', { writable: true });\r\n\t\t\t\tObject.defineProperty(that, 'pages', {\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tvalue: [],\r\n\t\t\t\t});\r\n\t\t\t\tObject.defineProperty(that, 'roadmap', { writable: true });\r\n\t\t\t\tObject.defineProperty(that, 'errors', {\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tvalue: [],\r\n\t\t\t\t});\r\n\t\t\t\tObject.defineProperty(that, 'positionInBaseWizard', {\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tvalue: [],\r\n\t\t\t\t});\r\n\t\t\t\tObject.defineProperty(that, 'resultPage', {\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tvalue: options.resultPage,\r\n\t\t\t\t});\r\n\r\n\t\t\t\tObject.defineProperty(that, 'currentStep', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn currentStep;\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\r\n\t\t\t\tObject.defineProperty(that, 'finishDefer', {\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tvalue: (options.wizardView && options.wizardView.finishDefer) || $q.defer(),\r\n\t\t\t\t});\r\n\r\n\t\t\t\tObject.defineProperty(that, 'managers', {\r\n\t\t\t\t\twritable: false,\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tvalue: [],\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthat.finishDefer.promise\r\n\t\t\t\t\t.then(function () {\r\n\t\t\t\t\t\teventService.dispatchEvent(mx.shell.EventCodes.WizardClose, {\r\n\t\t\t\t\t\t\twizard: that,\r\n\t\t\t\t\t\t\tcanceled: false,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch(function () {\r\n\t\t\t\t\t\teventService.dispatchEvent(mx.shell.EventCodes.WizardClose, {\r\n\t\t\t\t\t\t\twizard: that,\r\n\t\t\t\t\t\t\tcanceled: true,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\tthat.wizardSourceState = that.sourceState.Ok;\r\n\t\t\t\tObject.defineProperty(that, 'wizardSourceState', { writable: true });\r\n\r\n\t\t\t\t/**\r\n\t\t\t\t * @ngdoc method\r\n\t\t\t\t * @name mx.shell.Wizard#setCurrentStep\r\n\t\t\t\t * @module mx.shell\r\n\t\t\t\t *\r\n\t\t\t\t * @description\r\n\t\t\t\t * Sets a step identified by a specified id as current step and serves all the work related to other steps.\r\n\t\t\t\t * If no step with specified id found nothing is done\r\n\t\t\t\t *\r\n\t\t\t\t * @param {string} stepId - An {@ref mx.shell.WizardRoadmapStep#id id of a step} that should be set as current.\r\n\t\t\t\t */\r\n\t\t\t\tthat.setCurrentStep = function (stepId) {\r\n\t\t\t\t\tvar newStep = null;\r\n\r\n\t\t\t\t\tthat.allWizardSteps.some(function (step, index) {\r\n\t\t\t\t\t\tif (step.id === stepId) {\r\n\t\t\t\t\t\t\tnewStep = step;\r\n\t\t\t\t\t\t\tcurrentStep = index;\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (!newStep) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthat.allWizardSteps.forEach(function (step) {\r\n\t\t\t\t\t\tstep.isCurrent = step.id === stepId;\r\n\t\t\t\t\t\tstep.passed = step.orderNum < newStep.orderNum;\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar currentPage;\r\n\r\n\t\t\t\tObject.defineProperty(that, 'currentPage', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn currentPage;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (value) {\r\n\t\t\t\t\t\tcurrentPage = value;\r\n\t\t\t\t\t\tif (currentPage && that.roadmap) {\r\n\t\t\t\t\t\t\tthat.setCurrentStep(value.wizardStepId);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvar extraWizards = [];\r\n\r\n\t\t\t\tObject.defineProperty(that, 'extraWizards', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn extraWizards;\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvar allWizardPages = [];\r\n\r\n\t\t\t\tObject.defineProperty(that, 'allWizardPages', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn allWizardPages;\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvar allWizardSteps = [];\r\n\r\n\t\t\t\tObject.defineProperty(that, 'allWizardSteps', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn allWizardSteps;\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvar hideFinishButton = false;\r\n\r\n\t\t\t\tObject.defineProperty(that, 'hideFinishButton', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn hideFinishButton;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\thideFinishButton = newValue;\r\n\t\t\t\t\t\tthat.adjustButtonsTitles(allWizardPages);\r\n\t\t\t\t\t\t// allWizardPages[allWizardPages.length - 1].buttons.finish.isVisible = !newValue;\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\r\n\t\t\t\t/* Don't set currentPage while steps are not collected */\r\n\t\t\t\tvar optionsCurrentPage = options.currentPage;\r\n\t\t\t\tdelete options.currentPage;\r\n\r\n\t\t\t\tthat = angular.extend(that, options);\r\n\r\n\t\t\t\tif (Array.isArray(that.pages)) {\r\n\t\t\t\t\t// Sorting pages by orderNum\r\n\t\t\t\t\tthat.pages.sort(function (page1, page2) {\r\n\t\t\t\t\t\treturn page1.orderNum - page2.orderNum;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tallWizardPages = collectPages();\r\n\t\t\t\tallWizardSteps = collectSteps();\r\n\r\n\t\t\t\tif (optionsCurrentPage) {\r\n\t\t\t\t\tthat.currentPage = optionsCurrentPage;\r\n\t\t\t\t}\r\n\t\t\t\t// Setting current page if not set\r\n\t\t\t\tif (!that.currentPage && Array.isArray(that.pages) && that.pages.length > 0) {\r\n\t\t\t\t\tthat.currentPage = that.pages[0];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction collectPages() {\r\n\t\t\t\t\tvar result = that.pages;\r\n\r\n\t\t\t\t\tthat.extraWizards.forEach(function (wizard) {\r\n\t\t\t\t\t\tresult = result.concat(wizard.pages);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction stepFilter(step) {\r\n\t\t\t\t\treturn !step.toBeSkipped;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction collectSteps() {\r\n\t\t\t\t\tif (!that.roadmap || !that.roadmap.steps || !that.roadmap.steps.length) {\r\n\t\t\t\t\t\treturn [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar result = that.roadmap.steps.filter(stepFilter);\r\n\r\n\t\t\t\t\tthat.extraWizards.forEach(function (wizard) {\r\n\t\t\t\t\t\tresult = result.concat(wizard.roadmap.steps.filter(stepFilter));\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthat.updateSteps = function () {\r\n\t\t\t\t\tallWizardSteps = collectSteps();\r\n\t\t\t\t};\r\n\r\n\t\t\t\t/**\r\n\t\t\t\t * @ngdoc method\r\n\t\t\t\t * @name mx.shell.Wizard#addExtraWizard\r\n\t\t\t\t * @module mx.shell\r\n\t\t\t\t * @description Adds a new wizard to current wizard {@ref mx.shell.Wizard.extraWizards extraWizards}.\r\n\t\t\t\t * New wizard's {@ref mx.shell.Wizard.positionInBaseWizard positionInBaseWizard} property is taken into account.\r\n\t\t\t\t * @param {mx.shell.Wizard} wizard - an extra wizard to add\r\n\t\t\t\t */\r\n\t\t\t\tthat.addExtraWizard = function (wizard, removeDuplicates) {\r\n\t\t\t\t\tif (typeof wizard !== typeof that) {\r\n\t\t\t\t\t\tthrow new Error('Invalid argument ' + typeof that + ' expected, ' + typeof wizard + ' passed');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (removeDuplicates) {\r\n\t\t\t\t\t\tthat.setExtraWizards(\r\n\t\t\t\t\t\t\tthat.extraWizards.filter(function (extraWizard) {\r\n\t\t\t\t\t\t\t\treturn extraWizard.id !== wizard.id;\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar newWizards = that.extraWizards.concat([wizard]).sort(function (wizard1, wizard2) {\r\n\t\t\t\t\t\treturn (wizard1.positionInBaseWizard || 0) - (wizard2.positionInBaseWizard || 0);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthat.setExtraWizards(newWizards);\r\n\t\t\t\t};\r\n\r\n\t\t\t\t/**\r\n\t\t\t\t * @ngdoc method\r\n\t\t\t\t * @name mx.shell.Wizard#removeExtraWizard\r\n\t\t\t\t * @module mx.shell\r\n\t\t\t\t * @description Removes new wizard from current wizard's {@ref mx.shell.Wizard.extraWizards extraWizards}\r\n\t\t\t\t * @param {mx.shell.Wizard} wizard - an extra wizard to remove\r\n\t\t\t\t */\r\n\t\t\t\tthat.removeExtraWizard = function (wizard) {\r\n\t\t\t\t\tthat.setExtraWizards(\r\n\t\t\t\t\t\tthat.extraWizards.filter(function (extraWizard) {\r\n\t\t\t\t\t\t\treturn extraWizard !== wizard;\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\t\t\t\t};\r\n\r\n\t\t\t\t/**\r\n\t\t\t\t * @ngdoc method\r\n\t\t\t\t * @name mx.shell.Wizard#setExtraWizards\r\n\t\t\t\t * @module mx.shell\r\n\t\t\t\t * @description Sets new {@ref mx.shell.Wizard.extraWizards extraWizards} value\r\n\t\t\t\t * @param {mx.shell.Wizard[]} wizards - new extra wizards array\r\n\t\t\t\t */\r\n\t\t\t\tthat.setExtraWizards = function (wizards) {\r\n\t\t\t\t\tif (extraWizards === wizards) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\textraWizards = wizards || [];\r\n\r\n\t\t\t\t\tvar lastBasePage = getLastPage(that);\r\n\r\n\t\t\t\t\tlastBasePage.buttons.finish.isVisible = !extraWizards.length;\r\n\t\t\t\t\tlastBasePage.buttons.next.isVisible = Boolean(extraWizards.length);\r\n\t\t\t\t\tif (extraWizards[0]) {\r\n\t\t\t\t\t\tlastBasePage.buttons.next.title = extraWizards[0].pages[0].title;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar extraPagesIndex = that.pages.length;\r\n\t\t\t\t\tvar extraStepsIndex = that.roadmap.steps.length;\r\n\r\n\t\t\t\t\textraWizards.forEach(function (wizard, index) {\r\n\t\t\t\t\t\tvar firstPageButtons = wizard.pages[0].buttons;\r\n\t\t\t\t\t\tvar lastPageButtons = getLastPage(wizard).buttons;\r\n\r\n\t\t\t\t\t\tfirstPageButtons.back.isVisible = true;\r\n\t\t\t\t\t\tfirstPageButtons.back.title = index === 0 ? lastBasePage.title : getLastPage(extraWizards[index - 1]).title;\r\n\r\n\t\t\t\t\t\tvar isLastWizard = index === extraWizards.length - 1;\r\n\r\n\t\t\t\t\t\tlastPageButtons.finish.isVisible = isLastWizard;\r\n\t\t\t\t\t\tlastPageButtons.next.isVisible = !isLastWizard;\r\n\r\n\t\t\t\t\t\twizard.pages.forEach(function (page, index) {\r\n\t\t\t\t\t\t\tpage.orderNum = extraPagesIndex + index + 1;\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\twizard.roadmap.steps.forEach(function (step, index) {\r\n\t\t\t\t\t\t\tstep.orderNum = extraStepsIndex + index + 1;\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\textraPagesIndex += wizard.pages.length;\r\n\t\t\t\t\t\textraStepsIndex += wizard.roadmap.steps.length;\r\n\r\n\t\t\t\t\t\tif (isLastWizard) {\r\n\t\t\t\t\t\t\tlastPageButtons.finish.title = lastBasePage.buttons.finish.title;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tlastPageButtons.next.title = extraWizards[index + 1].pages[0].title;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tallWizardPages = collectPages();\r\n\t\t\t\t\tallWizardSteps = collectSteps();\r\n\t\t\t\t};\r\n\r\n\t\t\t\tfunction wizardContainsPages(wizard, pages) {\r\n\t\t\t\t\tvar result = true;\r\n\r\n\t\t\t\t\tpages.forEach(function (page) {\r\n\t\t\t\t\t\tresult =\r\n\t\t\t\t\t\t\tresult &&\r\n\t\t\t\t\t\t\twizard.pages.some(function (wizardPage) {\r\n\t\t\t\t\t\t\t\treturn wizardPage === page;\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction isSameWizardPages(page1, page2) {\r\n\t\t\t\t\tvar pages = [page1, page2];\r\n\r\n\t\t\t\t\tif (wizardContainsPages(that, pages)) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn that.extraWizards.some(function (wizard) {\r\n\t\t\t\t\t\treturn wizardContainsPages(wizard, pages);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction _validateWizardPageNext() {\r\n\t\t\t\t\treturn that.currentPage && that.currentPage.buttons && that.currentPage.buttons.next && that.currentPage.buttons.next.isVisible\r\n\t\t\t\t\t\t? _validateWizardPage(that.currentPage.buttons.next)\r\n\t\t\t\t\t\t: $q.when(true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction _validateWizardPageFinish() {\r\n\t\t\t\t\treturn that.currentPage && that.currentPage.buttons && that.currentPage.buttons.finish && that.currentPage.buttons.finish.isVisible\r\n\t\t\t\t\t\t? _validateWizardPage(that.currentPage.buttons.finish)\r\n\t\t\t\t\t\t: $q.when(true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction _validateWizardPage(button) {\r\n\t\t\t\t\tif (button && typeof button.validate === 'function') {\r\n\t\t\t\t\t\treturn button.validate();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn $q.when(true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/**\r\n\t\t\t\t * @ngdoc method\r\n\t\t\t\t * @name mx.shell.Wizard#containsPage\r\n\t\t\t\t * @instance\r\n\t\t\t\t * @module mx.shell\r\n\t\t\t\t * @description Check if wizard contains some page\r\n\t\t\t\t * @param {WizardPage} page - some wizard page\r\n\t\t\t\t *\r\n\t\t\t\t * @returns {boolean} contains or not\r\n\t\t\t\t */\r\n\t\t\t\tthat.containsPage = function (page) {\r\n\t\t\t\t\treturn allWizardPages.includes(page) || that.resultPage === page;\r\n\t\t\t\t};\r\n\r\n\t\t\t\t/**\r\n\t\t\t\t * @ngdoc method\r\n\t\t\t\t * @name mx.shell.Wizard#containsPageView\r\n\t\t\t\t * @instance\r\n\t\t\t\t * @module mx.shell\r\n\t\t\t\t * @description Check if wizard contains some page view\r\n\t\t\t\t * @param {mx.shell.WizardView} pageView - some wizard page view\r\n\t\t\t\t *\r\n\t\t\t\t * @returns {boolean} contains or not\r\n\t\t\t\t */\r\n\t\t\t\tthat.containsPageView = function (pageView) {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\tallWizardPages.some(function (page) {\r\n\t\t\t\t\t\t\treturn page.view === pageView;\r\n\t\t\t\t\t\t}) ||\r\n\t\t\t\t\t\t(that.resultPage && that.resultPage.view === pageView)\r\n\t\t\t\t\t);\r\n\t\t\t\t};\r\n\r\n\t\t\t\t/**\r\n\t\t\t\t * @ngdoc method\r\n\t\t\t\t * @name mx.shell.Wizard#goToNextPage\r\n\t\t\t\t * @module mx.shell\r\n\t\t\t\t * @description Performs move to next wizard page\r\n\t\t\t\t */\r\n\t\t\t\tthat.goToNextPage = function () {\r\n\t\t\t\t\tvar currentPage = that.currentPage;\r\n\t\t\t\t\t_validateWizardPageNext().then(function (isValid) {\r\n\t\t\t\t\t\t// in case current page was changed during validation than not go to next page (example by onChangeSkippedPages)\r\n\t\t\t\t\t\tif (currentPage !== that.currentPage) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (isValid) {\r\n\t\t\t\t\t\t\tif (that.currentPage && that.currentPage.buttons) {\r\n\t\t\t\t\t\t\t\tcallCallback(that.currentPage.buttons.next.callback);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tvar pageToBeCurrent = getNextPage(getCurrentPageIndex(), 1);\r\n\r\n\t\t\t\t\t\t\tif (pageToBeCurrent) {\r\n\t\t\t\t\t\t\t\tif (isSameWizardPages(pageToBeCurrent, that.currentPage)) {\r\n\t\t\t\t\t\t\t\t\tpageToBeCurrent.sharedWizardData = that.currentPage.sharedWizardData;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tthat.currentPage = pageToBeCurrent;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\t/**\r\n\t\t\t\t * @ngdoc method\r\n\t\t\t\t * @name mx.shell.Wizard#goToPreviousPage\r\n\t\t\t\t * @module mx.shell\r\n\t\t\t\t * @description Performs move to previous wizard page (back)\r\n\t\t\t\t */\r\n\t\t\t\tthat.goToPreviousPage = function () {\r\n\t\t\t\t\tif (that.currentPage && that.currentPage.buttons) {\r\n\t\t\t\t\t\tcallCallback(that.currentPage.buttons.back.callback);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar pageToBeCurrent = getNextPage(getCurrentPageIndex(), -1);\r\n\r\n\t\t\t\t\tif (pageToBeCurrent) {\r\n\t\t\t\t\t\tif (isSameWizardPages(pageToBeCurrent, that.currentPage)) {\r\n\t\t\t\t\t\t\tpageToBeCurrent.sharedWizardData = that.currentPage.sharedWizardData;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthat.currentPage = pageToBeCurrent;\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\t/**\r\n\t\t\t\t * @ngdoc method\r\n\t\t\t\t * @name mx.shell.Wizard#cancelWizard\r\n\t\t\t\t * @module mx.shell\r\n\t\t\t\t * @description Cancels wizard and raises {@ref mx.shell.EventCodes#WizardClose WizardClose event}\r\n\t\t\t\t */\r\n\t\t\t\tthat.cancelWizard = function () {\r\n\t\t\t\t\tif (that.currentPage && that.currentPage.buttons) {\r\n\t\t\t\t\t\tcallCallback(that.currentPage.buttons.cancel.callback).then(function () {\r\n\t\t\t\t\t\t\tthat.finishDefer.reject(mx.noLogCatchMessage('cancel wizard'));\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\t/**\r\n\t\t\t\t * @ngdoc method\r\n\t\t\t\t * @name mx.shell.Wizard#finishWizard\r\n\t\t\t\t * @module mx.shell\r\n\t\t\t\t * @description Performs finish wizard actions and raises\r\n\t\t\t\t * {@ref mx.shell.EventCodes#WizardClose WizardClose event} if everything is ok\r\n\t\t\t\t */\r\n\t\t\t\tthat.finishWizard = function () {\r\n\t\t\t\t\t_validateWizardPageFinish().then(function (isValid) {\r\n\t\t\t\t\t\tif (isValid && that.currentPage && that.currentPage.buttons) {\r\n\t\t\t\t\t\t\tthat.wizardSourceState = that.sourceState.Submiting;\r\n\r\n\t\t\t\t\t\t\tif (that.currentPage.buttons.finish) {\r\n\t\t\t\t\t\t\t\tthat.currentPage.buttons.finish.isDisabled = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (that.currentPage.buttons.cancel) {\r\n\t\t\t\t\t\t\t\tthat.currentPage.buttons.cancel.isDisabled = true;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (that.currentPage === that.resultPage) {\r\n\t\t\t\t\t\t\t\tcallCallback(that.currentPage.buttons.finish.callback, that.currentPage).then(function (result) {\r\n\t\t\t\t\t\t\t\t\tprocessLastCallbackResult(true, result);\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tvar lastPage = getLastPage(that);\r\n\r\n\t\t\t\t\t\t\tcallCallback(lastPage.buttons.finish.callback, lastPage).then(\r\n\t\t\t\t\t\t\t\tfunction (result) {\r\n\t\t\t\t\t\t\t\t\tvar lastPromise = $q.when();\r\n\r\n\t\t\t\t\t\t\t\t\tthat.extraWizards.forEach(function (wizard) {\r\n\t\t\t\t\t\t\t\t\t\tvar page = getLastPage(wizard);\r\n\r\n\t\t\t\t\t\t\t\t\t\tlastPromise = lastPromise.then(function () {\r\n\t\t\t\t\t\t\t\t\t\t\treturn callCallback(page.buttons.finish.callback, page).then(null, function () {\r\n\t\t\t\t\t\t\t\t\t\t\t\tthat.wizardSourceState = that.sourceState.Ok;\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\tlastPromise.then(function () {\r\n\t\t\t\t\t\t\t\t\t\tif (that.resultPage && !that.resultPage.toBeSkipped) {\r\n\t\t\t\t\t\t\t\t\t\t\tthat.currentPage = that.resultPage;\r\n\t\t\t\t\t\t\t\t\t\t\tthat.wizardSourceState = that.sourceState.Ok;\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t//TODO: may be it is necessary to process data from all extra-wizards instead of data just from the first main wizard\r\n\t\t\t\t\t\t\t\t\t\t\tprocessLastCallbackResult(true, result);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tfunction (result) {\r\n\t\t\t\t\t\t\t\t\tprocessLastCallbackResult(false, result);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthat.adjustButtonsTitles = function (pages) {\r\n\t\t\t\t\tpages.forEach(function (page, index, pages) {\r\n\t\t\t\t\t\tvar nextTitle = getNextTitle(pages, page.orderNum);\r\n\t\t\t\t\t\tvar backTitle = getBackTitle(pages, page.orderNum);\r\n\r\n\t\t\t\t\t\tpage.buttons.finish.isVisible = !nextTitle && !hideFinishButton;\r\n\t\t\t\t\t\tpage.buttons.next.isVisible = Boolean(nextTitle);\r\n\t\t\t\t\t\tpage.buttons.next.title = nextTitle || page.buttons.next.title;\r\n\r\n\t\t\t\t\t\tpage.buttons.back.isVisible = Boolean(backTitle);\r\n\t\t\t\t\t\tpage.buttons.back.title = backTitle || page.buttons.back.title;\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthat.registerWizardManager = function (wizardManagerController) {\r\n\t\t\t\t\treturn that.managers.push({\r\n\t\t\t\t\t\tid: that.managers.length + 1,\r\n\t\t\t\t\t\tcontroller: wizardManagerController,\r\n\t\t\t\t\t\tpagesToSkip: [],\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthat.getManager = function (managerId) {\r\n\t\t\t\t\treturn that.managers[managerId - 1];\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthat.getAllPagesToSkip = function () {\r\n\t\t\t\t\treturn that.managers.reduce((allPages, manager) => allPages.concat(manager.pagesToSkip), []);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthat.skipPagesByManager = function (managerId, managerPagesToSkip) {\r\n\t\t\t\t\tthat.getManager(managerId).pagesToSkip = Array.isArray(managerPagesToSkip) ? managerPagesToSkip : [];\r\n\t\t\t\t\tvar pagesToSkip = that.getAllPagesToSkip();\r\n\t\t\t\t\tvar pages = that.allWizardPages;\r\n\t\t\t\t\tvar steps = that.roadmap ? that.roadmap.steps : [];\r\n\t\t\t\t\tvar changeButtonsTitles = false;\r\n\r\n\t\t\t\t\tpages.forEach(function (page) {\r\n\t\t\t\t\t\tvar toBeSkipped = Array.isArray(pagesToSkip) && pagesToSkip.indexOf(page.key) !== -1;\r\n\r\n\t\t\t\t\t\tif (page.toBeSkipped !== toBeSkipped) {\r\n\t\t\t\t\t\t\tpage.toBeSkipped = toBeSkipped;\r\n\t\t\t\t\t\t\tsteps.some(function (step) {\r\n\t\t\t\t\t\t\t\tif (step.key === page.key) {\r\n\t\t\t\t\t\t\t\t\tstep.toBeSkipped = toBeSkipped;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tchangeButtonsTitles = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (that.resultPage) {\r\n\t\t\t\t\t\tvar page = that.resultPage;\r\n\t\t\t\t\t\tvar toBeSkipped = Array.isArray(pagesToSkip) && pagesToSkip.indexOf(page.key) !== -1;\r\n\t\t\t\t\t\tif (page.toBeSkipped !== toBeSkipped) {\r\n\t\t\t\t\t\t\tpage.toBeSkipped = toBeSkipped;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (changeButtonsTitles) {\r\n\t\t\t\t\t\tthat.adjustButtonsTitles(pages);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthat.updateSteps();\r\n\r\n\t\t\t\t\tif (that.currentPage.toBeSkipped) {\r\n\t\t\t\t\t\tthat.goToNextPage();\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tfunction processLastCallbackResult(close, result) {\r\n\t\t\t\t\tif (close === true) {\r\n\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\tthat.finishDefer.resolve(result);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar errorData = result?.data;\r\n\t\t\t\t\t\tvar errorMsg = typeof errorData === 'string' ? errorData : errorData?.Message;\r\n\t\t\t\t\t\tthat.errors = [{ message: errorMsg, type: 'error', active: true, transient: true }];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (that.currentPage.buttons.finish) {\r\n\t\t\t\t\t\tthat.currentPage.buttons.finish.isDisabled = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (that.currentPage.buttons.cancel) {\r\n\t\t\t\t\t\tthat.currentPage.buttons.cancel.isDisabled = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthat.wizardSourceState = that.sourceState.Ok;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction getLastPage(wizard) {\r\n\t\t\t\t\treturn wizard.pages[wizard.pages.length - 1];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction callCallback(callback, page) {\r\n\t\t\t\t\treturn $q.when(typeof callback === 'function' ? callback((page || that.currentPage).sharedWizardData) : true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction getNextPage(currentIndex, shiftBy) {\r\n\t\t\t\t\tvar nextIndex = currentIndex + shiftBy;\r\n\t\t\t\t\tvar nextPage;\r\n\r\n\t\t\t\t\tif (nextIndex < that.pages.length || !that.extraWizards.length) {\r\n\t\t\t\t\t\tnextPage = that.pages[nextIndex];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar extraIndex = that.pages.length;\r\n\r\n\t\t\t\t\t\tthat.extraWizards.some(function (item) {\r\n\t\t\t\t\t\t\textraIndex += item.pages.length;\r\n\t\t\t\t\t\t\tif (nextIndex < extraIndex) {\r\n\t\t\t\t\t\t\t\tnextPage = item.pages[nextIndex - (extraIndex - item.pages.length)];\r\n\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (!nextPage) {\r\n\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn nextPage.toBeSkipped ? getNextPage(nextIndex, shiftBy) : nextPage;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction getCurrentPageIndex() {\r\n\t\t\t\t\tvar foundIndex = -2;\r\n\r\n\t\t\t\t\tif (that.currentPage && Array.isArray(that.pages)) {\r\n\t\t\t\t\t\tthat.pages.some(function (page, index) {\r\n\t\t\t\t\t\t\tif (page.id === that.currentPage.id) {\r\n\t\t\t\t\t\t\t\tfoundIndex = index;\r\n\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (foundIndex === -2 && that.extraWizards.length) {\r\n\t\t\t\t\t\tvar extraIndex = that.pages.length;\r\n\r\n\t\t\t\t\t\tthat.extraWizards.some(function (wizard) {\r\n\t\t\t\t\t\t\twizard.pages.some(function (page, index) {\r\n\t\t\t\t\t\t\t\tif (page.id === that.currentPage.id) {\r\n\t\t\t\t\t\t\t\t\tfoundIndex = extraIndex + index;\r\n\t\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tif (foundIndex === -2) {\r\n\t\t\t\t\t\t\t\textraIndex += wizard.pages.length;\r\n\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn foundIndex;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction getNextTitle(pages, currentOrderNum) {\r\n\t\t\t\t\tvar nextAvailablePage = pages.filter(function (page) {\r\n\t\t\t\t\t\treturn !page.toBeSkipped && page.orderNum > currentOrderNum;\r\n\t\t\t\t\t})[0];\r\n\r\n\t\t\t\t\treturn nextAvailablePage ? nextAvailablePage.title : null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction getBackTitle(pages, currentOrderNum) {\r\n\t\t\t\t\tvar previousAvailablePages = pages.filter(function (page) {\r\n\t\t\t\t\t\treturn !page.toBeSkipped && page.orderNum < currentOrderNum;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tvar previousAvailablePage = previousAvailablePages[previousAvailablePages.length - 1];\r\n\r\n\t\t\t\t\treturn previousAvailablePage ? previousAvailablePage.title : null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn Wizard;\r\n\t\t},\r\n\t]);\r\n})();\r\n","'use strict';\r\n\r\nimport codepoints from '@dwp/mx-icons-font/dist/codepoints';\r\n\r\nwindow.mx = window.mx || {};\r\nwindow.mx.components = window.mx.components || {};\r\nmx.components.Icons = codepoints;\r\n\r\nexport default angular.module('mx.components', []).name;\r\n","const translation = {\r\n\t'-': { pattern: /-/, optional: true },\r\n\t0: { pattern: /\\d/ },\r\n\t5: { pattern: /[0-5]/ },\r\n\t2: { pattern: /[0-2]/ },\r\n\r\n\th: { pattern: /\\d/ },\r\n\tm: { pattern: /\\d/ },\r\n\td: { pattern: /\\d/ },\r\n\r\n\t9: { pattern: /\\d/, optional: true },\r\n\t'#': { pattern: /\\d/, recursive: true },\r\n\tA: { pattern: /[a-zA-Z0-9]/ },\r\n\tS: { pattern: /[a-zA-Z]/ },\r\n};\r\n\r\nexport function MxMask(el, mask, options) {\r\n\tconst p = {\r\n\t\tinvalid: [],\r\n\t\tgetCaret: function () {\r\n\t\t\ttry {\r\n\t\t\t\tvar pos = 0,\r\n\t\t\t\t\tctrl = el.get(0),\r\n\t\t\t\t\tcSelStart = ctrl.selectionStart;\r\n\r\n\t\t\t\t// Firefox support\r\n\t\t\t\tif (cSelStart || cSelStart === '0') {\r\n\t\t\t\t\tpos = cSelStart;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn pos;\r\n\t\t\t} catch (e) {\r\n\t\t\t\tmx.logCatch(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\tsetCaret: function (pos) {\r\n\t\t\ttry {\r\n\t\t\t\tif (el.is(':focus')) {\r\n\t\t\t\t\tvar range,\r\n\t\t\t\t\t\tctrl = el.get(0);\r\n\r\n\t\t\t\t\t// Firefox, WebKit, etc..\r\n\t\t\t\t\tif (ctrl.setSelectionRange) {\r\n\t\t\t\t\t\tctrl.focus();\r\n\t\t\t\t\t\tctrl.setSelectionRange(pos, pos);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// IE\r\n\t\t\t\t\t\trange = ctrl.createTextRange();\r\n\t\t\t\t\t\trange.collapse(true);\r\n\t\t\t\t\t\trange.moveEnd('character', pos);\r\n\t\t\t\t\t\trange.moveStart('character', pos);\r\n\t\t\t\t\t\trange.select();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} catch (e) {\r\n\t\t\t\tmx.logCatch(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\tevents: function () {\r\n\t\t\tel.on('keydown.mask', function (e) {\r\n\t\t\t\tel.data('mask-keycode', e.which);\r\n\t\t\t})\r\n\t\t\t\t.on('input.mask', p.behaviour)\r\n\t\t\t\t.on('paste.mask drop.mask', function () {\r\n\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\tel.keydown().keyup();\r\n\t\t\t\t\t}, 100);\r\n\t\t\t\t})\r\n\t\t\t\t.on('change.mask', function () {\r\n\t\t\t\t\tel.data('changed', true);\r\n\t\t\t\t})\r\n\t\t\t\t.on('blur.mask', function () {\r\n\t\t\t\t\tif (oldValue !== p.val() && !el.data('changed')) {\r\n\t\t\t\t\t\tel.trigger('change');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tel.data('changed', false);\r\n\t\t\t\t})\r\n\t\t\t\t// it's very important that this callback remains in this position\r\n\t\t\t\t// otherwhise oldValue it's going to work buggy\r\n\t\t\t\t.on('blur.mask', function () {\r\n\t\t\t\t\toldValue = p.val();\r\n\t\t\t\t})\r\n\t\t\t\t// select all text on focus\r\n\t\t\t\t.on('focus.mask', function (e) {\r\n\t\t\t\t\tif (options.selectOnFocus === true) {\r\n\t\t\t\t\t\t$(e.target).select();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t},\r\n\t\tdestroyEvents: function () {\r\n\t\t\tel.off(['input', 'keydown', 'keyup', 'paste', 'drop', 'blur', 'focusout', ''].join('.mask '));\r\n\t\t},\r\n\t\tval: function (v) {\r\n\t\t\tvar isInput = el.is('input'),\r\n\t\t\t\tmethod = isInput ? 'val' : 'text',\r\n\t\t\t\tr;\r\n\r\n\t\t\tif (arguments.length > 0) {\r\n\t\t\t\tif (el[method]() !== v) {\r\n\t\t\t\t\tel[method](v);\r\n\t\t\t\t}\r\n\t\t\t\tr = el;\r\n\t\t\t} else {\r\n\t\t\t\tr = el[method]();\r\n\t\t\t}\r\n\r\n\t\t\treturn r;\r\n\t\t},\r\n\t\tgetMCharsBeforeCount: function (index, onCleanVal) {\r\n\t\t\tfor (var count = 0, i = 0, maskL = mask.length; i < maskL && i < index; i++) {\r\n\t\t\t\tif (!jMask.translation[mask.charAt(i)]) {\r\n\t\t\t\t\tindex = onCleanVal ? index + 1 : index;\r\n\t\t\t\t\tcount++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn count;\r\n\t\t},\r\n\t\tcaretPos: function (originalCaretPos, oldLength, newLength, maskDif) {\r\n\t\t\tvar translation = jMask.translation[mask.charAt(Math.min(originalCaretPos - 1, mask.length - 1))];\r\n\r\n\t\t\treturn !translation ? p.caretPos(originalCaretPos + 1, oldLength, newLength, maskDif) : Math.min(originalCaretPos + newLength - oldLength - maskDif, newLength);\r\n\t\t},\r\n\t\tbehaviour: function (e) {\r\n\t\t\te = e || window.event;\r\n\t\t\tp.invalid = [];\r\n\r\n\t\t\tconst keyCode = el.data('mask-keycode');\r\n\r\n\t\t\tif (![9, 16, 17, 18, 36, 37, 38, 39, 40, 91].includes(keyCode)) {\r\n\t\t\t\tlet caretPos = p.getCaret(),\r\n\t\t\t\t\tcurrVal = p.val(),\r\n\t\t\t\t\tcurrValL = currVal.length,\r\n\t\t\t\t\tnewVal = p.getMasked(),\r\n\t\t\t\t\tnewValL = newVal.length,\r\n\t\t\t\t\tmaskDif = p.getMCharsBeforeCount(newValL - 1) - p.getMCharsBeforeCount(currValL - 1),\r\n\t\t\t\t\tchangeCaret = caretPos < currValL;\r\n\r\n\t\t\t\tp.val(newVal);\r\n\r\n\t\t\t\tif (changeCaret) {\r\n\t\t\t\t\t// Avoid adjusting caret on backspace or delete\r\n\t\t\t\t\tif (!(keyCode === 8 || keyCode === 46)) {\r\n\t\t\t\t\t\tcaretPos = p.caretPos(caretPos, currValL, newValL, maskDif);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tp.setCaret(caretPos);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn p.callbacks(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetMasked: function (skipMaskChars, val) {\r\n\t\t\tvar buf = [],\r\n\t\t\t\tvalue = val === undefined ? p.val() : val + '',\r\n\t\t\t\tm = 0,\r\n\t\t\t\tmaskLen = mask.length,\r\n\t\t\t\tv = 0,\r\n\t\t\t\tvalLen = value.length,\r\n\t\t\t\toffset = 1,\r\n\t\t\t\taddMethod = 'push',\r\n\t\t\t\tresetPos = -1,\r\n\t\t\t\tlastMaskChar,\r\n\t\t\t\tcheck;\r\n\r\n\t\t\tif (options.reverse) {\r\n\t\t\t\taddMethod = 'unshift';\r\n\t\t\t\toffset = -1;\r\n\t\t\t\tlastMaskChar = 0;\r\n\t\t\t\tm = maskLen - 1;\r\n\t\t\t\tv = valLen - 1;\r\n\t\t\t\tcheck = function () {\r\n\t\t\t\t\treturn m > -1 && v > -1;\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\tlastMaskChar = maskLen - 1;\r\n\t\t\t\tcheck = function () {\r\n\t\t\t\t\treturn m < maskLen && v < valLen;\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\twhile (check()) {\r\n\t\t\t\tvar maskDigit = mask.charAt(m),\r\n\t\t\t\t\tvalDigit = value.charAt(v),\r\n\t\t\t\t\ttranslation = jMask.translation[maskDigit];\r\n\r\n\t\t\t\tif (translation) {\r\n\t\t\t\t\tif (valDigit.match(translation.pattern)) {\r\n\t\t\t\t\t\tbuf[addMethod](valDigit);\r\n\t\t\t\t\t\tif (translation.recursive) {\r\n\t\t\t\t\t\t\tif (resetPos === -1) {\r\n\t\t\t\t\t\t\t\tresetPos = m;\r\n\t\t\t\t\t\t\t} else if (m === lastMaskChar) {\r\n\t\t\t\t\t\t\t\tm = resetPos - offset;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (lastMaskChar === resetPos) {\r\n\t\t\t\t\t\t\t\tm -= offset;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tm += offset;\r\n\t\t\t\t\t} else if (translation.optional) {\r\n\t\t\t\t\t\tm += offset;\r\n\t\t\t\t\t\tv -= offset;\r\n\t\t\t\t\t} else if (translation.fallback) {\r\n\t\t\t\t\t\tbuf[addMethod](translation.fallback);\r\n\t\t\t\t\t\tm += offset;\r\n\t\t\t\t\t\tv -= offset;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tp.invalid.push({ p: v, v: valDigit, e: translation.pattern });\r\n\t\t\t\t\t}\r\n\t\t\t\t\tv += offset;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!skipMaskChars) {\r\n\t\t\t\t\t\tbuf[addMethod](maskDigit);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (valDigit === maskDigit) {\r\n\t\t\t\t\t\tv += offset;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tm += offset;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst lastMaskCharDigit = mask.charAt(lastMaskChar);\r\n\t\t\tif (maskLen === valLen + 1 && !jMask.translation[lastMaskCharDigit]) {\r\n\t\t\t\tbuf.push(lastMaskCharDigit);\r\n\t\t\t}\r\n\r\n\t\t\treturn buf.join('');\r\n\t\t},\r\n\t\tcallbacks: function (e) {\r\n\t\t\tconst val = p.val(),\r\n\t\t\t\tchanged = val !== oldValue,\r\n\t\t\t\tdefaultArgs = [val, e, el, options],\r\n\t\t\t\tcallback = function (name, criteria, args) {\r\n\t\t\t\t\tif (typeof options[name] === 'function' && criteria) {\r\n\t\t\t\t\t\toptions[name].apply(this, args);\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\tcallback('onChange', changed === true, defaultArgs);\r\n\t\t\tcallback('onKeyPress', changed === true, defaultArgs);\r\n\t\t\tcallback('onComplete', val.length === mask.length, defaultArgs);\r\n\t\t\tcallback('onInvalid', p.invalid.length > 0, [val, e, el, p.invalid, options]);\r\n\t\t},\r\n\t};\r\n\r\n\tel = $(el);\r\n\tlet jMask = this,\r\n\t\toldValue = p.val();\r\n\r\n\tmask = typeof mask === 'function' ? mask(p.val(), undefined, el, options) : mask;\r\n\r\n\t// public methods\r\n\tjMask.mask = mask;\r\n\tjMask.options = options;\r\n\tjMask.remove = function () {\r\n\t\tconst caret = p.getCaret();\r\n\t\tp.destroyEvents();\r\n\t\tp.val(jMask.getCleanVal());\r\n\t\tp.setCaret(caret - p.getMCharsBeforeCount(caret));\r\n\t\treturn el;\r\n\t};\r\n\r\n\t// get value without mask\r\n\tjMask.getCleanVal = function () {\r\n\t\treturn p.getMasked(true);\r\n\t};\r\n\r\n\t// get masked value without the value being in the input or element\r\n\tjMask.getMaskedVal = function (val) {\r\n\t\treturn p.getMasked(false, val);\r\n\t};\r\n\r\n\tjMask.init = function (onlyMask) {\r\n\t\tonlyMask = onlyMask || false;\r\n\t\toptions = options || {};\r\n\r\n\t\tjMask.translation = $.extend({}, translation, options.translation);\r\n\r\n\t\tjMask = $.extend(true, {}, jMask, options);\r\n\r\n\t\tif (onlyMask === false) {\r\n\t\t\tif (options.placeholder) {\r\n\t\t\t\tel.attr('placeholder', options.placeholder);\r\n\t\t\t}\r\n\r\n\t\t\t// this is necessary, otherwise if the user submit the form\r\n\t\t\t// and then press the \"back\" button, the autocomplete will erase\r\n\t\t\t// the data. Works fine on FF, Opera, Safari.\r\n\t\t\tif (el.data('mask')) {\r\n\t\t\t\tel.attr('autocomplete', 'off');\r\n\t\t\t}\r\n\r\n\t\t\tp.destroyEvents();\r\n\t\t\tp.events();\r\n\r\n\t\t\tconst caret = p.getCaret();\r\n\t\t\tp.val(p.getMasked());\r\n\t\t\tp.setCaret(caret + p.getMCharsBeforeCount(caret, true));\r\n\t\t} else {\r\n\t\t\tp.events();\r\n\t\t\tp.val(p.getMasked());\r\n\t\t}\r\n\t};\r\n\r\n\tjMask.init(!el.is('input'));\r\n}\r\n","import { MxMask } from './mx-mask';\r\n\r\nexport class MxBaseMask {\r\n\tparseAttributes = [];\r\n\r\n\tlink(scope, elem, attrs, ngModel, locale, $parse, i18n) {\r\n\t\tconst that = this;\r\n\t\tthat.element = elem;\r\n\t\tthat.format = attrs.mxMaskFormat;\r\n\t\tthat.localeFormats = locale.NUMBER_FORMATS;\r\n\t\tthat.i18n = i18n;\r\n\r\n\t\tconst formatter = that.createFormatter(ngModel);\r\n\t\tconst parser = that.createParser(ngModel);\r\n\r\n\t\tif (formatter) {\r\n\t\t\tngModel.$formatters.push(function (value) {\r\n\t\t\t\tif (ngModel.$isEmpty(value)) {\r\n\t\t\t\t\treturn value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn formatter.call(that, value);\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (parser) {\r\n\t\t\tngModel.$parsers.push(function (value) {\r\n\t\t\t\tif (ngModel.$isEmpty(value)) {\r\n\t\t\t\t\treturn value;\r\n\t\t\t\t}\r\n\t\t\t\treturn parser.call(that, value);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.parseAttributes.forEach(function (item) {\r\n\t\t\tif (attrs[item]) {\r\n\t\t\t\tthat[item] = attrs[item].indexOf(':') === -1 ? $parse(attrs[item])(scope) : attrs[item];\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.callbacks = {\r\n\t\t\tonChange: function (value) {\r\n\t\t\t\treturn ngModel.$setViewValue(value);\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tif (this.focus) {\r\n\t\t\telem.on('focus', function () {\r\n\t\t\t\tthat.focus(ngModel);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.blur) {\r\n\t\t\telem.on('blur', function () {\r\n\t\t\t\tthat.blur(ngModel);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.initialize(this.callbacks);\r\n\t}\r\n\r\n\tcreateParser() {\r\n\t\tthrow new Error('Mask. createParser method is not implemented');\r\n\t}\r\n\tcreateFormatter() {\r\n\t\tthrow new Error('Mask. createFormatter method is not implemented');\r\n\t}\r\n\r\n\tinitialize() {}\r\n\r\n\tcreateMask(pattern, options) {\r\n\t\treturn new MxMask($(this.element).find('input')[0] || this.element, pattern, options);\r\n\t}\r\n\r\n\trepeat(str, times) {\r\n\t\treturn new Array(times + 1).join(str);\r\n\t}\r\n}\r\n","import { MxBaseMask } from './mx-mask-base';\r\n\r\nexport class MxColorMask extends MxBaseMask {\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.parseAttributes = ['mxMaskFormat'];\r\n\t}\r\n\r\n\tcreateFormatter() {\r\n\t\treturn function (value) {\r\n\t\t\treturn value;\r\n\t\t};\r\n\t}\r\n\tcreateParser(ngModel) {\r\n\t\treturn function (value) {\r\n\t\t\tif (ngModel.$viewValue !== value) {\r\n\t\t\t\tngModel.$setViewValue(value);\r\n\t\t\t\tngModel.$render();\r\n\t\t\t}\r\n\r\n\t\t\treturn value;\r\n\t\t};\r\n\t}\r\n\tiniialize(options) {\r\n\t\tconst pattern = 'BXXXXXX';\r\n\t\tObject.assign(options, {\r\n\t\t\ttranslation: {\r\n\t\t\t\tB: { pattern: /#/ },\r\n\t\t\t\tX: { pattern: /[a-fA-F0-9]/ },\r\n\t\t\t},\r\n\t\t});\r\n\t\tthis.viewMask = this.createMask(pattern, options);\r\n\t}\r\n}\r\n","import moment from 'moment';\r\nimport { MxBaseMask } from './mx-mask-base';\r\n\r\nexport class MxIntervalMask extends MxBaseMask {\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.minutesSep = ':';\r\n\t\tthis.hoursSep = ':';\r\n\t\tthis.daysSep = '.';\r\n\t\tthis.parseAttributes = ['mxMaskFormat'];\r\n\t}\r\n\tcreateFormatter(ngModel) {\r\n\t\treturn function (value) {\r\n\t\t\tconst actualValue =\r\n\t\t\t\tthis.durationType === 'fulltime'\r\n\t\t\t\t\t? value\r\n\t\t\t\t\t\t\t.toString()\r\n\t\t\t\t\t\t\t.replace('h' + this.hoursSep, this.hoursSep)\r\n\t\t\t\t\t\t\t.replace('m' + this.minutesSep, this.minutesSep)\r\n\t\t\t\t\t\t\t.replace('s', '')\r\n\t\t\t\t\t: value\r\n\t\t\t\t\t\t\t.toString()\r\n\t\t\t\t\t\t\t.replace('h' + this.hoursSep, this.hoursSep)\r\n\t\t\t\t\t\t\t.replace('m', '');\r\n\r\n\t\t\tconst isReadonly = !ngModel.$$lastCommittedViewValue || ngModel.$$updateEvents === 'blur';\r\n\t\t\treturn this.applyFormat(actualValue, isReadonly) || value;\r\n\t\t};\r\n\t}\r\n\r\n\tcreateParser() {\r\n\t\treturn function (value) {\r\n\t\t\treturn this.getMinutes(value);\r\n\t\t};\r\n\t}\r\n\r\n\tinitialize(options) {\r\n\t\tvar maxSymbols = 4,\r\n\t\t\tavailableSep = '',\r\n\t\t\tpattern = 0 + this.repeat('9', maxSymbols - 1);\r\n\r\n\t\tthis.format = this.format || 'mmm';\r\n\r\n\t\t//initialize by durationType\r\n\t\tif (this.format === 'hh:mm:ss') {\r\n\t\t\tthis.durationType = 'fulltime';\r\n\t\t\tavailableSep += this.minutesSep;\r\n\t\t\tpattern += this.hoursSep + '00' + this.minutesSep + '00';\r\n\t\t} else if (this.format && this.format.indexOf('d') !== -1) {\r\n\t\t\tthis.durationType = 'days';\r\n\t\t\tavailableSep += this.daysSep + this.hoursSep;\r\n\t\t\tpattern += this.daysSep + '00' + this.hoursSep + '00';\r\n\t\t} else if (this.format && this.format.indexOf('h') !== -1) {\r\n\t\t\tthis.durationType = 'hours';\r\n\t\t\tavailableSep += this.hoursSep;\r\n\t\t\tpattern += this.hoursSep + '00';\r\n\t\t} else {\r\n\t\t\tthis.durationType = 'minutes';\r\n\t\t}\r\n\r\n\t\tthis.clearRegex = new RegExp('[^0-9' + availableSep + ']', 'g');\r\n\t\tObject.assign(options, { reverse: false });\r\n\t\tdelete options.onChange;\r\n\t\tthis.viewMask = this.createMask(pattern, options);\r\n\t}\r\n\r\n\tblur(ngModel) {\r\n\t\tif (ngModel.$viewValue) {\r\n\t\t\tngModel.$setViewValue(this.applyFormat(ngModel.$viewValue.toString(), true) || ngModel.$viewValue.toString());\r\n\t\t\tngModel.$render();\r\n\t\t}\r\n\t}\r\n\r\n\tfocus(ngModel) {\r\n\t\tif (ngModel.$viewValue) {\r\n\t\t\tngModel.$setViewValue(this.applyFormat(ngModel.$viewValue.toString(), false) || ngModel.$viewValue.toString());\r\n\t\t\tngModel.$render();\r\n\t\t}\r\n\t}\r\n\r\n\tapplyFormat(value, isReadonly) {\r\n\t\tif (value && value.replace(this.clearRegex, '')) {\r\n\t\t\tif (isReadonly) {\r\n\t\t\t\tvar result = this.formatDuration(this.getMinutes(value));\r\n\t\t\t\tresult = result.replace(this.clearRegex, '');\r\n\r\n\t\t\t\treturn this.durationType === 'fulltime'\r\n\t\t\t\t\t? result.replace(/:([0-9]+):([0-9]+)$/, 'h' + this.hoursSep + '$1m' + this.minutesSep + '$2s')\r\n\t\t\t\t\t: result.replace(this.hoursSep, 'h' + this.hoursSep) + 'm';\r\n\t\t\t}\r\n\r\n\t\t\tif (value.toString().indexOf(this.hoursSep) === -1) {\r\n\t\t\t\t// in minutes\r\n\t\t\t\tvalue = this.formatDuration(this.getMinutes(value));\r\n\t\t\t}\r\n\r\n\t\t\treturn this.durationType === 'fulltime'\r\n\t\t\t\t? value\r\n\t\t\t\t\t\t.replace('h' + this.hoursSep, this.hoursSep)\r\n\t\t\t\t\t\t.replace('m' + this.minutesSep, this.minutesSep)\r\n\t\t\t\t\t\t.replace('s', '')\r\n\t\t\t\t: value.replace('h' + this.hoursSep, this.hoursSep).replace('m', '');\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tformatDuration(value) {\r\n\t\tvar result =\r\n\t\t\tthis.durationType === 'fulltime'\r\n\t\t\t\t? parseFloat(value) + 0.001 /* to avoid seconds flooring to prev second on big values (e.g. 4331.583333333333 is 35 sec, but not 34 sec) */\r\n\t\t\t\t: parseInt(value);\r\n\r\n\t\tif (this.durationType !== 'minutes') {\r\n\t\t\tvar duration = moment.duration(result, 'minutes');\r\n\r\n\t\t\tif (this.durationType === 'hours') {\r\n\t\t\t\tresult = Math.floor(result / 60) + this.hoursSep + duration.minutes();\r\n\t\t\t} else if (this.durationType === 'days') {\r\n\t\t\t\tresult = Math.floor(result / (24 * 60)) + this.daysSep + duration.hours() + this.hoursSep + duration.minutes();\r\n\t\t\t} else if (this.durationType === 'fulltime') {\r\n\t\t\t\tresult =\r\n\t\t\t\t\tMath.floor(result / 60) +\r\n\t\t\t\t\tthis.hoursSep +\r\n\t\t\t\t\t(duration.minutes() < 10 ? '0' : '') +\r\n\t\t\t\t\tduration.minutes() +\r\n\t\t\t\t\tthis.minutesSep +\r\n\t\t\t\t\t(duration.seconds() < 10 ? '0' : '') +\r\n\t\t\t\t\tduration.seconds();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result + ''; // to string\r\n\t}\r\n\r\n\tgetMinutes(value) {\r\n\t\t// Possible cases: \"72:00:03\", \"72h:00m:03s\", \"4320.1823452345325\"(string)\r\n\t\tif (this.durationType === 'fulltime') {\r\n\t\t\treturn $.isNumeric(value)\r\n\t\t\t\t? parseFloat(value)\r\n\t\t\t\t: moment\r\n\t\t\t\t\t\t.duration(\r\n\t\t\t\t\t\t\tvalue\r\n\t\t\t\t\t\t\t\t.replace('h' + this.hoursSep, this.hoursSep)\r\n\t\t\t\t\t\t\t\t.replace('m' + this.minutesSep, this.minutesSep)\r\n\t\t\t\t\t\t\t\t.replace('s', ''),\r\n\t\t\t\t\t\t\t'seconds'\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.asMinutes();\r\n\t\t}\r\n\r\n\t\t// Possible cases: \"0:5\", 5, \"5\", \"0h:5m\", \"5m\"\r\n\t\tif ($.isNumeric(value) && value.indexOf(this.hoursSep) === -1) {\r\n\t\t\treturn parseInt(value);\r\n\t\t}\r\n\r\n\t\t// if value starts with digits and ends on not digit (like '4:', '4h', ar any other) then on UI it always shows like '4:', so lets format it like 4:00 means 4 hours\r\n\t\tif (this.durationType === 'hours' && /^\\d+[^\\d]$/.test(value)) {\r\n\t\t\tvalue = value.substr(0, value.length - 1) + this.hoursSep + '00';\r\n\t\t} else if ((this.durationType === 'days' || this.durationType === 'hours') && value.indexOf(this.hoursSep) === -1) {\r\n\t\t\tvalue += this.hoursSep + '00';\r\n\t\t}\r\n\r\n\t\tvar valueForParsing = value.indexOf('h') > -1 ? value.replace('h' + this.hoursSep, this.hoursSep).replace('m', '') : value.replace('m', '');\r\n\t\tvalueForParsing = valueForParsing === parseInt(valueForParsing) + '' ? parseInt(valueForParsing) : valueForParsing;\r\n\r\n\t\treturn moment.duration(valueForParsing, 'minutes').asMinutes();\r\n\t}\r\n}\r\n","import { MxBaseMask } from './mx-mask-base';\r\n\r\nexport class MxRegExpMask extends MxBaseMask {\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tcreateFormatter() {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tcreateParser() {\r\n\t\treturn null;\r\n\t}\r\n}\r\n","import { MxBaseMask } from './mx-mask-base';\r\n\r\nexport class MxNumericMask extends MxBaseMask {\r\n\tconstructor(decimalDigit, noFormat, isNegative, type) {\r\n\t\tsuper();\r\n\t\tthis.decimalDigit = typeof decimalDigit === 'object' ? decimalDigit[0] : decimalDigit || 0;\r\n\t\tthis.noFormat = typeof decimalDigit === 'object' ? decimalDigit[1] : noFormat || false;\r\n\t\tthis.isNegative = typeof decimalDigit === 'object' ? decimalDigit[2] : isNegative || false;\r\n\t\tthis.type = typeof decimalDigit === 'object' ? decimalDigit[3] : type || undefined;\r\n\t}\r\n\tcreateFormatter(ngModel) {\r\n\t\treturn function (value) {\r\n\t\t\tconst availableRegex = new RegExp('[^0-9' + (this.isNegative ? '-' : '') + ']', 'g');\r\n\r\n\t\t\tconst actualValue = this.clearFloatingPart(value).replace(availableRegex, this.decimalDigit > 0 ? this.localeFormats.DECIMAL_SEP : '');\r\n\t\t\tconst isReadonly = ngModel.$$lastCommittedViewValue === undefined || ngModel.$$updateEvents === 'blur';\r\n\t\t\treturn this.applyFormat(actualValue, isReadonly) || actualValue;\r\n\t\t};\r\n\t}\r\n\tcreateParser() {\r\n\t\treturn function (value) {\r\n\t\t\treturn this.getNumber(value, true);\r\n\t\t};\r\n\t}\r\n\r\n\tinitialize(options) {\r\n\t\tlet pattern = '0999999999999',\r\n\t\t\tavailableSymbols = '.'; // should add server decimalSymbol\r\n\t\tthis.originalFormat = '###';\r\n\r\n\t\tif (this.decimalDigit > 0) {\r\n\t\t\tpattern += this.localeFormats.DECIMAL_SEP + this._repeat('9', this.decimalDigit);\r\n\t\t\tavailableSymbols += this.localeFormats.DECIMAL_SEP;\r\n\t\t\tthis.originalFormat += '.[' + this._repeat('#', this.decimalDigit) + ']';\r\n\t\t}\r\n\t\tif (!this.noFormat) {\r\n\t\t\tavailableSymbols += this.localeFormats.GROUP_SEP;\r\n\t\t}\r\n\t\tif (this.isNegative) {\r\n\t\t\tpattern = '-' + pattern;\r\n\t\t\tthis.originalFormat = '-' + this.originalFormat;\r\n\t\t\tavailableSymbols += '-';\r\n\t\t}\r\n\r\n\t\tthis.groupRegex = new RegExp(this.escapeRegex(this.localeFormats.GROUP_SEP), 'g');\r\n\t\tthis.decimalRegex = new RegExp(this.escapeRegex(this.localeFormats.DECIMAL_SEP), 'g');\r\n\t\tthis.clearRegex = new RegExp('[^0-9' + availableSymbols + ']', 'g');\r\n\r\n\t\tObject.assign(options, { reverse: false });\r\n\t\tdelete options.onChange;\r\n\t\tthis.viewMask = this.createMask(pattern, options);\r\n\t}\r\n\r\n\tfocus(ngModel) {\r\n\t\tif (ngModel.$viewValue) {\r\n\t\t\tconst viewValue = this.applyFormat(ngModel.$viewValue.toString(), false) || ngModel.$viewValue.toString();\r\n\t\t\tngModel.$setViewValue(viewValue.replace(this.clearRegex, ''));\r\n\t\t\tngModel.$render();\r\n\t\t}\r\n\t}\r\n\r\n\tblur(ngModel) {\r\n\t\tif (ngModel.$viewValue) {\r\n\t\t\tconst viewValue = this.applyFormat(ngModel.$viewValue.toString(), true, true) || ngModel.$viewValue.toString();\r\n\t\t\tngModel.$setViewValue(viewValue.replace(this.clearRegex, ''));\r\n\t\t\tngModel.$render();\r\n\t\t}\r\n\t}\r\n\r\n\tgetNumber(value, editedByUser) {\r\n\t\tlet res;\r\n\t\tif (this.decimalDigit > 0) {\r\n\t\t\tres = this.disableFormating(value).replace(this.decimalRegex, '.');\r\n\t\t\tif (editedByUser) {\r\n\t\t\t\t// Let's say value is `1.99`, cursor is in the end and user press '9'\r\n\t\t\t\t// so we expect not to change value `1.99` and leave as it is, instead of rounding it to `2.00`.\r\n\t\t\t\t// Showing rounded value without changing the model is ok on init or when value are set via calc-field, like it was before.\r\n\t\t\t\tconst dotPosition = res.indexOf('.');\r\n\t\t\t\tif (dotPosition !== -1) {\r\n\t\t\t\t\tres = res.slice(0, dotPosition + this.decimalDigit + 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tres = parseFloat(res);\r\n\t\t} else {\r\n\t\t\tres = parseInt(this.disableFormating(value).replace(this.decimalRegex, ''));\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\r\n\tdisableFormating(value) {\r\n\t\treturn value.toString().replace(this.groupRegex, '');\r\n\t}\r\n\tapplyFormat(value, isReadonly, editedByUser) {\r\n\t\tif (value && value.replace(this.clearRegex, '')) {\r\n\t\t\tif (isReadonly) {\r\n\t\t\t\tlet result =\r\n\t\t\t\t\tthis.type === 'currency'\r\n\t\t\t\t\t\t? this.i18n.formatCurrency(this.getNumber(value, editedByUser))\r\n\t\t\t\t\t\t: this.i18n.formatNumber(this.getNumber(value, editedByUser), this.type, this.originalFormat);\r\n\t\t\t\tif (!result) {\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t\tresult = this.clearFloatingPart(result);\r\n\r\n\t\t\t\tif (!isReadonly || this.noFormat) {\r\n\t\t\t\t\tresult = this.disableFormating(result);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn result.replace(this.clearRegex, '');\r\n\t\t\t}\r\n\r\n\t\t\treturn this.disableFormating(value);\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tclearFloatingPart(result) {\r\n\t\tconst decimalIndex = result.toString().indexOf(this.localeFormats.DECIMAL_SEP);\r\n\t\tif (this.decimalDigit === 0 && decimalIndex !== -1) {\r\n\t\t\tresult = result.toString().substring(0, decimalIndex);\r\n\t\t}\r\n\r\n\t\treturn result.toString();\r\n\t}\r\n\r\n\tescapeRegex(s) {\r\n\t\treturn s.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\r\n\t}\r\n\r\n\t_repeat(str, times) {\r\n\t\treturn new Array(times + 1).join(str);\r\n\t}\r\n}\r\n","import { MxRegExpMask } from './masks/mx-regexp-mask';\r\nimport { MxColorMask } from './masks/mx-color-mask';\r\nimport { MxNumericMask } from './masks/mx-numeric-mask';\r\nimport { MxIntervalMask } from './masks/mx-interval-mask';\r\n\r\nangular.module('mx.components').directive('mxMask', [\r\n\t'$parse',\r\n\t'mx.internationalization',\r\n\tfunction mxMaskDirective($parse, i18n) {\r\n\t\treturn {\r\n\t\t\trestrict: 'A',\r\n\t\t\trequire: ['?ngModel'],\r\n\t\t\tlink: function (scope, element, attrs, ngModel) {\r\n\t\t\t\tif (!ngModel[0]) {\r\n\t\t\t\t\tthrow new Error(i18n.get('components.errors.mx_mask_without_ng_model'));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst locale = i18n.getLocale();\r\n\r\n\t\t\t\tconst modelCtrl = ngModel[0];\r\n\t\t\t\tconst maskType = attrs.mxMask;\r\n\t\t\t\tconst noFormat = attrs.mxMaskNoFormat === 'true';\r\n\t\t\t\tconst format = attrs.mxMaskFormat;\r\n\r\n\t\t\t\tlet mask = null;\r\n\t\t\t\tswitch (maskType) {\r\n\t\t\t\t\tcase 'integer':\r\n\t\t\t\t\tcase 'LongType':\r\n\t\t\t\t\tcase 'IntType':\r\n\t\t\t\t\t\tmask = new MxNumericMask(0, noFormat, true, maskType);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'float':\r\n\t\t\t\t\tcase 'FloatType':\r\n\t\t\t\t\t\tmask = new MxNumericMask(30, noFormat, true, maskType);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'DecimalType':\r\n\t\t\t\t\t\tmask = new MxNumericMask(+attrs.scale || 2, noFormat, true, maskType);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'currency':\r\n\t\t\t\t\t\tmask = new MxNumericMask(2, false, true, maskType);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'interval':\r\n\t\t\t\t\t\tmask = new MxIntervalMask();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'color':\r\n\t\t\t\t\t\tmask = new MxColorMask(format);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tmask = new MxRegExpMask();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmask.link(scope, element, attrs, modelCtrl, locale, $parse, i18n);\r\n\t\t\t},\r\n\t\t};\r\n\t},\r\n]);\r\n","import { EventHandler, HandlerCollection } from '../../../Utils/mx-handler.collection';\r\n\r\nexport const enum OperationStatus {\r\n\tStarted = 0,\r\n\tUpdated = 1,\r\n\tFinished = 2,\r\n\tCanceling = 3,\r\n\tCanceled = 4,\r\n}\r\n\r\nexport type ProcessItemOptions = {\r\n\tId: string;\r\n\tOperationName: string;\r\n\tStartTime: Date;\r\n\tInitiatedBy: string;\r\n\tStatusDetails: string;\r\n\tCancelable: boolean;\r\n\tCancellationUrl: string;\r\n\tIsExternal: boolean;\r\n\tOperationStatus: number;\r\n\tData: unknown;\r\n\tProgress: number;\r\n\tFinishTime?: Date;\r\n};\r\n\r\nexport class ProcessItem {\r\n\tprivate readonly timeout = 20 * 1000;\r\n\tprivate readonly events = {\r\n\t\tprogressUpdated: new HandlerCollection(),\r\n\t\tprocessStatusUpdated: new HandlerCollection(),\r\n\t\tprocessCanceling: new HandlerCollection>(),\r\n\t\tprocessCanceled: new HandlerCollection(),\r\n\t\tprocessFailed: new HandlerCollection(),\r\n\t};\r\n\tprivate _id = '';\r\n\tprivate _progress = 0;\r\n\tprivate _canceled = false;\r\n\tprivate _failed = false;\r\n\tprivate _operationStatus = OperationStatus.Started;\r\n\tpublic longRunning = false;\r\n\tpublic operationName: string;\r\n\tpublic startTime: Date;\r\n\tpublic initiatedBy: string;\r\n\tpublic statusDetails: string;\r\n\tpublic cancelable: boolean;\r\n\tpublic cancellationUrl: string;\r\n\tpublic isExternal: boolean;\r\n\tpublic data: unknown;\r\n\tpublic finishTime?: Date;\r\n\tconstructor(options: Partial) {\r\n\t\tthis.id = options.Id || this._id;\r\n\t\tthis.operationName = options.OperationName || '';\r\n\t\tthis.startTime = options.StartTime || new Date();\r\n\t\tthis.initiatedBy = options.InitiatedBy || '';\r\n\t\tthis.statusDetails = options.StatusDetails || '';\r\n\t\tthis.cancelable = options.Cancelable || false;\r\n\t\tthis.cancellationUrl = options.CancellationUrl || '';\r\n\t\tthis.operationStatus = options.OperationStatus || this._operationStatus;\r\n\t\tthis.isExternal = options.IsExternal || false;\r\n\t\tthis.data = options.Data || {};\r\n\t\tthis.progress = options.Progress || this._progress;\r\n\t\tthis.finishTime = options.FinishTime || undefined;\r\n\t}\r\n\r\n\tpublic get id(): string {\r\n\t\treturn this._id;\r\n\t}\r\n\r\n\tpublic set id(id: string) {\r\n\t\tif (!id) {\r\n\t\t\tthrow new Error('Process Id is empty');\r\n\t\t}\r\n\t\tthis._id = id;\r\n\t}\r\n\r\n\tpublic get isCanceled(): boolean {\r\n\t\treturn this._canceled;\r\n\t}\r\n\r\n\tpublic get operationStatus(): OperationStatus {\r\n\t\treturn this._operationStatus;\r\n\t}\r\n\r\n\tpublic set operationStatus(status: OperationStatus) {\r\n\t\tswitch (status) {\r\n\t\t\tcase OperationStatus.Started:\r\n\t\t\t\tthis.startTime = new Date();\r\n\t\t\t\tbreak;\r\n\t\t\tcase OperationStatus.Finished:\r\n\t\t\t\tthis.finishTime = new Date();\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthis.finishTime = undefined;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tif (this._operationStatus !== status) {\r\n\t\t\tthis._operationStatus = status;\r\n\t\t\tthis.events.processStatusUpdated.execute(status);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic get progress(): number {\r\n\t\treturn this._progress;\r\n\t}\r\n\r\n\tpublic set progress(progress: number) {\r\n\t\tif (progress < 0 || progress > 100) {\r\n\t\t\tthrow new RangeError('Progress value is out of range [0..100].');\r\n\t\t}\r\n\t\tswitch (progress) {\r\n\t\t\tcase 0:\r\n\t\t\t\tthis.startTime = new Date();\r\n\t\t\t\tbreak;\r\n\t\t\tcase 100:\r\n\t\t\t\tthis.finishTime = new Date();\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthis.finishTime = undefined;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tif (this._progress !== progress) {\r\n\t\t\tthis._progress = progress;\r\n\t\t\tthis.events.progressUpdated.execute(progress);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic get isExpired(): boolean {\r\n\t\tconst expired = this._canceled || this._failed;\r\n\t\tif (this.finishTime && !expired) {\r\n\t\t\treturn Date.now() - this.finishTime.getTime() >= this.timeout;\r\n\t\t}\r\n\t\treturn expired;\r\n\t}\r\n\r\n\tpublic async cancel(): Promise {\r\n\t\tconst cancel = this.cancelable && (await this.events.processCanceling.execute()).every(Boolean);\r\n\t\tif (cancel) {\r\n\t\t\tthis._progress = 0;\r\n\t\t\tthis._canceled = true;\r\n\t\t\tawait this.events.processCanceled.execute();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async fail(): Promise {\r\n\t\tthis._progress = 0;\r\n\t\tthis._failed = true;\r\n\t\tawait this.events.processFailed.execute();\r\n\t}\r\n\r\n\tpublic onProgressUpdated(handler: EventHandler) {\r\n\t\treturn this.events.progressUpdated.add(handler);\r\n\t}\r\n\r\n\tpublic onProcessStatusUpdated(handler: EventHandler) {\r\n\t\treturn this.events.processStatusUpdated.add(handler);\r\n\t}\r\n\r\n\tpublic onProcessCanceling(handler: EventHandler>) {\r\n\t\treturn this.events.processCanceling.add(handler);\r\n\t}\r\n\r\n\tpublic onProcessCanceled(handler: EventHandler) {\r\n\t\treturn this.events.processCanceled.add(handler);\r\n\t}\r\n\r\n\tpublic onProcessFailed(handler: EventHandler) {\r\n\t\treturn this.events.processFailed.add(handler);\r\n\t}\r\n}\r\n","import {\r\n\tIComponentOptions,\r\n\tIController,\r\n\tIControllerConstructor,\r\n\tIDocumentService,\r\n\tInjectable,\r\n\tISCEDelegateService,\r\n\tISCEService,\r\n\tIScope,\r\n\tIWindowService,\r\n\tmaterial,\r\n\tmodule,\r\n} from 'angular';\r\n\r\nimport { IAttachmentFile, IAttachmentsController } from './mx-attachment.interfaces';\r\nimport { I18n } from '../../../i18n/mx-internationalization';\r\nimport { MxAttachmentProcessService } from '../../PandoraSolutionBuilderAgent/modules/Attachment/mx-attachment-process.service';\r\nimport { OperationStatus, ProcessItem } from '../../Pandora/model/process-item';\r\nimport { EventService } from '../../../App/services/event-service';\r\nimport { EventCodes } from '../../../App/model/event-codes';\r\nimport { EventUnsubscribe } from '../../../Utils/mx-handler.collection';\r\nimport { HttpService } from '../../../App/services/http-service';\r\nimport { ConfigService } from '../../../App/services/mx-config-service';\r\n\r\nclass AttachmentPopupDialogController implements IController {\r\n\tpublic $mdDialog: material.IDialogService;\r\n\tstatic $inject = ['$mdDialog'];\r\n\r\n\tconstructor($mdDialog: material.IDialogService) {\r\n\t\tthis.$mdDialog = $mdDialog;\r\n\t}\r\n\r\n\tcancel() {\r\n\t\tthis.$mdDialog.cancel();\r\n\t}\r\n}\r\n\r\nclass AttachmentController implements IController {\r\n\tpublic file?: IAttachmentFile;\r\n\tpublic type?: string;\r\n\tpublic width?: string;\r\n\tpublic height?: string;\r\n\tpublic default?: string;\r\n\tpublic onSelectFile?: (options: { [file: string]: IAttachmentFile }) => void;\r\n\tprivate trustedUrl?: string;\r\n\tprivate _type = '';\r\n\tprivate enableSelection = false;\r\n\tprivate downloadLabel: string;\r\n\tprivate deleteLabel: string;\r\n\tprivate commentLabel: string;\r\n\tprivate cancelLabel: string;\r\n\tprivate i18n: { [key: string]: string };\r\n\tprivate i18nCommon: { [key: string]: string };\r\n\tprivate mxAttachments: IAttachmentsController;\r\n\tprivate process?: ProcessItem;\r\n\r\n\tstatic $inject = [\r\n\t\t'$document',\r\n\t\t'$window',\r\n\t\t'$sce',\r\n\t\t'$sceDelegate',\r\n\t\t'$mdDialog',\r\n\t\t'mx.internationalization',\r\n\t\t'mx.sb.Attachment.MxAttachmentProcessService',\r\n\t\t'mx.shell.EventService',\r\n\t\t'mx.SolutionBuilderAgent.Http',\r\n\t\t'mx.shell.Config',\r\n\t\t'$scope',\r\n\t];\r\n\tprivate size: string;\r\n\tprivate processEventUnsubscribes: EventUnsubscribe[];\r\n\tprivate disableExternalAttachmentsPreview: boolean;\r\n\r\n\tconstructor(\r\n\t\tprivate readonly $document: IDocumentService,\r\n\t\tprivate readonly $window: IWindowService,\r\n\t\tprivate readonly $sce: ISCEService,\r\n\t\tprivate readonly $sceDelegate: ISCEDelegateService,\r\n\t\tprivate readonly $mdDialog: material.IDialogService,\r\n\t\ti18n: I18n,\r\n\t\tprivate readonly attachmentProcessService: MxAttachmentProcessService,\r\n\t\tprivate readonly eventService: EventService,\r\n\t\tprivate readonly http: HttpService,\r\n\t\tprivate readonly configService: ConfigService,\r\n\t\tprivate readonly $scope: IScope\r\n\t) {\r\n\t\tthis.i18n = i18n.get('components.mx-attachments') as { [key: string]: string };\r\n\t\tthis.i18nCommon = i18n.get('components.common') as { [key: string]: string };\r\n\t\tthis.downloadLabel = this.i18n.download;\r\n\t\tthis.deleteLabel = this.i18n.delete;\r\n\t\tthis.cancelLabel = this.i18n.cancel;\r\n\t\tthis.commentLabel = this.i18nCommon.comment;\r\n\t\tthis.size = '';\r\n\t\tthis.mxAttachments = {};\r\n\t\tthis.processEventUnsubscribes = [];\r\n\t\tthis.disableExternalAttachmentsPreview = this.configService.get('disableExternalAttachmentsPreview');\r\n\t}\r\n\r\n\t$onInit() {\r\n\t\tthis.enableSelection = (this.mxAttachments.enableSelection || '').toLowerCase() === 'true';\r\n\r\n\t\tthis._type = (this.file?.type || 'text').replace('application/', '').split('/').shift() || '';\r\n\r\n\t\tif (this.file?.size) {\r\n\t\t\tconst sizeKb = Math.round(this.file.size / 1024);\r\n\t\t\tconst sizeMb = Math.round(sizeKb / 1024);\r\n\t\t\tconst sizeGb = Math.round(sizeMb / 1024);\r\n\r\n\t\t\tthis.size = sizeGb > 1 ? sizeGb + ' G' : sizeMb > 1 ? sizeMb + ' M' : sizeKb > 1 ? sizeKb + ' K' : this.file.size + ' B';\r\n\t\t}\r\n\r\n\t\tconst process = this.file?.id ? this.attachmentProcessService.getForegroundProcessById(this.file.id) : undefined;\r\n\t\tif (process) {\r\n\t\t\tthis.bindProcessCallbacks(process);\r\n\t\t} else {\r\n\t\t\tthis.eventService.subscribeTo(\r\n\t\t\t\tEventCodes.ForegroundProcessCreated,\r\n\t\t\t\t(event, process: ProcessItem) => {\r\n\t\t\t\t\tif (this.file && this.file.id && process.id === this.file.id) {\r\n\t\t\t\t\t\tthis.bindProcessCallbacks(process);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tthis.$scope\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\t$onDestroy() {\r\n\t\tthis.processEventUnsubscribes.forEach((unsubscribe) => unsubscribe());\r\n\t}\r\n\r\n\tprivate bindProcessCallbacks(process: ProcessItem): void {\r\n\t\tthis.process = process;\r\n\t\tconst onProgressUpdatedUnsubscribe = this.process.onProgressUpdated(async (progress) => await this.onUploadingProgress(progress));\r\n\t\tconst onProcessStatusUpdatedUnsubscribe = this.process.onProcessStatusUpdated(async (status) => await this.onUploadStatusUpdate(status));\r\n\t\tconst onProcessCancelingUnsubscribe = this.process.onProcessCanceling(async () => await this.onUploadingCanceling());\r\n\t\tconst onProcessFailedUnsubscribe = this.process.onProcessFailed(async () => await this.onUploadingFailed());\r\n\t\tthis.processEventUnsubscribes.push(...[], onProgressUpdatedUnsubscribe, onProcessStatusUpdatedUnsubscribe, onProcessCancelingUnsubscribe, onProcessFailedUnsubscribe);\r\n\t}\r\n\r\n\tpublic async onUploadingProgress(progress: number): Promise {\r\n\t\tif (this.file) {\r\n\t\t\tthis.file.comment = progress > 0 && progress < 100 ? `Uploading ${progress}%` : '';\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async onUploadStatusUpdate(status: OperationStatus): Promise {\r\n\t\tif (this.file) {\r\n\t\t\tswitch (status) {\r\n\t\t\t\tcase OperationStatus.Finished:\r\n\t\t\t\t\tthis.file.comment = '';\r\n\t\t\t\t\tthis.file.uploaded = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase OperationStatus.Canceled:\r\n\t\t\t\t\tthis.cancelUpload();\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async onUploadingCanceling(): Promise {\r\n\t\treturn Boolean(await this.mxAttachments.onUploadCanceling());\r\n\t}\r\n\r\n\tpublic async onUploadingFailed(): Promise {\r\n\t\tawait this.mxAttachments.loadFiles();\r\n\t}\r\n\r\n\tpublic async onCancelClick(): Promise {\r\n\t\tawait this.process?.cancel();\r\n\t}\r\n\r\n\tpublic async onImageClick() {\r\n\t\tconst template = `\"${this.file?.name}\"`;\r\n\t\tthis.showInDialog(template);\r\n\t}\r\n\r\n\tpublic async onVideoClick() {\r\n\t\tconst url = await this.getUrl();\r\n\t\tif (url) {\r\n\t\t\tconst template = `\r\n\t\t\t\t`;\r\n\r\n\t\t\tthis.showInDialog(template);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getFileExtension(): string {\r\n\t\treturn (this.file?.name.includes('.') ? this.file?.name.split('.').at(-1) || '' : '').toLowerCase();\r\n\t}\r\n\r\n\tprivate isMsOfficeFile(): boolean {\r\n\t\treturn ['doc', 'docx', 'xls', 'xlsx', 'pps', 'ppsx', 'ppt', 'pptx'].includes(this.getFileExtension());\r\n\t}\r\n\r\n\tpublic async onInlineFileClick() {\r\n\t\tif (!this.disableExternalAttachmentsPreview && this.file) {\r\n\t\t\tif (this.isMsOfficeFile()) {\r\n\t\t\t\tif (await this.canPreviewOfficeFile()) {\r\n\t\t\t\t\tthis.$window.open(await this.getOfficePreviewUrl());\r\n\t\t\t\t} else {\r\n\t\t\t\t\tawait this.downloadFile();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.$window.open(await this.getInlineUrl());\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tawait this.downloadFile();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async getInlineUrl(): Promise {\r\n\t\tif (!this.file) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\tthis.file.inline = true;\r\n\t\tconst fileUrl = await this.getUrl();\r\n\t\tthis.file.inline = false;\r\n\t\treturn fileUrl;\r\n\t}\r\n\r\n\tprivate async getOfficePreviewUrl(): Promise {\r\n\t\treturn this.file?.isPublic && !this.file?.sendContentThroughServer\r\n\t\t\t? `https://view.officeapps.live.com/op/view.aspx?src=${encodeURIComponent(await this.getInlineUrl())}`\r\n\t\t\t: await this.http.get(`api/fileStorage/officeFilePreviewUrl/${this.file?.id}`);\r\n\t}\r\n\r\n\tprivate async canPreviewOfficeFile(): Promise {\r\n\t\treturn (this.file?.isPublic && !this.file?.sendContentThroughServer) || (await this.http.get(`api/fileStorage/canPreviewOfficeFile/${this.file?.id}`));\r\n\t}\r\n\r\n\tprivate showInDialog(template: string) {\r\n\t\tthis.$mdDialog.show({\r\n\t\t\tclickOutsideToClose: true,\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t\tcontroller: AttachmentPopupDialogController,\r\n\t\t\ttemplate: `\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t${template}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
`,\r\n\t\t});\r\n\t}\r\n\r\n\tpublic isUploaded(): boolean {\r\n\t\treturn this.file?.uploaded === true;\r\n\t}\r\n\r\n\tpublic isNewBox(): boolean {\r\n\t\treturn this._type === 'new';\r\n\t}\r\n\r\n\tpublic isPdf(): boolean {\r\n\t\treturn this._type === 'pdf';\r\n\t}\r\n\r\n\tpublic isImage(): boolean {\r\n\t\treturn this._type === 'image';\r\n\t}\r\n\r\n\tpublic isGeneralFileType(): boolean {\r\n\t\treturn !this.isImage() && !this.isPdf() && !this.isVideo() && !this.isNewBox();\r\n\t}\r\n\r\n\tpublic isVideo(): boolean {\r\n\t\treturn this._type === 'video';\r\n\t}\r\n\r\n\tpublic showDownload(): boolean {\r\n\t\treturn this.isUploaded();\r\n\t}\r\n\r\n\tpublic isEditMode(): boolean {\r\n\t\treturn this.isUploaded() && !this.mxAttachments.readOnly;\r\n\t}\r\n\r\n\tprivate async getUrl() {\r\n\t\tif (this.file && !this.file.isVirtual && this.isUploaded()) {\r\n\t\t\tthis.file.url = await this.mxAttachments.onGetFileUrl({ file: this.file });\r\n\t\t}\r\n\t\tconst newUrl = this.file?.isVirtual ? this.file.url : this.mxAttachments.formatUrl({ url: this.file?.url || '' }) || this.file?.url;\r\n\t\tif (!this.trustedUrl || this.$sceDelegate.valueOf(this.trustedUrl) !== newUrl) {\r\n\t\t\tthis.trustedUrl = this.$sce.trustAsResourceUrl(newUrl);\r\n\t\t}\r\n\t\treturn this.trustedUrl || '';\r\n\t}\r\n\r\n\tpublic deleteFile() {\r\n\t\tthis.mxAttachments.onDelete({ file: this.file });\r\n\t}\r\n\r\n\tprivate cancelUpload() {\r\n\t\tthis.mxAttachments.onUploadCanceled({ file: this.file });\r\n\t}\r\n\r\n\tpublic editComment() {\r\n\t\tthis.mxAttachments.onComment({ file: this.file });\r\n\t}\r\n\r\n\tpublic async downloadFile() {\r\n\t\tif (/^data:[^;]*;[^;]+,/.test(this.file?.url || '')) {\r\n\t\t\tconst a = (this.$document[0] as Document).createElement('a');\r\n\t\t\ta.href = await this.getUrl();\r\n\t\t\ta.download = this.file?.name || 'dummy';\r\n\t\t\ta.click();\r\n\t\t} else {\r\n\t\t\tif (this.file) {\r\n\t\t\t\tthis.mxAttachments.onDownloadFiles({ files: [this.file] });\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport class AttachmentComponent implements IComponentOptions {\r\n\tcontroller: Injectable;\r\n\tbindings: { [boundProperty: string]: string };\r\n\r\n\tcontrollerAs = 'vm';\r\n\ttemplateUrl = 'mx-attachments/mx-attachment.html';\r\n\ttransclude = true;\r\n\trequire: { [controller: string]: string } = { mxAttachments: '?^' };\r\n\r\n\tconstructor() {\r\n\t\tthis.bindings = {\r\n\t\t\tfile: '=?',\r\n\t\t\ttype: '@?',\r\n\t\t\twidth: '@?',\r\n\t\t\theight: '@?',\r\n\t\t\tdefault: '@?',\r\n\t\t\tonSelectFile: '&',\r\n\t\t};\r\n\r\n\t\tthis.controller = AttachmentController;\r\n\t}\r\n}\r\n\r\nmodule('mx.components').component('mxAttachment', new AttachmentComponent());\r\n","angular.module('mx.components').directive('mxAttachments', [\r\n\tfunction mxAttachmentsDirective() {\r\n\t\treturn {\r\n\t\t\tlink: function (scope, element) {\r\n\t\t\t\tconst vm = scope.vm;\r\n\r\n\t\t\t\tif (vm.multiUpload !== false) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\telement[0].addEventListener('drop', onDrop, true);\r\n\r\n\t\t\t\tscope.$on('$destroy', function cleanUp() {\r\n\t\t\t\t\telement[0].removeEventListener('drop', onDrop);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tfunction onDrop() {\r\n\t\t\t\t\tif (vm.files.length) {\r\n\t\t\t\t\t\tvm.onDelete({ file: vm.files[0] });\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\trestrict: 'E',\r\n\t\t\tscope: {},\r\n\t\t\tbindToController: {\r\n\t\t\t\tfiles: '=',\r\n\t\t\t\theaders: '=',\r\n\t\t\t\tmakeUploadUrl: '&',\r\n\t\t\t\tuploadFile: '&',\r\n\t\t\t\tformatUrl: '&',\r\n\t\t\t\tonDelete: '&',\r\n\t\t\t\tonComment: '&',\r\n\t\t\t\tonUploadCanceled: '&',\r\n\t\t\t\tonUploadCanceling: '&',\r\n\t\t\t\tonGetFileUrl: '&',\r\n\t\t\t\treadOnly: '=',\r\n\t\t\t\tlazyMode: '=?',\r\n\t\t\t\tenableSelection: '@',\r\n\t\t\t\ttype: '@?',\r\n\t\t\t\twidth: '@?',\r\n\t\t\t\theight: '@?',\r\n\t\t\t\tmaxWidth: '@?',\r\n\t\t\t\tmaxHeight: '@?',\r\n\t\t\t\tdefault: '@?',\r\n\t\t\t\tskipInitialLoad: '=?',\r\n\t\t\t\tmultiUpload: '=?',\r\n\t\t\t\tloadFiles: '&?',\r\n\t\t\t\tonDownloadFiles: '&',\r\n\t\t\t\tdisableSearch: '<',\r\n\t\t\t\tdisableSort: '<',\r\n\t\t\t\tdefaultViewMode: '@viewMode',\r\n\t\t\t\tstorageInfo: '<',\r\n\t\t\t\tignoreFileLimitations: '<',\r\n\t\t\t\tsettingsInitialized: '<',\r\n\t\t\t\tallowedFileTypes: '<',\r\n\t\t\t\tfileLimitsMessage: '<',\r\n\t\t\t},\r\n\t\t\trequire: {\r\n\t\t\t\tmxContainerCtrl: '?^^mxContainer',\r\n\t\t\t},\r\n\t\t\tcontroller: MxAttachmentsCtrl,\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t\ttemplateUrl: function (tElem, tAttrs) {\r\n\t\t\t\treturn 'mx-attachments/' + (tAttrs.type === 'image' ? 'mx-image-template.html' : 'mx-attachments.html');\r\n\t\t\t},\r\n\t\t};\r\n\t},\r\n]);\r\n\r\nMxAttachmentsCtrl.$inject = [\r\n\t'$element',\r\n\t'$scope',\r\n\t'$timeout',\r\n\t'mx.shell.Config',\r\n\t'mx.shell.NotificationService',\r\n\t'mx.internationalization',\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n\t'mx.shell.EventService',\r\n];\r\n\r\nfunction MxAttachmentsCtrl($element, $scope, $timeout, mxConfig, mxNotificationService, i18n, personalizationService, eventService) {\r\n\tconst vm = this;\r\n\tlet types;\r\n\tlet dz;\r\n\tvm.i18nCommon = i18n.get('solutionBuilderAgent.common');\r\n\tvm.i18n = i18n.get('components.mx-attachments');\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvm.scope = $scope;\r\n\t\tif (vm.mxContainerCtrl) {\r\n\t\t\tvm.mxContainerCtrl.registerChild($scope);\r\n\t\t}\r\n\t\tvm.maxCountExceedFiles = [];\r\n\t\tvm.wrongTypeFiles = [];\r\n\t\tvm.maxSizeExceedFiles = [];\r\n\t\tvm.viewMode = vm.defaultViewMode;\r\n\t\tvm.isInitMode = (vm.lazyMode || '').toString().toLowerCase() === 'true';\r\n\t\tif (typeof vm.multiUpload === 'undefined') {\r\n\t\t\tvm.multiUpload = true;\r\n\t\t}\r\n\t\tvm.onClick = onClick;\r\n\t\ttypes = loadTypes();\r\n\t\tvm.sortFields = loadSortFields();\r\n\t\tvm.sortBy = vm.sortFields[0].field;\r\n\t\tdz = new mx.components.DropZone($timeout, vm);\r\n\r\n\t\t$scope.$watchGroup(['vm.maxCountExceedFiles', 'vm.wrongTypeFiles', 'vm.maxSizeExceedFiles'], showFailedUploadNotifications);\r\n\t\tvm.filesSelected = dz.processSelectedFiles;\r\n\t\tvm.onAdd = onAdd;\r\n\t\tvm.checkSelectionChanges = checkSelectionChanges;\r\n\t\tvm.downloadSelectedLabel = vm.i18n.downloadSelected;\r\n\t\tvm.downloadAllLabel = vm.i18n.downloadAll;\r\n\t\tvm.onDownloadSelected = onDownloadSelected;\r\n\t\tvm.onDownloadAll = onDownloadAll;\r\n\t\tvm.setViewMode = setViewMode;\r\n\t\tvm.onSortingChanged = onSortingChanged;\r\n\r\n\t\tvm._files = [];\r\n\t\tsetFiles(vm.files);\r\n\r\n\t\tObject.defineProperty(vm, 'files', {\r\n\t\t\tget: () => vm._files,\r\n\t\t\tset: (value) => {\r\n\t\t\t\tsetFiles(value);\r\n\t\t\t},\r\n\t\t});\r\n\t\tif (!vm.readOnly) {\r\n\t\t\tdz.init($element.find('.mx-attachments-list')[0]);\r\n\t\t}\r\n\r\n\t\tinitPersonalization();\r\n\t\tlet unbindWatcher = $scope.$watch('vm.settingsInitialized', function () {\r\n\t\t\tif (vm.settingsInitialized) {\r\n\t\t\t\tcalculateFileLimitsInfoBoxExpandable();\r\n\t\t\t\tunbindWatcher();\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\t$scope.$watch('vm.files.length', function () {\r\n\t\tcheckSelectionChanges();\r\n\t});\r\n\r\n\treturn vm;\r\n\r\n\tfunction initPersonalization() {\r\n\t\tpersonalizationService.getAttachmentsSettings().then((settings) => {\r\n\t\t\tif (!settings) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvm.viewMode = settings.viewMode || vm.viewMode;\r\n\t\t\tvm.sortBy = settings.sortBy || vm.sortBy;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction setViewMode(viewMode) {\r\n\t\tvm.viewMode = viewMode;\r\n\t\tpersonalizationService.saveAttachmentsViewMode(viewMode);\r\n\t}\r\n\r\n\tfunction onSortingChanged(sortBy) {\r\n\t\tpersonalizationService.saveAttachmentsSorting(sortBy);\r\n\t}\r\n\r\n\tfunction onAdd($files, $event) {\r\n\t\tvm.onDelete({ file: vm.files[0] });\r\n\r\n\t\t$timeout(function () {\r\n\t\t\tvm.filesSelected($files, $event);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction onClick() {\r\n\t\tvm.isInitMode = false;\r\n\r\n\t\tif ((!vm.files || !vm.files.length) && typeof vm.loadFiles === 'function') {\r\n\t\t\tvm.loadFiles();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction checkSelectionChanges() {\r\n\t\tvm.enabledDownloadFiles = vm.files && Array.isArray(vm.files) && vm.files.some((file) => file.selected);\r\n\t}\r\n\r\n\tasync function onDownloadSelected() {\r\n\t\tconst selectedFiles = vm.files.filter((file) => file.selected);\r\n\t\tawait downloadFiles(selectedFiles);\r\n\t}\r\n\r\n\tasync function onDownloadAll() {\r\n\t\tawait downloadFiles(vm.files);\r\n\t}\r\n\r\n\tasync function downloadFiles(files) {\r\n\t\tif (typeof vm.onDownloadFiles === 'function' && Array.isArray(files) && files.length > 0) {\r\n\t\t\tawait vm.onDownloadFiles({ files: files });\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setFiles(files) {\r\n\t\tvm._files = (files || []).map(function (file) {\r\n\t\t\tfile.type = vm.type === 'image' && file.isVirtual ? 'image' : getType(file);\r\n\r\n\t\t\tif (file.thumbnail) {\r\n\t\t\t\treturn file;\r\n\t\t\t}\r\n\t\t\tconst forceThumbnailDrawing = !vm.skipInitialLoad && (/api\\/filestorage\\//i.test(file.url) || Boolean(file.providerId));\r\n\r\n\t\t\tif (forceThumbnailDrawing) {\r\n\t\t\t\tif (vm.type === 'image') {\r\n\t\t\t\t\tdelete file.thumbnail;\r\n\t\t\t\t\tdz.createThumbnail(file);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst url = file.url || '';\r\n\t\t\t\tfile.thumbnail = /^https?:\\/\\//.test(url) || file.url.startsWith('data:image') ? url : mxConfig.settings.imgHosts.default + url;\r\n\t\t\t\tfile.type = 'image';\r\n\t\t\t}\r\n\t\t\treturn file;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getType(file) {\r\n\t\tconst extension = (file.name.split('.').pop() || '').toUpperCase();\r\n\t\treturn types[extension] || 'text';\r\n\t}\r\n\r\n\tfunction loadTypes() {\r\n\t\tconst templates = {};\r\n\r\n\t\t['MP4', 'WEBM', 'OGG'].forEach((f) => {\r\n\t\t\ttemplates[f] = 'video';\r\n\t\t});\r\n\r\n\t\t['JPEG', 'JPG', 'GIF', 'PNG', 'APNG', 'SVG', 'BMP', 'ICO'].forEach((f) => {\r\n\t\t\ttemplates[f] = 'image';\r\n\t\t});\r\n\r\n\t\ttemplates.PDF = 'pdf';\r\n\t\treturn templates;\r\n\t}\r\n\r\n\tfunction loadSortFields() {\r\n\t\treturn [\r\n\t\t\t{\r\n\t\t\t\tname: vm.i18nCommon.name,\r\n\t\t\t\tfield: 'name',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: vm.i18nCommon.uploaded,\r\n\t\t\t\tfield: 'uploadedOn',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: vm.i18nCommon.size,\r\n\t\t\t\tfield: 'size',\r\n\t\t\t},\r\n\t\t];\r\n\t}\r\n\r\n\tfunction showFailedUploadNotifications() {\r\n\t\tif (vm.maxCountExceedFiles.length === 0 && vm.wrongTypeFiles.length === 0 && vm.maxSizeExceedFiles.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet messages = [];\r\n\r\n\t\tif (vm.maxCountExceedFiles.length > 0) {\r\n\t\t\tlet maxCountExceedFiles = vm.maxCountExceedFiles.map((x) => x.name);\r\n\t\t\tlet message =\r\n\t\t\t\ti18n.getFormatted('components.mx-attachments.filesExceededMaxCountPerObjectErrorMessage', maxCountExceedFiles.length) +\r\n\t\t\t\t'
' +\r\n\t\t\t\tmaxCountExceedFiles.join('
');\r\n\t\t\tmessages.push(message);\r\n\t\t}\r\n\t\tif (vm.maxSizeExceedFiles.length > 0) {\r\n\t\t\tlet maxSizeExceedFiles = vm.maxSizeExceedFiles.map((x) => x.name);\r\n\t\t\tlet message = i18n.getFormatted('components.mx-attachments.filesExceededSizeErrorMessage', maxSizeExceedFiles.length) + '
' + maxSizeExceedFiles.join('
');\r\n\t\t\tmessages.push(message);\r\n\t\t}\r\n\t\tif (vm.wrongTypeFiles.length > 0) {\r\n\t\t\tlet wrongTypeFiles = vm.wrongTypeFiles.map((x) => x.name);\r\n\t\t\tlet message =\r\n\t\t\t\ti18n.getFormatted('components.mx-attachments.filesNotAllowedTypeErrorMessage', wrongTypeFiles.length, vm.storageInfo.fileExtensions) +\r\n\t\t\t\t'
' +\r\n\t\t\t\twrongTypeFiles.join('
');\r\n\t\t\tmessages.push(message);\r\n\t\t}\r\n\r\n\t\tmxNotificationService.alert(vm.i18n.upload, messages.join('

'));\r\n\t}\r\n\r\n\tfunction calculateFileLimitsInfoBoxExpandable() {\r\n\t\tif (!vm.fileLimitsMessage || vm.readOnly) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\teventService.subscribeTo(mx.shell.EventCodes.LayoutChanged, recalculateFileLimitsInfoBoxExpandable, $scope);\r\n\r\n\t\t$scope.$evalAsync(function () {\r\n\t\t\tvm.fileLimitMessageBox = $element.find('.mx-attachments-info-box--message')[0];\r\n\t\t\trecalculateFileLimitsInfoBoxExpandable();\r\n\t\t});\r\n\t}\r\n\r\n\tfunction recalculateFileLimitsInfoBoxExpandable() {\r\n\t\tvm.expandable = vm.fileLimitMessageBox.offsetWidth < vm.fileLimitMessageBox.scrollWidth;\r\n\t}\r\n}\r\n","angular.module('mx.components').factory('mx.components.MxGridHelper', MxGridHelper);\r\n\r\nMxGridHelper.$inject = [];\r\n\r\nexport function MxGridHelper() {\r\n\tconst gridHelper = {\r\n\t\tpreventStuckingMovingColumns,\r\n\t};\r\n\r\n\treturn gridHelper;\r\n\r\n\t// Prevent Stucking Columns while moving them beyond horizontal scroll. Can be removed after this bug is fixed: https://github.com/angular-ui/ui-grid/issues/6603\r\n\tfunction preventStuckingMovingColumns($scope, $element) {\r\n\t\t$scope.$applyAsync(function () {\r\n\t\t\t$element.find('.ui-grid-header-cell-row')[0].addEventListener(\r\n\t\t\t\t'mousedown',\r\n\t\t\t\t() => {\r\n\t\t\t\t\t$(document).one('mouseup', () => {\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tconst clonedStuckedColumn = $element.find('.movingColumn');\r\n\t\t\t\t\t\t\tif (clonedStuckedColumn.length) {\r\n\t\t\t\t\t\t\t\tclonedStuckedColumn.remove();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, 100);\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\ttrue\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n}\r\n","'use strict';\r\nimport template from './mx-hierarchy-picker.html';\r\n\r\n/**\r\n * @ngdoc component\r\n * @name mx.components:mxHierarchyPicker\r\n * @module mx.components\r\n * @restrict 'E'\r\n * @scope {}\r\n * @description Hierarchy picker. Allows to search/select a node from tree structure.\r\n *\r\n * @param {string} label@ - Defines control label displayed on the form.\r\n * @param {boolean} required= - The required property sets or returns whether a hierarchy picker must be filled out before submitting a form.\r\n * @param {boolean} disabled= - The disabled property sets or returns whether a hierarchy picker should be disabled, or not.\r\n * @param {boolean} readOnly= - The readOnly property sets or returns whether the contents of a mxPicker should be read-only.\r\n\r\n * @param {object} ngModel=ngModel - directive binds element to the object in the model. Supposed to contain an `id` of selected tree-node.\r\n\r\n * @param {string} inputDataType= - can be \"tree\" or \"list\" (Default 'tree'). Read about `loadTree` for derails.\r\n\r\n * @param {function(searchText:string, ID): object} loadTree= - Callback function for loading\r\n * tree-structure by given `searchText` or/and `ID`, and `parentId` if it's need to search in sub-tree under the node with this `parentId`.\r\n * Returns a promise which will be resolved with tree-structure.\r\n * This `tree-structure`depends on `inputDataType` parameter. If `inputDataType`===\"tree\" (default) then control expects hierarchical format like this:\r\n * [\r\n * {\r\n * \t\tid: 1,\r\n * \t\ttitle: 'AAA',\r\n * \t\tchildren: [{\r\n * \t\t\tid: 10,\r\n * \t\t\ttitle: 'A-111',\r\n * \t\t\tchildren: [{\r\n * \t\t\t\tid: 100,\r\n * \t\t\t\ttitle: 'A-1-ZZZ',\r\n * \t\t\t\tchildren: [...]\r\n * \t\t\t}]\r\n * \t\t}, {\r\n * \t\t\tid: 11,\r\n * \t\t\ttitle: 'A-222'\r\n * \t\t},\r\n * \t\t...\r\n * \t\t]\r\n * \t}, {\r\n * \t\tid: 2,\r\n * \t\ttitle: 'BBB',\r\n * \t\tchildren: [...]\r\n * \t}, {\r\n * \t\tid: 3,\r\n * \t\ttitle: 'CCC',\r\n * \t\tchildren: [...]\r\n * \t},\r\n * ....\r\n * ]\r\n * otherwise, if `inputDataType`===\"list\" then control expects plain format like this\r\n * (this format can be more usable for Server-Side with SQL DB):\r\n * [\r\n * {id: 1, title: 'AAA'},\r\n * {id: 10, title: 'A-111', __parents: [{id: 1, title: 'AAA'}]}, // actually `parents` array can contain just links to same objects (like JS works)\r\n * {id: 11, title: 'A-222', __parents: [{id: 1, title: 'AAA'}]},\r\n * ... ,\r\n * {id: 100, title: 'A-1-ZZZ', __parents: [{id: 1, title: 'AAA'}, {id: 11, ...}]},\r\n * {id: 101, title: 'A-1-YYY', __parents: [{id: 1, title: 'AAA'}, {id: 11, ...}]},\r\n * {id: 2, title: 'BBB'},\r\n * {id: 20, title: 'BBB-222', __parents: [...]},\r\n * ....\r\n * {id: 3, title: 'CCC'},\r\n * ]\r\n *\r\n *\r\n * @usage\r\n * \r\n * \r\n *\r\n *\r\n * @usage\r\n * \r\n * \r\n *\r\n */\r\n\r\nangular.module('mx.components').directive('mxHierarchyPicker', function mxHierarchyPickerDirective() {\r\n\tconst directive = new mx.components.FormControlBase(MxHierarchyPickerCtrl, null, template);\r\n\tangular.extend(directive.bindToController, {\r\n\t\tloadTree: '<',\r\n\t\tnavigateItem: '=?',\r\n\t\tbrowseLookup: '=?',\r\n\t\tngRequired: '=?',\r\n\t\trequired: '=?require',\r\n\t\tinputDataType: '@?',\r\n\t\tnotFound: '=?',\r\n\t\tloadDelay: '@',\r\n\t});\r\n\tdelete directive.link;\r\n\treturn directive;\r\n});\r\n\r\nMxHierarchyPickerCtrl.$inject = ['$scope', '$q', '$attrs', 'mx.shell.InternationalizationService'];\r\n\r\nfunction MxHierarchyPickerCtrl($scope, $q, $attrs, i18nService) {\r\n\tvar vm = this;\r\n\tconst arrowSymbols = i18nService.currentLanguage.isRightToLeft ? [' ◄ ', ' < '] : [' ► ', ' > '];\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvm.dropdownLabelsDecorator = dropdownLabelsDecorator;\r\n\t\tvm.inputDataType = vm.inputDataType ? vm.inputDataType.toLowerCase() : 'tree';\r\n\t\tvm.loadDelay = vm.loadDelay || 1000;\r\n\r\n\t\t$scope.$watch('vm.model', function () {\r\n\t\t\tvar m = vm.model;\r\n\t\t\tvar c = vm.idsChain;\r\n\t\t\tvar id = Array.isArray(m) ? m[m.length - 1] : m;\r\n\r\n\t\t\tif (id && id !== (Array.isArray(c) && c[c.length - 1])) {\r\n\t\t\t\tloadItemsDynamically(undefined, id).then(function (nodesData) {\r\n\t\t\t\t\tvar selectedNode = nodesData.filter(function (n) {\r\n\t\t\t\t\t\treturn n.id === id;\r\n\t\t\t\t\t})[0];\r\n\t\t\t\t\tif (selectedNode) {\r\n\t\t\t\t\t\tvm.selectedItemChain = (selectedNode.__parents || []).concat([selectedNode]);\r\n\t\t\t\t\t\tvm.idsChain = vm.selectedItemChain.map(function (n) {\r\n\t\t\t\t\t\t\treturn n.id;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t_debouncedOnChange();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else if (!id) {\r\n\t\t\t\tvm.idsChain = Array.isArray(vm.idsChain) ? [] : vm.idsChain;\r\n\t\t\t\tvm.selectedItemChain = [];\r\n\t\t\t\t_debouncedOnChange();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$scope.$watch('vm.idsChain', function () {\r\n\t\t\tvar m = vm.model;\r\n\t\t\tvar c = vm.idsChain;\r\n\t\t\tif (m !== c && m !== (Array.isArray(c) && c[c.length - 1])) {\r\n\t\t\t\tvm.model = Array.isArray(c) ? c[c.length - 1] : c;\r\n\t\t\t\t_debouncedOnChange();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar _debouncedOnChange = $.debounce(50, function () {\r\n\t\t\t$scope.$evalAsync(function () {\r\n\t\t\t\tvm.onChange({\r\n\t\t\t\t\tdata: vm.model,\r\n\t\t\t\t\tonChangeData: { selectedItemChain: vm.selectedItemChain },\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tif ($attrs.browseLookup) {\r\n\t\t\tvm.hierarchyBrowseLookup = function () {\r\n\t\t\t\tvar res = $q.when(null),\r\n\t\t\t\t\tselectedId;\r\n\t\t\t\tif (vm.browseLookup) {\r\n\t\t\t\t\tselectedId = (vm.idsChain && vm.idsChain.length && vm.idsChain[vm.idsChain.length - 1]) || null;\r\n\t\t\t\t\tres = vm.browseLookup(selectedId).then(function (res) {\r\n\t\t\t\t\t\treturn loadItemsDynamically(undefined, res.id).then(function (nodesData) {\r\n\t\t\t\t\t\t\tvar selectedNode = nodesData.filter(function (n) {\r\n\t\t\t\t\t\t\t\treturn n.id === res.id;\r\n\t\t\t\t\t\t\t})[0];\r\n\t\t\t\t\t\t\tif (selectedNode) {\r\n\t\t\t\t\t\t\t\treturn (selectedNode.__parents || []).concat([selectedNode]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn $q.reject();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn res;\r\n\t\t\t};\r\n\t\t}\r\n\t};\r\n\r\n\tvm.loadItems = function (searchText) {\r\n\t\tsearchText = _prepareSearchText(searchText);\r\n\t\treturn loadItemsDynamically(searchText, undefined, vm.idsChain && vm.idsChain[vm.idsChain.length - 1]);\r\n\t};\r\n\r\n\tvm.onAdd = function (node) {\r\n\t\tvm.selectedItemChain = (node.__parents || []).slice();\r\n\t\tvm.selectedItemChain.push(node);\r\n\t\tvm.idsChain = vm.selectedItemChain.map(function (el) {\r\n\t\t\treturn el.id;\r\n\t\t});\r\n\t};\r\n\r\n\tvm.onRemove = function (node) {\r\n\t\tvar pos = vm.idsChain.indexOf(node.id);\r\n\t\tvm.idsChain = vm.idsChain.slice(0, pos);\r\n\t\tvm.selectedItemChain = vm.selectedItemChain.filter(function (n, i) {\r\n\t\t\treturn vm.idsChain[i] === n.id;\r\n\t\t});\r\n\t};\r\n\r\n\tfunction loadItemsDynamically(searchText, id, parentId) {\r\n\t\treturn vm.loadTree\r\n\t\t\t? vm.loadTree(searchText, id, parentId).then(function (nodesData) {\r\n\t\t\t\t\treturn (vm.inputDataType === 'tree' ? unwrapListFromTree(nodesData) : prepareList(nodesData)).filter(function (leaf) {\r\n\t\t\t\t\t\treturn doesLabelMatchTheQuery(leaf.__nodeLabel, searchText);\r\n\t\t\t\t\t});\r\n\t\t\t })\r\n\t\t\t: $q.when([]);\r\n\t}\r\n\r\n\tfunction unwrapListFromTree(tree, parents) {\r\n\t\tvar res = [];\r\n\t\tvar lastParent = parents && parents.length ? parents[parents.length - 1] : undefined;\r\n\r\n\t\tif (tree) {\r\n\t\t\ttree = Array.isArray(tree) ? tree : [tree];\r\n\t\t} else {\r\n\t\t\ttree = [];\r\n\t\t}\r\n\r\n\t\ttree.forEach(function (node) {\r\n\t\t\tnode.__nodeLabel = (lastParent ? lastParent.__nodeLabel + arrowSymbols[1] : '') + node.title;\r\n\t\t\tnode.__title = (parents && parents.length ? arrowSymbols[0] : '') + node.title;\r\n\t\t\tif (parents) {\r\n\t\t\t\tnode.__parents = parents;\r\n\t\t\t}\r\n\t\t\tres.push(node);\r\n\t\t\tif (node.children && node.children.length) {\r\n\t\t\t\tvar newParents = [].concat(parents || []);\r\n\t\t\t\tnewParents.push(node);\r\n\t\t\t\tres = res.concat(unwrapListFromTree(node.children, newParents));\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn res;\r\n\t}\r\n\r\n\tfunction prepareList(treeList) {\r\n\t\treturn treeList.map(function (node) {\r\n\t\t\tnode.__nodeLabel =\r\n\t\t\t\t(node.__parents || [])\r\n\t\t\t\t\t.map(function (n) {\r\n\t\t\t\t\t\treturn n.title + arrowSymbols[1];\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.join('') + node.title;\r\n\t\t\tnode.__title = (node.__parents && node.__parents.length ? arrowSymbols[0] : '') + node.title;\r\n\t\t\t(node.__parents || []).forEach(function (pNode, i) {\r\n\t\t\t\tpNode.__title = (i > 0 ? arrowSymbols[0] : '') + pNode.title;\r\n\t\t\t});\r\n\r\n\t\t\treturn node;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction doesLabelMatchTheQuery(label, searchText) {\r\n\t\tvar res = false,\r\n\t\t\tignorePrefix = (vm.selectedItemChain || [])\r\n\t\t\t\t.map(function (n) {\r\n\t\t\t\t\treturn n.title;\r\n\t\t\t\t})\r\n\t\t\t\t.join(arrowSymbols[1]),\r\n\t\t\tlabelLow,\r\n\t\t\tsearchTextLow,\r\n\t\t\tsearchTextParts,\r\n\t\t\tsearchTextPosArr = [],\r\n\t\t\ti,\r\n\t\t\tpos = 0;\r\n\r\n\t\tif (!searchText || label.indexOf(ignorePrefix) === 0) {\r\n\t\t\tlabel = label.substring(ignorePrefix.length);\r\n\t\t\tlabelLow = (label || '').toLowerCase();\r\n\t\t\tsearchTextLow = (searchText || '').toLowerCase();\r\n\t\t\tsearchTextParts = searchTextLow\r\n\t\t\t\t.split(/([\\s+()[\\]{}])/)\r\n\t\t\t\t.map(function (s) {\r\n\t\t\t\t\treturn s.trim();\r\n\t\t\t\t})\r\n\t\t\t\t.filter(function (s) {\r\n\t\t\t\t\treturn s;\r\n\t\t\t\t});\r\n\r\n\t\t\tfor (i = 0; i < searchTextParts.length; i++) {\r\n\t\t\t\tpos = labelLow.indexOf(searchTextParts[i], pos + (i > 0 ? searchTextParts[i - 1].length : 0));\r\n\t\t\t\tif (pos !== -1) {\r\n\t\t\t\t\tsearchTextPosArr.push(pos + ignorePrefix.length);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tres = searchTextPosArr.length === searchTextParts.length && {\r\n\t\t\t\tsearchTextPosArr: searchTextPosArr,\r\n\t\t\t\tsearchTextParts: searchTextParts,\r\n\t\t\t\tignorePrefix: ignorePrefix,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t}\r\n\r\n\tfunction dropdownLabelsDecorator(label, searchText) {\r\n\t\tvar i,\r\n\t\t\tpos = -1,\r\n\t\t\tendPos = -1,\r\n\t\t\tmatchRes;\r\n\r\n\t\tsearchText = _prepareSearchText(searchText);\r\n\r\n\t\tmatchRes = doesLabelMatchTheQuery(label, searchText);\r\n\t\tif (matchRes) {\r\n\t\t\tfor (i = matchRes.searchTextPosArr.length - 1; i !== -1; i--) {\r\n\t\t\t\tpos = matchRes.searchTextPosArr[i];\r\n\t\t\t\tendPos = pos + matchRes.searchTextParts[i].length;\r\n\t\t\t\tlabel = label.substring(0, pos) + '' + label.substring(pos, endPos) + '' + label.substring(endPos);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn label;\r\n\t}\r\n\r\n\tfunction _prepareSearchText(text) {\r\n\t\t// \"%\" is processing like a space \" \".\r\n\t\treturn text && text.split('%').join(' ').trim();\r\n\t}\r\n}\r\n","(function (w) {\r\n\t'use strict';\r\n\r\n\tfunction MxDropZone($timeout, vm) {\r\n\t\tvar processingQueue = [];\r\n\t\tconst MAX_FILESIZE_BASE64_DATA_URL = 5000000;\r\n\r\n\t\tvar formatUrl = function (url) {\r\n\t\t\treturn vm.formatUrl({ url: url });\r\n\t\t};\r\n\t\tvar uploadFile = async function (file) {\r\n\t\t\tawait vm.uploadFile({ file: file });\r\n\t\t};\r\n\t\treturn {\r\n\t\t\tinit: init,\r\n\t\t\tcreateThumbnail: createThumbnail,\r\n\t\t\tprocessSelectedFiles: processSelectedFiles,\r\n\t\t};\r\n\r\n\t\tfunction init(container) {\r\n\t\t\taddEventHandler(container, 'dragover', cancel);\r\n\t\t\taddEventHandler(container, 'dragenter', cancel);\r\n\t\t\taddEventHandler(container, 'drop', dropEvent);\r\n\t\t}\r\n\r\n\t\tfunction processFile(file) {\r\n\t\t\tprocessingQueue.push(file);\r\n\t\t\t$timeout(function () {\r\n\t\t\t\tprocessQueue();\r\n\t\t\t}, 0);\r\n\t\t}\r\n\r\n\t\tfunction processQueue() {\r\n\t\t\twhile (processingQueue.length > 0) {\r\n\t\t\t\tvar file = processingQueue.shift();\r\n\r\n\t\t\t\t$timeout(_processFile.bindToEventHandler(file), 0);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction _processFile(e, _file) {\r\n\t\t\tcreateThumbnail(_file);\r\n\t\t\tuploadFileDropZone(_file);\r\n\t\t}\r\n\r\n\t\tfunction processSelectedFiles(files) {\r\n\t\t\tloadFiles(files);\r\n\t\t}\r\n\r\n\t\tfunction dropEvent(e) {\r\n\t\t\tvm.isInitMode = false;\r\n\t\t\tvm.scope.$apply();\r\n\t\t\te = e || w.event;\r\n\t\t\tif (e.preventDefault) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tif (!vm.readOnly) {\r\n\t\t\t\tvar dt = e.dataTransfer;\r\n\t\t\t\tvar files = dt.files;\r\n\t\t\t\tloadFiles(files, true);\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfunction loadFiles(files, isDropEvent) {\r\n\t\t\tif (files === null) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvm.maxSizeExceedFiles = [];\r\n\t\t\tlet _maxSizeExceedFiles = [];\r\n\r\n\t\t\tvm.maxCountExceedFiles = [];\r\n\t\t\tlet _maxCountExceedFiles = [];\r\n\r\n\t\t\tvm.wrongTypeFiles = [];\r\n\t\t\tlet _wrongTypeFiles = [];\r\n\r\n\t\t\tlet filesAdded = 0;\r\n\r\n\t\t\tfor (var i = 0; i < files.length; i++) {\r\n\t\t\t\tvar file = files[i];\r\n\r\n\t\t\t\tif (!vm.ignoreFileLimitations && vm.storageInfo.maxFilesPerObject >= 0 && vm.files.length + filesAdded + 1 > vm.storageInfo.maxFilesPerObject) {\r\n\t\t\t\t\t_maxCountExceedFiles.push(file);\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!isFileTypeAllowed(file)) {\r\n\t\t\t\t\t_wrongTypeFiles.push(file);\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (vm.storageInfo.maxFileSize > 0 && vm.storageInfo.maxFileSize < file.size) {\r\n\t\t\t\t\t_maxSizeExceedFiles.push(file);\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tloadFile(file);\r\n\t\t\t\tfilesAdded++;\r\n\t\t\t}\r\n\t\t\tif (vm.storageInfo.maxFilesPerObject >= 0 && vm.files.length + filesAdded >= vm.storageInfo.maxFilesPerObject) {\r\n\t\t\t\t_maxCountExceedFiles = _maxCountExceedFiles.concat(_wrongTypeFiles).concat(_maxSizeExceedFiles);\r\n\t\t\t\t_wrongTypeFiles = [];\r\n\t\t\t\t_maxSizeExceedFiles = [];\r\n\t\t\t}\r\n\r\n\t\t\tif (_maxCountExceedFiles.length > 0 || _wrongTypeFiles.length > 0 || _maxSizeExceedFiles.length > 0) {\r\n\t\t\t\tvm.maxCountExceedFiles = _maxCountExceedFiles;\r\n\t\t\t\tvm.wrongTypeFiles = _wrongTypeFiles;\r\n\t\t\t\tvm.maxSizeExceedFiles = _maxSizeExceedFiles;\r\n\t\t\t\tif (isDropEvent) {\r\n\t\t\t\t\tvm.scope.$apply();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction loadFile(file) {\r\n\t\t\tlet fileList = vm.files;\r\n\r\n\t\t\tfile.isNew = true;\r\n\t\t\tfile.selected = true;\r\n\t\t\tmakeAsDataUrl(file).then(\r\n\t\t\t\t$timeout(function () {\r\n\t\t\t\t\tfileList.push(file);\r\n\t\t\t\t\tprocessFile(file);\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tfunction makeAsDataUrl(file) {\r\n\t\t\tw.URL = w.URL || w.webkitURL;\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tif (file.size < MAX_FILESIZE_BASE64_DATA_URL) {\r\n\t\t\t\t\tvar reader = new FileReader();\r\n\t\t\t\t\treader.onloadend = function (e, reader, file) {\r\n\t\t\t\t\t\tif (reader.error === null) {\r\n\t\t\t\t\t\t\tfile.url =\r\n\t\t\t\t\t\t\t\t'data:' +\r\n\t\t\t\t\t\t\t\tfile.type +\r\n\t\t\t\t\t\t\t\t';base64,' +\r\n\t\t\t\t\t\t\t\tbtoa(\r\n\t\t\t\t\t\t\t\t\t[].reduce.call(\r\n\t\t\t\t\t\t\t\t\t\tnew Uint8Array(this.result),\r\n\t\t\t\t\t\t\t\t\t\tfunction (p, c) {\r\n\t\t\t\t\t\t\t\t\t\t\treturn p + String.fromCharCode(c);\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tresolve(file);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\treject(reader.error);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}.bindToEventHandler(reader, file);\r\n\r\n\t\t\t\t\treader.readAsArrayBuffer(file);\r\n\t\t\t\t} else if (w.URL.createObjectURL) {\r\n\t\t\t\t\tfile.url = w.URL.createObjectURL(file);\r\n\t\t\t\t\tresolve(file);\r\n\t\t\t\t}\r\n\t\t\t\tvm.scope.$apply();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction createThumbnail(file) {\r\n\t\t\tif (!file.type.match(/image.*/)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar img = document.createElement('img');\r\n\t\t\timg.crossOrigin = 'anonymous';\r\n\t\t\timg.onload = function (e, _file) {\r\n\t\t\t\tvar DEFAULT_SIZE = 160;\r\n\r\n\t\t\t\tvar canvas = document.createElement('canvas');\r\n\t\t\t\tvar ctx = canvas.getContext('2d');\r\n\r\n\t\t\t\tvar originalWidth = img.width;\r\n\t\t\t\tvar originalHeight = img.height;\r\n\t\t\t\tvar canvasSize = Math.min(parseInt(vm.width) || DEFAULT_SIZE, originalWidth);\r\n\t\t\t\tcanvas.width = canvasSize;\r\n\t\t\t\tcanvas.height = canvasSize;\r\n\t\t\t\tvar thumbSize = { width: canvasSize, height: canvasSize };\r\n\r\n\t\t\t\tvar ratioX = canvasSize / originalWidth;\r\n\t\t\t\tvar ratioY = canvasSize / originalHeight;\r\n\t\t\t\tvar ratio = Math.min(ratioX, ratioY);\r\n\r\n\t\t\t\tthumbSize.width = originalWidth * ratio;\r\n\t\t\t\tthumbSize.height = originalHeight * ratio;\r\n\r\n\t\t\t\tthumbSize.offsetX = (canvasSize - thumbSize.width) / 2;\r\n\t\t\t\tthumbSize.offsetY = (canvasSize - thumbSize.height) / 2;\r\n\r\n\t\t\t\tctx.drawImage(img, thumbSize.offsetX, thumbSize.offsetY, thumbSize.width, thumbSize.height);\r\n\t\t\t\t_file.thumbnail = canvas.toDataURL('image/png');\r\n\t\t\t\t_file.status = 2;\r\n\t\t\t\tvm.scope.$apply();\r\n\t\t\t}.bindToEventHandler(file);\r\n\r\n\t\t\tif (file.isVirtual) {\r\n\t\t\t\timg.src = file.url;\r\n\t\t\t} else {\r\n\t\t\t\timg.src = file.isNew ? file.url : formatUrl(file.url);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tasync function uploadFileDropZone(file) {\r\n\t\t\ttry {\r\n\t\t\t\tawait uploadFile(file);\r\n\t\t\t\tvm.scope.$applyAsync();\r\n\t\t\t} catch (error) {\r\n\t\t\t\tthrow new Error(error.message);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction cancel(e) {\r\n\t\t\te = e || w.event;\r\n\t\t\t(e.originalEvent || e).dataTransfer.dropEffect = 'copy';\r\n\t\t\tif (e.preventDefault) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfunction addEventHandler(obj, evt, handler) {\r\n\t\t\tif (obj.addEventListener) {\r\n\t\t\t\t// W3C method\r\n\t\t\t\tobj.addEventListener(evt, handler, false);\r\n\t\t\t} else {\r\n\t\t\t\t// Old school method.\r\n\t\t\t\tobj['on' + evt] = handler;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction isFileTypeAllowed(file) {\r\n\t\t\tif (vm.ignoreFileLimitations || !vm.storageInfo.fileExtensions) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tlet extensions = vm.storageInfo.fileExtensions.split(',');\r\n\t\t\tlet fileExtension = '.' + file.name.split('.').pop();\r\n\t\t\tlet fileType = file.type.split('/')[0];\r\n\r\n\t\t\treturn extensions.some((extension) => extension === fileExtension || extension === fileType);\r\n\t\t}\r\n\t}\r\n\r\n\tFunction.prototype.bindToEventHandler = function bindToEventHandler() {\r\n\t\tvar handler = this;\r\n\t\tvar boundParameters = Array.prototype.slice.call(arguments);\r\n\t\t//create closure\r\n\t\treturn function (e) {\r\n\t\t\te = e || window.event; // get window.event if e argument missing (in IE)\r\n\t\t\tvar params = boundParameters.slice();\r\n\t\t\tparams.unshift(e);\r\n\t\t\thandler.apply(this, params);\r\n\t\t};\r\n\t};\r\n\tw.mx = w.mx || {};\r\n\tw.mx.components = w.mx.components || {};\r\n\tw.mx.components.DropZone = MxDropZone;\r\n})(window);\r\n","import { EventCodes } from '../../../App/model/event-codes';\r\n\r\n(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.components').component('mxWorkspaceCommonPagingPanel', {\r\n\t\tbindings: {\r\n\t\t\tpreprocessor: '=',\r\n\t\t\tparameters: '=',\r\n\t\t\tcountonlymode: '=',\r\n\t\t},\r\n\t\tcontroller: MxWorkspaceCommonPagingPanelCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'mx-datasource-paging-panel/mx-datasource-paging-panel.html',\r\n\t});\r\n\r\n\tMxWorkspaceCommonPagingPanelCtrl.$inject = ['$scope', 'mx.internationalization', 'mx.shell.EventService'];\r\n\r\n\tfunction MxWorkspaceCommonPagingPanelCtrl($scope, i18n, eventService) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.prev = prev;\r\n\t\t\tvm.next = next;\r\n\t\t\tvm.page = page;\r\n\t\t\tvm.onTotalLoading = onTotalLoading;\r\n\r\n\t\t\tvm.pages = [];\r\n\r\n\t\t\tvm.pagingLabel = '';\r\n\t\t\tvm.totalLabel = '';\r\n\r\n\t\t\tvm.isNotNextPage = true;\r\n\t\t\tvm.isNotPrevPage = true;\r\n\t\t\tvm.isDisabled = false;\r\n\t\t\tvm.isReloaded = true;\r\n\r\n\t\t\tObject.defineProperty(vm, 'pageSize', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn vm.preprocessor.pageSize;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (val) {\r\n\t\t\t\t\tif (val && vm.preprocessor.pageSize !== val) {\r\n\t\t\t\t\t\tvm.preprocessor.page = 1;\r\n\t\t\t\t\t\tvm.preprocessor.pageSize = parseInt(val);\r\n\t\t\t\t\t\tvm._callChanged(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tvar unbindInitPreproc = $scope.$watch('vm.preprocessor', function () {\r\n\t\t\t\tif (vm.preprocessor) {\r\n\t\t\t\t\tvm.isNoTotal = !vm.preprocessor.isLocalData;\r\n\t\t\t\t\tvm.preprocessor.callLocalChanges = function (total) {\r\n\t\t\t\t\t\tvm.preprocessor.count = total;\r\n\t\t\t\t\t\treturn vm._callChanged();\r\n\t\t\t\t\t};\r\n\t\t\t\t\tinitPagerLabels();\r\n\t\t\t\t\tinitPageLinks();\r\n\r\n\t\t\t\t\tunbindInitPreproc();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t$scope.$watch('vm.preprocessor.loading', function (value) {\r\n\t\t\tif (vm.preprocessor) {\r\n\t\t\t\tvm.isDisabled = value;\r\n\t\t\t\tif (!value) {\r\n\t\t\t\t\tinitPagerLabels();\r\n\t\t\t\t\tinitPageLinks();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$scope.$watch('vm.preprocessor.count', function (newValue, oldValue) {\r\n\t\t\tif (vm.preprocessor && newValue !== oldValue) {\r\n\t\t\t\tinitPagerLabels();\r\n\t\t\t\tinitPageLinks();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$scope.$watch('vm.parameters.search', function (value, prev) {\r\n\t\t\tif (vm.preprocessor && value !== undefined && prev !== undefined && value.toString() !== prev.toString()) {\r\n\t\t\t\tvm.isNoTotal = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$scope.$watch('vm.preprocessor.page', function (newValue) {\r\n\t\t\tif (vm.preprocessor) {\r\n\t\t\t\t$scope.page = newValue;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvm._callChanged = function () {\r\n\t\t\tif (vm.preprocessor) {\r\n\t\t\t\tvm.preprocessor.callChanged();\r\n\t\t\t\tinitPagerLabels();\r\n\t\t\t\tinitPageLinks();\r\n\r\n\t\t\t\tif (vm.preprocessor.parameters) {\r\n\t\t\t\t\t//only for page-panel on search has preprocessor.parameters, so it should be tracked only fo search-pages\r\n\t\t\t\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\t\t\t\teventName: `Page in data list changed`,\r\n\t\t\t\t\t\tsender: vm.preprocessor.parameters.id,\r\n\t\t\t\t\t\tsenderTitle: vm.preprocessor.parameters.name,\r\n\t\t\t\t\t\tcontextTypeId: vm.preprocessor.parameters.entities.map((entity) => entity.id),\r\n\t\t\t\t\t\tcontextTypeTitle: vm.preprocessor.parameters.entities.map((entity) => entity.name),\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvm._fixPaging = function () {\r\n\t\t\t// Todo: as backend use page-1 , so vm.preprocessor.page initialised incorrect\r\n\t\t\tvm.preprocessor.page = vm.preprocessor.page > 0 ? vm.preprocessor.page : vm.preprocessor.page + 1;\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\r\n\t\tfunction prev() {\r\n\t\t\tif (vm.preprocessor.page > 1) {\r\n\t\t\t\tvm.preprocessor.page--;\r\n\t\t\t\tvm._callChanged();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction next() {\r\n\t\t\tvm.preprocessor.page++;\r\n\t\t\tvm._callChanged();\r\n\t\t}\r\n\r\n\t\tfunction page(pageNumber) {\r\n\t\t\tif (Number.isInteger(pageNumber)) {\r\n\t\t\t\tvm.preprocessor.page = pageNumber;\r\n\t\t\t\tvm._callChanged();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tasync function onTotalLoading() {\r\n\t\t\tif (vm.preprocessor && vm.isNoTotal && vm.preprocessor.getDataCount) {\r\n\t\t\t\tawait vm.preprocessor.getDataCount();\r\n\r\n\t\t\t\t$scope.$evalAsync(() => {\r\n\t\t\t\t\tvm.isNoTotal = false;\r\n\r\n\t\t\t\t\tinitPagerLabels();\r\n\t\t\t\t\tinitPageLinks();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction initPageLinks() {\r\n\t\t\tvar from, to, i;\r\n\r\n\t\t\tvar startPages = 5;\r\n\t\t\tvm.pages = [];\r\n\r\n\t\t\tvar cnt = vm.preprocessor.count;\r\n\t\t\tvar totalFloat = cnt / vm.preprocessor.pageSize;\r\n\t\t\tvar total = totalFloat % 1 === 0 ? parseInt(totalFloat) : parseInt(totalFloat) + 1;\r\n\r\n\t\t\t// order important\r\n\t\t\tvm._fixPaging();\r\n\t\t\tvar currentPage = vm.preprocessor.page;\r\n\r\n\t\t\tif (cnt > 0 && total > 0) {\r\n\t\t\t\tif (total < startPages) {\r\n\t\t\t\t\tfrom = 1;\r\n\t\t\t\t\tto = total;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfrom = currentPage - 2;\r\n\t\t\t\t\tto = from + (startPages - 1);\r\n\t\t\t\t\tif (from < 1) {\r\n\t\t\t\t\t\tfrom = 1;\r\n\t\t\t\t\t\tto = startPages;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (to > total) {\r\n\t\t\t\t\t\tto = total;\r\n\t\t\t\t\t\tfrom = to - (startPages - 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (total >= 6) {\r\n\t\t\t\t\tif (currentPage >= 3) {\r\n\t\t\t\t\t\tvm.pages.push(1);\r\n\t\t\t\t\t\tfrom++;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// after first separator: first ... 7 8 9 ... last\r\n\t\t\t\t\tif (currentPage >= startPages - 1) {\r\n\t\t\t\t\t\tif (currentPage === startPages - 1 || total === 6 || total === 7) {\r\n\t\t\t\t\t\t\tfrom--;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tvm.pages.push('...');\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tto--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (total >= 7) {\r\n\t\t\t\t\tif (currentPage >= total - 2) {\r\n\t\t\t\t\t\tfrom--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (total === 6) {\r\n\t\t\t\t\tif (currentPage >= total - 2) {\r\n\t\t\t\t\t\tto++;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (total >= 7) {\r\n\t\t\t\t\tif (total === 7 || currentPage >= total - 3) {\r\n\t\t\t\t\t\tto++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// pages\r\n\t\t\t\tfor (i = from; i <= to; i++) {\r\n\t\t\t\t\tvm.pages.push(i);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// before last separator: first ... 7 8 9 ... last\r\n\t\t\t\tif (total >= startPages + 3 && currentPage <= total - 4) {\r\n\t\t\t\t\tvm.pages.push('...');\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// last\r\n\t\t\t\tif (total >= startPages + 1 && currentPage <= total - 3) {\r\n\t\t\t\t\tvm.pages.push(total);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tvm.pages.push(currentPage);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction initPagerLabels() {\r\n\t\t\tvm._fixPaging();\r\n\r\n\t\t\tvar cnt = vm.preprocessor.count;\r\n\t\t\tvar pageSize = vm.pageSize || cnt;\r\n\r\n\t\t\tvar pageNumber = vm.preprocessor.page;\r\n\r\n\t\t\tvm.isNotPrevPage = pageNumber === 1 || vm.isDisabled;\r\n\r\n\t\t\tvar start = (pageNumber - 1) * pageSize + 1;\r\n\t\t\tvar end = start + pageSize - 1;\r\n\t\t\tif (cnt > 0 && end > cnt) {\r\n\t\t\t\tend = cnt;\r\n\t\t\t}\r\n\r\n\t\t\tvm.pagingLabel = start + ' - ' + end + ' ' + i18n.get('components.mx-datasource-paging-panel.of') + ' ';\r\n\r\n\t\t\tif (cnt > 0) {\r\n\t\t\t\tvm.isNotNextPage = end === cnt || vm.isDisabled || vm.preprocessor.disableNext === true;\r\n\t\t\t\tvm.isNoTotal = false;\r\n\t\t\t\tvm.totalLabel = cnt;\r\n\t\t\t} else {\r\n\t\t\t\tvm.isNotNextPage = cnt !== -1;\r\n\t\t\t\tvm.isNoTotal = true;\r\n\t\t\t\tvm.totalLabel = i18n.get('components.mx-datasource-paging-panel.many');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})();\r\n","// Module\nvar code = \"\\r\\n\\r\\n\\r\\n\";\n// Exports\nexport default code;","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc component\r\n\t * @name mx.components:mxItemChooser\r\n\t * @module mx.components\r\n\t * @restrict 'E'\r\n\t * @scope {}\r\n\t * @description Custom bottom sheet component\r\n\t * @usage \r\n\t * \r\n\t * @param {string} top-offset= The offset regarding top position of his parent element:\r\n\t * @param {object} options= An options object, with the following properties:\r\n\t * - `icon` - `{string=}`: The icon to associate with button showing this bottom sheet.\r\n\t * - `displayMode`- `{string=}`: Represents one of two modes of displaying: 'grid' or 'list'.\r\n\t * - `controller` - `{string=}`: The controller to associate with this bottom sheet.\r\n\t */\r\n\tangular.module('mx.components').component('mxItemChooser', {\r\n\t\tbindings: {\r\n\t\t\tisEnabled: '&',\r\n\t\t\ttopOffset: '@',\r\n\t\t\toptions: '<',\r\n\t\t},\r\n\t\tcontroller: MxItemChooserCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t});\r\n\r\n\tMxItemChooserCtrl.$inject = [\r\n\t\t'$scope',\r\n\t\t'$http',\r\n\t\t'$templateCache',\r\n\t\t'$compile',\r\n\t\t'$mdBottomSheet',\r\n\t\t'$q',\r\n\t\t'$window',\r\n\t\t'$mdUtil',\r\n\t\t'mx.internationalization',\r\n\t\t'$element',\r\n\t\t'mx.app.ColorService',\r\n\t\t'mx.app.ThemeService',\r\n\t];\r\n\r\n\tfunction MxItemChooserCtrl($scope, $http, $templateCache, $compile, $mdBottomSheet, $q, $window, $mdUtil, i18n, $element, colorService, themeService) {\r\n\t\tvar vm = this;\r\n\t\tvar buttonsSelector = 'md-bottom-sheet .md-button:not([disabled])';\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.dialogActive = false;\r\n\t\t\tvm.toggleDialog = toggleDialog;\r\n\t\t\tvm.executeItem = executeItem;\r\n\t\t\tvm.focusItem = focusItem;\r\n\t\t\tvm.closeItemChooser = closeItemChooser;\r\n\t\t\tvm.arrowsNavigate = arrowsNavigate;\r\n\t\t\tinitItemColor();\r\n\t\t\tangular.element($window).on('click', function ($event) {\r\n\t\t\t\tif (vm.dialogActive) {\r\n\t\t\t\t\tvm.closeItemChooser();\r\n\t\t\t\t\t$event.stopPropagation();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tvm.$postLink = function () {\r\n\t\t\tlink($scope, $element, vm, i18n, $http, $q, $templateCache, $compile);\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\r\n\t\tfunction closeItemChooser() {\r\n\t\t\tif (vm.dialogActive) {\r\n\t\t\t\t// $mdBottomSheet.hide();\r\n\t\t\t\t$mdUtil.nextTick($mdBottomSheet.cancel, true);\r\n\t\t\t\tvm.dialogActive = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction toggleDialog(options) {\r\n\t\t\tif (vm.dialogActive) {\r\n\t\t\t\tvm.closeItemChooser();\r\n\t\t\t} else {\r\n\t\t\t\tvar _templateUrl = 'mx-item-chooser/' + (options.displayMode === 'grid' ? 'mx-item-chooser-grid-template.html' : 'mx-item-chooser-list-template.html');\r\n\r\n\t\t\t\t$mdBottomSheet.show({\r\n\t\t\t\t\ttemplateUrl: _templateUrl,\r\n\t\t\t\t\tcontroller: options.controller,\r\n\t\t\t\t\t//disableBackdrop: true,\r\n\t\t\t\t\tdisableParentScroll: false,\r\n\t\t\t\t\tparent: vm.parent,\r\n\t\t\t\t\tcontrollerAs: 'vm',\r\n\t\t\t\t\tbindToController: true,\r\n\t\t\t\t\tlocals: {\r\n\t\t\t\t\t\texecute: vm.executeItem,\r\n\t\t\t\t\t\tfocus: vm.focusItem,\r\n\t\t\t\t\t\ttopOffset: vm.topOffset,\r\n\t\t\t\t\t\tarrowsNavigate: vm.arrowsNavigate,\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvm.dialogActive = true;\r\n\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t$($(buttonsSelector)[0]).focus();\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction arrowsNavigate($event) {\r\n\t\t\tvar idx,\r\n\t\t\t\tactiveBtn = $(document.activeElement),\r\n\t\t\t\tbtns;\r\n\t\t\tif ([37, 38, 39, 40].indexOf($event.which) !== -1 && activeBtn.is(buttonsSelector)) {\r\n\t\t\t\tbtns = $(buttonsSelector);\r\n\t\t\t\tidx = btns.index(activeBtn[0]);\r\n\t\t\t\tif ([37, 38].indexOf($event.which) > -1 && idx > 0) {\r\n\t\t\t\t\tbtns[idx - 1].focus();\r\n\t\t\t\t}\r\n\t\t\t\tif ([39, 40].indexOf($event.which) > -1 && idx < btns.length - 1) {\r\n\t\t\t\t\tbtns[idx + 1].focus();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction executeItem(item, $event) {\r\n\t\t\t// If Left or Middle mouse button, enter or space\r\n\t\t\tif ($event.which === 1 || $event.which === 2 || $event.which === 13 || $event.which === 32) {\r\n\t\t\t\tvm.closeItemChooser();\r\n\r\n\t\t\t\tif (angular.isDefined(item) && angular.isFunction(item.execute)) {\r\n\t\t\t\t\titem.execute($event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction focusItem(item) {\r\n\t\t\tif (angular.isDefined(item) && angular.isDefined(item.isFocused)) {\r\n\t\t\t\treturn item.isFocused;\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tasync function initItemColor() {\r\n\t\t\tconst currentTheme = await themeService.getCurrentTheme();\r\n\t\t\tconst color =\r\n\t\t\t\tMath.abs(colorService.getLightness(currentTheme['content-bg-color']) - colorService.getLightness(currentTheme['header-icon-color'])) >\r\n\t\t\t\tMath.abs(colorService.getLightness(currentTheme['content-bg-color']) - colorService.getLightness(currentTheme['header-bg-color']))\r\n\t\t\t\t\t? currentTheme['header-icon-color']\r\n\t\t\t\t\t: currentTheme['header-bg-color'];\r\n\r\n\t\t\t$element.css('--mx-item-chooser-icons-color', color);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction link(scope, element, vm, i18n, $http, $q, $templateCache, $compile) {\r\n\t\telement.addClass('mx-item-chooser-control-container');\r\n\r\n\t\tvar isEnabled = vm.isEnabled();\r\n\t\tif (angular.isUndefined(isEnabled)) {\r\n\t\t\tisEnabled = true;\r\n\t\t}\r\n\t\tif (!isEnabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tisEnabled = $q.when(isEnabled);\r\n\t\tisEnabled.then(function (value) {\r\n\t\t\tif (!value) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t$http.get('mx-item-chooser/mx-item-chooser.html', { cache: $templateCache }).then(function (response) {\r\n\t\t\t\tvar template = $compile(response.data)(scope);\r\n\t\t\t\telement.append(template);\r\n\t\t\t\tload(scope);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tfunction load() {\r\n\t\t\tvm.internationalization = i18n.get('components.mx-item-chooser');\r\n\r\n\t\t\tvm.parent = element[0];\r\n\t\t}\r\n\t}\r\n})();\r\n","'use strict';\r\n\r\nexport default class BasePickerController {\r\n\tconstructor($timeout, $q, $element, $scope, i18n) {\r\n\t\tthis.$timeout = $timeout;\r\n\t\tthis.$q = $q;\r\n\t\tthis.$element = $element;\r\n\t\tthis.$scope = $scope;\r\n\t\tthis.i18n = i18n;\r\n\r\n\t\tthis.internalSet = false;\r\n\t\tthis._items = null;\r\n\t\tthis._tempValue = null;\r\n\t\tthis._notFoundClicked = false;\r\n\t\tthis.autoCompleteSearchText = '';\r\n\t\tthis.availableNotFoundButton = false;\r\n\t\tthis.loadedItemsSearchText = null;\r\n\t\tthis.loadedItemsCompletely = false;\r\n\t\tthis._valueReset = false;\r\n\t\tthis._loadOnTyping = false;\r\n\t\tthis.isLoading = false;\r\n\t\tthis._isTyping = false;\r\n\t\tthis._isAutoTyping = false;\r\n\r\n\t\tthis.defaultPickerLabel = i18n.get('components.mx-picker.defaultLabel');\r\n\r\n\t\t$scope.initCurrentElement = function (element) {\r\n\t\t\tvar itemEl = $(element.closest('.md-autocomplete-suggestion'));\r\n\t\t\tif (element.hasClass('item-title-info')) {\r\n\t\t\t\titemEl.addClass('count-line');\r\n\t\t\t} else {\r\n\t\t\t\titemEl.removeClass('count-line');\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.searchInput = null;\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\t$onInit() {\r\n\t\tlet selectedItems = Array.isArray(this.selectedItems) ? this.selectedItems : [];\r\n\t\tthis.itemTitleField = this.itemTitleField || 'name';\r\n\t\tthis.itemIdField = this.itemIdField || 'id';\r\n\t\tthis.notFoundMessage = this.notFound && this.notFound.message ? this.notFound.message : this.i18n.get('components.mx-picker.defaultNotFoundMessage');\r\n\r\n\t\tthis.noLabel = (this.noLabel || '').toString().toLowerCase() === 'true';\r\n\t\tthis.itemsIsPlainArray = typeof this.itemsIsPlainArray === 'string' ? (this.itemsIsPlainArray || '').toLowerCase() === 'true' : this.itemsIsPlainArray || false;\r\n\t\tthis._setItemsValue(this.items);\r\n\t\tthis._setLoadOnTyping(this.loadOnTyping);\r\n\r\n\t\tObject.defineProperties(this, {\r\n\t\t\tselectedItems: {\r\n\t\t\t\tget: () => selectedItems,\r\n\t\t\t\tset: (newItems) => {\r\n\t\t\t\t\tif (Array.isArray(newItems)) {\r\n\t\t\t\t\t\tselectedItems = newItems;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\titems: {\r\n\t\t\t\tget: () => this._items,\r\n\t\t\t\tset: this._setItemsValue,\r\n\t\t\t},\r\n\t\t\tloadOnTyping: {\r\n\t\t\t\tget: () => this._loadOnTyping,\r\n\t\t\t\tset: this._setLoadOnTyping,\r\n\t\t\t},\r\n\t\t\t_isTyping: {\r\n\t\t\t\tget: () => this._isAutoTyping,\r\n\t\t\t\tset: (value) => {\r\n\t\t\t\t\tthis._isAutoTyping = value;\r\n\t\t\t\t\tthis._setLabels();\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tif (this.loadOnTyping && !this.loadDelay) {\r\n\t\t\tthis.loadDelay = 300;\r\n\t\t}\r\n\r\n\t\tthis._formatTitle();\r\n\r\n\t\tif (this.loadItems && !this.loadOnTyping) {\r\n\t\t\tthis.reload().then(() => this.$scope.$evalAsync(() => {}));\r\n\t\t}\r\n\r\n\t\tthis.$timeout(() => {\r\n\t\t\tthis.searchInput = this.$element.find('input');\r\n\r\n\t\t\tif (this.searchInput) {\r\n\t\t\t\tthis.searchInput.on('focus', () => {\r\n\t\t\t\t\tthis._isTyping = true;\r\n\t\t\t\t\tthis.showingHints(true);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.searchInput.on('blur', ($event) => {\r\n\t\t\t\t\tvar relatedTarget = $event.relatedTarget || document.activeElement;\r\n\t\t\t\t\tif (relatedTarget && (relatedTarget.classList.contains('item-load-more') || relatedTarget.classList.contains('mx-picker--not-found-button'))) {\r\n\t\t\t\t\t\t$event.stopPropagation();\r\n\t\t\t\t\t\t$event.preventDefault();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis._isTyping = false;\r\n\t\t\t\t\t\tthis.showingHints(false);\r\n\r\n\t\t\t\t\t\tif (this.autoCompleteSearchText) {\r\n\t\t\t\t\t\t\tthis.$timeout(() => {\r\n\t\t\t\t\t\t\t\tif (this.items.length === 1 && this.autoCompleteSearchText) {\r\n\t\t\t\t\t\t\t\t\tthis.selectedItem = this.items[0];\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tif (this.autoCompleteSearchText && (!this.model || !this.selectedItem) && !this._notFoundClicked) {\r\n\t\t\t\t\t\t\t\t\t\tthis._setAutoCompleteValue(null);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}, 1500);\r\n\t\t\t\t\t\t} else if (this._valueReset) {\r\n\t\t\t\t\t\t\tthis._setAutoCompleteValue(null);\r\n\t\t\t\t\t\t\tthis._valueReset = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.setNotFoundButtonAvailability();\r\n\r\n\t\tmx.components.FormControlControllerBase.call(this, this.$timeout);\r\n\t}\r\n\r\n\t$onChanges(changes) {\r\n\t\tif (changes.label) {\r\n\t\t\tthis._formatTitle();\r\n\t\t}\r\n\t}\r\n\r\n\t_setLabels() {\r\n\t\tif ((this.selectedItems && this.selectedItems.length > 0) || this._isTyping) {\r\n\t\t\tthis.autoPlaceholder = this.defaultPickerLabel;\r\n\t\t} else {\r\n\t\t\tthis.autoPlaceholder = this.label;\r\n\t\t}\r\n\t}\r\n\r\n\tonNavigateItem(item) {\r\n\t\tif (this.navigateItem) {\r\n\t\t\tthis.navigateItem(item);\r\n\t\t}\r\n\t}\r\n\r\n\t_setItemsFromBrowseLookup(data) {\r\n\t\tthis.autoCompleteSearchText = '';\r\n\t\tthis._items = [];\r\n\t\tthis.resetItemsCache();\r\n\r\n\t\tif (data === null) {\r\n\t\t\t//clear selection\r\n\t\t\tthis.model = null;\r\n\t\t} else {\r\n\t\t\tlet items = Array.isArray(data) ? data : typeof data !== 'undefined' ? [data] : [];\r\n\r\n\t\t\tif (!this.single && Array.isArray(this.selectedItems) && this.selectedItems.length > 0 && !this.replaceOnBrowseLookup) {\r\n\t\t\t\tconst selectedIds = this.selectedItems.map((item) => this.getId(item));\r\n\t\t\t\tconst newItems = items.filter((item) => !selectedIds.includes(this.getId(item)));\r\n\t\t\t\titems = this.selectedItems.concat(newItems);\r\n\t\t\t}\r\n\r\n\t\t\tthis.setSelectedItems(items);\r\n\r\n\t\t\tthis.setModelInternal(this.selectedItemsToValue());\r\n\r\n\t\t\tif (this.searchInput) {\r\n\t\t\t\tthis.searchInput.focus();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tasync onBrowseLookup() {\r\n\t\tif (this.browseLookup) {\r\n\t\t\ttry {\r\n\t\t\t\tconst data = await this.browseLookup(this.model);\r\n\t\t\t\tthis._setItemsFromBrowseLookup(data);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tmx.logCatch(e);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tblur($event) {\r\n\t\tthis.focus = false;\r\n\r\n\t\tif (typeof this.onBlur === 'function') {\r\n\t\t\tthis.onBlur($event);\r\n\t\t}\r\n\r\n\t\tif (Array.isArray(this.items) && this.items.length > 6) {\r\n\t\t\tthis.resetItemsCache();\r\n\t\t}\r\n\t}\r\n\r\n\t_setLoadOnTyping(val) {\r\n\t\tthis._loadOnTyping = val === 'true' || val === true;\r\n\t}\r\n\r\n\t_setFirstValue() {\r\n\t\tif (this.model === null || this.model === undefined) {\r\n\t\t\tvar defNotHiddenItem;\r\n\r\n\t\t\tif (this.default !== null && this.default !== undefined && this.itemIdField) {\r\n\t\t\t\tdefNotHiddenItem = (this._items || []).filter((it) => !it.Hidden && ((it[this.itemIdField] || '') + '').toLowerCase() === (this.default + '').toLowerCase())[0];\r\n\t\t\t} else if (this.setFirstSelected) {\r\n\t\t\t\tdefNotHiddenItem = (this._items || []).filter((it) => !it.Hidden)[0];\r\n\t\t\t}\r\n\r\n\t\t\tif (defNotHiddenItem) {\r\n\t\t\t\tthis.setSelectedItems([defNotHiddenItem]);\r\n\t\t\t\tthis.setModelInternal(this.selectedItemsToValue());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_setItemsValue(value) {\r\n\t\tvar modelIsSet = this.model !== null && this.model !== undefined;\r\n\t\tvar resetModel = modelIsSet && this._items && this._items.length > 0 && (!value || value.length === 0);\r\n\t\tthis._items = value || [];\r\n\t\tthis.isLoading = false;\r\n\t\tthis._notFoundClicked = false;\r\n\r\n\t\tif (resetModel) {\r\n\t\t\tthis.model = null;\r\n\t\t}\r\n\r\n\t\tthis.itemsIsPlainArray = this._items.length > 0 ? typeof this._items[0] !== 'object' : this.itemsIsPlainArray;\r\n\r\n\t\tif (this._items.length > 0) {\r\n\t\t\tvar isAddedEmpty = (this._items || []).some((it) => it[this.itemIdField] === undefined || it[this.itemIdField] === null);\r\n\t\t\tif (this.allowEmpty === 'true' && !isAddedEmpty && this.itemIdField && this.itemTitleField) {\r\n\t\t\t\tvar emptyItem = {};\r\n\t\t\t\temptyItem[this.itemIdField] = null;\r\n\t\t\t\temptyItem[this.itemTitleField] = '';\r\n\t\t\t\tthis._items.unshift(emptyItem);\r\n\t\t\t}\r\n\r\n\t\t\tif (this._tempValue !== null) {\r\n\t\t\t\tthis._setSelectedItemsByValue(this._tempValue);\r\n\t\t\t\tthis.setModelInternal(this.selectedItemsToValue());\r\n\r\n\t\t\t\tif (this.model === null && this._tempValue === 0) {\r\n\t\t\t\t\tthis._setFirstValue();\r\n\t\t\t\t}\r\n\t\t\t\tthis._tempValue = null;\r\n\t\t\t} else {\r\n\t\t\t\tif (modelIsSet && !this.loadOnTyping) {\r\n\t\t\t\t\tvar modelId = this.model;\r\n\r\n\t\t\t\t\t//reset Value if the selected Items not in list anymore\r\n\t\t\t\t\tthis._setSelectedItemsByValue(this._modelToValues(modelId));\r\n\t\t\t\t\tthis.setModelInternal(this.selectedItemsToValue());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._setFirstValue();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tonValueChanging(value) {\r\n\t\tif (this.internalSet) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tif (value !== null && value !== undefined && value !== '') {\r\n\t\t\tvar valueArray = this._modelToValues(value);\r\n\r\n\t\t\tif (valueArray.length !== 0) {\r\n\t\t\t\tif (this.loadOnTyping) {\r\n\t\t\t\t\t//try get Display Strings\r\n\r\n\t\t\t\t\tthis.setSelectedItems(this._valuesToItems(valueArray));\r\n\t\t\t\t\treturn value;\r\n\t\t\t\t}\r\n\t\t\t\tvar items = this.items;\r\n\r\n\t\t\t\tif (items && items.length > 0) {\r\n\t\t\t\t\tthis._setSelectedItemsByValue(valueArray);\r\n\t\t\t\t\treturn this.selectedItemsToValue();\r\n\t\t\t\t} else if (this.isLoading) {\r\n\t\t\t\t\tthis._tempValue = value;\r\n\t\t\t\t\treturn value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._tempValue = value;\r\n\t\t\t\t\tthis.$timeout(() => {\r\n\t\t\t\t\t\tthis._tempValue = null;\r\n\t\t\t\t\t}, 200);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setSelectedItems([]);\r\n\t\treturn null;\r\n\t}\r\n\r\n\t_modelToValues(value) {\r\n\t\tlet throwError = false;\r\n\t\tlet valueArray = null;\r\n\r\n\t\tif (typeof value === 'string' && !isNaN(value)) {\r\n\t\t\tvalue = Number(value);\r\n\t\t} else if (Array.isArray(value)) {\r\n\t\t\tif (value.length > 0 && typeof value[0] === 'object') {\r\n\t\t\t\tthrowError = true;\r\n\t\t\t}\r\n\t\t\tvalueArray = value;\r\n\t\t} else if (typeof this.separatorChar === 'string' && this.separatorChar.length === 1) {\r\n\t\t\tvalueArray = this.convertValueWithSeparatorChar(value);\r\n\t\t} else if (typeof value === 'object') {\r\n\t\t\tthrowError = true;\r\n\t\t}\r\n\r\n\t\tif (throwError) {\r\n\t\t\tthrow new Error('Picker control does not recognize assigned data type');\r\n\t\t}\r\n\t\tif (!valueArray) {\r\n\t\t\tvalueArray = [value];\r\n\t\t}\r\n\t\treturn valueArray;\r\n\t}\r\n\r\n\t_setSelectedItemsByValue(value) {\r\n\t\tvar valueArray = this._modelToValues(value);\r\n\t\t//var valueArray = Array.isArray(value) ? value : [value];\r\n\t\tvar items = this.items;\r\n\r\n\t\tif (items && items.length > 0) {\r\n\t\t\tvar selectedItems = [];\r\n\t\t\tfor (var i = 0; i < items.length; i++) {\r\n\t\t\t\tif (valueArray.indexOf(this.getId(items[i])) >= 0) {\r\n\t\t\t\t\tselectedItems.push(items[i]);\r\n\r\n\t\t\t\t\tif (selectedItems.length === valueArray.length) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.setSelectedItems(selectedItems);\r\n\t\t}\r\n\t}\r\n\r\n\tnotFoundClick(event) {\r\n\t\tif (this.notFound && this.notFound.buttonClick) {\r\n\t\t\tthis._notFoundClicked = true;\r\n\t\t\tthis.notFound.buttonClick();\r\n\t\t\tthis.availableNotFoundButton = false;\r\n\t\t\tthis.resetItemsCache();\r\n\t\t}\r\n\r\n\t\tevent.preventDefault();\r\n\t\tthis.searchInput.focus();\r\n\t}\r\n\r\n\tloadMoreClick() {\r\n\t\tif (this.loadMoreConfig && this.loadMoreConfig.onClick) {\r\n\t\t\tthis.loadMoreConfig.onClick();\r\n\t\t\tthis.resetItemsCache();\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tclear() {\r\n\t\tthis.setSelectedItems([]);\r\n\t\tthis.setModelInternal(null);\r\n\t\tthis.autoCompleteSearchText = '';\r\n\t\tthis.searchInput.focus();\r\n\t}\r\n\r\n\tsetNotFoundButtonAvailability(makeCall) {\r\n\t\tif (this.notFound) {\r\n\t\t\tconst isConfigured = typeof this.notFound.buttonClick === 'function';\r\n\t\t\tif (!this.availableNotFoundButton && isConfigured && makeCall) {\r\n\t\t\t\tthis.notFound.buttonClick(true);\r\n\t\t\t}\r\n\t\t\tthis.availableNotFoundButton = isConfigured;\r\n\t\t}\r\n\t}\r\n\r\n\t_valuesToItems(values) {\r\n\t\tconst items = values.map((val) => {\r\n\t\t\tvar item = {};\r\n\t\t\titem[this.itemIdField] = val;\r\n\t\t\titem[this.itemTitleField] = ' ';\r\n\t\t\treturn item;\r\n\t\t});\r\n\r\n\t\tthis.loadItems(null, this, items);\r\n\t\treturn items;\r\n\t}\r\n\r\n\tgetId(item) {\r\n\t\tif (this.itemsIsPlainArray) {\r\n\t\t\treturn item;\r\n\t\t}\r\n\t\tif (!item) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn item[this.itemIdField];\r\n\t}\r\n\r\n\tgetTitle(item, isDropdown) {\r\n\t\tif (this.itemsIsPlainArray) {\r\n\t\t\treturn item;\r\n\t\t}\r\n\t\tif (!item) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn item[(isDropdown && this.itemDropdownLabelField) || this.itemTitleField];\r\n\t}\r\n\r\n\tsetModelInternal(value) {\r\n\t\tthis.internalSet = true;\r\n\t\tthis.model = value;\r\n\t\tthis.internalSet = false;\r\n\t}\r\n\r\n\tisWildcardSearch(searchText) {\r\n\t\treturn searchText && searchText.indexOf('%') > -1;\r\n\t}\r\n\r\n\tasync reload(isAuto) {\r\n\t\tvar searchText = this.autoCompleteSearchText ? this.autoCompleteSearchText.toLowerCase() : '';\r\n\t\tif (\r\n\t\t\tthis.loadedItemsSearchText &&\r\n\t\t\t!this.isWildcardSearch(searchText) &&\r\n\t\t\tsearchText.startsWith(this.loadedItemsSearchText) &&\r\n\t\t\t(this.loadedItemsCompletely || searchText.length === this.loadedItemsSearchText.length)\r\n\t\t) {\r\n\t\t\tif (this.loadedItemsSearchText !== searchText) {\r\n\t\t\t\tthis.items = this.filterItemsByTitle(searchText);\r\n\t\t\t\tthis.loadedItemsSearchText = searchText;\r\n\t\t\t}\r\n\r\n\t\t\treturn this.items;\r\n\t\t}\r\n\r\n\t\tthis.isLoading = true;\r\n\t\tconst data = await this.loadItems(searchText, this);\r\n\t\tthis.resetItemsCache();\r\n\t\tvar items = [];\r\n\t\tif (Array.isArray(data)) {\r\n\t\t\titems = data;\r\n\t\t} else if (data && data.items) {\r\n\t\t\titems = data.items;\r\n\t\t\tif (!this.isWildcardSearch(data.searchText)) {\r\n\t\t\t\tthis.loadedItemsSearchText = data.searchText;\r\n\t\t\t\tthis.loadedItemsCompletely = data.all;\r\n\t\t\t}\r\n\r\n\t\t\tif (!data.all) {\r\n\t\t\t\titems.push({\r\n\t\t\t\t\tempty: true,\r\n\t\t\t\t\tinit: function () {},\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\titems = this.filterSelectedItems(items);\r\n\r\n\t\tif (isAuto) {\r\n\t\t\tthis._items = items;\r\n\t\t} else {\r\n\t\t\tthis.items = items;\r\n\t\t}\r\n\t\tthis.isLoading = false;\r\n\r\n\t\treturn this.items;\r\n\t}\r\n\r\n\tfilterSelectedItems(items) {\r\n\t\treturn items;\r\n\t}\r\n\r\n\tresetItemsCache() {\r\n\t\tthis.loadedItemsSearchText = null;\r\n\t\tthis.loadedItemsCompletely = false;\r\n\t}\r\n\r\n\tasync autoCompleteSearch() {\r\n\t\tif (this.loadOnTyping && this.loadItems && !this.autoCompleteSearchText) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tlet items = this.loadOnTyping && this.loadItems ? await this.reload(true) : this.filterItemsByTitle(this.autoCompleteSearchText);\r\n\r\n\t\tif (items.length === 1 && !this.focus && this.autoCompleteSearchText) {\r\n\t\t\tthis.setSelectedItems((this.selectedItems || []).concat(items));\r\n\t\t\tthis.setModelInternal(this.selectedItemsToValue());\r\n\t\t\tthis.autoCompleteSearchText = '';\r\n\t\t}\r\n\t\treturn items;\r\n\t}\r\n\r\n\tfilterItemsByTitle(query) {\r\n\t\tquery = (query || '').toLowerCase();\r\n\t\tconst filteredItems = query ? this.items.filter((item) => this.getTitle(item).toLowerCase().indexOf(query) !== -1) : this.items;\r\n\t\treturn this.filterSelectedItems(filteredItems);\r\n\t}\r\n\r\n\tautoCompleteSelectedItemChange(item) {\r\n\t\tconst itemValue = item ? this.getId(item) : null;\r\n\t\tif (itemValue !== this.model) {\r\n\t\t\tif (!itemValue) {\r\n\t\t\t\tif (this._isTyping) {\r\n\t\t\t\t\tthis._valueReset = true;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis._setAutoCompleteValue(itemValue);\r\n\t\t} else if (item === undefined) {\r\n\t\t\tthis.autoCompleteSearchText = '';\r\n\t\t}\r\n\r\n\t\tthis._valueReset = false;\r\n\t}\r\n\r\n\t_onAutoCompleteItemSelected() {\r\n\t\t//abstract method\r\n\t}\r\n\r\n\t_setAutoCompleteValue(value) {\r\n\t\tthis.internalSet = true;\r\n\t\tthis._onAutoCompleteItemSelected(value);\r\n\t\tif (!value) {\r\n\t\t\tthis.autoCompleteSearchText = '';\r\n\t\t}\r\n\t\tthis.internalSet = false;\r\n\t}\r\n\r\n\t_formatTitle() {\r\n\t\tthis.controlLabel = this.label || (this.noLabel ? '' : this.defaultPickerLabel);\r\n\t}\r\n}\r\n","'use strict';\r\nimport BasePickerController from './mx-picker-base-controller';\r\n\r\nexport default class MultiPickerController extends BasePickerController {\r\n\tconstructor($timeout, $q, $element, $scope, i18n) {\r\n\t\tsuper($timeout, $q, $element, $scope, i18n);\r\n\t\tthis.single = false;\r\n\t\tthis.__dropdownIdClass = 'mxAutoCompDrDownID-' + Math.random().toString().replace('.', '');\r\n\t}\r\n\r\n\t$onInit() {\r\n\t\tsuper.$onInit();\r\n\t\tthis._setLabels();\r\n\t}\r\n\r\n\t$postLink() {\r\n\t\tthis.$element\r\n\t\t\t.on('click', 'md-chips-wrap', (event) => {\r\n\t\t\t\tif (event.target.tagName !== 'INPUT') {\r\n\t\t\t\t\tthis.$element.find('input').focus();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.on('focus', 'input', () => {\r\n\t\t\t\t$('.md-autocomplete-suggestions-container:has(.' + this.__dropdownIdClass + ')')\r\n\t\t\t\t\t.addClass('mx-picker-dropdown-suggestions')\r\n\t\t\t\t\t.css({\r\n\t\t\t\t\t\twidth: Math.round(this.$element.width()) + 'px',\r\n\t\t\t\t\t\tleft: '0 !important',\r\n\t\t\t\t\t\tmarginTop: '2px',\r\n\t\t\t\t\t\tmarginLeft: Math.round(this.$element.offset().left) + 'px',\r\n\t\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.on('keydown', () => {\r\n\t\t\t\tthis.$element.addClass('mx-picker--touched');\r\n\t\t\t});\r\n\t}\r\n\r\n\tconvertValueWithSeparatorChar(value) {\r\n\t\tif (typeof value === 'string') {\r\n\t\t\treturn value.split(this.separatorChar).map((value) => {\r\n\t\t\t\tvalue = value.trim();\r\n\t\t\t\tif (!isNaN(value)) {\r\n\t\t\t\t\tvalue = Number(value);\r\n\t\t\t\t}\r\n\t\t\t\treturn value;\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfilterSelectedItems(items) {\r\n\t\tif (items.length > 0 && this.selectedItems.length > 0) {\r\n\t\t\tconst selectedIds = this.selectedItems.map((item) => this.getId(item));\r\n\t\t\titems = items.filter((item) => !selectedIds.includes(this.getId(item)));\r\n\t\t}\r\n\t\treturn items;\r\n\t}\r\n\r\n\tonSelectionChange() {\r\n\t\tthis.internalSet = true;\r\n\t\tthis.model = this.selectedItemsToValue();\r\n\t\tthis._setLabels();\r\n\t\tthis.setNotFoundButtonAvailability(true);\r\n\t\tthis.internalSet = false;\r\n\t}\r\n\r\n\tselectedItemsToValue() {\r\n\t\tif (this.selectedItems.length === 0) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tconst ids = this.selectedItems.map((item) => this.getId(item));\r\n\t\treturn this.separatorChar ? ids.join(this.separatorChar) : ids;\r\n\t}\r\n\r\n\tsetSelectedItems(items) {\r\n\t\tthis.selectedItems = items;\r\n\t\tthis._setLabels();\r\n\t}\r\n\r\n\tuseDropdownLabelsDecorator(label, searchText) {\r\n\t\tconst dropdownLabelsDecorator = this.dropdownLabelsDecorator || this._defaultDropdownLabelsDecorator;\r\n\t\treturn dropdownLabelsDecorator(label, searchText);\r\n\t}\r\n\r\n\t_defaultDropdownLabelsDecorator(label, searchText) {\r\n\t\tlabel = label || '';\r\n\t\tsearchText = searchText || '';\r\n\t\tvar pos = label.toLowerCase().indexOf(searchText.toLowerCase());\r\n\t\tif (pos === 0) {\r\n\t\t\tlabel =\r\n\t\t\t\tlabel.substring(0, pos) +\r\n\t\t\t\t'' +\r\n\t\t\t\tlabel.substring(pos, pos + searchText.length) +\r\n\t\t\t\t'' +\r\n\t\t\t\tlabel.substring(pos + searchText.length);\r\n\t\t}\r\n\t\treturn label;\r\n\t}\r\n}\r\nMultiPickerController.$inject = ['$timeout', '$q', '$element', '$scope', 'mx.internationalization'];\r\n","'use strict';\r\n\r\nconst basePickerProperties = {\r\n\titems: '\r\n *\t\r\n *\r\n */\r\nangular.module('mx.components').directive('mxMultiPicker', function mxMultiPickerDirective() {\r\n\tconst directive = new mx.components.FormControlBase(MultiPickerController, null, template);\r\n\tangular.extend(directive.bindToController, commonPickerProperties);\r\n\tangular.extend(directive.bindToController, {\r\n\t\tseparatorChar: '@',\r\n\t\tonAdd: '&',\r\n\t\tonRemove: '&',\r\n\t\tdropdownLabelsDecorator: '<',\r\n\t\tremovable: '<',\r\n\t\taddOnBlur: ' 0,\\r\\n\\t\\t'mx-picker--invalid': (vm.controlNgModel.mxInvalid || vm.autoCompleteSearchText && !vm.model && !vm.isLoading) && !vm.focus,\\r\\n\\t\\t'navigate-enabled': vm.navigateItem\\r\\n\\t}\\\">\\r\\n\\r\\n\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t 0\\\" md-removable=\\\"vm.removable\\\" md-add-on-blur=\\\"vm.addOnBlur\\\">\\r\\n\\r\\n\\r\\n\\r\\n\\t\\t\\t 0\\\" md-select-on-match=\\\"true\\\" md-match-case-insensitive=\\\"true\\\" spellcheck=\\\"false\\\" ng-focus=\\\"vm.focus=true\\\" ng-blur=\\\"vm.blur($event)\\\" input-aria-label=\\\"{{:: vm.controlLabel}}\\\">\\r\\n\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{item.hint}}\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{item[vm.itemDetailsField]}}\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t{{::vm.loadMoreConfig.title}}\\r\\n\\t\\t\\t\\t\\t\\t...\\r\\n\\t\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t{{:: vm.notFoundMessage}} \\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{$parent.vm.getTitle($chip)}}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\tclear\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\tsearch\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t
{{::vm.hintPlainText}}
\\r\\n\\t\\t\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t\\r\\n\\t\\tclear\\r\\n\\t\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","'use strict';\r\nimport BasePickerController from './mx-picker-base-controller';\r\n\r\nexport default class PickerCtrl extends BasePickerController {\r\n\tstatic $inject = ['$timeout', '$q', '$element', '$scope', 'mx.internationalization'];\r\n\r\n\tconstructor($timeout, $q, $element, $scope, i18n) {\r\n\t\tsuper($timeout, $q, $element, $scope, i18n);\r\n\t\tthis.single = true;\r\n\t}\r\n\r\n\t_onAutoCompleteItemSelected(value) {\r\n\t\tthis.model = value;\r\n\t}\r\n\r\n\tsetSelectedItems(items = []) {\r\n\t\tthis.selectedItem = items.length ? items[0] : null;\r\n\t}\r\n\r\n\tselectedItemsToValue() {\r\n\t\treturn this.selectedItem ? this.getId(this.selectedItem) : null;\r\n\t}\r\n\r\n\tonDblClick() {\r\n\t\tconst input = this.$element.find('input')[0];\r\n\t\tinput.focus();\r\n\t\tinput.setSelectionRange(0, input.value.length);\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nangular.module('mx.components').directive('mxClearPickerBtn', mxClearPickerBtn);\r\n\r\nmxClearPickerBtn.$inject = ['$parse', '$compile'];\r\nexport default function mxClearPickerBtn($parse, $compile) {\r\n\tvar ddo = {\r\n\t\trestrict: 'A',\r\n\t\tlink: link,\r\n\t};\r\n\r\n\treturn ddo;\r\n\r\n\tfunction link(scope, element, attrs) {\r\n\t\tif (!attrs.mdFloatingLabel) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar template = [\r\n\t\t\t'',\r\n\t\t\t'clear',\r\n\t\t\t'',\r\n\t\t].join('');\r\n\r\n\t\tvar linkFn = $compile(template);\r\n\t\tvar button = linkFn(scope);\r\n\t\telement.append(button);\r\n\r\n\t\tvar searchTextModel = $parse(attrs.mdSearchText);\r\n\r\n\t\tscope.$watch(searchTextModel, function (searchText) {\r\n\t\t\tif (searchText && searchText !== '' && searchText !== null) {\r\n\t\t\t\tbutton.addClass('visible');\r\n\t\t\t} else {\r\n\t\t\t\tbutton.removeClass('visible');\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tbutton.on('click', onClick);\r\n\r\n\t\tscope.$on('$destroy', function () {\r\n\t\t\tbutton.off('click');\r\n\t\t});\r\n\r\n\t\tfunction onClick() {\r\n\t\t\tscope.$evalAsync(function () {\r\n\t\t\t\tscope.vm.clear();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nangular.module('mx.components').directive('mxSglclick', mxSglclick);\r\n\r\nmxSglclick.$inject = ['$parse'];\r\nexport default function mxSglclick($parse) {\r\n\treturn {\r\n\t\trestrict: 'A',\r\n\t\tlink: function (scope, element, attr) {\r\n\t\t\tvar fn = $parse(attr.mxSglclick);\r\n\t\t\tvar delay = 250;\r\n\t\t\tvar clicks = 0;\r\n\t\t\tvar timer = null;\r\n\r\n\t\t\telement.on('click', function (event) {\r\n\t\t\t\tclicks++;\r\n\r\n\t\t\t\tif (clicks === 1) {\r\n\t\t\t\t\ttimer = setTimeout(function () {\r\n\t\t\t\t\t\tscope.$apply(function () {\r\n\t\t\t\t\t\t\tfn(scope, {\r\n\t\t\t\t\t\t\t\t$event: event,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tclicks = 0;\r\n\t\t\t\t\t}, delay);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tclearTimeout(timer);\r\n\t\t\t\t\tclicks = 0;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t};\r\n}\r\n","'use strict';\r\nimport PickerCtrl from './mx-picker.controller';\r\nimport template from './mx-picker.html';\r\nimport { commonPickerProperties } from './mx-picker-properties';\r\nimport './mx-clear-picker-btn';\r\nimport './mx-sglclick';\r\n\r\nangular.module('mx.components').directive('mxPicker', mxPickerComponent);\r\n\r\nmxPickerComponent.$inject = ['$mdConstant'];\r\nexport default function mxPickerComponent($mdConstant) {\r\n\tvar directive = new mx.components.FormControlBase(PickerCtrl, null, template);\r\n\r\n\tangular.extend(directive.bindToController, commonPickerProperties);\r\n\r\n\tdirective.bindToController.selectedItem = '=?';\r\n\r\n\tvar originalLink = directive.link;\r\n\tdirective.link = function link(scope, element) {\r\n\t\toriginalLink.apply(this, arguments);\r\n\r\n\t\telement.on('keydown', onKeyDown);\r\n\t\telement.on('focusin', onFocusOut);\r\n\r\n\t\telement.on('$destroy', cleanUp);\r\n\t\tscope.$on('$destroy', cleanUp);\r\n\r\n\t\tfunction onKeyDown(e) {\r\n\t\t\tvar isCtrlPressed = e.ctrlKey;\r\n\t\t\tvar isXPressed = e.which === 88;\r\n\t\t\tvar isVPressed = e.which === 86;\r\n\t\t\tvar isTabPressed = e.which === $mdConstant.KEY_CODE.TAB;\r\n\t\t\tvar isDeletePressed = e.which === $mdConstant.KEY_CODE.DELETE;\r\n\t\t\tvar isBackspacePressed = e.which === $mdConstant.KEY_CODE.BACKSPACE;\r\n\t\t\tvar isMovementKeyPressed =\r\n\t\t\t\te.which === $mdConstant.KEY_CODE.UP_ARROW ||\r\n\t\t\t\te.which === $mdConstant.KEY_CODE.DOWN_ARROW ||\r\n\t\t\t\te.which === $mdConstant.KEY_CODE.LEFT_ARROW ||\r\n\t\t\t\te.which === $mdConstant.KEY_CODE.RIGHT_ARROW ||\r\n\t\t\t\te.which === $mdConstant.KEY_CODE.HOME ||\r\n\t\t\t\te.which === $mdConstant.KEY_CODE.END;\r\n\r\n\t\t\tif (scope.vm.readOnly) {\r\n\t\t\t\tif (isDeletePressed || isBackspacePressed || isXPressed || isVPressed) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!isCtrlPressed && !isTabPressed && !isMovementKeyPressed) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\telement.addClass('mx-picker--touched');\r\n\t\t}\r\n\r\n\t\tfunction onFocusOut() {\r\n\t\t\tvar input = element.find('input');\r\n\r\n\t\t\tif (!input.val().trim()) {\r\n\t\t\t\tinput.val('');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction cleanUp() {\r\n\t\t\telement.off();\r\n\t\t}\r\n\t};\r\n\r\n\treturn directive;\r\n}\r\n","// Module\nvar code = \"
\\r\\n\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{$parent.vm.getTitle(item)}}\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{::vm.loadMoreConfig.title}}\\r\\n\\t\\t\\t\\t...\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{:: vm.notFoundMessage}}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t
{{::vm.hintPlainText}}
\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t{{ vm.autoCompleteSearchText }}\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\t\\r\\n\\t\\tsearch\\r\\n\\t\\r\\n
\\r\\n\";\n// Exports\nexport default code;","'use strict';\r\nimport BasePickerController from './mx-picker-base-controller';\r\n\r\nexport default class SelectCtrl extends BasePickerController {\r\n\tconstructor($timeout, $q, $element, $scope, i18n) {\r\n\t\tsuper($timeout, $q, $element, $scope, i18n);\r\n\t\tthis.single = true;\r\n\r\n\t\tthis._valuesShouldNotBeHiddenOnUI = [];\r\n\t\tthis.setFirstSelected = true;\r\n\r\n\t\tObject.defineProperty(this, 'selectModel', {\r\n\t\t\tget: () => this.model,\r\n\t\t\tset: function (value) {\r\n\t\t\t\tthis.setModelInternal(value);\r\n\t\t\t\tif (value !== undefined && value !== null && this._valuesShouldNotBeHiddenOnUI.indexOf(value) === -1) {\r\n\t\t\t\t\tthis._valuesShouldNotBeHiddenOnUI.push(value);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t$scope.$watch('vm.items', () => {\r\n\t\t\tthis._optionsValueTitleMatching = {};\r\n\t\t\t(this.items || []).forEach((item) => {\r\n\t\t\t\tvar title = this.getTitle(item);\r\n\t\t\t\tthis._optionsValueTitleMatching[this.getId(item)] = title !== null && title !== undefined && typeof title.toString === 'function' ? title.toString() : title; // e.g. title === 0\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\t$onInit() {\r\n\t\tsuper.$onInit();\r\n\r\n\t\tif (this.model !== undefined && this.model !== null) {\r\n\t\t\tthis._valuesShouldNotBeHiddenOnUI.push(this.model);\r\n\t\t}\r\n\r\n\t\tconst inputContainerEl = this.$element.find('> md-input-container');\r\n\t\tthis.$element\r\n\t\t\t.find('select')\r\n\t\t\t.on('focus', () => {\r\n\t\t\t\tinputContainerEl.addClass('md-input-focused');\r\n\t\t\t})\r\n\t\t\t.on('blur', ($event) => {\r\n\t\t\t\tif (typeof this.onBlur === 'function') {\r\n\t\t\t\t\tthis.onBlur($event);\r\n\t\t\t\t}\r\n\t\t\t\tinputContainerEl.removeClass('md-input-focused');\r\n\t\t\t});\r\n\r\n\t\tthis.msgElemId = mx.components.Utils.genElemId('mx-aria-msg-');\r\n\t}\r\n\r\n\t$postLink() {\r\n\t\tthis.setHintHandlers(this.$element.find('select'));\r\n\t}\r\n\r\n\tgetTrackingValue(item) {\r\n\t\treturn typeof item === 'object' ? this.getId(item) : item;\r\n\t}\r\n\r\n\tsetSelectedItems(items) {\r\n\t\tthis.selectModel = items.length ? this.getId(items[0]) : null;\r\n\t}\r\n\r\n\tselectedItemsToValue() {\r\n\t\treturn this.model;\r\n\t}\r\n\r\n\t_filterHidden(item) {\r\n\t\treturn !item.Hidden || this._valuesShouldNotBeHiddenOnUI.indexOf(this.getId(item)) !== -1;\r\n\t}\r\n\r\n\t_isItemHidden(itemValue) {\r\n\t\treturn (this.items || []).some((arrItem) => arrItem.Hidden && this.getId(arrItem) === itemValue);\r\n\t}\r\n}\r\nSelectCtrl.$inject = ['$timeout', '$q', '$element', '$scope', 'mx.internationalization'];\r\n","'use strict';\r\nimport template from './mx-select.html';\r\nimport SelectCtrl from './mx-select.controller';\r\nimport { basePickerProperties } from './mx-picker-properties';\r\n\r\nangular.module('mx.components').directive('mxSelect', function mxSelectDirective() {\r\n\tvar directive = new mx.components.FormControlBase(SelectCtrl, null, template);\r\n\tangular.extend(directive.bindToController, basePickerProperties);\r\n\tdirective.bindToController.default = '=?';\r\n\tdirective.bindToController.allowEmpty = '@';\r\n\r\n\treturn directive;\r\n});\r\n","// Module\nvar code = \"\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t
{{::vm.hintPlainText}}
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","const queryFilterColors = [\r\n\t{ part: 1, color: 'red', themeColor: 'error-text-color' },\r\n\t{ part: 2, color: 'yellow', themeColor: 'warning-text-color' },\r\n\t{ part: 4, color: 'green', themeColor: 'success-text-color' },\r\n];\r\n\r\nexport class QuickFilterController {\r\n\tstatic $inject = ['$scope', '$attrs', 'mx.app.ColorService', 'mx.app.ThemeService'];\r\n\r\n\ttitles;\r\n\tcolorized;\r\n\tcolorService;\r\n\tthemeService;\r\n\tisStatic;\r\n\tredTitle;\r\n\tyellowTitle;\r\n\tgreenTitle;\r\n\tinitState;\r\n\tonClick;\r\n\r\n\tconstructor(scope, $attrs, colorService, themeService) {\r\n\t\tthis.colorService = colorService;\r\n\t\tthis.themeService = themeService;\r\n\t\tthis.isStatic = $attrs.staticMode === 'true';\r\n\r\n\t\tscope.$watch((this.isStatic ? '::' : '') + 'vm.value', (value) => {\r\n\t\t\tvalue = +value;\r\n\t\t\tthis.red = this.colorized || value & 1;\r\n\t\t\tthis.yellow = this.colorized || value & 2;\r\n\t\t\tthis.green = this.colorized || value & 4;\r\n\r\n\t\t\tthis.lastClick = value;\r\n\t\t});\r\n\t}\r\n\r\n\t$onInit() {\r\n\t\tthis.lastClick = +this.initState || 0;\r\n\r\n\t\tif (!this.isStatic) {\r\n\t\t\tthis.themeService.getCurrentTheme().then((theme) => {\r\n\t\t\t\tconst bgColor = theme?.['content-bg-color'];\r\n\t\t\t\tqueryFilterColors.forEach((f) => {\r\n\t\t\t\t\tconst filterColor = theme?.[f.themeColor];\r\n\t\t\t\t\tthis[`opacity_${f.color}`] = filterColor && bgColor && this.colorService.getContrastDelta(bgColor, filterColor) < 0.2 ? 0.8 : 0.6;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.titles) {\r\n\t\t\ttry {\r\n\t\t\t\tconst titles = JSON.parse(this.titles);\r\n\t\t\t\tthis.redTitle = titles.red;\r\n\t\t\t\tthis.yellowTitle = titles.yellow;\r\n\t\t\t\tthis.greenTitle = titles.green;\r\n\t\t\t} catch (e) {\r\n\t\t\t\tmx.logCatch(e);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.parts = isFinite(this.parts) ? +this.parts : 7;\r\n\t}\r\n\r\n\tclick(value) {\r\n\t\tthis.lastClick = this.lastClick ^ value;\r\n\t\tthis.onClick({ color: this.lastClick });\r\n\t}\r\n\r\n\tshowPart(value) {\r\n\t\treturn this.parts & value;\r\n\t}\r\n\r\n\tisActivated(value) {\r\n\t\treturn this.lastClick & value;\r\n\t}\r\n}\r\n\r\nangular.module('mx.components').component('mxQuickFilter', {\r\n\tscope: {},\r\n\tbindings: {\r\n\t\tvalue: '@',\r\n\t\tparts: '@',\r\n\t\ttitles: '@',\r\n\t\tonClick: '&',\r\n\t\tinitState: '@',\r\n\t\tcolorized: '<',\r\n\t},\r\n\r\n\ttemplate: [\r\n\t\t'$attrs',\r\n\t\tfunction ($attrs) {\r\n\t\t\tconst isStatic = $attrs.staticMode === 'true';\r\n\t\t\tconst optimizer = isStatic ? '::' : '';\r\n\r\n\t\t\tconst filters = queryFilterColors\r\n\t\t\t\t.map((f) => {\r\n\t\t\t\t\tlet ngClickAttribute = '';\r\n\t\t\t\t\tlet style = '';\r\n\t\t\t\t\tif (!isStatic) {\r\n\t\t\t\t\t\tngClickAttribute = ` ng-click=\"vm.click(${f.part})\"`;\r\n\t\t\t\t\t\tstyle = ` style=\"--mx-quick-filter-opacity: {{ vm.opacity_${f.color}}}\"`;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t`{{${optimizer} vm.isActivated(${f.part}) ? '•' : '' }} ` +\r\n\t\t\t\t\t\t''\r\n\t\t\t\t\t);\r\n\t\t\t\t})\r\n\t\t\t\t.join('');\r\n\r\n\t\t\treturn `
${filters}
`;\r\n\t\t},\r\n\t],\r\n\r\n\tcontroller: QuickFilterController,\r\n\tcontrollerAs: 'vm',\r\n});\r\n","'use strict';\r\n\r\nimport componentsModule from './core/module/mx-components.module.js';\r\nimport './core/model/enumerations.js';\r\nimport './core/services/mx-lazy-load-cfg-provider.js';\r\nimport './core/services/mx-data-provider-registry.js'; // Obsolete file. It is still here for backward compatibility of Workflows/Extensions based on old template.\r\nimport './core/utils';\r\n\r\nimport './directives/mx-bind-html-compile/mx-bind-html-compile.js';\r\nimport './directives/mx-bind-html-trusted/mx-bind-html-trusted.js';\r\nimport './directives/mx-drag-n-drop/mx-drag-n-drop.js';\r\nimport './directives/mx-form-validation/mx-form-validation.js';\r\nimport './directives/mx-hover-class/mx-hover-class.js';\r\nimport './directives/mx-lazy-load/mx-lazy-load.js';\r\nimport './directives/mx-mask/masks/mx-color-mask.js';\r\nimport './directives/mx-mask/masks/mx-interval-mask.js';\r\nimport './directives/mx-mask/masks/mx-mask-base.js';\r\nimport './directives/mx-mask/mx-mask.directive.js';\r\nimport './directives/mx-mask/masks/mx-numeric-mask.js';\r\nimport './directives/mx-mask/masks/mx-regexp-mask.js';\r\nimport './directives/mx-on-outside-click/mx-on-outside-click.js';\r\nimport './directives/mx-prevent-menu-close/mx-prevent-menu-close.js';\r\nimport './directives/mx-repeater-complete/mx-repeater-complete.js';\r\nimport './directives/mx-repeater-item/mx-repeater-item.js';\r\nimport './directives/mx-resizable/mx-resizable.js';\r\nimport './directives/mx-right-click/mx-right-click.js';\r\nimport './directives/mx-transclude/mx-transclude.js';\r\nimport './directives/mx-ui-accessibility/mx-ui-accessibility.js';\r\nimport './mx-attachments/mx-attachment.component.ts';\r\nimport './mx-attachments/mx-attachments.js';\r\nimport './mx-attachments/mx-drop-zone.js';\r\nimport './mx-attachments/mx-zoom.js';\r\nimport './mx-button/mx-button.js';\r\nimport './mx-checkbox/mx-checkbox.js';\r\nimport './mx-choice/mx-choice.js';\r\nimport './mx-color-picker/mx-color-picker.js';\r\nimport './mx-config-reader/mx-config-reader.js';\r\nimport './mx-container/mx-container.js';\r\nimport './mx-currency/mx-currency.js';\r\nimport './mx-current-element/mx-current-element.js';\r\nimport './mx-datasource-paging-panel/mx-datasource-paging-panel.js';\r\nimport './mx-datasource-search-panel/mx-datasource-search-panel.js';\r\nimport './mx-date-time-picker/mx-date-time.js';\r\nimport './mx-dropdown-menu/mx-dropdown-menu.js';\r\nimport './mx-file-uploader/mx-file-uploader.js';\r\nimport './mx-form-errors/mx-form-errors.js';\r\nimport './mx-form-errors/mx-form-message.js';\r\nimport './mx-form/mx-form-control-base.js';\r\nimport './mx-form/mx-form.js';\r\nimport './mx-grid/mx-grid-color-picker.js';\r\nimport './mx-grid/mx-grid-currency.js';\r\nimport './mx-grid/mx-grid-date-time-picker.js';\r\nimport './mx-grid/mx-grid-edit-form-field.js';\r\nimport './mx-grid/mx-grid-edit-form.js';\r\nimport './mx-grid/mx-grid-icon-picker.js';\r\nimport './mx-grid/mx-grid-numeric-edit.js';\r\nimport './mx-grid/mx-grid-select.js';\r\nimport './mx-grid/mx-grid-helper.js';\r\nimport './mx-grid/mx-grid.js';\r\nimport './mx-hierarchy-picker/mx-hierarchy-picker.js';\r\nimport './mx-icon-picker/mx-icon-picker-dropdown.js';\r\nimport './mx-icon-picker/mx-icon-picker.js';\r\nimport './mx-icon/mx-icon.js';\r\nimport './mx-iframe/mx-iframe.js';\r\nimport './mx-image-preview/mx-image-preview.js';\r\nimport './mx-item-chooser/mx-item-chooser.js';\r\nimport './mx-list/mx-list.js';\r\nimport './mx-literals/mx-literal.js';\r\nimport './mx-numeric-edit/mx-numeric-edit.js';\r\nimport './mx-picker/mx-multi-picker.component.js';\r\nimport './mx-picker/mx-picker.component.js';\r\nimport './mx-picker/mx-select.component.js';\r\nimport './mx-quick-filter/mx-quick-filter.js';\r\nimport './mx-rating/mx-rating.js';\r\nimport './mx-repeater/mx-repeater.js';\r\nimport './mx-search-input/mx-search-input.js';\r\nimport './mx-stepper/mx-stepper.js';\r\nimport './mx-tabs/mx-tabs.js';\r\nimport './mx-text-area/mx-text-area.js';\r\nimport './mx-text-box/mx-text-box.js';\r\nimport './mx-timeline/mx-timeline-lazy.js';\r\nimport './mx-timeline/mx-timeline.js';\r\nimport './mx-treeview/mx-treeview.js';\r\n\r\nexport default componentsModule;\r\n","import type { AnyObject, EmptyObject } from '../../../Types';\r\nimport { IController } from 'angular';\r\n\r\nexport type ViewLocals = AnyObject;\r\n\r\nexport type FunctionViewController = () => void;\r\nexport type ClassViewController = {\r\n\tnew (...args: never[]): IController & Partial;\r\n};\r\n\r\nexport type ViewController = FunctionViewController | ClassViewController;\r\n\r\nclass DefaultClassController {}\r\n\r\n/**\r\n * @ngdoc type\r\n * @name mx.shell.View\r\n * @module mx.shell\r\n *\r\n * @description\r\n * Base view type to be used in {@ref mx.shell:mxSidePanel side panel}.
\r\n * It is not supposed to be used, use inherited types instead.\r\n *\r\n * @property {int | string} id - Unique identifier
Default value is -1\r\n * @property {string} name = 'Undefined Name' - Short name
Default value is Undefined Name\r\n * @property {string} displayName - Long name or title
Default value is undefined.\r\n * @property {string} controllerAs - A controller alias name. If present the controller will be\r\n * published to scope under the `controllerAs` name.\r\n * @property {object} locals - Designed for passing data into controller.
\r\n * All keys from `locals` object will be accessible in controller as property of its context `this`.
\r\n * Example: if `locals`: {myVar: 123} then in Controller: this.myVar === 123;\r\n * @property {boolean} bindToController - A private read-only property that determines whether controller is bound. Is automatically set to `true`\r\n * @property {string} type - Type of the connected object (e.g. 'incident', 'user', ...).
\r\n * If type is specified and registered then it's not necessary to specify `controller` and `templateUrl` parameters\r\n * they are obtained from {@ref mx.shell.SidePanelService#viewTypes SidePanel's viewTypes}.
\r\n * You may set `controller` and `templateUrl` values to redefine those params.
\r\n * If `type` is not set `controller` and `templateUrl` properties should be set.\r\n * @property {string | function} controller - Controller function that should be associated with a newly created\r\n * scope or the name of a registered controller if passed as a string.\r\n * @property {string} templateUrl - A path to html template.\r\n * @property {string} template - Html template.\r\n * @property {object} context - Object's context connected with this DetailsView.
\r\n * It will be passed into this DetailsView Controller via locals as Dependency Injections with name 'context'\r\n * If DetailsView contains `context` then this context will be added to `locals` automatically.
\r\n */\r\nexport default class View {\r\n\tpublic id: string | number = -1;\r\n\tpublic name = 'Undefined Name';\r\n\r\n\tpublic template = '';\r\n\t// public templateUrl?: string;\r\n\r\n\tpublic controller: ViewController = DefaultClassController;\r\n\tpublic controllerAs = 'vm';\r\n\tpublic bindToController = true;\r\n\r\n\tpublic displayName = '';\r\n\tpublic type?: string;\r\n\r\n\tpublic locals: Locals = {} as Locals;\r\n\r\n\tconstructor(options: Partial> = {}) {\r\n\t\tObject.assign(this, options);\r\n\t}\r\n}\r\n","import { AnyObject } from '../../../Types';\r\nimport View, { ViewLocals } from './view';\r\nimport { ContentWidgetDialogAction } from '../../PandoraSolutionBuilderAgent/model/enumerations';\r\nimport type { MxAction } from './action';\r\nimport type { IDeferred } from 'angular';\r\n\r\nexport type DetailViewContext = AnyObject;\r\n\r\nexport type DetailsViewLocals = ViewLocals & {\r\n\tcontext: DetailViewContext;\r\n};\r\n\r\n/**\r\n * @ngdoc type\r\n * @name mx.shell.DetailsView\r\n * @module mx.shell\r\n *\r\n * @description\r\n * An implementation of the Details View for {@ref mx.shell.SidePanelService SidePanelService}.
\r\n * Inherited from {@ref mx.shell.View mx.shell.View}.
\r\n * A constructor accepts `options` parameter that may contain fields to extend corresponding properties. Created like:\r\n * ```javascript\r\n var options = {\r\n\tid: 'user-details-test',\r\n\ttype: 'user',\r\n\tname: 'Markus, Schmidt',\r\n\tdisplayName: 'User: Markus, Schmidt',\r\n\tcontext: vm.selectedItemContext,\r\n\tlocals: {\r\n\t\tincidentContext: vm.selectedItemContext,\r\n\t\tuserContext: {firstName: 'Markus', lastName: 'Schmidt'}\r\n\t},\r\n\tuiActionGroup: 'user_view',\r\n };\r\n\r\n var view = new mx.shell.DetailsView(options);\r\n * ```\r\n *\r\n * @property {string} uiActionGroup A group identifier which allows to connect this `DetailsView` with `uiActions`\r\n * from {@ref mx.shell.SidePanelService SidePanelService}\r\n * @property {string} correspondingUrl - Url of the corresponding View/Page that can be opened by coping this URL into another browser's tab.\r\n * This Url doesn't define current state of the application, but allows just get current tab/view/content on a separate page.\r\n * Is used to close all children DetailsViews automatically when parent DetailsView is closed\r\n * @property {boolean} visible — shows if details view is currently visible\r\n * @property {boolean} dirty - True if user has already interacted with the form.\r\n * @property {boolean} merge - True if user has already interacted with the form.\r\n * @property {boolean} hideActions - True for hide actions.\r\n */\r\nexport default class DetailsView extends View {\r\n\tpublic uiActionGroup: string;\r\n\tpublic correspondingUrl: string;\r\n\tpublic hideActions = false;\r\n\tpublic visible = true; // OBSOLETE ?\r\n\tpublic dirty = false;\r\n\tpublic mergeDisabled = false;\r\n\tpublic context: DetailViewContext;\r\n\tpublic dialogType?: ContentWidgetDialogAction;\r\n\tpublic startedFromAction?: MxAction;\r\n\tpublic finishDefer?: IDeferred;\r\n\r\n\tpublic headerTitle?: string;\r\n\tpublic widgetId?: string;\r\n\tpublic widgetName?: string;\r\n\tpublic telemetrySource?: string;\r\n\r\n\tconstructor(options: Partial = {}) {\r\n\t\tsuper(options);\r\n\t\tthis.headerTitle = options.headerTitle;\r\n\t\tthis.widgetId = options.widgetId;\r\n\t\tthis.widgetName = options.widgetName;\r\n\t\tthis.telemetrySource = options.telemetrySource;\r\n\t\tthis.uiActionGroup = options.uiActionGroup || '';\r\n\t\tthis.correspondingUrl = options.correspondingUrl || '';\r\n\t\tthis.hideActions = options.hideActions || false;\r\n\t\tthis.visible = typeof options.visible === 'boolean' ? options.visible : true;\r\n\t\tthis.dirty = typeof options.dirty === 'boolean' ? options.dirty : false;\r\n\t\tthis.mergeDisabled = typeof options.mergeDisabled === 'boolean' ? options.mergeDisabled : false;\r\n\t\tthis.dialogType = options.dialogType;\r\n\r\n\t\tthis.context = options.context || {};\r\n\t\tthis.locals.context = options.context || {};\r\n\r\n\t\t// If `correspondingUrl` is not set and an context is set then lets assume that it's `Object Details Page`\r\n\t\tif (!this.correspondingUrl && this.context && this.context._type && this.context._id) {\r\n\t\t\tthis.correspondingUrl = '/object-details/' + this.context._type + '/' + this.context._id;\r\n\t\t}\r\n\t}\r\n}\r\n","import View from './model/view';\r\nimport DetailsView from './model/details-view';\r\n\r\nexport default angular\r\n\t.module('mx.shell', [])\r\n\t.value('mx.shell.View', View)\r\n\t.value('mx.shell.DetailsView', DetailsView)\r\n\t.run([\r\n\t\t'mx.app.HttpInterceptorsRegistry',\r\n\t\t'mx.shell.Config',\r\n\t\t'mx.shell.RoutingService',\r\n\t\t'$timeout',\r\n\t\t'$q',\r\n\t\tfunction (httpInterceptorsRegistry, mxConfig, routingService, $timeout, $q) {\r\n\t\t\tconst restApi = mxConfig.get('restHosts');\r\n\r\n\t\t\t//not found handler\r\n\t\t\thttpInterceptorsRegistry.register({\r\n\t\t\t\tresponseError: function (response) {\r\n\t\t\t\t\tif (response.status === 404) {\r\n\t\t\t\t\t\tlet navigateTo404 = true;\r\n\r\n\t\t\t\t\t\tfor (let key in restApi) {\r\n\t\t\t\t\t\t\tif (restApi.hasOwnProperty(key)) {\r\n\t\t\t\t\t\t\t\tnavigateTo404 = response.config.url.indexOf(restApi[key]) === -1;\r\n\t\t\t\t\t\t\t\tif (!navigateTo404) {\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// Skip navigation to 404 route when api fails\r\n\t\t\t\t\t\tif (navigateTo404) {\r\n\t\t\t\t\t\t\t// TODO: remove timeout workaround after fixed bug in router\r\n\t\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\t\troutingService.go('404');\r\n\t\t\t\t\t\t\t}, 10);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn $q.reject(response);\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t},\r\n\t]).name;\r\n","'use strict';\r\n\r\n/**\r\n * @ngdoc type\r\n * @name mx.shell.ExtraPanelManager\r\n * @module mx.shell\r\n * @property {boolean} visible - shows whether ExtraPanel opened or close (use methods open()/close() to manage this state).\r\n * @property {mx.shell.View} view - contains current View in ExtraPanel (use method open(view) to change it).\r\n *\r\n * @description\r\n * .Extra Panel Manager allows to manage behaviour of Extra Panel.\r\n */\r\nexport class ExtraPanelManager {\r\n\tstatic $inject = ['mx.shell.EventService', '$timeout'];\r\n\r\n\tconstructor(eventService, $timeout) {\r\n\t\tthis.eventService = eventService;\r\n\t\tthis.$timeout = $timeout;\r\n\r\n\t\tthis.visible = false;\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.ExtraPanelManager#open\r\n\t *\r\n\t * @description\r\n\t * Opens ExtraPanel with passed View.\r\n\t *\r\n\t * @param {mx.shell.View} view - an instanse of mx.shell.View that should be shown in ExtraPanel\r\n\t */\r\n\topen(view) {\r\n\t\tconst stateChanged = this.visible !== true;\r\n\t\tthis.visible = true;\r\n\t\tthis.view = view;\r\n\t\tthis.eventService.dispatchEvent(mx.shell.EventCodes.ExtraPanelOpened);\r\n\t\tif (stateChanged) {\r\n\t\t\tthis.$timeout(() => this.eventService.dispatchEvent(mx.shell.EventCodes.LayoutChanged));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.ExtraPanelManager#close\r\n\t *\r\n\t * @description\r\n\t * Closes ExtraPanel.\r\n\t */\r\n\tclose($event) {\r\n\t\tconst stateChanged = this.visible !== false;\r\n\t\tthis.visible = false;\r\n\t\tthis.view = undefined;\r\n\t\tthis.eventService.dispatchEvent(mx.shell.EventCodes.ExtraPanelClosed, {\r\n\t\t\t$event: $event,\r\n\t\t\tclosedByUser: $event && $event.currentTarget.className.split(' ').indexOf('mx-extra-panel--close') !== 0,\r\n\t\t});\r\n\t\tif (stateChanged) {\r\n\t\t\tthis.$timeout(() => this.eventService.dispatchEvent(mx.shell.EventCodes.LayoutChanged));\r\n\t\t}\r\n\t}\r\n}\r\n\r\nangular.module('mx.shell').service('mx.shell.ExtraPanelManager', ExtraPanelManager);\r\n","'use strict';\r\n\r\nimport template from './mx-shell-breadcrumbs.html';\r\nimport { EventCodes } from '../../../../App/model/event-codes';\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name mx.shell:mxShellBreadcrumbs\r\n * @module mx.shell\r\n * @restrict 'E'\r\n * @scope {}\r\n * @requires {@ref mx.shell.EventService mx.shell.EventService}\r\n * @requires {@ref mx.shell.RoutingService mx.shell.RoutingService}\r\n * @requires {@ref mx.shell.NavigationService mx.shell.NavigationService}\r\n * @requires $scope\r\n * @description Application navigation breadcrumbs\r\n * @usage \r\n */\r\nangular.module('mx.shell').component('mxShellBreadcrumbs', {\r\n\tcontroller: MxShellBreadcrumbsCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n});\r\n\r\nMxShellBreadcrumbsCtrl.$inject = ['$scope', 'mx.shell.EventService', 'mx.shell.RoutingService', 'mx.shell.NavigationService', 'mx.app.DeviceService'];\r\n\r\nfunction MxShellBreadcrumbsCtrl($scope, eventService, routingService, navigationService, deviceService) {\r\n\tconst vm = this;\r\n\r\n\tvm.deviceService = deviceService;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tsetBreadCrumbs(navigationService.currentItem, navigationService.extraItem);\r\n\t};\r\n\r\n\tvm.onItemClick = function ($event, it) {\r\n\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\teventName: `Breadcrumb clicked`,\r\n\t\t\tsender: it.id,\r\n\t\t\tsenderTitle: it.technicalName,\r\n\t\t});\r\n\t\tif (it.routingItem && it.routingItem.name) {\r\n\t\t\troutingService.go(it.route, it.parameters);\r\n\t\t}\r\n\t};\r\n\r\n\teventService.subscribeTo(mx.shell.EventCodes.CurrentNavigationItemChanged, (event, { navigationItem, extraItem } = {}) => setBreadCrumbs(navigationItem, extraItem), $scope);\r\n\r\n\treturn vm;\r\n\r\n\tfunction setBreadCrumbs(navigationItem, extraItem) {\r\n\t\tconst items = [];\r\n\r\n\t\tif (navigationItem) {\r\n\t\t\twhile (navigationItem.parent) {\r\n\t\t\t\titems.unshift(navigationItem);\r\n\t\t\t\tnavigationItem = navigationItem.parent;\r\n\t\t\t}\r\n\t\t\titems.unshift(navigationItem);\r\n\t\t}\r\n\r\n\t\tif (extraItem) {\r\n\t\t\titems.push({\r\n\t\t\t\tname: extraItem,\r\n\t\t\t\ttitle: extraItem,\r\n\t\t\t\tchildren: [],\r\n\t\t\t});\r\n\t\t}\r\n\t\tvm.items = items;\r\n\t}\r\n}\r\n","angular.module('mx.shell').service('mx.shell.LeftSidebarService', MxShellLeftSidebarService);\r\n\r\nMxShellLeftSidebarService.$inject = ['$rootScope', 'mx.shell.EventService'];\r\nexport function MxShellLeftSidebarService($rootScope, eventService) {\r\n\tvar service = this;\r\n\tvar panels = [];\r\n\tvar isVisible = true;\r\n\tvar allPanelsDisabled = true;\r\n\r\n\tservice.addPanel = addPanel;\r\n\tservice.showPanelByName = showPanelByName;\r\n\tservice.getCurrentPanelName = getCurrentPanelName;\r\n\tservice.enablePanel = enablePanel;\r\n\tservice.disablePanel = disablePanel;\r\n\tservice.currentPanelIndex = 0;\r\n\r\n\tObject.defineProperty(service, 'panels', {\r\n\t\tget: function () {\r\n\t\t\treturn panels;\r\n\t\t},\r\n\t});\r\n\r\n\tObject.defineProperty(service, 'isVisible', {\r\n\t\tget: function () {\r\n\t\t\treturn isVisible && !allPanelsDisabled;\r\n\t\t},\r\n\t\tset: function (newValue) {\r\n\t\t\tisVisible = newValue;\r\n\t\t},\r\n\t});\r\n\r\n\tvar debouncedShowPanel = $.debounce(300, function (panel, isTabChangedByUserManually = false) {\r\n\t\t$rootScope.$evalAsync(showPanel(panel, isTabChangedByUserManually));\r\n\t});\r\n\r\n\tservice.showPanel = debouncedShowPanel;\r\n\r\n\treturn service;\r\n\r\n\tfunction checkVisibility() {\r\n\t\tallPanelsDisabled = panels.every(function (panel) {\r\n\t\t\treturn panel.disable;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction addPanel(panel) {\r\n\t\tpanels.push(panel);\r\n\r\n\t\tpanels = panels.sort(function (panelA, panelB) {\r\n\t\t\treturn panelA.order - panelB.order;\r\n\t\t});\r\n\r\n\t\tcheckVisibility();\r\n\t}\r\n\r\n\tfunction showPanel(panel, isTabChangedByUserManually = false) {\r\n\t\tvar index = panels.indexOf(panel);\r\n\t\tif (index >= 0 && (service.currentPanelIndex !== index || isTabChangedByUserManually)) {\r\n\t\t\tservice.currentPanelIndex = index;\r\n\t\t\teventService.dispatchEvent(mx.shell.EventCodes.LeftSidebarTabChanged, { panelName: panel.name, isTabChangedByUserManually });\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getPanelByName(panelName) {\r\n\t\treturn panels.filter(function (panel) {\r\n\t\t\treturn panel.name === panelName;\r\n\t\t})[0];\r\n\t}\r\n\r\n\tfunction showPanelByName(panelName) {\r\n\t\tvar panel = getPanelByName(panelName);\r\n\t\tdebouncedShowPanel(panel);\r\n\t}\r\n\r\n\tfunction getCurrentPanelName() {\r\n\t\treturn panels[service.currentPanelIndex]?.name;\r\n\t}\r\n\r\n\tfunction disablePanel(panelName) {\r\n\t\tvar panel = getPanelByName(panelName);\r\n\t\tif (panel) {\r\n\t\t\tpanel.disable = true;\r\n\t\t\tcheckVisibility();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction enablePanel(panelName) {\r\n\t\tvar panel = getPanelByName(panelName);\r\n\t\tif (panel) {\r\n\t\t\tpanel.disable = false;\r\n\t\t\tallPanelsDisabled = false;\r\n\t\t}\r\n\t}\r\n}\r\n","import { EventCodes } from '../../../../App/model/event-codes';\r\n\r\nangular.module('mx.shell').component('mxShellSearch', {\r\n\tcontroller: MxShellSearchCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplateUrl: 'components/mx-shell-search/mx-shell-search.html',\r\n});\r\n\r\nMxShellSearchCtrl.$inject = [\r\n\t'mx.internationalization',\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.SearchProviderService',\r\n\t'mx.shell.RoutingService',\r\n\t'$timeout',\r\n\t'$q',\r\n\t'$scope',\r\n\t'$element',\r\n\t'mx.shell.KeyboardNavigationService',\r\n];\r\n\r\nfunction MxShellSearchCtrl(i18n, eventService, searchProviderService, routingService, $timeout, $q, $scope, $element, keyboardNavigationService) {\r\n\tconst vm = this;\r\n\tvm.searchProviderService = searchProviderService;\r\n\tvm.searchContexts = [];\r\n\r\n\tvm.$onInit = function () {\r\n\t\tregisterHotkeys();\r\n\t};\r\n\r\n\tvm.open = openSearch;\r\n\tvm.close = closeSearch;\r\n\tvm.inputCloseClick = inputCloseClick;\r\n\tvm.performSearch = performSearch;\r\n\tvm.selectTag = selectTag;\r\n\tvm.unselectTag = unselectTag;\r\n\r\n\teventService.subscribeTo(mx.shell.EventCodes.RouteActivated, () => closeSearch(), $scope);\r\n\r\n\tvm.searchTitle = i18n.get('shell.mx-shell-search.search');\r\n\r\n\treturn vm;\r\n\r\n\tfunction performSearch() {\r\n\t\tif (vm.searchText.length >= 3) {\r\n\t\t\tconst contexts = getSelectedContexts();\r\n\r\n\t\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\t\teventName: 'Global search executed',\r\n\t\t\t\tsenderTitle: 'Application toolbar',\r\n\t\t\t\tcontextTypeId: contexts.map((context) => context.navigationItem?.id),\r\n\t\t\t\tcontextTypeTitle: contexts.map((context) => context.navigationItem?.technicalName),\r\n\t\t\t});\r\n\t\t\tsearchProviderService.performSearch(vm.searchText, contexts);\r\n\t\t\tcloseSearch();\r\n\t\t} else {\r\n\t\t\tfocusInput();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getSelectedContexts() {\r\n\t\treturn vm.searchContexts.filter((context) => context.selected);\r\n\t}\r\n\r\n\tfunction registerHotkeys() {\r\n\t\tkeyboardNavigationService.registerKey({\r\n\t\t\tscope: $scope,\r\n\t\t\tkey: 'alt+f',\r\n\t\t\tdescription: i18n.get('shell.mx-shell-search.search'),\r\n\t\t\tnameInTemplate: 'hintKey',\r\n\t\t\tonRegister: function () {\r\n\t\t\t\t$element.on('keydown', function (e) {\r\n\t\t\t\t\tif (e.altKey && e.key === 'f') {\r\n\t\t\t\t\t\tif (vm.searchPanelVisible) {\r\n\t\t\t\t\t\t\tvm.close();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\tcallback: function (e) {\r\n\t\t\t\tvm.open();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction inputCloseClick() {\r\n\t\tif (vm.searchText) {\r\n\t\t\tclearInput();\r\n\t\t\tfocusInput();\r\n\t\t} else {\r\n\t\t\tcloseSearch();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction clearInput() {\r\n\t\tvm.searchText = '';\r\n\t}\r\n\r\n\tfunction focusInput() {\r\n\t\tsetTimeout(function () {\r\n\t\t\t$('.mx-search-input')[0].focus();\r\n\t\t});\r\n\t}\r\n\r\n\tasync function openSearch(onOpen) {\r\n\t\tif (!vm.searchPanelVisible) {\r\n\t\t\tvm.searchText = searchProviderService.searchText;\r\n\t\t\tconst parameters = await searchProviderService.getCurrentGlobalSearchParameters(true);\r\n\t\t\tvm.searchContexts = parameters.contexts;\r\n\t\t\tthis.selectedTags = vm.searchContexts.filter((tag) => tag.selected);\r\n\t\t\tvm.searchPanelVisible = true;\r\n\t\t\t$element.addClass('opened');\r\n\t\t\tfocusInput();\r\n\t\t\t_initHotKeys();\r\n\t\t\tif (onOpen) {\r\n\t\t\t\tonOpen();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction closeSearch(onClose) {\r\n\t\tif (vm.searchPanelVisible) {\r\n\t\t\t$timeout(function () {\r\n\t\t\t\tvm.searchPanelVisible = false;\r\n\t\t\t\t$element.removeClass('opened');\r\n\t\t\t\tif (onClose) {\r\n\t\t\t\t\tonClose();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction selectTag(tag) {\r\n\t\ttag.selected = true;\r\n\t\tthis.selectedTags.push(tag);\r\n\t}\r\n\r\n\tfunction unselectTag(tag) {\r\n\t\ttag.selected = false;\r\n\t\tthis.selectedTags.splice(this.selectedTags.indexOf(tag), 1);\r\n\t}\r\n\r\n\tfunction _initHotKeys() {\r\n\t\t$timeout(function () {\r\n\t\t\tconst hotKeys = new mx.shell.SearchHotkeysManager();\r\n\t\t\tconst options = {\r\n\t\t\t\tperformSearch: performSearch,\r\n\t\t\t\tsearchText: vm.searchText,\r\n\t\t\t\tclearInput: clearInput,\r\n\t\t\t\tclose: closeSearch,\r\n\t\t\t};\r\n\r\n\t\t\thotKeys.init(options, $element);\r\n\t\t});\r\n\t}\r\n}\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.components').component('mxShellBackgroundProcesses', {\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'components/mx-shell-background-processes/mx-shell-background-processes.html',\r\n\t\tcontroller: MxBackgroundProcessesController,\r\n\t});\r\n\r\n\tMxBackgroundProcessesController.$inject = ['mx.shell.BackgroundProcessesService'];\r\n\r\n\tfunction MxBackgroundProcessesController(backgroundProcesses) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.service = backgroundProcesses;\r\n\t\t\tvm.cancelProcess = cancelProcess;\r\n\t\t};\r\n\r\n\t\tasync function cancelProcess(item) {\r\n\t\t\tawait backgroundProcesses.cancelProcess(item);\r\n\t\t}\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t{{:: item.title}}\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{:: item.title}}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\tchevron_right\\r\\n\\t\\t\\tchevron_left\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","import * as angular from 'angular';\r\n\r\nimport View from '../../model/view';\r\n\r\n/**\r\n * @ngdoc service\r\n * @name mx.shell.InfoPanelService\r\n * @module mx.shell\r\n * @requires {@ref mx.shell.View}\r\n *\r\n * @description\r\n * A service that is used for configuration of info-panel, add/remove widgets from info-panel\r\n */\r\nexport class MxShellInfoPanelService {\r\n\tpublic readonly widgets: View[] = [];\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.InfoPanelService#addWidget\r\n\t *\r\n\t * @param {View} widget - new widget to add into the info-panel\r\n\t *\r\n\t * @description\r\n\t * Add new widget into info-panel\r\n\t *\r\n\t * @returns {Boolean} Return true if the widget was added into the panel\r\n\t */\r\n\tpublic addWidget(widget: View): boolean {\r\n\t\tif (widget instanceof View && this.widgets.indexOf(widget) < 0) {\r\n\t\t\tthis.widgets.push(widget);\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.InfoPanelService#removeWidget\r\n\t *\r\n\t * @param {View} widget - widget to remove from the info-panel\r\n\t *\r\n\t * @description\r\n\t * Remove some widget from the info-panel\r\n\t *\r\n\t * @returns {Boolean} Return true if the widget was removed from the panel\r\n\t */\r\n\tpublic removeWidget(widget: View): boolean {\r\n\t\tconst index = this.widgets.indexOf(widget);\r\n\t\tif (index >= 0) {\r\n\t\t\tthis.widgets.splice(index, 1);\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nangular.module('mx.shell').service('mx.shell.InfoPanelService', MxShellInfoPanelService);\r\n","'use strict';\r\n\r\n/**\r\n * @ngdoc type\r\n * @name mx.shell.ToolbarManager\r\n * @module mx.shell\r\n * @restrict 'E'\r\n * @scope {}\r\n * @requires {@ref mx.shell.Config mx.shell.Config}\r\n * @requires {@ref mx.shell.EventService mx.shell.EventService}\r\n * @requires {@ref mx.shell.UserProfileService mx.shell.UserProfileService}\r\n * @requires {@ref mx.shell.FeedbackProviderService mx.shell.FeedbackProviderService}\r\n * @requires {@ref mx.shell.ApplicationProviderService mx.shell.ApplicationProviderService}\r\n * @requires {@ref mx.shell.InfoPanelService mx.shell.InfoPanelService}\r\n *\r\n * @property {string} avatar - Gets or sets user's avatar url\r\n * @property {string} firstName - Gets or sets user's first name\r\n * @property {string} lastName - Gets or sets user's last name\r\n * @property {boolean} isFeedbackVisible - Gets or sets if feedback button is visible\r\n * @property {boolean} FeedbackEnabled - Gets or sets if feedback is enabled\r\n * @property {boolean} isAvatarVisible - Gets or sets if user info is visible\r\n * @property {boolean} isSearchVisible - Gets or sets if search bar is visible\r\n * @property {boolean} isShowMenuBtnVisible - Gets or sets if show menu button is visible\r\n *\r\n * @description\r\n * A factory that produces Toolbar Manager object that is used to manage the visibility or availability of toolbar elements\r\n */\r\n\r\nexport class ToolbarManager {\r\n\tstatic $inject = [\r\n\t\t'mx.shell.Config',\r\n\t\t'mx.shell.EventService',\r\n\t\t'mx.shell.UserProfileService',\r\n\t\t'mx.shell.FeedbackProviderService',\r\n\t\t'mx.shell.AppsService',\r\n\t\t'mx.shell.InfoPanelService',\r\n\t];\r\n\r\n\tconstructor(configService, eventService, userProfileService, feedbackProviderService, appsService, infoPanelService) {\r\n\t\tObject.assign(this, { configService, eventService, userProfileService, feedbackProviderService, appsService, infoPanelService });\r\n\t}\r\n\r\n\tinit() {\r\n\t\tObject.defineProperty(this, 'isInfoPanelVisible', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn this.infoPanelService.widgets.length > 0;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tconst cfg = this.configService.get('toolbar') || {};\r\n\r\n\t\tthis.isAppsVisible = this.AppsEnabled = this.appsService.isEnabled();\r\n\r\n\t\tthis.operationMonitorEnabled = Boolean(cfg.showOperationMonitor);\r\n\t\tthis.isOperationMonitorVisible = this.operationMonitorEnabled;\r\n\r\n\t\tthis.appsService.getCurrentApplication().then((app) => {\r\n\t\t\tthis.title = app.title;\r\n\t\t\tthis.setSearchEnabled(Boolean(cfg.showSearch) && !app.unifiedSearchEnabled);\r\n\t\t\tthis.setOperationMonitorVisibility(app.showOperationMonitor);\r\n\t\t});\r\n\r\n\t\tthis.avatarEnabled = Boolean(cfg.showAvatar);\r\n\r\n\t\tthis.title = undefined;\r\n\r\n\t\tthis.userProfileService.get().then((profile) => {\r\n\t\t\tthis.setUserInfo(profile);\r\n\r\n\t\t\tthis.eventService.subscribeGlobal(mx.shell.EventCodes.ProfileChanged, (event, profile) => {\r\n\t\t\t\tthis.setUserInfo(profile);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis.isPushNotificationsWanted = true;\r\n\t\tthis.isPushNotificationsEnabled = this.isPushNotificationsVisible = false;\r\n\r\n\t\tthis.isAvatarVisible = this.avatarEnabled;\r\n\r\n\t\tthis.avatarDropdownItems = [];\r\n\t}\r\n\r\n\tsetToolbarVisibility(isVisible) {\r\n\t\tthis.isVisible = isVisible;\r\n\t}\r\n\r\n\tsetFeedbackVisibility(isVisible) {\r\n\t\tthis.isFeedbackVisible = this.FeedbackEnabled && isVisible;\r\n\t}\r\n\r\n\tsetAppsVisibility(isVisible) {\r\n\t\tthis.isAppsVisible = this.AppsEnabled && isVisible;\r\n\t}\r\n\r\n\tsetAvatarVisibility(isVisible) {\r\n\t\tthis.isAvatarVisible = this.avatarEnabled && isVisible;\r\n\t}\r\n\r\n\tsetSearchVisibility(isVisible) {\r\n\t\tthis.isSearchWanted = isVisible;\r\n\t\tthis.isSearchVisible = this.isSearchEnabled && this.isSearchWanted;\r\n\t}\r\n\r\n\tsetSearchEnabled(isEnabled) {\r\n\t\tthis.isSearchEnabled = isEnabled;\r\n\t\tthis.isSearchVisible = this.isSearchEnabled && this.isSearchWanted;\r\n\t}\r\n\r\n\tsetOperationMonitorVisibility(isVisible) {\r\n\t\tthis.isOperationMonitorVisible = this.operationMonitorEnabled && isVisible;\r\n\t}\r\n\r\n\tsetShowMenuButtonVisibility(isVisible) {\r\n\t\tthis.isShowMenuBtnVisible = isVisible;\r\n\t}\r\n\r\n\tsetBreadcrumbsVisibility(isVisible) {\r\n\t\tthis.isBreadcrumbsVisible = isVisible;\r\n\t}\r\n\r\n\tsetNavigationVisibility(isVisible) {\r\n\t\tthis.isNavigationVisible = isVisible;\r\n\t}\r\n\r\n\tsetPushNotificationsVisibility(isVisible) {\r\n\t\tthis.isPushNotificationsWanted = isVisible;\r\n\t\tthis.isPushNotificationsVisible = isVisible && this.isPushNotificationsEnabled;\r\n\t}\r\n\r\n\tsetPushNotificationsEnabled(isEnabled) {\r\n\t\tthis.isPushNotificationsEnabled = isEnabled;\r\n\t\tthis.isPushNotificationsVisible = this.isPushNotificationsWanted && this.isPushNotificationsEnabled;\r\n\t}\r\n\r\n\tsetUserInfo(profile) {\r\n\t\tthis.avatar = profile ? profile.avatar : null;\r\n\t\tthis.lastName = profile ? profile.lastName : null;\r\n\t\tthis.firstName = profile ? profile.firstName : null;\r\n\t\tthis.email = profile ? profile.email : null;\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.ToolbarManager#addAvatarDropdownItem\r\n\t *\r\n\t * @description\r\n\t * Add new item to Dropdown which opens on avatar click on top right corner.
\r\n\t *\r\n\t * @param {object} itemObject - object for defining dropdown item.\r\n\t * Example 1: {\r\n\t * icon: \"save\",\r\n\t * label: \"Save All\",\r\n\t * position: 20,\r\n\t * htmlClass: 'my-item-html-class',\r\n\t * onItemClick: function () { ... }\r\n\t * }\r\n\t *\r\n\t * Example 2: {\r\n\t * icon: \"supervisor_account\",\r\n\t * label: \"Select account...\",\r\n\t * children: [{\r\n\t * icon: \"check\",\r\n\t * label: \"My account 1\",\r\n\t * isChecked: true,\r\n\t * onItemClick: function () { ... }\r\n\t * }, {\r\n\t * icon: \"check\",\r\n\t * label: \"My account 2\",\r\n\t * isChecked: false,\r\n\t * onItemClick: function () { ... }\r\n\t * } ... ]\r\n\t * }\r\n\t *\r\n\t */\r\n\taddAvatarDropdownItem(itemObject) {\r\n\t\tthis.avatarDropdownItems.push(itemObject);\r\n\t\tthis.avatarDropdownItems.sort(function (a, b) {\r\n\t\t\treturn a.position !== undefined && b.position !== undefined ? Number(a.position) - Number(b.position) : 0;\r\n\t\t});\r\n\r\n\t\tthis.eventService.dispatchEvent(mx.shell.EventCodes.AvatarMenuItemAdded, itemObject);\r\n\t\treturn itemObject;\r\n\t}\r\n}\r\n\r\nangular.module('mx.shell').service('mx.shell.ToolbarManager', ToolbarManager);\r\n","import { EventCodes } from '../../../../App/model/event-codes';\r\n\r\nangular.module('mx.shell').component('mxShellToolbar', {\r\n\tcontroller: MxShellToolbarCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplateUrl: 'components/mx-shell-toolbar/mx-shell-toolbar.html',\r\n});\r\n\r\nMxShellToolbarCtrl.$inject = [\r\n\t'mx.shell.RoutingService',\r\n\t'mx.shell.AuthService',\r\n\t'mx.shell.ToolbarManager',\r\n\t'mx.shell.FeedbackProviderService',\r\n\t'mx.shell.UserProfileService',\r\n\t'mx.shell.InternationalizationService',\r\n\t'mx.shell.ActionManagerService',\r\n\t'mx.shell.SideLayout',\r\n\t'mx.shell.SidePanelService',\r\n\t'mx.shell.DataStorage',\r\n\t'mx.app.DeviceService',\r\n\t'mx.shell.NavigationManager',\r\n\t'mx.shell.AppsService',\r\n\t'mx.shell.Http',\r\n\t'$scope',\r\n\t'$timeout',\r\n\t'$q',\r\n\t'$element',\r\n\t'$mdSidenav',\r\n\t'mx.internationalization',\r\n\t'mx.shell.KeyboardNavigationService',\r\n\t'mx.shell.Config',\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.LeftSidebarService',\r\n\t'mx.shell.AriaService',\r\n\t'mx.SolutionBuilderAgent.DialogOpenerService',\r\n\t'mx.shell.ActionExecutorService',\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n\t'mx.app.ThemeService',\r\n];\r\n\r\n/**\r\n * @ngdoc component\r\n * @name mx.shell:mxShellToolbar\r\n * @module mx.shell\r\n * @requires $mdSidenav\r\n * @requires {@ref mx.internationalization mx.internationalization}\r\n * @requires {@ref mx.shell.RoutingService mx.shell.RoutingService}\r\n * @requires {@ref mx.shell.AuthService mx.shell.AuthService}\r\n * @requires {@ref mx.shell.Config mx.shell.Config}\r\n * @requires {@ref mx.shell.EventService mx.shell.EventService}\r\n * @requires {@ref mx.shell.ToolbarManager mx.shell.ToolbarManager}\r\n * @requires {@ref mx.shell.FeedbackProviderService mx.shell.FeedbackProviderService}\r\n * @requires {@ref mx.shell.UserProfileService mx.shell.UserProfileService}\r\n * @requires {@ref mx.shell.InternationalizationService mx.shell.InternationalizationService}\r\n * @requires {@ref mx.shell.ActionManagerService mx.shell.ActionManagerService}\r\n * @requires {@ref mx.app.DeviceService mx.mx.components.DeviceService}\r\n * @requires {@ref mx.shell.NavigationManager mx.shell.NavigationManager}\r\n * @requires {@ref mx.shell.AppsService mx.shell.AppsService}\r\n * @requires {@ref mx.shell.Http mx.shell.Http}\r\n * @description\r\n * Main application toolbar\r\n * Contains {@ref mx.shell:mxSearch search control}, feedback button and {@ref mx.shell:mxShellAvatarSide user info section}\r\n * @usage \r\n */\r\nfunction MxShellToolbarCtrl(\r\n\troutingService,\r\n\tmxAuthService,\r\n\ttoolbarManager,\r\n\tfeedbackProviderService,\r\n\tuserProfileService,\r\n\ti18nService,\r\n\tactionManagerService,\r\n\tsideLayout,\r\n\tsidePanelService,\r\n\tdataStorage,\r\n\tdeviceService,\r\n\tnavigationManager,\r\n\tappsService,\r\n\tmxHttp,\r\n\t$scope,\r\n\t$timeout,\r\n\t$q,\r\n\t$element,\r\n\t$mdSidenav,\r\n\ti18n,\r\n\tkeyboardNavigationService,\r\n\tconfig,\r\n\teventService,\r\n\tleftSidebarService,\r\n\tariaService,\r\n\tdialogOpener,\r\n\tactionExecutorService,\r\n\tpersonalizationService,\r\n\tthemeService\r\n) {\r\n\tconst vm = this;\r\n\tvm.leftSidebarService = leftSidebarService;\r\n\r\n\tconst registerHotkeys = function () {\r\n\t\tkeyboardNavigationService.registerKey({\r\n\t\t\tcallback: function () {\r\n\t\t\t\tif ($('.mx-application-selection md-backdrop').length) {\r\n\t\t\t\t\t$('html').click();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t$('.mx-application-selection:visible [ng-click]').click();\r\n\r\n\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t$('mx-shell-toolbar md-bottom-sheet button:not(.md-autofocus)').eq(0).focus();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\tdescription: i18n.get('shell.mx-shell-toolbar.selectApplication'),\r\n\t\t\tkey: 'alt+a',\r\n\t\t\tnameInTemplate: 'hintKey',\r\n\t\t\tscope: $scope,\r\n\t\t});\r\n\t};\r\n\r\n\tvm.ToolbarManager = toolbarManager;\r\n\r\n\tasync function addAvatarMenuItems() {\r\n\t\tconst [profile, languages] = await Promise.all([userProfileService.get(), i18nService.getLanguages()]);\r\n\r\n\t\tif (profile.profileDialogId) {\r\n\t\t\ttoolbarManager.addAvatarDropdownItem({\r\n\t\t\t\thtmlClass: 'mx-toolbar-open-profile-page',\r\n\t\t\t\ticon: 'account_box',\r\n\t\t\t\tid: 'mx-shell-open-profile',\r\n\t\t\t\tlabel: i18n.get('shell.mx-shell-toolbar.profileLabel'),\r\n\t\t\t\tonItemClick: function () {\r\n\t\t\t\t\tconst context = {\r\n\t\t\t\t\t\t_id: profile.objectId,\r\n\t\t\t\t\t\t_type: 'SPSUserType',\r\n\t\t\t\t\t\t_displayName: profile.accountName,\r\n\t\t\t\t\t\t_name: profile.accountName,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tdialogOpener.openEditDialog(context, true, undefined, sidePanelService.currentView, {\r\n\t\t\t\t\t\twidgetId: profile.profileDialogId,\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\tposition: 1,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttoolbarManager.addAvatarDropdownItem({\r\n\t\t\thtmlClass: 'mx-toolbar-sign-out',\r\n\t\t\ticon: 'close',\r\n\t\t\tid: 'mx-shell-sign-out',\r\n\t\t\tlabel: i18n.get('shell.mx-shell-toolbar.signOutLabel'),\r\n\t\t\tonItemClick: function () {\r\n\t\t\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\t\t\teventName: 'User Signed Out',\r\n\t\t\t\t});\r\n\t\t\t\tmxAuthService.logout();\r\n\t\t\t},\r\n\t\t\tposition: 900000000,\r\n\t\t});\r\n\r\n\t\tconst currentApp = appsService.getCurrentApplication();\r\n\t\tcurrentApp.then(function (app) {\r\n\t\t\tconst helpUri = app.helpValue || (config && config.settings && config.settings.helpUri);\r\n\t\t\tif (helpUri) {\r\n\t\t\t\ttoolbarManager.addAvatarDropdownItem({\r\n\t\t\t\t\thtmlClass: 'mx-toolbar-help-center',\r\n\t\t\t\t\ticon: 'help',\r\n\t\t\t\t\tid: 'mx-shell-help-center',\r\n\t\t\t\t\tlabel: i18n.get('shell.mx-shell-toolbar.helpCenter'),\r\n\t\t\t\t\tonItemClick: function () {\r\n\t\t\t\t\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\t\t\t\t\teventName: 'Help link opened',\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\twindow.open(helpUri, 'target=_blank');\r\n\t\t\t\t\t},\r\n\t\t\t\t\tposition: 898000000,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\ttoolbarManager.addAvatarDropdownItem({\r\n\t\t\thtmlClass: 'mx-toolbar-color-contrast',\r\n\t\t\ticon: mx.isEnhancedColorContrastMode ? 'check' : 'invert_colors',\r\n\t\t\tid: 'mx-toolbar-color-contrast',\r\n\t\t\tlabel: i18n.get('shell.mx-shell-toolbar.enhanceColorContrast') || 'Contrast',\r\n\t\t\tonItemClick: async () => {\r\n\t\t\t\tawait themeService.toggleContrastMode();\r\n\t\t\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\t\t\teventName: `Enhanced Color Contrasts ${mx.isEnhancedColorContrastMode ? 'activated' : 'deactivated'}`,\r\n\t\t\t\t});\r\n\t\t\t\ttoolbarManager.avatarDropdownItems.find((item) => item.id === 'mx-toolbar-color-contrast').icon = mx.isEnhancedColorContrastMode ? 'check' : 'invert_colors';\r\n\t\t\t},\r\n\t\t\tposition: 897000000,\r\n\t\t});\r\n\r\n\t\tif (Array.isArray(languages) && languages.length) {\r\n\t\t\tconst children = languages\r\n\t\t\t\t.sort((lang1, lang2) => (lang1.title > lang2.title ? 1 : -1))\r\n\t\t\t\t.map((lang) => ({\r\n\t\t\t\t\thtmlClass: profile.languageId === lang.id ? 'mx-toolbar-current-language' : 'mx-toolbar-not-current-language',\r\n\t\t\t\t\tid: 'mx-shell-change-language-' + lang.code,\r\n\t\t\t\t\tlanguageId: lang.id,\r\n\t\t\t\t\tisDefaultUiLanguage: lang.isDefaultUiLanguage,\r\n\t\t\t\t\ticonStyle: _getLangIconStyle(lang),\r\n\t\t\t\t\tlabel: lang.title,\r\n\t\t\t\t\tonItemClick: async function () {\r\n\t\t\t\t\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\t\t\t\t\teventName: 'UI Language changed',\r\n\t\t\t\t\t\t\tsender: lang.id,\r\n\t\t\t\t\t\t\tsenderTitle: lang.code,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tawait userProfileService.changeLanguage(lang.id);\r\n\t\t\t\t\t\twindow.forceReload();\r\n\t\t\t\t\t},\r\n\t\t\t\t}));\r\n\r\n\t\t\ttoolbarManager.addAvatarDropdownItem({\r\n\t\t\t\thtmlClass: 'mx-toolbar-change-language',\r\n\t\t\t\ticonStyle: _getLangIconStyle(i18nService.currentLanguage),\r\n\t\t\t\tid: 'mx-shell-change-language',\r\n\t\t\t\tlabel: i18nService.currentLanguage.title,\r\n\t\t\t\tchildren: children,\r\n\t\t\t\tposition: 200,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tlet avatarMenuActions = await actionManagerService.getActions(new mx.shell.ActionsContext([], [], mx.shell.ActionUiZone.AvatarMenu));\r\n\t\tavatarMenuActions = await actionManagerService.filterActions(avatarMenuActions);\r\n\r\n\t\tavatarMenuActions.forEach((action) => {\r\n\t\t\tif (action.enabled) {\r\n\t\t\t\ttoolbarManager.addAvatarDropdownItem({\r\n\t\t\t\t\thtmlClass: action.htmlClass || `mx-action--${action.name}`,\r\n\t\t\t\t\ticon: action.icon,\r\n\t\t\t\t\tid: `mx-action--${action.id}`,\r\n\t\t\t\t\tlabel: action.title,\r\n\t\t\t\t\tonItemClick: function () {\r\n\t\t\t\t\t\tactionExecutorService.execute(action).catch(mx.logCatch);\r\n\t\t\t\t\t},\r\n\t\t\t\t\tposition: (parseInt(action.position) || 0) + 1000 /* All Avatar Menu Actions should be placed under `Languages` */,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction _getLangIconStyle(lang) {\r\n\t\tlet flagsHost = config.settings.imgHosts || {};\r\n\t\tflagsHost = flagsHost.flags || flagsHost.default || '';\r\n\t\treturn {\r\n\t\t\t'background-image': lang.flagUrl ? 'url(\"' + flagsHost + lang.flagUrl + '\")' : 'none',\r\n\t\t\t'background-size': '100%',\r\n\t\t};\r\n\t}\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvm.searchContext = 'shell';\r\n\t\tvm.isVisible = true;\r\n\t\tvm.appsService = appsService;\r\n\r\n\t\tvm.FeedbackProviderService = feedbackProviderService;\r\n\t\tvm.NavigationManager = navigationManager;\r\n\t\tvm.deviceService = deviceService;\r\n\t\tvm.sideLayout = sideLayout;\r\n\r\n\t\t$q.all([userProfileService.get(), appsService.getCurrentApplication()]).then(function (params) {\r\n\t\t\tconst profile = params[0];\r\n\t\t\tconst currentApp = params[1];\r\n\t\t\tconst settings = {\r\n\t\t\t\tapplicationName: currentApp.name,\r\n\t\t\t\tproductID: config.get('productId'),\r\n\t\t\t\tuser: profile.accountName + ' [' + profile.email + ']',\r\n\t\t\t\tlang: i18nService.currentLanguage.twoLetterCode,\r\n\t\t\t};\r\n\r\n\t\t\tariaService.handleAppSwitchingMessage(currentApp);\r\n\t\t\tariaService.setAppInitialFocus();\r\n\r\n\t\t\tvm.showFeedback = function () {\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\turl: 'https://nps.azureedge.net/client/integration.js',\r\n\t\t\t\t\tdataType: 'script',\r\n\t\t\t\t\tsuccess: function () {\r\n\t\t\t\t\t\twindow.matrix42.nps.showModal(settings);\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcache: true,\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\taddAvatarMenuItems();\r\n\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.shell.EventCodes.DisplayModeChanged,\r\n\t\t\tfunction (event, newMode) {\r\n\t\t\t\tconst newModeIsNormal = newMode === mx.shell.DisplayMode.Normal;\r\n\t\t\t\tconst toolbar = $('mx-shell-toolbar')[0];\r\n\t\t\t\tconst propertyValue = newModeIsNormal ? '' : '0';\r\n\r\n\t\t\t\tvm.isVisible = newModeIsNormal;\r\n\r\n\t\t\t\tif (toolbar) {\r\n\t\t\t\t\ttoolbar.style.minHeight = propertyValue;\r\n\t\t\t\t\ttoolbar.style.height = propertyValue;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\t};\r\n\r\n\tvm.$postLink = function () {\r\n\t\tregisterHotkeys($scope, i18n, $timeout, keyboardNavigationService);\r\n\t};\r\n\r\n\tvm.goToDefaultRoot = function () {\r\n\t\troutingService.goToDefault();\r\n\t};\r\n\r\n\tvm.handleBurgerBtn = function () {\r\n\t\tif (deviceService.screenMobile()) {\r\n\t\t\tvm.toggleNav();\r\n\t\t} else {\r\n\t\t\tnavigationManager.collapsedMode = !navigationManager.collapsedMode;\r\n\t\t\tif (localStorage) {\r\n\t\t\t\tlocalStorage.setItem('mxShellNavCollapsedMode', navigationManager.collapsedMode.toString().toLowerCase());\r\n\t\t\t}\r\n\t\t}\r\n\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\teventName: navigationManager.collapsedMode ? 'Navigation collapsed' : 'Navigation expanded',\r\n\t\t});\r\n\t};\r\n\r\n\tMxShellToolbarCtrl.prototype.toggleNav = function () {\r\n\t\t$mdSidenav('mx-shell-left-sidebar').toggle();\r\n\t\teventService.dispatchEvent(mx.shell.EventCodes.NavToggled);\r\n\t};\r\n}\r\n","import template from './mx-search-grouped-context-list.html';\r\n\r\nexport class MxSearchGroupedContextListComponentController {\r\n\tstatic $inject = [];\r\n\r\n\tconstructor() {}\r\n\r\n\t$onChanges(changes) {\r\n\t\tif (changes.searchContexts?.currentValue?.length) {\r\n\t\t\tthis.searchContextGroups = this.groupContextsByTopLevelNavParents(changes.searchContexts.currentValue);\r\n\t\t}\r\n\t}\r\n\r\n\tgroupContextsByTopLevelNavParents(contexts) {\r\n\t\tconst groupsObj = {};\r\n\r\n\t\tcontexts.forEach((context) => {\r\n\t\t\tlet navigationItem = context.navigationItem;\r\n\t\t\twhile (navigationItem.parent) {\r\n\t\t\t\tnavigationItem = navigationItem.parent;\r\n\t\t\t}\r\n\t\t\tgroupsObj[navigationItem.title] = groupsObj[navigationItem.title] || {\r\n\t\t\t\tgroupName: navigationItem.title,\r\n\t\t\t\tsearchContexts: [],\r\n\t\t\t\tindex: navigationItem.index,\r\n\t\t\t};\r\n\t\t\tgroupsObj[navigationItem.title].searchContexts.push(context);\r\n\t\t});\r\n\r\n\t\tlet groups = Object.values(groupsObj).sort((a, b) => a.index - b.index);\r\n\r\n\t\tconst baseGroup = {\r\n\t\t\tgroupName: '-',\r\n\t\t\tsearchContexts: [],\r\n\t\t\tindex: 0,\r\n\t\t};\r\n\t\tgroups = groups.filter((group) => {\r\n\t\t\tif (group.searchContexts.length < 2 && group.searchContexts[0]?.title === group.groupName) {\r\n\t\t\t\tbaseGroup.searchContexts.push(...group.searchContexts);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tif (baseGroup.searchContexts.length) {\r\n\t\t\tgroups.unshift(baseGroup);\r\n\t\t}\r\n\r\n\t\tif (groups.length === 1) {\r\n\t\t\tgroups[0].groupName = '';\r\n\t\t}\r\n\r\n\t\treturn groups;\r\n\t}\r\n\r\n\thasSelectedContexts() {\r\n\t\treturn this.searchContexts.some((context) => context.selected);\r\n\t}\r\n}\r\n\r\nangular.module('mx.shell').component('mxSearchGroupedContextList', {\r\n\tcontroller: MxSearchGroupedContextListComponentController,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n\tbindings: {\r\n\t\tonSelect: '&',\r\n\t\tsearchContexts: '<',\r\n\t},\r\n});\r\n","// Module\nvar code = \"
\\r\\n\\tinfo\\r\\n\\t{{'shell.mx-search.searchPerAllContextsMessage' | mxi18n }}\\r\\n
\\r\\n
\\r\\n\\t

{{:: group.groupName}}

\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","import template from './mx-shell-unified-search.html';\r\nimport defaultBackgroundTemplate from './bg-svg.html';\r\nimport { EventCodes } from '../../../../App/model/event-codes';\r\n\r\nexport class MxShellUnifiedSearchComponentController {\r\n\tstatic $inject = ['$element', '$scope', '$timeout', 'mx.shell.SearchProviderService', 'mx.shell.EventService', 'mx.shell.HostUrlHelper', 'mx.shell.RoutingService'];\r\n\r\n\tconstructor($element, $scope, $timeout, searchProviderService, eventService, hostUrlHelper, routingService) {\r\n\t\tObject.assign(this, { $element, $scope, $timeout, searchProviderService, eventService, hostUrlHelper, routingService });\r\n\r\n\t\tthis.searchProviderService = searchProviderService;\r\n\t\tthis.eventService = eventService;\r\n\t\tthis.hostUrlHelper = hostUrlHelper;\r\n\t\tthis.routingService = routingService;\r\n\t\tthis.inputEl = $element.find('.mx-shell-unified-search--input-zone input');\r\n\t\tthis.searchBtn = $element.find('.mx-shell-unified-search--search-btn');\r\n\t\tthis.dropdownEl = $element.find('.mx-shell-unified-search--dropdown');\r\n\t\tthis.cleanBtn = $element.find('.mx-shell-unified-search--icon-clear');\r\n\t\tthis.inputArea = $element.find('.mx-shell-unified-search--input-container');\r\n\r\n\t\tthis.defaultBackgroundTemplate = defaultBackgroundTemplate;\r\n\t\tthis.searchContexts = [];\r\n\t\tthis.selectedTags = [];\r\n\r\n\t\tthis.isVisible = true;\r\n\t}\r\n\r\n\t$onInit() {\r\n\t\tconst { $element, $scope, $timeout, eventService } = this;\r\n\t\tthis.initSearchOptions();\r\n\r\n\t\tthis.initFoldingEvents($element, $scope);\r\n\r\n\t\teventService.subscribeTo(mx.shell.EventCodes.RouteActivated, () => $timeout(() => this.initSearchOptions()), $scope);\r\n\t\teventService.subscribeTo(mx.shell.EventCodes.Search, (e, searchOptions) => this.initSearchOptions(searchOptions.keyword), $scope);\r\n\t\teventService.subscribeTo(mx.shell.EventCodes.GlobalSearchConfigChanged, () => this.initSearchOptions(), $scope);\r\n\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.shell.EventCodes.DisplayModeChanged,\r\n\t\t\t(event, newMode) => {\r\n\t\t\t\tthis.isVisible = newMode === mx.shell.DisplayMode.Normal;\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\t}\r\n\r\n\t$onChanges(changes) {\r\n\t\tif (changes.background) {\r\n\t\t\tthis.backgroundImage = (changes.background.currentValue && this.hostUrlHelper.getFullImageUrl(changes.background.currentValue)) || '';\r\n\t\t}\r\n\t}\r\n\r\n\tasync initSearchOptions(keyword) {\r\n\t\tconst { searchProviderService } = this;\r\n\t\tconst globalSearchParameters = await searchProviderService.getCurrentGlobalSearchParameters();\r\n\t\tthis.searchContexts = globalSearchParameters.contexts.slice();\r\n\t\tthis.selectedTags = this.searchContexts.filter((tag) => tag.selected);\r\n\t\tthis.searchText = keyword || globalSearchParameters.keyword;\r\n\t\tthis.showContextWhenNotFocused = globalSearchParameters.isGlobal;\r\n\t}\r\n\r\n\tinitFoldingEvents($element, $scope) {\r\n\t\tdocument.addEventListener(\r\n\t\t\t'mousedown',\r\n\t\t\t(event) => {\r\n\t\t\t\tif (this.focused && event.target !== this.searchBtn[0] && $(event.target).closest(this.inputArea).length === 0) {\r\n\t\t\t\t\t$scope.$applyAsync(() => {\r\n\t\t\t\t\t\tthis.inputEl.blur();\r\n\t\t\t\t\t\tthis.focused = false;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\ttrue\r\n\t\t);\r\n\r\n\t\tthis.inputArea.click((event) => {\r\n\t\t\tif (![this.cleanBtn[0], this.searchBtn[0]].includes(event.target)) {\r\n\t\t\t\tthis.inputEl.focus();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tperformSearch() {\r\n\t\tconst selectedContexts = this.searchContexts.filter((context) => context.selected);\r\n\t\tif (this.searchText.length >= 3) {\r\n\t\t\tthis.eventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\t\teventName: 'Global search executed',\r\n\t\t\t\tsenderTitle: 'Unified search panel',\r\n\t\t\t\tcontextTypeId: selectedContexts.map((context) => context.navigationItem?.id),\r\n\t\t\t\tcontextTypeTitle: selectedContexts.map((context) => context.navigationItem?.technicalName),\r\n\t\t\t});\r\n\r\n\t\t\tthis.searchProviderService.performSearch(this.searchText, selectedContexts);\r\n\t\t\tthis.focused = false;\r\n\t\t} else {\r\n\t\t\tthis.inputEl.focus();\r\n\t\t}\r\n\t}\r\n\tcleanSearch() {\r\n\t\tthis.selectedTags = [];\r\n\t\tthis.searchContexts.forEach((context) => (context.selected = false));\r\n\t\tthis.searchText = '';\r\n\t\tthis.inputEl.focus();\r\n\t}\r\n\r\n\tselectTag(tag) {\r\n\t\ttag.selected = true;\r\n\t\tthis.selectedTags.push(tag);\r\n\t}\r\n\r\n\tunselectTag(tag) {\r\n\t\ttag.selected = false;\r\n\t\tthis.selectedTags.splice(this.selectedTags.indexOf(tag), 1);\r\n\t}\r\n}\r\n\r\nangular.module('mx.shell').component('mxShellUnifiedSearch', {\r\n\tcontroller: MxShellUnifiedSearchComponentController,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n\tbindings: {\r\n\t\ttitle: '@',\r\n\t\tsubTitle: '@',\r\n\t\ttransparent: '<',\r\n\t\tbackground: '<',\r\n\t\texpandedMode: '<',\r\n\t\ttitleColor: '<',\r\n\t},\r\n});\r\n","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t

\\r\\n\\t\\t\\t
{{:: vm.title}}
\\r\\n\\t\\t\\t
{{:: vm.subTitle}}
\\r\\n\\t\\t

\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\tsearch\\r\\n\\t\\t\\t\\t\\tclose\\r\\n\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{:: 'solutionBuilderAgent.common.search' | mxi18n}}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","class GlobalSearchManagerController {\r\n\tstatic $inject = ['mx.shell.SearchProviderService', 'mx.shell.NavigationService'];\r\n\r\n\tconstructor(searchService, navigationService) {\r\n\t\tthis.searchService = searchService;\r\n\t\tthis.navigationService = navigationService;\r\n\t}\r\n\r\n\t$onInit() {\r\n\t\tthis.getNavigationItems(this.navigationItemIds).then((navigationItems) => {\r\n\t\t\tthis.searchService.showUnifiedSearch(navigationItems);\r\n\t\t});\r\n\t}\r\n\r\n\t$onDestroy() {\r\n\t\tthis.searchService.hideUnifiedSearch();\r\n\t}\r\n\r\n\tasync getNavigationItems(navigationItemIds) {\r\n\t\tconst { navigationService } = this;\r\n\t\tconst navigationItems = [];\r\n\r\n\t\tif (Array.isArray(navigationItemIds)) {\r\n\t\t\tfor (let id of navigationItemIds) {\r\n\t\t\t\tconst navigationItem = await navigationService.getNavigationItem(id);\r\n\t\t\t\tif (navigationItem) {\r\n\t\t\t\t\tnavigationItems.push(navigationItem);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn navigationItems;\r\n\t}\r\n}\r\n\r\nexport const mxGlobalSearchManagerComponent = {\r\n\tcontroller: GlobalSearchManagerController,\r\n\tcontrollerAs: 'vm',\r\n\tbindings: {\r\n\t\tnavigationItemIds: ' {\r\n\t\t\tmx.currentThemeColors = res;\r\n\r\n\t\t\tmx.currentThemeColorsObj = mx.currentThemeColors.reduce((themeObj, item) => {\r\n\t\t\t\tthemeObj[item.Key] = item.Value;\r\n\t\t\t\treturn themeObj;\r\n\t\t\t}, {});\r\n\t\t});\r\n\r\n\t\tmx.isEnhancedColorContrastMode = await personalizationService.getEnhancedColorContrastMode();\r\n\t};\r\n\r\n\teventService.subscribeTo(mx.shell.EventCodes.RouteActivated, () => configureUnifiedSearch(), $scope);\r\n\r\n\teventService.subscribeTo(mx.shell.EventCodes.GlobalSearchConfigChanged, () => configureUnifiedSearch(), $scope);\r\n\r\n\tfunction configureUnifiedSearch() {\r\n\t\tif (vm.app.unifiedSearchEnabled) {\r\n\t\t\tconst currentRoute = vm.routingService.getCurrent();\r\n\t\t\tif (vm.currentRoute === currentRoute) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t$scope.$applyAsync(() => {\r\n\t\t\t\tvm.currentRoute = currentRoute;\r\n\t\t\t\tvm.currentRouteName = vm.currentRoute.name;\r\n\t\t\t\tvm.openedViaDirectLink = !!deepLinkingService.parseViewOptionsFromUrl();\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\t(typeof vm.unifiedSearchHiddenByScroll === 'undefined' || vm.unifiedSearchHiddenByScroll === true) &&\r\n\t\t\t\t\tvm.currentRouteName === 'landingPage' &&\r\n\t\t\t\t\t!vm.openedViaDirectLink\r\n\t\t\t\t) {\r\n\t\t\t\t\tvm.unifiedSearchHiddenByScroll = false;\r\n\t\t\t\t\tvm.mainZoneEl = vm.mainZoneEl || $element.find('.mx-main-content-zone')[0];\r\n\t\t\t\t\tvm.mainZoneEl.addEventListener('scroll', collapseUnifiedSearchByScroll, true);\r\n\t\t\t\t} else if (vm.unifiedSearchHiddenByScroll === false && vm.currentRouteName !== 'landingPage') {\r\n\t\t\t\t\tvm.unifiedSearchHiddenByScroll = undefined;\r\n\t\t\t\t\tvm.mainZoneEl.removeEventListener('scroll', collapseUnifiedSearchByScroll, true);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction collapseUnifiedSearchByScroll() {\r\n\t\tif (!vm.unifiedSearchHiddenByScroll) {\r\n\t\t\t$timeout(() => {\r\n\t\t\t\tvm.unifiedSearchHiddenByScroll = true;\r\n\t\t\t});\r\n\t\t\tvm.mainZoneEl.removeEventListener('scroll', collapseUnifiedSearchByScroll, true);\r\n\t\t}\r\n\t}\r\n\r\n\t// If \"window resize\" event is triggered then `mx.shell.EventCodes.LayoutChanged` will be triggered as well.\r\n\t// And vice versa - If `mx.shell.EventCodes.LayoutChanged` is triggered (for example mxSidePanel is opened) then we need to trigger \"window resize\" event.\r\n\t// It's needed for proper setting `mx-grid` sized (`mx-grid` is listening \"window resize\" event) and, probably can be usefull for some other Components.\r\n\t// So, just by subscribing to `mx.shell.EventCodes.LayoutChanged` event - we will be know about all changes of PandoraShell Layaut and about window resizing too.\r\n\tvar _isManualWindowResizeTriggering;\r\n\t$($window).on('resize', function () {\r\n\t\tif (_isManualWindowResizeTriggering) {\r\n\t\t\t_isManualWindowResizeTriggering = false;\r\n\t\t} else {\r\n\t\t\tvm._debouncedLayoutChangeDispatcherResize();\r\n\t\t}\r\n\t});\r\n\tvm._debouncedLayoutChangeDispatcherResize = $.debounce(100, function () {\r\n\t\teventService.dispatchEvent(mx.shell.EventCodes.LayoutChanged, '__triggeredByWindowResize__');\r\n\t});\r\n\r\n\tvm.debouncedLayoutChangeDispatcherExtraPanel = $.debounce(100, function () {\r\n\t\teventService.dispatchEvent(mx.shell.EventCodes.LayoutChanged, 'mxExtraPanelResized');\r\n\t});\r\n\r\n\teventService.subscribeTo(\r\n\t\tmx.shell.EventCodes.LayoutChanged,\r\n\t\tfunction (ev, param) {\r\n\t\t\tif (param !== '__triggeredByWindowResize__') {\r\n\t\t\t\t_isManualWindowResizeTriggering = true;\r\n\t\t\t\t$($window).trigger('resize');\r\n\t\t\t}\r\n\t\t},\r\n\t\t$scope\r\n\t);\r\n\r\n\tasync function initApp() {\r\n\t\tvm.app = await appsService.getCurrentApplication();\r\n\r\n\t\tif (vm.app.unifiedSearchEnabled) {\r\n\t\t\teventService.subscribeGlobal(mx.shell.EventCodes.SidePanelVisibility, function (e, visible) {\r\n\t\t\t\tvm.SidePanelVisible = visible;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n","// Module\nvar code = \"
\\r\\n\\t\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\r\\n\\t
\\r\\n
\\r\\n\\r\\n\";\n// Exports\nexport default code;","import * as angular from 'angular';\r\nimport template from './mx-try-new-look-action.html';\r\nimport type { ActionExecutorService } from '../../../services/mx-action-executor-service';\r\nimport type { MxAction } from '../../../model/action';\r\nimport type { PersonalizationService } from '../../../../../App/services/personalization-service';\r\n\r\nclass MxTryNewLookActionCtrl {\r\n\taction!: MxAction;\r\n\r\n\twithAnimation = false;\r\n\r\n\tstatic $inject = ['mx.shell.ActionExecutorService', 'mx.SolutionBuilderAgent.PersonalizationService'];\r\n\tconstructor(\r\n\t\tprivate readonly actionExecutorService: ReturnType,\r\n\t\tprivate readonly personalizationService: ReturnType\r\n\t) {}\r\n\r\n\t$onInit() {\r\n\t\tthis.action.ignoreConfirmationForServiceOperation = true;\r\n\t\tthis.personalizationService.getTryNewLookActionData().then((alreadyTried) => {\r\n\t\t\tthis.withAnimation = !alreadyTried;\r\n\t\t});\r\n\t}\r\n\r\n\tasync execute() {\r\n\t\tawait this.personalizationService.setTryNewLookActionData(true);\r\n\t\tthis.actionExecutorService.execute(this.action);\r\n\t}\r\n}\r\n\r\nangular.module('mx.shell').component('mxTryNewLookAction', {\r\n\tbindings: {\r\n\t\taction: '\\r\\n\\r\\n\\t
 
\\r\\n\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n\\r\\n\\t
\\r\\n\\t\\t{{:: vm.action.title}}\\r\\n\\t\\t\\\"{{::\\r\\n\\t
\\r\\n\\r\\n\";\n// Exports\nexport default code;","'use strict';\r\n\r\n/**\r\n * @ngdoc type\r\n * @name mx.shell.Object\r\n * @module mx.shell\r\n *\r\n * @description\r\n * A generic object implementation containing basic information of the business entities\r\n *\r\n * @property {string} _type - Gets or sets type of the object (e.g. `incident`, `task`, `user`).\r\n * @property {string} _id - Gets or sets identity of the object.\r\n * @property {string} _name - Gets or sets short name of the object.\r\n * @property {string} _displayName - Gets or sets display name of the object.\r\n * @property {int} _state - Gets or sets state of the object (e.g. SPSCommonClassBase.State).\r\n */\r\nfunction MxObject(type, id, name, state, displayName) {\r\n\tObject.defineProperty(this, '_type', {\r\n\t\twritable: true,\r\n\t\tvalue: type,\r\n\t});\r\n\tObject.defineProperty(this, '_id', {\r\n\t\twritable: true,\r\n\t\tvalue: id,\r\n\t});\r\n\tObject.defineProperty(this, '_name', {\r\n\t\twritable: true,\r\n\t\tvalue: name,\r\n\t});\r\n\tObject.defineProperty(this, '_displayName', {\r\n\t\twritable: true,\r\n\t\tvalue: displayName,\r\n\t});\r\n\tObject.defineProperty(this, '_state', {\r\n\t\twritable: true,\r\n\t\tvalue: state,\r\n\t});\r\n}\r\n\r\n/**\r\n * @ngdoc type\r\n * @name mx.shell.ObjectProperty\r\n * @module mx.shell\r\n *\r\n * @description\r\n * An implementation of the definition of a business entity's property\r\n *\r\n * @property {string} name - Gets or sets internal name of the object property.\r\n * @property {string} title - Gets or sets display name of the object property.\r\n * @property {mx.shell.ObjectPropertyType} type - Gets or sets type of the object property. See {@ref mx.shell.ObjectPropertyType mx.shell.ObjectPropertyType} for available values\r\n * @property {mx.shell.ObjectPropertyEnumValue[]} values - Gets or sets a collection of available values for the object property. An array of {@ref mx.shell.ObjectPropertyEnumValue mx.shell.ObjectPropertyEnumValue}\r\n */\r\nfunction MxObjectProperty(name, title, type) {\r\n\tObject.defineProperty(this, 'name', {\r\n\t\twritable: true,\r\n\t\tvalue: name,\r\n\t});\r\n\tObject.defineProperty(this, 'title', {\r\n\t\twritable: true,\r\n\t\tvalue: title,\r\n\t});\r\n\tObject.defineProperty(this, 'type', {\r\n\t\twritable: true,\r\n\t\tvalue: type || MxObjectPropertyType.String.name,\r\n\t});\r\n\tObject.defineProperty(this, 'values', { writable: true });\r\n}\r\n\r\n/**\r\n * @ngdoc enum\r\n * @name mx.shell.ObjectPropertyType\r\n * @module mx.shell\r\n *\r\n * @description\r\n * Enum for object property data types\r\n */\r\nvar MxObjectPropertyType = {\r\n\t/**\r\n\t * @ngdoc property\r\n\t * @name mx.shell.ObjectPropertyType#String\r\n\t *\r\n\t * @description\r\n\t * string data type\r\n\t */\r\n\tString: {\r\n\t\tname: 'StringType',\r\n\t\ttitle: 'String',\r\n\t},\r\n\r\n\t/**\r\n\t * @ngdoc property\r\n\t * @name mx.shell.ObjectPropertyType#Guid\r\n\t *\r\n\t * @description\r\n\t * Guid data type\r\n\t */\r\n\tGuid: {\r\n\t\tname: 'GuidType',\r\n\t\ttitle: 'Guid',\r\n\t},\r\n\r\n\t/**\r\n\t * @ngdoc property\r\n\t * @name mx.shell.ObjectPropertyType#Boolean\r\n\t *\r\n\t * @description\r\n\t * Boolean data type\r\n\t */\r\n\tBoolean: {\r\n\t\tname: 'BoolType',\r\n\t\ttitle: 'Boolean',\r\n\t},\r\n\r\n\t/**\r\n\t * @ngdoc property\r\n\t * @name mx.shell.ObjectPropertyType#Integer\r\n\t *\r\n\t * @description\r\n\t * integer data type\r\n\t */\r\n\tInteger: {\r\n\t\tname: 'IntType',\r\n\t\ttitle: 'Int',\r\n\t},\r\n\r\n\t/**\r\n\t * @ngdoc property\r\n\t * @name mx.shell.ObjectPropertyType#Float\r\n\t *\r\n\t * @description\r\n\t * float data type\r\n\t */\r\n\tFloat: {\r\n\t\tname: 'FloatType',\r\n\t\ttitle: 'Float',\r\n\t},\r\n\r\n\t/**\r\n\t * @ngdoc property\r\n\t * @name mx.shell.ObjectPropertyType#Long\r\n\t *\r\n\t * @description\r\n\t * long data type\r\n\t */\r\n\tLong: {\r\n\t\tname: 'LongType',\r\n\t\ttitle: 'Long',\r\n\t},\r\n\r\n\t/**\r\n\t * @ngdoc property\r\n\t * @name mx.shell.ObjectPropertyType#Decimal\r\n\t *\r\n\t * @description\r\n\t * decimal data type\r\n\t */\r\n\tDecimal: {\r\n\t\tname: 'DecimalType',\r\n\t\ttitle: 'Decimal',\r\n\t},\r\n\r\n\t/**\r\n\t * @ngdoc property\r\n\t * @name mx.shell.ObjectPropertyType#Date\r\n\t *\r\n\t * @description\r\n\t * date and time data type\r\n\t */\r\n\tDate: {\r\n\t\tname: 'DateType',\r\n\t\ttitle: 'Date',\r\n\t},\r\n\r\n\t/**\r\n\t * @ngdoc property\r\n\t * @name mx.shell.ObjectPropertyType#Text\r\n\t *\r\n\t * @description\r\n\t * Guid data type\r\n\t */\r\n\tText: {\r\n\t\tname: 'TextType',\r\n\t\ttitle: 'Text',\r\n\t},\r\n\r\n\t/**\r\n\t * @ngdoc property\r\n\t * @name mx.shell.ObjectPropertyType#Currency\r\n\t *\r\n\t * @description\r\n\t * Currency type\r\n\t */\r\n\tCurrency: {\r\n\t\tname: 'Currency',\r\n\t\ttitle: 'Currency',\r\n\t},\r\n\r\n\t/**\r\n\t * @ngdoc property\r\n\t * @name mx.shell.ObjectPropertyType#Icon\r\n\t *\r\n\t * @description\r\n\t * Icon type\r\n\t */\r\n\tIcon: {\r\n\t\tname: 'icon',\r\n\t\ttitle: 'Icon',\r\n\t},\r\n\r\n\t/**\r\n\t * @ngdoc property\r\n\t * @name mx.shell.ObjectPropertyType#Color\r\n\t *\r\n\t * @description\r\n\t * Color type\r\n\t */\r\n\tColor: {\r\n\t\tname: 'color',\r\n\t\ttitle: 'Color',\r\n\t},\r\n};\r\n\r\n/**\r\n * @ngdoc type\r\n * @name mx.shell.ObjectPropertyEnumValue\r\n * @module mx.shell\r\n *\r\n * @description\r\n * An implementation of an object property values\r\n *\r\n * @property {object} value - Gets or sets an object property value\r\n * @property {string} title - Gets or sets a title for an object property value. If null {@ref mx.shell.ObjectPropertyEnumValue#value value} is used\r\n */\r\nfunction MxObjectPropertyEnumValue(value, title) {\r\n\tObject.defineProperty(this, 'value', {\r\n\t\twritable: true,\r\n\t\tvalue: value,\r\n\t});\r\n\tObject.defineProperty(this, 'title', {\r\n\t\twritable: true,\r\n\t\tvalue: title || value,\r\n\t});\r\n}\r\n\r\nconst w = window;\r\nw.mx = w.mx || {};\r\nw.mx.shell = w.mx.shell || {};\r\nw.mx.shell.Object = MxObject;\r\nw.mx.shell.ObjectProperty = MxObjectProperty;\r\nw.mx.shell.ObjectPropertyType = MxObjectPropertyType;\r\nw.mx.shell.ObjectPropertyEnumValue = MxObjectPropertyEnumValue;\r\n\r\nexport { MxObject, MxObjectProperty, MxObjectPropertyType, MxObjectPropertyEnumValue };\r\n","import { EventCodes } from '../../../App/model/event-codes';\r\n\r\nActionExecutorService.$inject = [\r\n\t'$q',\r\n\t'mx.shell.NotificationService',\r\n\t'mx.internationalization',\r\n\t'mx.SolutionBuilderAgent.HelpService',\r\n\t'mx.SolutionBuilderAgent.Http',\r\n\t'mx.shell.DownloadHelpService',\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.SidePanelService',\r\n\t'mx.SolutionBuilderAgent.DialogOpenerService',\r\n\t'mx.shell.InjectorService',\r\n\t'mx.shell.ContextService',\r\n\t'mx.shell.SideLayout',\r\n\t'mx.shell.ActionProviderService',\r\n\t'mx.shell.ActionManagerService',\r\n\t'mx.SolutionBuilderAgent.ActionCoRuService',\r\n\t'mx.SolutionBuilderAgent.SchemaService',\r\n];\r\n\r\nexport function ActionExecutorService(\r\n\t$q,\r\n\tnotificationService,\r\n\ti18n,\r\n\thelpService,\r\n\thttp,\r\n\tdownloadHelpService,\r\n\teventService,\r\n\tsidePanelService,\r\n\tdialogOpenerService,\r\n\tinjectorService,\r\n\tcontextService,\r\n\tsideLayoutService,\r\n\tactionProviderService,\r\n\tactionManagerService,\r\n\tactionCoRuService,\r\n\tschemaService\r\n) {\r\n\treturn {\r\n\t\texecute: execute,\r\n\t\texecuteEditAction: executeEditAction,\r\n\t\texecuteCreateAction: executeCreateAction,\r\n\t};\r\n\r\n\tfunction processResponse(action, result, objects) {\r\n\t\tif (result.response.headers('sys-force-app-reload') === 'true') {\r\n\t\t\twindow.forceReload();\r\n\t\t}\r\n\r\n\t\tconst contentDisposition = result.response.headers('Content-Disposition');\r\n\r\n\t\tif (contentDisposition && contentDisposition.includes('attachment') && !downloadHelpService.downloadContent(result.response, result.data)) {\r\n\t\t\tthrow new Error(i18n.get('solutionBuilderAgent.actions.operation-action.download-error'));\r\n\t\t}\r\n\r\n\t\tif (result.refresh) {\r\n\t\t\tconst objectIds = (result.operationObjects || []).reduce((ids, entry) => ids.concat((entry && entry.ObjectIds) || []), []);\r\n\r\n\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.SearchPageDataChanged);\r\n\r\n\t\t\tif (objectIds.length) {\r\n\t\t\t\tif (result.method === mx.shell.HttpMethod.Delete) {\r\n\t\t\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.ObjectDataDeleted, { affectedObjectIds: objectIds });\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!action.serviceOperation.OpenDialogOnSuccess) {\r\n\t\t\t\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.ObjectDataChanged, {\r\n\t\t\t\t\t\t\taffectedObjectIds: objectIds,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tnotificationService.success(\r\n\t\t\ti18n.getFormatted('solutionBuilderAgent.actions.operation-action.success', action.title),\r\n\t\t\ti18n.getFormatted('solutionBuilderAgent.actions.operation-action.ARIA-success', action.title)\r\n\t\t);\r\n\r\n\t\tif (action.serviceOperation && action.serviceOperation.OpenDialogOnSuccess && Array.isArray(objects)) {\r\n\t\t\tobjects.forEach((item) => {\r\n\t\t\t\tdialogOpenerService.openEditDialog(item, true);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction filterObjects(action, selectedObjects) {\r\n\t\tlet objects = typeof selectedObjects === 'undefined' ? contextService.selectedObjects : selectedObjects;\r\n\r\n\t\treturn objects.filter((object) => {\r\n\t\t\tif (action.availableTypes && action.availableTypes.length) {\r\n\t\t\t\tconst isTypeAvailable = action.availableTypes.includes(object._type);\r\n\t\t\t\tif (action.typesFilter === mx.shell.ActionFilterType.Specified) {\r\n\t\t\t\t\treturn isTypeAvailable;\r\n\t\t\t\t} else if (action.typesFilter === mx.shell.ActionFilterType.ExceptSpecified) {\r\n\t\t\t\t\treturn !isTypeAvailable;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction trackTelemetry(action, objects) {\r\n\t\tconst types = objects.map(({ _type }) => _type).filter((value, index, array) => array.indexOf(value) === index);\r\n\r\n\t\tPromise.all(types.map((type) => schemaService.getType(type))).then((typesInfo) => {\r\n\t\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\t\teventName: `Action clicked`,\r\n\t\t\t\tsender: action.id,\r\n\t\t\t\tsenderTitle: action.name,\r\n\r\n\t\t\t\tcontextId: objects.map(({ _id }) => _id),\r\n\t\t\t\tcontextTitle: objects.map(({ _name, _displayName }) => _displayName || _name),\r\n\t\t\t\tcontextTypeId: typesInfo.map((typeInfo) => typeInfo?.Id),\r\n\t\t\t\tcontextTypeTitle: typesInfo.map((typeInfo) => typeInfo?.InternalName),\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.ActionExecutorService#execute\r\n\t * @async\r\n\t *\r\n\t * @description\r\n\t * Runs the {@ref mx.shell.Action} for the specifies objects.\r\n\t *\r\n\t * @param {mx.shell.Action} action - Specifies the {@ref mx.shell.Action} definition.\r\n\t * @param {mx.shell.Object[]} [selectedObjects] - Specifies the list of {@ref mx.shell.Object objects} which affected\r\n\t * @param {mx.shell.View} [parentView] - Specifies the parent view {@ref mx.shell.View}\r\n\t * @param {Object} [presetFields] - Specifies the preset fields\r\n\t * by the Action execution. If not provided mx.shell.ContextService.selectedObjects is used\r\n\t */\r\n\tasync function execute(action, selectedObjects, parentView, presetFields) {\r\n\t\tif (!action) {\r\n\t\t\tthrow new Error(i18n.get('shell.errors.action_not_provided'));\r\n\t\t}\r\n\r\n\t\tconst objects = filterObjects(action, selectedObjects);\r\n\t\tconst actionAvailabilityInfo = await actionManagerService.checkAvailability(action, objects);\r\n\r\n\t\tif (!actionAvailabilityInfo.isAvailable) {\r\n\t\t\tconst errorMessage = i18n.get('solutionBuilderAgent.actions.actionUnavailable');\r\n\t\t\tnotificationService.error(errorMessage);\r\n\t\t\tthrow new Error(errorMessage);\r\n\t\t}\r\n\r\n\t\ttrackTelemetry(action, objects);\r\n\r\n\t\tif (action.serviceOperation) {\r\n\t\t\tlet confirmed = !!action.ignoreConfirmationForServiceOperation;\r\n\t\t\tif (!confirmed) {\r\n\t\t\t\tconst dialogConfig = {\r\n\t\t\t\t\tid: 'ActionOnExecuteServiceOperation-' + action.serviceOperation.ServiceOperation,\r\n\t\t\t\t\ttitle: action.title,\r\n\t\t\t\t\tmessage: action.serviceOperation.ConfirmationMessage || i18n.get('solutionBuilderAgent.actions.operation-action.confirmation-message'),\r\n\t\t\t\t\tactions: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: 'no',\r\n\t\t\t\t\t\t\tnotForSave: true,\r\n\t\t\t\t\t\t\ttitle: i18n.get('solutionBuilderAgent.actions.operation-action.no'),\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: 'yes',\r\n\t\t\t\t\t\t\tisConfirmButton: true,\r\n\t\t\t\t\t\t\ttitle: i18n.get('solutionBuilderAgent.actions.operation-action.yes'),\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t],\r\n\t\t\t\t\tbuttonsInActionZone: true,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tconst dialogAnswer = await sidePanelService.showConfirmationDialog(dialogConfig);\r\n\r\n\t\t\t\tif (dialogAnswer === 'yes') {\r\n\t\t\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.ActionConfirmDialogConfirmed);\r\n\t\t\t\t\tconfirmed = true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.ActionConfirmDialogCanceled);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (confirmed) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst operationResult = await executeOperation(action, objects);\r\n\r\n\t\t\t\t\tif (operationResult && operationResult.response) {\r\n\t\t\t\t\t\tprocessResponse(action, operationResult, objects);\r\n\t\t\t\t\t\teventService.dispatchEvent(mx.shell.EventCodes.ActionExecuted, { action, parentView, finishPromise: $q.when() });\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (action.reloadPageOnSuccess) {\r\n\t\t\t\t\t\twindow.forceReload();\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\tnotificationService.error(error);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (typeof action.viewFn === 'function') {\r\n\t\t\t\taction.view = await action.viewFn(objects, presetFields);\r\n\t\t\t}\r\n\r\n\t\t\tconst controller = await injectorService.controller(action);\r\n\t\t\tawait controllerExecute(action, controller, objects, parentView, presetFields);\r\n\t\t}\r\n\r\n\t\t//we call that method even wizard or action doesn't contain submit service operation.\r\n\t\t//we currently have fuzzy logic for handle CoRus for Action without submit operation.\r\n\t\tconst result = await actionCoRuService.commit(action.id, actionAvailabilityInfo.cacheId);\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tasync function controllerExecute(action, controller, objects, parentView, presetFields) {\r\n\t\tlet data = null;\r\n\t\tlet view = action.view;\r\n\t\tlet viewPromise;\r\n\r\n\t\tif (controller && controller.execute && typeof controller.execute === 'function') {\r\n\t\t\tdata = await controller.execute(objects, action, presetFields, parentView);\r\n\t\t} else if (controller && controller.getView && typeof controller.getView === 'function') {\r\n\t\t\tview = controller.getView(objects);\r\n\t\t}\r\n\r\n\t\tif (view) {\r\n\t\t\tif (action.useSameView) {\r\n\t\t\t\tconst currentView = sidePanelService.getCurrentView();\r\n\r\n\t\t\t\tif (currentView && currentView.id !== 'selection') {\r\n\t\t\t\t\tview.name = currentView.name;\r\n\t\t\t\t\tview.displayName = currentView.displayName;\r\n\t\t\t\t\tview.headerTitle = currentView.headerTitle;\r\n\t\t\t\t\tview.headerIcon = currentView.headerIcon;\r\n\t\t\t\t\tview.id = currentView.id;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (view.isWizard) {\r\n\t\t\t\t\tview.headerIcon = action.icon;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tview.id = (view.isWizard ? action.name + ':' : '') + objects.map((o) => o._id).join(';');\r\n\t\t\t}\r\n\r\n\t\t\tview.context = objects[0];\r\n\r\n\t\t\tview.locals = angular.extend(view.locals || {}, {\r\n\t\t\t\tselectedObjects: objects,\r\n\t\t\t\tcontext: objects[0],\r\n\t\t\t\tview: view,\r\n\t\t\t\tisLazy: action.isLazy,\r\n\t\t\t});\r\n\r\n\t\t\tview.startedFromAction = action;\r\n\t\t\tview.actionContext = objects;\r\n\r\n\t\t\tviewPromise = sidePanelService.addView(view, parentView);\r\n\r\n\t\t\tif (action.openInFullScreen) {\r\n\t\t\t\tsideLayoutService.switchFullScreenMode(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (data && data.view) {\r\n\t\t\tview = data.view;\r\n\t\t\tview.startedFromAction = action;\r\n\t\t\tview.actionContext = objects;\r\n\t\t\tviewPromise = view.finishDefer && view.finishDefer.promise;\r\n\t\t}\r\n\r\n\t\teventService.dispatchEvent(mx.shell.EventCodes.ActionExecuted, { action, view, parentView, finishPromise: viewPromise });\r\n\t\treturn viewPromise;\r\n\t}\r\n\r\n\tfunction getObjectIds(selectedObjects) {\r\n\t\treturn selectedObjects ? selectedObjects.map((obj) => obj._id || obj.ID || obj['Sys-ObjectId']).filter((objectId) => objectId !== null && objectId !== undefined) : [];\r\n\t}\r\n\r\n\tfunction executeOperation(action, selectedObjects) {\r\n\t\treturn helpService.getOperationInfo(action.serviceOperation.ServiceOperation).then((operationInfo) => {\r\n\t\t\tif (typeof operationInfo === 'object' && operationInfo.RelativePath) {\r\n\t\t\t\tconst method = mx.shell.HttpMethod.find(operationInfo.HttpMethod);\r\n\t\t\t\tlet operationObjects, promise;\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\ttypeof operationInfo.RequestContract === 'object' &&\r\n\t\t\t\t\ttypeof operationInfo.RequestContract.UsedTypes === 'object' &&\r\n\t\t\t\t\tObject.keys(operationInfo.RequestContract.UsedTypes).length > 0\r\n\t\t\t\t) {\r\n\t\t\t\t\toperationObjects = getOperationObjects(action, selectedObjects);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet refresh = true;\r\n\t\t\t\tconst objectIds = getObjectIds(selectedObjects);\r\n\r\n\t\t\t\tconst config = actionCoRuService.getActionContextHeader(action.id, objectIds) || {};\r\n\t\t\t\tconfig.eventHandlers = {\r\n\t\t\t\t\tloadstart: function (event) {\r\n\t\t\t\t\t\tevent.target.addEventListener('readystatechange', function (event) {\r\n\t\t\t\t\t\t\tif (event.target.readyState === 2) {\r\n\t\t\t\t\t\t\t\tconst headers = event.target.getAllResponseHeaders();\r\n\t\t\t\t\t\t\t\tconst isFileDownload = headers.toLowerCase().indexOf('content-disposition') !== -1;\r\n\r\n\t\t\t\t\t\t\t\tif (isFileDownload) {\r\n\t\t\t\t\t\t\t\t\tevent.target.responseType = 'arraybuffer';\r\n\t\t\t\t\t\t\t\t\trefresh = false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet url = operationInfo.RelativePath;\r\n\t\t\t\tif (url.indexOf('{actionId}') > 0) {\r\n\t\t\t\t\turl = url.replace('{actionId}', action.id);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tswitch (method) {\r\n\t\t\t\t\tcase mx.shell.HttpMethod.Get:\r\n\t\t\t\t\t\tpromise = http.get(url + (operationObjects ? '?Objects=' + JSON.stringify(operationObjects) : ''), '', config, false, true);\r\n\t\t\t\t\t\trefresh = false;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase mx.shell.HttpMethod.Post:\r\n\t\t\t\t\t\tpromise = http.post(url, operationObjects ? { Objects: operationObjects } : {}, config, {}, false, true);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase mx.shell.HttpMethod.Put:\r\n\t\t\t\t\t\tpromise = http.put(url, operationObjects ? { Objects: operationObjects } : {}, config, {}, false, true);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase mx.shell.HttpMethod.Delete:\r\n\t\t\t\t\t\tpromise = http.remove(url, operationObjects ? { Objects: operationObjects } : {}, {}, {}, false, true);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (promise) {\r\n\t\t\t\t\treturn promise.then(function (response) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tdata: response.data,\r\n\t\t\t\t\t\t\tresponse: response,\r\n\t\t\t\t\t\t\toperationObjects: operationObjects,\r\n\t\t\t\t\t\t\tmethod: method,\r\n\t\t\t\t\t\t\trefresh: refresh,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getOperationObjects(action, selectedObjects) {\r\n\t\tconst objects = filterObjects(action, selectedObjects);\r\n\r\n\t\tconst operationObjects = [];\r\n\r\n\t\tobjects.forEach(function (newObject) {\r\n\t\t\tif (\r\n\t\t\t\t!operationObjects.some((addedObject) => {\r\n\t\t\t\t\tif (addedObject.TypeName === newObject._type) {\r\n\t\t\t\t\t\taddedObject.ObjectIds.push(newObject._id);\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t) {\r\n\t\t\t\toperationObjects.push({\r\n\t\t\t\t\tObjectIds: [newObject._id],\r\n\t\t\t\t\tTypeName: newObject._type,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn operationObjects;\r\n\t}\r\n\r\n\tfunction executeCreateAction(type, parentView, presetFields) {\r\n\t\treturn actionManagerService.getCreateActions(type).then(function (createActions) {\r\n\t\t\tconst createAction = createActions[0];\r\n\t\t\tif (!createAction) {\r\n\t\t\t\treturn $q.reject('create action was not found');\r\n\t\t\t}\r\n\t\t\treturn execute(createAction, [], parentView, presetFields);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction executeEditAction(object, parentView, presetFields) {\r\n\t\treturn actionManagerService.getEditActions(object).then(function (editActions) {\r\n\t\t\tconst editAction = editActions[0];\r\n\t\t\tif (!editAction) {\r\n\t\t\t\treturn $q.reject('edit action was not found');\r\n\t\t\t}\r\n\t\t\treturn execute(editAction, [object], parentView, presetFields);\r\n\t\t});\r\n\t}\r\n}\r\n","import * as angular from 'angular';\r\nimport View from '../view';\r\nimport type { EntityContext } from '../../../PandoraSolutionBuilderAgent/services/entity-service';\r\n\r\n/**\r\n * @ngdoc type\r\n * @name mx.shell.WizardView\r\n * @module mx.shell\r\n * @augments mx.shell.View\r\n *\r\n * @description\r\n * An implementation of the Wizard View for {@ref mx.shell:mxSidePanel side panel}\r\n * A constructor accepts `options` parameter that may contain fields to extend corresponding properties. Created like:\r\n * ```javascript\r\n var options = {\r\n\tid: 'simple-wizard',\r\n\ttype: 'simple_wiz',\r\n\tname: 'Simple wizard',\r\n\tdisplayName: 'Simple tests wizard'\r\n };\r\n\r\n var view = new mx.shell.WizardView(options);\r\n * ```\r\n *\r\n * @property {string} uiActionGroup - A name of a group of actions to be displayed. Read-only. Defaults to `wizard`\r\n * @property {boolean} isWizard - Property that determines view as a wizard view. Read-only. Defaults to `true`\r\n * @property {function} initView - A function to be executed before view compilation.\r\n * @property {boolean} dirty - True if user has already interacted with the form. Always true for wizards.\r\n *\r\n */\r\nexport default class WizardView extends View {\r\n\tpublic actionContext: EntityContext[];\r\n\tpublic mergeDisabled = false;\r\n\tpublic telemetrySource?: string;\r\n\r\n\tconstructor(options: Partial = {}) {\r\n\t\tsuper(options);\r\n\r\n\t\tthis.telemetrySource = options.telemetrySource;\r\n\t\tthis.actionContext = options.actionContext || [];\r\n\r\n\t\tObject.defineProperties(this, {\r\n\t\t\tuiActionGroup: { writable: false, enumerable: true, value: ['wizard'] },\r\n\t\t\tisWizard: { writable: false, enumerable: true, value: true },\r\n\t\t\tinitView: { writable: true, enumerable: true },\r\n\t\t\tdirty: { enumerable: true, writable: true, value: false },\r\n\t\t\tmergeDisabled: { enumerable: true, writable: true, value: Boolean(options.mergeDisabled) },\r\n\t\t});\r\n\t}\r\n\r\n\tgetWizard() {\r\n\t\treturn this.locals.wizard;\r\n\t}\r\n}\r\n\r\nangular.module('mx.shell').value('mx.shell.WizardView', WizardView);\r\n","import { MxAction, ActionContextType, ActionPurpose, ActionsContext, ActionDeviceVisibility, ActionUiZone } from '../model/action';\r\nimport type { DeviceService } from '../../../App/services/device-service';\r\nimport type { MxApplicationService } from '../../../App/services/mx-application-service';\r\nimport type { I18n } from '../../../i18n/mx-internationalization';\r\nimport type { UserProfileService } from '../../../App/services/user-profile-service';\r\nimport type { SchemaService } from '../../PandoraSolutionBuilderAgent/services/schema-service';\r\nimport type { RoutingService } from '../../../App/services/mx-routing-service';\r\nimport DetailsView from '../model/details-view';\r\nimport { EntityContext } from '../../PandoraSolutionBuilderAgent/services/entity-service';\r\nimport { ContentWidgetDialogAction } from '../../PandoraSolutionBuilderAgent/model/enumerations';\r\nimport { ActionFilterType } from '../model/action';\r\nimport _ from '../../../Utils/mx-lodash';\r\nimport { utils } from '../../../Utils/mx-utils';\r\nimport { ClassType } from '@dwp/api-parser/dist/api/Schema/classes/Schema/Classes.GetClass';\r\n\r\ntype ActionAvailabilityInfo = {\r\n\tisAvailable: boolean;\r\n\tcacheId?: string;\r\n};\r\n\r\nexport interface ActionProvider {\r\n\tgetActions: (forceReload?: boolean) => Promise;\r\n\tcheckAvailability: (action: MxAction, selectedObjects: EntityContext[]) => Promise;\r\n}\r\n\r\nclass DefaultActionProvider implements ActionProvider {\r\n\tasync getActions() {\r\n\t\treturn [];\r\n\t}\r\n\tasync checkAvailability() {\r\n\t\treturn { isAvailable: true };\r\n\t}\r\n}\r\n\r\n/**\r\n * @ngdoc service\r\n * @name mx.shell.ActionManagerService\r\n * @module mx.shell\r\n *\r\n * @description\r\n * A service provides methods for actions managing, subscribing and notifying about changes in active actions.\r\n * The service analyze the state of the environment, like System Context, the definition of the current view's\r\n * {@ref mx.shell.Object Action Context}, calculates the available Actions, and throws a notification event to notify\r\n * subscribers about active Actions list change
\r\n *

Action manager visualization

\r\n * \"Action\r\n */\r\nexport class MxActionManagerService {\r\n\tprivate actionProvider: ActionProvider = new DefaultActionProvider();\r\n\r\n\tstatic $inject = [\r\n\t\t'mx.app.DeviceService',\r\n\t\t'mx.shell.AppsService',\r\n\t\t'mx.internationalization',\r\n\t\t'mx.shell.UserProfileService',\r\n\t\t'mx.SolutionBuilderAgent.SchemaService',\r\n\t\t'mx.shell.RoutingService',\r\n\t];\r\n\tconstructor(\r\n\t\tprivate readonly deviceService: DeviceService,\r\n\t\tprivate readonly applicationService: MxApplicationService,\r\n\t\tprivate readonly i18n: I18n,\r\n\t\tprivate readonly userProfileService: UserProfileService,\r\n\t\tprivate readonly schemaService: SchemaService,\r\n\t\tprivate readonly routingService: RoutingService\r\n\t) {}\r\n\r\n\tpublic async checkAvailability(action: MxAction, selectedObjects: EntityContext[]): Promise {\r\n\t\tlet isAvailable = true;\r\n\t\tif (Array.isArray(action.applications) && action.applications.length > 0) {\r\n\t\t\tconst application = await this.applicationService.getCurrentApplication();\r\n\t\t\tisAvailable = action.applications.indexOf(application.value) >= 0;\r\n\t\t}\r\n\r\n\t\tif (!isAvailable) {\r\n\t\t\treturn { isAvailable: false };\r\n\t\t}\r\n\r\n\t\tif (!action || !action.id || action.isService || selectedObjects.length === 0) {\r\n\t\t\treturn { isAvailable: true };\r\n\t\t}\r\n\r\n\t\treturn this.actionProvider.checkAvailability(action, selectedObjects);\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.ActionManagerService#setActionProvider\r\n\t *\r\n\t * @description\r\n\t * Set an instance of {@ref mx.shell.ActionProviderService an ActionProviderService} which will be sued for getActions method\r\n\t *\r\n\t * @param {ActionProvider?} actionProvider - an instance of ActionProvider\r\n\t */\r\n\tpublic setActionProvider(actionProvider?: ActionProvider): void {\r\n\t\tif (actionProvider && typeof actionProvider.getActions === 'function') {\r\n\t\t\tthis.actionProvider = actionProvider;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.ActionManagerService#filterActions\r\n\t *\r\n\t * @description\r\n\t * Returns a list of Actions which were filtered inside the function. By Default same result as input is returned. However, this can be overridden on client\r\n\t *\r\n\t * @param {mx.shell.Action[]} actions - Array of actions to be filtered {@ref mx.shell.Action actions}\r\n\t * @param {DetailsView} view - A {@ref mx.shell.DetailsView view} to filter actions for\r\n\t * @param {object[]} selectedObjects - Array of selected objects to filter actions for\r\n\t *\r\n\t * @returns {mx.shell.Action[]} Array of available {@ref mx.shell.Action actions}\r\n\t */\r\n\tpublic filterActions(actions: MxAction[], view?: DetailsView, selectedObjects?: EntityContext[]): MxAction[] {\r\n\t\tconst route = (this.routingService.getCurrent() || {}).parameters;\r\n\t\tconst filterExecutionContext = route\r\n\t\t\t? {\r\n\t\t\t\t\tnavigationId: (route.navigationId || '').toLowerCase(),\r\n\t\t\t\t\tfilterId: (route.filterId || '').toLowerCase(),\r\n\t\t\t\t\tapplication: route.appString || '',\r\n\t\t\t }\r\n\t\t\t: {};\r\n\r\n\t\treturn (\r\n\t\t\tactions\r\n\t\t\t\t.filter((action) => {\r\n\t\t\t\t\tif (selectedObjects && selectedObjects[0]?._archived) {\r\n\t\t\t\t\t\tconst isEditAction = action.name.indexOf('ActionEdit') > -1 || action.name === 'AdvancedDetails';\r\n\t\t\t\t\t\tif (!isEditAction) {\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (!view && !selectedObjects) {\r\n\t\t\t\t\t\treturn action.scriptFilter ? this.actionsFilterScript(undefined, action.scriptFilter, 0, filterExecutionContext) : true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst viewForService =\r\n\t\t\t\t\t\t(view && view.type && view.type.startsWith('service_')) ||\r\n\t\t\t\t\t\t(selectedObjects?.length && selectedObjects[0]._type && selectedObjects[0]._type.indexOf('service_') === 0);\r\n\r\n\t\t\t\t\tif (action.isService !== undefined && viewForService !== action.isService) {\r\n\t\t\t\t\t\t//for NME a !== b === a XOR b (if a, b are boolean)\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet scriptPredicate = true;\r\n\t\t\t\t\tif (action.scriptFilter) {\r\n\t\t\t\t\t\tselectedObjects?.forEach((selectedObject) => {\r\n\t\t\t\t\t\t\tif (scriptPredicate) {\r\n\t\t\t\t\t\t\t\tconst result = this.actionsFilterScript(selectedObject, action.scriptFilter as string, selectedObjects.length, filterExecutionContext);\r\n\t\t\t\t\t\t\t\tif (typeof result === 'boolean') {\r\n\t\t\t\t\t\t\t\t\tscriptPredicate = result;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst viewType = view?.dialogType || ContentWidgetDialogAction.Preview;\r\n\t\t\t\t\tif (viewType === ContentWidgetDialogAction.Edit && action.uiZones && action.uiZones.indexOf(ActionUiZone.EditDialog) !== -1) {\r\n\t\t\t\t\t\treturn scriptPredicate;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn scriptPredicate && viewType === ContentWidgetDialogAction.Preview;\r\n\t\t\t\t})\r\n\t\t\t\t// First - items without position, then - sort by `position`, then - by `title`\r\n\t\t\t\t.sort(function (a, b) {\r\n\t\t\t\t\tlet res = 0,\r\n\t\t\t\t\t\taTitle,\r\n\t\t\t\t\t\tbTitle;\r\n\t\t\t\t\tif (typeof a.position === 'undefined' && typeof b.position !== 'undefined') {\r\n\t\t\t\t\t\tres = -1;\r\n\t\t\t\t\t} else if (typeof a.position !== 'undefined' && typeof b.position === 'undefined') {\r\n\t\t\t\t\t\tres = 1;\r\n\t\t\t\t\t} else if ((a.position || 0) !== (b.position || 0)) {\r\n\t\t\t\t\t\tres = (a.position || 0) > (b.position || 0) ? 1 : -1;\r\n\t\t\t\t\t} else if (a.title && b.title && a.title !== b.title) {\r\n\t\t\t\t\t\taTitle = (a.title + '').trim().toLowerCase();\r\n\t\t\t\t\t\tbTitle = (b.title + '').trim().toLowerCase();\r\n\t\t\t\t\t\tres = aTitle > bTitle ? 1 : -1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn res;\r\n\t\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.ActionManagerService#getActions\r\n\t *\r\n\t * @description\r\n\t * Returns a list of Actions which fits the specified context\r\n\t *\r\n\t * @param {ActionsContext} context - Specifies the {@ref mx.shell.ActionsContext context} actions will be taken for. Can be an array of types.\r\n\t * @param {ActionContextType[]} actionTypes - Specifies the list of {@ref mx.shell.ActionContextType context types} to be got. All types will be taken if empty or null.\r\n\t * @param {EntityContext[]} objects - Specifies an array of selected {@ref mx.shell.Object objects}. Actions will be filtered according their context.\r\n\t * @param {ActionPurpose[]} purposes - Specifies an array of purposes. Or null if filter by purposes is not needed\r\n\t *\r\n\t * @returns {mx.shell.Action[]} Array of available {@ref mx.shell.Action actions}\r\n\t */\r\n\tpublic async getActions(context: ActionsContext, actionTypes?: ActionContextType[], objects?: EntityContext[], purposes?: ActionPurpose[]): Promise {\r\n\t\tlet actions = await this.requestActions(context);\r\n\t\tactions = await this._filterActions(\r\n\t\t\tactions, // Array of found actions\r\n\t\t\tcontext.uiZone, // E.g: mx.shell.ActionUiZone.Toolbar\r\n\t\t\tactionTypes, // E.g: [mx.shell.ActionContextType.Single, mx.shell.ActionContextType.Multiple]\r\n\t\t\tobjects, // Array of connected objects\r\n\t\t\tpurposes\r\n\t\t);\r\n\t\treturn this._sortActions(actions);\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.ActionManagerService#getAllActions\r\n\t *\r\n\t * @description\r\n\t * Gets the list of all actions {@ref mx.shell.Action Actions} in system.
\r\n\t *\r\n\t * @returns {mx.shell.Action[]} Array of all actions {@ref mx.shell.Action actions} in system.\r\n\t */\r\n\tasync getAllActions(): Promise {\r\n\t\treturn await this.actionProvider.getActions();\r\n\t}\r\n\r\n\tpublic async getActionById(id: string): Promise {\r\n\t\tif (!id) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tconst actions = await this.getAllActions();\r\n\t\treturn actions.find((action) => action.id === id) || null;\r\n\t}\r\n\r\n\tpublic async getActionsByIds(ids: string[]): Promise {\r\n\t\tif (!Array.isArray(ids)) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\tconst actions = await this.getAllActions();\r\n\t\treturn actions.filter((action) => action.id && ids.includes(action.id));\r\n\t}\r\n\r\n\tprivate async requestActions(context: ActionsContext): Promise {\r\n\t\tif (!context) {\r\n\t\t\tthrow new Error(this.i18n.get('shell.errors.noContextForRequestActions'));\r\n\t\t}\r\n\r\n\t\tif (context.hideActions) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst resActions = (await this.actionProvider.getActions()).filter((action) => {\r\n\t\t\t// TODO: move it to method \"_filterActions\"\r\n\t\t\tconst typesFilter = action.typesFilter || ActionFilterType.Any;\r\n\t\t\tlet res = false;\r\n\r\n\t\t\tswitch (typesFilter) {\r\n\t\t\t\tcase ActionFilterType.Any:\r\n\t\t\t\t\tres = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase ActionFilterType.Specified:\r\n\t\t\t\t\tres = _.intersection(action.availableTypes, context.types).length > 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase ActionFilterType.ExceptSpecified:\r\n\t\t\t\t\tres = _.intersection(action.availableTypes, context.types).length === 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t});\r\n\r\n\t\treturn (context.extraActions || []).concat(resActions);\r\n\t}\r\n\r\n\tprivate _filterActionsByUiZone(actions: MxAction[], uiZone?: ActionUiZone): MxAction[] {\r\n\t\tif (typeof uiZone !== 'undefined' && this._isUiZoneExists(uiZone)) {\r\n\t\t\tactions = actions.filter((action) => !action.uiZones || action.uiZones.includes(uiZone));\r\n\t\t}\r\n\t\treturn actions;\r\n\t}\r\n\r\n\tprivate _getTypesAndStates(objects: EntityContext[]): { objectTypes: string[]; objectStates: string[] } {\r\n\t\tconst objectTypes: string[] = [];\r\n\t\tconst objectStates: string[] = [];\r\n\r\n\t\tobjects.forEach((object) => {\r\n\t\t\tif (object._type && !objectTypes.includes(object._type)) {\r\n\t\t\t\tobjectTypes.push(object._type);\r\n\t\t\t}\r\n\t\t\tif (typeof object._state !== 'undefined' && !objectStates.includes(object._state)) {\r\n\t\t\t\tobjectStates.push(object._state);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn { objectTypes, objectStates };\r\n\t}\r\n\r\n\tprivate _sortActions(actions: MxAction[]): MxAction[] {\r\n\t\tif (actions && actions.length) {\r\n\t\t\treturn actions.sort((action1, action2) => {\r\n\t\t\t\tconst pos1 = action1.position || 0;\r\n\t\t\t\tconst pos2 = action2.position || 0;\r\n\r\n\t\t\t\tif (pos2 !== pos1) {\r\n\t\t\t\t\t// Descending sorting by position\r\n\t\t\t\t\treturn pos2 - pos1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn action1.title.localeCompare(action2.title);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn [];\r\n\t}\r\n\r\n\tprivate async _filterActions(\r\n\t\tactions: MxAction[],\r\n\t\tuiZone?: ActionUiZone,\r\n\t\tactionTypes?: ActionContextType[],\r\n\t\tobjects: EntityContext[] = [],\r\n\t\tpurposes?: ActionPurpose[]\r\n\t): Promise {\r\n\t\tif (!actions || !actions.length) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst app = await this.applicationService.getCurrentApplication();\r\n\t\tif (app?.value) {\r\n\t\t\tactions = actions.filter((action) => !action.applications || action.applications.includes(app.value));\r\n\t\t}\r\n\t\tactions = this._filterActionsByUiZone(actions, uiZone);\r\n\r\n\t\tactions = actions.filter((action) => {\r\n\t\t\tswitch (action.deviceVisibility) {\r\n\t\t\t\tcase ActionDeviceVisibility.DesktopOnly:\r\n\t\t\t\t\tif (!this.deviceService.screenDesktop()) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase ActionDeviceVisibility.MobileOnly:\r\n\t\t\t\t\tif (!this.deviceService.screenMobile()) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\treturn uiZone === ActionUiZone.SearchPage || !actionTypes || actionTypes.includes(action.contextType);\r\n\t\t});\r\n\r\n\t\tif (Array.isArray(purposes)) {\r\n\t\t\tactions = actions.filter((action) => !action.purpose || purposes.includes(action.purpose));\r\n\t\t}\r\n\r\n\t\tconst { objectTypes, objectStates } = this._getTypesAndStates(objects);\r\n\r\n\t\tactions = this._filterActionsByObjectType(actions, objectTypes);\r\n\r\n\t\treturn actions.filter((action, index, actionsArray) => {\r\n\t\t\t// Filter duplicates\r\n\t\t\tif (this._isDuplicate(actionsArray.slice(0, index), action)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Filter by context type\r\n\t\t\tif (uiZone === ActionUiZone.SearchPage || action.contextType === ActionContextType.None) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (objects.length === 0 || (action.contextType === ActionContextType.Single && objects.length !== 1)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Filter by state\r\n\t\t\tif (action.statesFilter) {\r\n\t\t\t\tif (action.statesFilter === ActionFilterType.Specified) {\r\n\t\t\t\t\tif (!action.states.length || objectStates.length === 0 || _.intersection(objectStates, action.states).length !== objectStates.length) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (action.statesFilter === ActionFilterType.ExceptSpecified) {\r\n\t\t\t\t\tif (objectStates.length > 0 && action.states && action.states.length && _.intersection(objectStates, action.states).length > 0) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _filterActionsByObjectType(actions: MxAction[], objectTypes: string[]): MxAction[] {\r\n\t\treturn actions.filter((action) => {\r\n\t\t\tswitch (action.typesFilter) {\r\n\t\t\t\tcase ActionFilterType.Specified:\r\n\t\t\t\t\tif (!action.availableTypes) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn objectTypes.every((type) => action.availableTypes.includes(type));\r\n\r\n\t\t\t\tcase ActionFilterType.ExceptSpecified:\r\n\t\t\t\t\tif (!action.availableTypes) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn objectTypes.every((type) => !action.availableTypes.includes(type));\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _isDuplicate(actions: MxAction[], action: MxAction): boolean {\r\n\t\treturn actions.some((item) => item.name === action.name);\r\n\t}\r\n\r\n\tprivate _isUiZoneExists(uiZone: ActionUiZone): boolean {\r\n\t\treturn Object.values(ActionUiZone).includes(uiZone);\r\n\t}\r\n\r\n\tpublic async getCreateActions(type: string): Promise {\r\n\t\tconst context = new ActionsContext([type], [], ActionUiZone.SearchPage);\r\n\t\tconst actions = await this.getActions(context, [ActionContextType.None], [], [ActionPurpose.Create]);\r\n\t\treturn this.filterActions(actions);\r\n\t}\r\n\r\n\tpublic async getEditActions(object: EntityContext): Promise {\r\n\t\tconst context = new ActionsContext([object._type], [], ActionUiZone.SidePanel);\r\n\t\tconst actionTypes = [ActionContextType.Single, ActionContextType.Multiple];\r\n\t\tconst purposes = [ActionPurpose.Edit];\r\n\r\n\t\tconst actions = await this.getActions(context, actionTypes, [object], purposes);\r\n\t\treturn this.filterActions(actions, undefined, [object]);\r\n\t}\r\n\r\n\tpublic async isExportAllAvailable(types?: string[], className?: string): Promise {\r\n\t\tconst entities = await this.getTypes(types, className);\r\n\t\tconst actionContext = new ActionsContext(entities, [], undefined);\r\n\t\tconst actions = await this.getActions(actionContext, [ActionContextType.None], []);\r\n\t\treturn actions.some((action) => action.name.startsWith('ExportAll'));\r\n\t}\r\n\r\n\tprivate async getTypes(types?: string[], className?: string): Promise {\r\n\t\tif (Array.isArray(types) && types.length > 0) {\r\n\t\t\treturn types;\r\n\t\t} else if (typeof className !== 'string') {\r\n\t\t\treturn [];\r\n\t\t} else {\r\n\t\t\tconst classInfo = await this.schemaService.getClassInfo(className);\r\n\t\t\treturn classInfo.ClassType === ClassType.CommonClass ? [] : classInfo.UsedInTypes.map((typeInfo) => typeInfo.InternalName || '');\r\n\t\t}\r\n\t}\r\n\r\n\tprivate actionsFilterScript(item: unknown, script: string, count = 0, filterContext: { navigationId?: string; filterId?: string; application?: string }) {\r\n\t\ttry {\r\n\t\t\tconst safeScript = utils.getSafeScript(script);\r\n\r\n\t\t\tconst func = new Function('$object', '$currentUser', '$count', '$context', 'return ' + safeScript);\r\n\t\t\treturn func(item, this.userProfileService.id, count, filterContext);\r\n\t\t} catch (e) {\r\n\t\t\tconsole.error((e as Error).message);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n}\r\n","ActionProviderService.$inject = [\r\n\t'$q',\r\n\t'mx.SolutionBuilderAgent.Http',\r\n\t'mx.shell.DetailsView',\r\n\t'mx.SolutionBuilderAgent.WizardService',\r\n\t'mx.shell.Config',\r\n\t'mx.shell.UserProfileService',\r\n\t'mx.internationalization',\r\n\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n\t'mx.SolutionBuilderAgent.RecentService',\r\n\t'mx.sb.DialogView.DialogFactory',\r\n\t'mx.SolutionBuilderAgent.EntityService',\r\n\t'mx.shell.NotificationService',\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n];\r\n\r\nexport function ActionProviderService(\r\n\t$q,\r\n\tmxHttp,\r\n\tDetailsView,\r\n\twizardService,\r\n\tconfigService,\r\n\tuserProfileService,\r\n\ti18n,\r\n\tcontentWidgetService,\r\n\trecentService,\r\n\tdialogFactory,\r\n\tentityService,\r\n\tnotificationService,\r\n\tpersonalizationService\r\n) {\r\n\tvar getActionsPromise;\r\n\tvar cache = { data: {} };\r\n\tvar actionSetDefaultMailingEngineId = '449f4fc5-8b2d-cf45-fdf5-08d594ae65e4';\r\n\r\n\treturn {\r\n\t\tgetActions: getActions,\r\n\t\tcheckAvailability: checkAvailability,\r\n\t};\r\n\r\n\tasync function checkAvailability(action, selectedObjects) {\r\n\t\tif (!action || !action.id || action.isService || !selectedObjects || selectedObjects.length === 0) {\r\n\t\t\treturn { isAvailable: true };\r\n\t\t}\r\n\r\n\t\tconst objects = selectedObjects.map(function (obj) {\r\n\t\t\treturn {\r\n\t\t\t\tObjectId: obj['Sys-ObjectId2'] || obj._id || obj['Sys-ObjectId'] || obj.ObjectId || obj.objectId || obj.Id || obj.ID || obj.ObjectId,\r\n\t\t\t\tTypeName: obj['Sys-EntityType'] || obj.EntityType || obj['Sys-Entity'] || obj.ConfigurationItemTypeName || obj._type || obj.TypeName,\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\treturn mxHttp.post('api/actions/check/' + action.id, objects).then(function (result) {\r\n\t\t\treturn {\r\n\t\t\t\tisAvailable: result.IsAvailable,\r\n\t\t\t\tcacheId: result.CacheId,\r\n\t\t\t};\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getActionsFromService(forceLoad) {\r\n\t\tvar doCacheActions = (configService.get('skipCaching') || {}).actions !== true;\r\n\t\tvar serverActionsKey = 'mx.SolutionBuilderAgent.ActionsCache';\r\n\r\n\t\tif (doCacheActions && !forceLoad) {\r\n\t\t\tvar actions = cache.data[serverActionsKey];\r\n\r\n\t\t\tif (actions) {\r\n\t\t\t\treturn actions;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcache.data[serverActionsKey] = mxHttp.post('api/actions/entity', { Types: [] }).then(function (actions) {\r\n\t\t\treturn (actions || []).filter(function (action) {\r\n\t\t\t\treturn action.Id !== actionSetDefaultMailingEngineId;\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn cache.data[serverActionsKey];\r\n\t}\r\n\r\n\tfunction getActions(param) {\r\n\t\tvar forceLoad = param === true;\r\n\r\n\t\tif (getActionsPromise && !forceLoad) {\r\n\t\t\treturn getActionsPromise;\r\n\t\t}\r\n\r\n\t\tgetActionsPromise = userProfileService.get().then(function () {\r\n\t\t\treturn $q.all([getActionsFromService(forceLoad), contentWidgetService.getAllViews(forceLoad)]).then(function (result) {\r\n\t\t\t\tvar views = result[1] || [];\r\n\r\n\t\t\t\tvar actions;\r\n\t\t\t\tactions = result[0].map(function (item) {\r\n\t\t\t\t\tvar action = new mx.shell.Action(item.Name, item.Title, item.Icon);\r\n\r\n\t\t\t\t\taction.id = item.Id;\r\n\r\n\t\t\t\t\taction.availableTypes = item.Types || [];\r\n\t\t\t\t\taction.states = item.States;\r\n\t\t\t\t\taction.typesFilter = item.TypeFilter || mx.shell.ActionFilterType.Any;\r\n\t\t\t\t\taction.isService = item.IsService || false;\r\n\t\t\t\t\taction.statesFilter = item.StatesFilter;\r\n\t\t\t\t\taction.scriptFilter = item.ScriptFilter;\r\n\t\t\t\t\taction.applications = item.Applications && typeof item.Applications === 'string' ? item.Applications.split(',') : null;\r\n\r\n\t\t\t\t\taction.contextType =\r\n\t\t\t\t\t\ttypeof item.ObjectContextType === 'undefined'\r\n\t\t\t\t\t\t\t? mx.shell.ActionContextType.None\r\n\t\t\t\t\t\t\t: item.ObjectContextType === 1\r\n\t\t\t\t\t\t\t? mx.shell.ActionContextType.Single\r\n\t\t\t\t\t\t\t: mx.shell.ActionContextType.Multiple;\r\n\t\t\t\t\taction.position = item.Position;\r\n\t\t\t\t\taction.controller = item.Controller;\r\n\t\t\t\t\taction.controllerParams = item.ControllerParams;\r\n\t\t\t\t\taction.uiZones = item.UIZones;\r\n\t\t\t\t\taction.purpose = item.Purpose;\r\n\r\n\t\t\t\t\taction.deviceVisibility =\r\n\t\t\t\t\t\titem.DeviceVisibility === 1\r\n\t\t\t\t\t\t\t? mx.shell.ActionDeviceVisibility.DesktopOnly\r\n\t\t\t\t\t\t\t: item.DeviceVisibility === 2\r\n\t\t\t\t\t\t\t? mx.shell.ActionDeviceVisibility.MobileOnly\r\n\t\t\t\t\t\t\t: mx.shell.ActionDeviceVisibility.All;\r\n\r\n\t\t\t\t\taction.serviceOperation = item.ServiceOperation;\r\n\r\n\t\t\t\t\taction.reloadPageOnSuccess = item.ReloadPageOnSuccess;\r\n\r\n\t\t\t\t\tif (item.ImplementationType === 'u') {\r\n\t\t\t\t\t\taction.controller = function () {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\texecute: function (selectedObjects, action) {\r\n\t\t\t\t\t\t\t\t\texecuteOpenUrlAction(selectedObjects, action, item);\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (item.Widget) {\r\n\t\t\t\t\t\t\tvar title = item.Title;\r\n\r\n\t\t\t\t\t\t\tif (item.Widget.Type === mx.SolutionBuilderAgent.ContentWidgetType.Wizard) {\r\n\t\t\t\t\t\t\t\tvar wizardOptions = {\r\n\t\t\t\t\t\t\t\t\ttypeName: item.Widget.Entity,\r\n\t\t\t\t\t\t\t\t\twidgetId: item.Widget.Id,\r\n\t\t\t\t\t\t\t\t\tactionId: action.id,\r\n\t\t\t\t\t\t\t\t\tactionName: action.name,\r\n\t\t\t\t\t\t\t\t\twizardMode: mx.SolutionBuilderAgent.WizardMode.Default,\r\n\t\t\t\t\t\t\t\t\tname: title,\r\n\t\t\t\t\t\t\t\t\tdisplayName: title,\r\n\t\t\t\t\t\t\t\t\tfinishTitle: title,\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\taction.view = null;\r\n\t\t\t\t\t\t\t\taction.viewFn = function (selectedObjects, presetFields) {\r\n\t\t\t\t\t\t\t\t\twizardOptions.presetFields = presetFields;\r\n\t\t\t\t\t\t\t\t\twizardOptions.checkActionAvailability = function (selectedObjects) {\r\n\t\t\t\t\t\t\t\t\t\treturn checkAvailability(action, selectedObjects);\r\n\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\tvar wizardView = wizardService.getWizardView(wizardOptions);\r\n\t\t\t\t\t\t\t\t\tif (Array.isArray(selectedObjects) && selectedObjects.length <= 1) {\r\n\t\t\t\t\t\t\t\t\t\treturn userProfileService.isAdminMode().then(function (isAdmin) {\r\n\t\t\t\t\t\t\t\t\t\t\tif (isAdmin) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tcontentWidgetService.setViewUrl(wizardView, undefined, selectedObjects[0]);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\treturn wizardView;\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\treturn $q.when(wizardView);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t} else if (item.Widget.Type === mx.SolutionBuilderAgent.ContentWidgetType.Dialog) {\r\n\t\t\t\t\t\t\t\taction.view = null;\r\n\t\t\t\t\t\t\t\taction.Widget = item.Widget;\r\n\r\n\t\t\t\t\t\t\t\tif (item.ImplementationType === 'd') {\r\n\t\t\t\t\t\t\t\t\tsetEditDialog(action, views);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\taction.view = null;\r\n\t\t\t\t\t\t\t\taction.viewFn = function () {\r\n\t\t\t\t\t\t\t\t\treturn $q.when(\r\n\t\t\t\t\t\t\t\t\t\tnew DetailsView({\r\n\t\t\t\t\t\t\t\t\t\t\tname: title,\r\n\t\t\t\t\t\t\t\t\t\t\tdisplayName: title,\r\n\t\t\t\t\t\t\t\t\t\t\ttemplateUrl: item.Widget.Url,\r\n\t\t\t\t\t\t\t\t\t\t\tcontroller: item.Widget.Controller,\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tif (item.ImplementationType === 'd') {\r\n\t\t\t\t\t\t\t\tsetEditDialog(action, views);\r\n\r\n\t\t\t\t\t\t\t\taction.availableTypes = getSortedEditViews(views)\r\n\t\t\t\t\t\t\t\t\t.map(function (view) {\r\n\t\t\t\t\t\t\t\t\t\treturn view.Entity;\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t.filter(function (type) {\r\n\t\t\t\t\t\t\t\t\t\tswitch (action.typesFilter) {\r\n\t\t\t\t\t\t\t\t\t\t\tcase mx.shell.ActionFilterType.Specified:\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn action.availableTypes.indexOf(type) >= 0;\r\n\t\t\t\t\t\t\t\t\t\t\tcase mx.shell.ActionFilterType.ExceptSpecified:\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn action.availableTypes.indexOf(type) < 0;\r\n\t\t\t\t\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\taction.typesFilter = mx.shell.ActionFilterType.Specified;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn action;\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//TODO: use widget-manager\r\n\t\t\t\tvar groupedViewsByType = _.groupBy(views, 'Entity');\r\n\t\t\t\tvar extraActions = getExtraActions(groupedViewsByType);\r\n\t\t\t\tactions = configureDeleteActions(groupedViewsByType, actions);\r\n\t\t\t\tactions = actions.concat(extraActions);\r\n\r\n\t\t\t\treturn actions;\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn getActionsPromise;\r\n\t}\r\n\r\n\tfunction executeOpenUrlAction(objects, action, item) {\r\n\t\tvar url = item.Url.replace(/(?:{([^}]+)})/gi, function (a, g1) {\r\n\t\t\treturn action.contextType === mx.shell.ActionContextType.Single\r\n\t\t\t\t? new Function('object, action', 'return ' + g1)(objects[0], action)\r\n\t\t\t\t: action.contextType === mx.shell.ActionContextType.None\r\n\t\t\t\t? new Function('action', 'return ' + g1)(action)\r\n\t\t\t\t: new Function('objects, action', 'return ' + g1)(objects, action);\r\n\t\t});\r\n\r\n\t\twindow.open(url);\r\n\t}\r\n\r\n\tfunction setEditDialog(action, views) {\r\n\t\taction.useSameView = true;\r\n\t\taction.openInFullScreen = true;\r\n\r\n\t\taction.viewFn = async function (selectedObjects, presetFields) {\r\n\t\t\tconst actionView = await getActionViewForEditDialog(selectedObjects, action, presetFields, views);\r\n\t\t\tif (!actionView) {\r\n\t\t\t\tconst errorMessage = i18n.get('solutionBuilderAgent.errors.no_view');\r\n\t\t\t\tnotificationService.error(errorMessage);\r\n\t\t\t\tthrow new Error(errorMessage);\r\n\t\t\t}\r\n\t\t\tif (actionView.ShowAsWizard && !actionView.alwaysFullScreen) {\r\n\t\t\t\taction.openInFullScreen = false;\r\n\t\t\t}\r\n\t\t\treturn actionView;\r\n\t\t};\r\n\t}\r\n\r\n\tfunction getExtraActions(groupedViewsByType) {\r\n\t\tvar extraActions = [\r\n\t\t\tcreateLandingPageAction(\r\n\t\t\t\t'pandora.PDRLandingPageWidget.edit-dashboard',\r\n\t\t\t\ti18n.get('solutionBuilderAgent.actions.edit-dashboard'),\r\n\t\t\t\t'settings',\r\n\t\t\t\t'mx.SolutionBuilderAgent.EditDashboardController',\r\n\t\t\t\t10\r\n\t\t\t),\r\n\t\t];\r\n\r\n\t\tvar type;\r\n\r\n\t\tfor (type in groupedViewsByType) {\r\n\t\t\tif (groupedViewsByType.hasOwnProperty(type)) {\r\n\t\t\t\tvar viewsForType = groupedViewsByType[type];\r\n\t\t\t\tvar addViews = getSortedCreateViews(viewsForType);\r\n\t\t\t\tvar isService = type.indexOf('service_') === 0;\r\n\r\n\t\t\t\tif (addViews.length > 0) {\r\n\t\t\t\t\tvar view = addViews[0];\r\n\t\t\t\t\tvar actionTitle = i18n.getFormatted('solutionBuilderAgent.common.addPattern', view.EntityDisplayName ? ' ' + view.EntityDisplayName : '');\r\n\t\t\t\t\tconst genericAddAction = new mx.shell.Action('generic.new' + type, actionTitle, view.IconAdd || 'add');\r\n\t\t\t\t\tgenericAddAction.isService = isService;\r\n\t\t\t\t\tgenericAddAction.position = view.AddActionPosition || 10;\r\n\t\t\t\t\tgenericAddAction.uiZones = [mx.shell.ActionUiZone.SearchPage];\r\n\t\t\t\t\tgenericAddAction.deviceVisibility = 'All';\r\n\t\t\t\t\tgenericAddAction.purpose = mx.shell.ActionPurpose.Create;\r\n\t\t\t\t\tgenericAddAction.controller = 'mx.SolutionBuilderAgent.NewController';\r\n\t\t\t\t\tgenericAddAction.availableTypes = [type];\r\n\t\t\t\t\tgenericAddAction.openInFullScreen = true;\r\n\t\t\t\t\tgenericAddAction.typesFilter = mx.shell.ActionFilterType.Specified;\r\n\t\t\t\t\tgenericAddAction.isPrimary = true;\r\n\r\n\t\t\t\t\textraActions.push(genericAddAction);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn extraActions;\r\n\t}\r\n\r\n\tasync function getActionViewForEditDialog(selectedObjects, action, presetFields, views) {\r\n\t\tconst context = {\r\n\t\t\t_type: selectedObjects && selectedObjects[0] && (selectedObjects[0]._type || selectedObjects[0]['Sys-Entity']),\r\n\t\t\t_id: selectedObjects && selectedObjects[0] && (selectedObjects[0]._id || selectedObjects[0]['Sys-ObjectId'].toLowerCase()),\r\n\t\t\t_displayName:\r\n\t\t\t\t(selectedObjects && selectedObjects[0] && (selectedObjects[0]._displayName || selectedObjects[0]['Sys-DisplayName'])) ||\r\n\t\t\t\ti18n.get('solutionBuilderAgent.common.edit'),\r\n\t\t\t_name: 'Edit',\r\n\t\t};\r\n\t\tawait entityService.processObjectContext(context);\r\n\r\n\t\tif (!context._type) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst suitableViews = getSortedEditViews(views, context._type);\r\n\t\tlet actionView = null;\r\n\r\n\t\tconst personalizedViewId = await personalizationService.getDefaultEditDialogId(selectedObjects[0]._type);\r\n\t\tif (personalizedViewId) {\r\n\t\t\tactionView = suitableViews.find((v) => v.Id === personalizedViewId);\r\n\t\t}\r\n\r\n\t\tif (!actionView) {\r\n\t\t\tif (action?.Widget) {\r\n\t\t\t\tactionView = _.find(views, { Id: action.Widget.Id });\r\n\t\t\t} else {\r\n\t\t\t\tactionView = suitableViews && suitableViews[0];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!actionView) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (actionView.ShowAsWizard === true || !recentService.enabled) {\r\n\t\t\t// TODO: figure out why this mode accepts preset fields differently\r\n\t\t\tlet presets;\r\n\t\t\tif (presetFields) {\r\n\t\t\t\tpresets = {};\r\n\t\t\t\tpresets[context._type] = presetFields;\r\n\t\t\t}\r\n\r\n\t\t\tconst actionName = action.Title || action.title;\r\n\t\t\tconst itemWizard = {\r\n\t\t\t\ttypeName: context._type,\r\n\t\t\t\twidgetId: actionView.Id,\r\n\t\t\t\tactionId: actionView.Id,\r\n\t\t\t\tactionName: actionName,\r\n\t\t\t\twizardMode: mx.SolutionBuilderAgent.WizardMode.Edit,\r\n\t\t\t\tname: actionName,\r\n\t\t\t\tmergeDisabled: actionView.MergeDisabled,\r\n\t\t\t\tpresetFields: presets,\r\n\t\t\t};\r\n\r\n\t\t\tconst view = wizardService.getWizardView(itemWizard);\r\n\t\t\tview.alwaysFullScreen = false;\r\n\t\t\tview.headerIcon = actionView.EntityIcon;\r\n\t\t\tview.headerColor = actionView.EntityColor;\r\n\t\t\tview.headerTitle = actionView.EntityDisplayName;\r\n\t\t\tview.type = context._type;\r\n\t\t\tview.id = context._id;\r\n\t\t\tview.ShowAsWizard = true;\r\n\t\t\tview.dialogType = mx.SolutionBuilderAgent.ContentWidgetDialogAction.Edit;\r\n\t\t\tcontentWidgetService.setViewUrl(view, actionView.Id, context);\r\n\t\t\treturn view;\r\n\t\t}\r\n\r\n\t\treturn dialogFactory.createEditDialog(context, actionView, {\r\n\t\t\tpresetFields: presetFields,\r\n\t\t});\r\n\t}\r\n\r\n\tfunction configureDeleteActions(groupedViewsByType, actions) {\r\n\t\tconst typesAllowedForDelete = [];\r\n\t\tconst servicesForDelete = [];\r\n\r\n\t\tfor (let type in groupedViewsByType) {\r\n\t\t\tif (groupedViewsByType.hasOwnProperty(type)) {\r\n\t\t\t\tconst viewsForType = groupedViewsByType[type];\r\n\t\t\t\tconst canDelete = viewsForType.length > 0 ? viewsForType[0].CanDelete : false;\r\n\t\t\t\tconst arrayForAdd = type.indexOf('service_') === 0 ? servicesForDelete : typesAllowedForDelete;\r\n\t\t\t\tif (canDelete && arrayForAdd.indexOf(type) === -1) {\r\n\t\t\t\t\tarrayForAdd.push(type);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tactions.forEach(function (value) {\r\n\t\t\tlet actionTypes;\r\n\t\t\tif (value.name === 'Deleteobjects') {\r\n\t\t\t\tactionTypes = value.availableTypes !== null ? value.availableTypes : [];\r\n\r\n\t\t\t\tvalue.availableTypes =\r\n\t\t\t\t\tvalue.typesFilter === mx.shell.ActionFilterType.ExceptSpecified\r\n\t\t\t\t\t\t? typesAllowedForDelete.filter(function (item) {\r\n\t\t\t\t\t\t\t\treturn actionTypes.indexOf(item) === -1;\r\n\t\t\t\t\t\t })\r\n\t\t\t\t\t\t: _.intersection(actionTypes, typesAllowedForDelete);\r\n\t\t\t\tvalue.typesFilter = mx.shell.ActionFilterType.Specified;\r\n\t\t\t} else if (value.name === 'Deleteforservice') {\r\n\t\t\t\tactionTypes = value.availableTypes !== null ? value.availableTypes : [];\r\n\r\n\t\t\t\tvalue.availableTypes =\r\n\t\t\t\t\tvalue.typesFilter === mx.shell.ActionFilterType.ExceptSpecified\r\n\t\t\t\t\t\t? servicesForDelete.filter(function (item) {\r\n\t\t\t\t\t\t\t\treturn actionTypes.indexOf(item) === -1;\r\n\t\t\t\t\t\t })\r\n\t\t\t\t\t\t: _.intersection(actionTypes, servicesForDelete);\r\n\t\t\t\tvalue.typesFilter = mx.shell.ActionFilterType.Specified;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn actions;\r\n\t}\r\n\r\n\tfunction createLandingPageAction(name, title, icon, controller, position) {\r\n\t\tconst action = new mx.shell.Action(name, title, icon, controller, position);\r\n\r\n\t\taction.position = position;\r\n\t\taction.uiZones = [mx.shell.ActionUiZone.LandingPage];\r\n\t\taction.deviceVisibility = 'All';\r\n\t\taction.controller = controller;\r\n\t\taction.availableTypes = ['PDRContentWidgetTypeLandingPage'];\r\n\t\taction.openInFullScreen = true;\r\n\t\taction.typesFilter = mx.shell.ActionFilterType.Specified;\r\n\r\n\t\treturn action;\r\n\t}\r\n\r\n\tfunction getSortedCreateViews(viewsForType) {\r\n\t\t//TODO: remove it and use from widgetManager\r\n\t\treturn viewsForType\r\n\t\t\t.filter(function (view) {\r\n\t\t\t\treturn view.WidgetType === mx.SolutionBuilderAgent.ContentWidgetType.Dialog && view.Purpose !== 2 && !view.NotUseInCreateEditPurposes;\r\n\t\t\t})\r\n\t\t\t.sort(function (view1, view2) {\r\n\t\t\t\treturn view2.Priority - view1.Priority;\r\n\t\t\t});\r\n\t}\r\n\r\n\tfunction getSortedEditViews(views, typeName) {\r\n\t\t//TODO: remove it and use from widgetManager\r\n\t\treturn views\r\n\t\t\t.filter(function (view) {\r\n\t\t\t\tconst isDialog = view.WidgetType === mx.SolutionBuilderAgent.ContentWidgetType.Dialog;\r\n\t\t\t\tconst isCreateOnlyDialog = view.Purpose === 1;\r\n\t\t\t\tconst typeMatches = !typeName || view.Entity === typeName;\r\n\r\n\t\t\t\treturn isDialog && !isCreateOnlyDialog && typeMatches && !view.NotUseInCreateEditPurposes;\r\n\t\t\t})\r\n\t\t\t.sort(function (view1, view2) {\r\n\t\t\t\treturn view2.Priority - view1.Priority;\r\n\t\t\t});\r\n\t}\r\n}\r\n","import type { HttpService } from '../../../App/services/http-service';\r\nimport type { UserProfileService } from '../../../App/services/user-profile-service';\r\nimport type { ApplicationProvider, MxApplication } from '../../../App/model/application';\r\nimport type { UserProfile } from '../../../App/model/user-profile';\r\nimport type { DeviceService } from '../../../App/services/device-service';\r\n\r\ninterface ApplicationDTO {\r\n\tName: string;\r\n\tTitle: string;\r\n\tId: string;\r\n\r\n\tIcon?: string;\r\n\tNavigationItem?: string;\r\n\tPosition?: number;\r\n\tShowFavorites?: boolean;\r\n\tShowRecent?: boolean;\r\n\tSimpleNavigation?: boolean;\r\n\tShowNotificationMonitor?: boolean;\r\n\tUrl?: string;\r\n\tHelpValue?: string;\r\n\tHelpSourceType?: number;\r\n\tUnifiedSearchEnabled?: boolean;\r\n\tUnifiedSearchTitle1?: string;\r\n\tUnifiedSearchTitle2?: string;\r\n\tUnifiedSearchBackground?: string;\r\n\tUnifiedSearchTitleColorOverride?: string;\r\n}\r\n\r\n/**\r\n * @ngdoc service\r\n * @kind function\r\n * @name mx.shell.ApplicationProviderService\r\n * @module mx.shell\r\n *\r\n * @description\r\n * Represents an interface for injection concrete implementation of the Application Provider service.\r\n * The Application has to provide the concrete implementation of this service, which is registered in the di.map.json file.\r\n */\r\nexport class ApplicationProviderService implements ApplicationProvider {\r\n\tprivate loadApplicationPromise?: ReturnType;\r\n\tstatic $inject = ['mx.SolutionBuilderAgent.Http', 'mx.shell.UserProfileService', 'mx.app.DeviceService'];\r\n\tconstructor(private readonly http: HttpService, private readonly userProfileService: UserProfileService, private readonly deviceService: DeviceService) {}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.ApplicationProviderService#load\r\n\t *\r\n\t * @description\r\n\t * Loads application items.\r\n\t *\r\n\t * @returns {promise} Resolved as an array of MxApplication\r\n\t */\r\n\tpublic async load(reload = false) {\r\n\t\tif (!this.loadApplicationPromise || reload) {\r\n\t\t\tthis.loadApplicationPromise = this.loadApplication();\r\n\t\t}\r\n\r\n\t\treturn await this.loadApplicationPromise;\r\n\t}\r\n\r\n\tprivate mapAppItem(item: ApplicationDTO, profile: UserProfile): MxApplication {\r\n\t\treturn {\r\n\t\t\ticon: item.Icon,\r\n\t\t\tname: item.Name,\r\n\t\t\tnavigationItem: item.NavigationItem,\r\n\t\t\tposition: item.Position,\r\n\t\t\tshowFavourites: item.ShowFavorites,\r\n\t\t\tshowRecent: item.ShowRecent,\r\n\t\t\tsimpleNavigation: Boolean(item.SimpleNavigation) && !this.deviceService.screenMobile(),\r\n\t\t\tshowOperationMonitor: item.ShowNotificationMonitor,\r\n\t\t\ttitle: item.Title,\r\n\t\t\turl: item.Url,\r\n\t\t\tvalue: item.Id,\r\n\t\t\thelpValue: item.HelpValue,\r\n\t\t\thelpSourceType: item.HelpSourceType,\r\n\t\t\tunifiedSearchEnabled: Boolean(item.UnifiedSearchEnabled),\r\n\t\t\tunifiedSearchTitle1: item.UnifiedSearchTitle1?.replace('{UserFirstName}', profile.firstName || ''),\r\n\t\t\tunifiedSearchTitle2: item.UnifiedSearchTitle2,\r\n\t\t\tunifiedSearchBackground: item.UnifiedSearchBackground,\r\n\t\t\tunifiedSearchTitleColorOverride: item.UnifiedSearchTitleColorOverride,\r\n\t\t};\r\n\t}\r\n\r\n\tprivate async loadApplication() {\r\n\t\tconst profile = await this.userProfileService.get();\r\n\t\tconst applications = (await this.http.get('api/Application')) || [];\r\n\t\treturn applications.map((app) => this.mapAppItem(app, profile));\r\n\t}\r\n}\r\n","import { HttpService } from '../../../App/services/http-service';\r\nimport { ProcessItem, ProcessItemOptions } from '../model/process-item';\r\n\r\n/**\r\n * @ngdoc service\r\n * @kind function\r\n * @name mx.shell.BackgroundProcessProvider\r\n * @module mx.shell\r\n *\r\n * @description\r\n * Represents an interface for injection concrete implementation of the Background Process Provider.\r\n * The Application has to provide the concrete implementation of this service, which is registered in the di.map object.\r\n */\r\nexport class MxBackgroundProcessProvider {\r\n\tstatic $inject = ['mx.SolutionBuilderAgent.Http'];\r\n\tconstructor(private readonly http: HttpService) {}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.BackgroundProcessProvider#load\r\n\t *\r\n\t * @description\r\n\t * Loads Background Processes.\r\n\t *\r\n\t * @returns {promise} Resolved as an array of background process items\r\n\t */\r\n\tpublic async load(): Promise> {\r\n\t\tlet data = (await this.http.get>('api/backgroundprocess')) || [];\r\n\r\n\t\tconst isJSON = (value: string) => {\r\n\t\t\ttry {\r\n\t\t\t\tJSON.parse(value);\r\n\t\t\t\treturn true;\r\n\t\t\t} catch (e) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t};\r\n\t\t//if StatusDetails or OperationName is a JSON, then it is a parametrised strings; it is available only in ModernUI, so filter them for classic\r\n\t\tdata = data.filter((item) => !isJSON(item.StatusDetails) && !isJSON(item.OperationName));\r\n\r\n\t\treturn data.map((item) => new ProcessItem(item));\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.BackgroundProcessProvider#cancelProcess\r\n\t *\r\n\t * @description\r\n\t * Cancels existing process.\r\n\t *\r\n\t * @param {object} item - id of process to be deleted\r\n\t * @returns {promise}\r\n\t */\r\n\tpublic async cancelProcess(item: ProcessItem): Promise {\r\n\t\tawait this.http.post('api/backgroundprocess/' + item.id + '/cancel');\r\n\t\tif (item.cancellationUrl) {\r\n\t\t\tconst reg = /(https?:\\/\\/[\\w.]+\\/)(.+)/gi;\r\n\t\t\tconst result = reg.exec(item.cancellationUrl);\r\n\t\t\tif (result) {\r\n\t\t\t\tawait this.http.host(result[1]).get(result[2]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import { SystemStorageType } from '../../../App/model/system-storage-types';\r\nimport { DataStorage, IDataProvider } from '../../../App/services/mx-data-storage';\r\n\r\n/**\r\n * @ngdoc service\r\n * @kind function\r\n * @name mx.shell.TrackedProcessProvider\r\n * @module mx.shell\r\n *\r\n * @description\r\n * Provides operations to work with data storage to persist tracked processes\r\n */\r\nexport class MxTrackedProcessProvider {\r\n\tstatic $inject = ['mx.shell.DataStorage'];\r\n\tprivate readonly _storage: IDataProvider;\r\n\tprivate _trackedProcessIds: Array;\r\n\r\n\tconstructor(private readonly dataStorage: DataStorage) {\r\n\t\tthis._storage = this.dataStorage.getStorage(SystemStorageType.LocalStorage);\r\n\t\tthis._trackedProcessIds = (this._storage.getAsObject('mx.shell.backgroundProcessesService.trackedProcessIds') as Array) || [];\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.TrackedProcessesProvider#add\r\n\t *\r\n\t * @description\r\n\t * Adds new tracked process\r\n\t *\r\n\t * @param trackedProcessId\r\n\t */\r\n\tpublic add(trackedProcessId: string): void {\r\n\t\tconst id = trackedProcessId.toLocaleLowerCase();\r\n\t\tif (this._trackedProcessIds.indexOf(id) < 0) {\r\n\t\t\tthis._trackedProcessIds.push(id);\r\n\t\t\tthis._storage.setAsObject('mx.shell.backgroundProcessesService.trackedProcessIds', this._trackedProcessIds);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.TrackedProcessesProvider#sync\r\n\t *\r\n\t * @description\r\n\t * Synchronizes running processes with a tracked processes\r\n\t *\r\n\t * @param trackedProcessIds\r\n\t */\r\n\tpublic sync(trackedProcessIds: Array): void {\r\n\t\tconst ids = trackedProcessIds.map((id) => id.toLocaleLowerCase());\r\n\t\tthis._trackedProcessIds = ids.filter((id) => this._trackedProcessIds.includes(id));\r\n\t\tthis._storage.setAsObject('mx.shell.backgroundProcessesService.trackedProcessIds', this._trackedProcessIds);\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc property\r\n\t * @name mx.shell.TrackedProcessesProvider#count\r\n\t *\r\n\t * @description\r\n\t * Counts tracked processes\r\n\t */\r\n\tpublic get count(): number {\r\n\t\treturn this._trackedProcessIds.length;\r\n\t}\r\n}\r\n","import { NotificationService } from '../../../App/services/mx-notification-service';\r\nimport { I18n } from '../../../i18n/mx-internationalization';\r\nimport { ProcessItem } from '../model/process-item';\r\nimport { MxBackgroundProcessProvider } from './mx-background-process-provider';\r\nimport { MxTrackedProcessProvider } from './mx-tracked-process-provider';\r\n\r\nconst asyncContract = 'cbd32a6d-cdfc-45c2-8957-0eb09219e5dd';\r\n\r\ntype AsyncOperationOptions = {\r\n\tAsyncOperationContract: string;\r\n\tOperationId: string;\r\n\tOperationName: string;\r\n\tCompleted: boolean;\r\n\tFinishTime?: Date;\r\n};\r\n\r\nconst enum ProcessType {\r\n\tBackground = 'Background',\r\n\tForeground = 'Foreground',\r\n}\r\n\r\ntype ProcessStorage = Record>;\r\n\r\n/**\r\n * @ngdoc service\r\n * @name mx.shell.BackgroundProcessesService\r\n * @module mx.shell\r\n *\r\n * @requires $q\r\n * @requires {@ref mx.shell.Http mx.shell.Http}\r\n *\r\n * @description\r\n * Provides logic for obtaining and managing current background processes of Application.\r\n *\r\n * @property {object[]} trackedProcessesCount - Gets number of tracked background processes on that moment of time.\r\n * @property {object[]} backgroundProcesses - Gets list of the background processes that moment of time.\r\n * @property {object[]} foregroundProcesses - Gets list of the foreground processes that moment of time.\r\n * */\r\nexport class MxBackgroundProcessesService {\r\n\tstatic $inject = ['mx.shell.BackgroundProcessProvider', 'mx.shell.TrackedProcessProvider', 'mx.shell.NotificationService', 'mx.internationalization'];\r\n\tprivate _isLoading = false;\r\n\tprivate _reloadOnAdd = false;\r\n\tprivate processStorage: ProcessStorage = {\r\n\t\tBackground: [],\r\n\t\tForeground: [],\r\n\t};\r\n\tconstructor(\r\n\t\tprivate readonly backgroundProcessProvider: MxBackgroundProcessProvider,\r\n\t\tprivate readonly trackedProcessProvider: MxTrackedProcessProvider,\r\n\t\tprivate readonly notificationService: NotificationService,\r\n\t\tprivate readonly i18n: I18n\r\n\t) {}\r\n\r\n\tpublic get trackedProcessesCount(): number {\r\n\t\treturn this.trackedProcessProvider.count;\r\n\t}\r\n\r\n\tpublic get backgroundProcesses(): Array {\r\n\t\treturn this.processStorage[ProcessType.Background];\r\n\t}\r\n\r\n\tpublic get foregroundProcesses(): Array {\r\n\t\treturn this.processStorage[ProcessType.Foreground].filter((process) => !process.isExpired);\r\n\t}\r\n\r\n\tpublic get allProcesses(): Array {\r\n\t\treturn this.backgroundProcesses.concat(this.foregroundProcesses);\r\n\t}\r\n\r\n\tpublic get isLoading(): boolean {\r\n\t\treturn this._isLoading;\r\n\t}\r\n\r\n\tpublic set isLoading(value) {\r\n\t\tthis._isLoading = Boolean(value);\r\n\t}\r\n\r\n\tpublic get reloadOnAdd(): boolean {\r\n\t\treturn this._reloadOnAdd;\r\n\t}\r\n\r\n\tpublic set reloadOnAdd(value) {\r\n\t\tthis._reloadOnAdd = Boolean(value);\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.BackgroundProcessesService#loadBackgroundProcesses\r\n\t *\r\n\t * @description\r\n\t * Loads active background processes from server\r\n\t *\r\n\t * @returns {object} promise\r\n\t */\r\n\tpublic async loadBackgroundProcesses(): Promise {\r\n\t\tthis._isLoading = true;\r\n\t\tconst backgroundProcesses = await this.backgroundProcessProvider.load();\r\n\t\tconst runningProcesses = backgroundProcesses.concat(this.foregroundProcesses).filter((process) => process.id && !process.finishTime);\r\n\t\tthis.processStorage[ProcessType.Background] = backgroundProcesses;\r\n\t\tthis.trackedProcessProvider.sync(runningProcesses.map((process) => process.id));\r\n\t\tthis._isLoading = false;\r\n\t\treturn Boolean(backgroundProcesses);\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.BackgroundProcessesService#addTrackedProcess\r\n\t *\r\n\t * @description\r\n\t * Adds new id of new process to be tracked\r\n\t */\r\n\tpublic addTrackedProcess(obj: AsyncOperationOptions): void {\r\n\t\tif (obj && !obj.Completed && obj.AsyncOperationContract?.toLowerCase() === asyncContract && obj.OperationId) {\r\n\t\t\tthis.trackedProcessProvider.add(obj.OperationId);\r\n\t\t\tconst msg = this.i18n.getFormatted('shell.mx-shell-backgroundProcessesService.operation-started', obj.OperationName);\r\n\t\t\tthis.notificationService.info(msg);\r\n\t\t\tif (this._reloadOnAdd) {\r\n\t\t\t\tthis.loadBackgroundProcesses();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic addForegroundProcess(item: ProcessItem): void {\r\n\t\tconst items = this.processStorage[ProcessType.Foreground];\r\n\t\tconst index = items.findIndex((process) => process.id === item.id);\r\n\t\tif (index < 0) {\r\n\t\t\tthis.processStorage[ProcessType.Foreground] = items.filter((item) => !item.isExpired).concat([item]);\r\n\t\t\tthis.trackedProcessProvider.add(item.id);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.BackgroundProcessesService#cancelProcess\r\n\t *\r\n\t * @description\r\n\t * Cancels existing process\r\n\t *\r\n\t * @param {object} item - process info to be deleted\r\n\t */\r\n\tpublic async cancelProcess(item: ProcessItem): Promise {\r\n\t\tconst backgroundProcess = this.processStorage[ProcessType.Background].find((process) => process.id === item.id);\r\n\t\tif (backgroundProcess) {\r\n\t\t\tawait this.backgroundProcessProvider.cancelProcess(backgroundProcess);\r\n\t\t} else {\r\n\t\t\tawait this.processStorage[ProcessType.Foreground].find((process) => process.id === item.id)?.cancel();\r\n\t\t}\r\n\t\tthis.loadBackgroundProcesses();\r\n\t}\r\n}\r\n","MxContextService.$inject = ['$q', 'mx.shell.EventService', 'mx.shell.RoutingService', 'mx.internationalization'];\r\n\r\nclass MxContext {\r\n\tconstructor(injector, options) {\r\n\t\tObject.defineProperty(this, 'data', {\r\n\t\t\tget: this._getData,\r\n\t\t\tset: this._setData,\r\n\t\t});\r\n\t\tObject.defineProperty(this, 'async', {\r\n\t\t\twritable: false,\r\n\t\t\tvalue: options.async,\r\n\t\t});\r\n\t\tObject.defineProperty(this, 'cleanOnRouteChange', {\r\n\t\t\twritable: false,\r\n\t\t\tvalue: options.cleanOnRouteChange,\r\n\t\t});\r\n\t\tif (options.async) {\r\n\t\t\tObject.defineProperty(this, 'deferred', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tvalue: injector.$q.defer(),\r\n\t\t\t});\r\n\t\t}\r\n\t\tthis._data = options.data;\r\n\t}\r\n\t_getData() {\r\n\t\treturn this._data;\r\n\t}\r\n\t_setData(value) {\r\n\t\tthis._data = value;\r\n\t}\r\n\t_reset(injector) {\r\n\t\tif (this.async) {\r\n\t\t\tthis.deferred = injector.$q.defer();\r\n\t\t}\r\n\t\tthis.data = null;\r\n\t}\r\n\tpublish(injector, data) {\r\n\t\tif (data === null) {\r\n\t\t\tthis._reset(injector);\r\n\t\t} else if (this.async) {\r\n\t\t\tthis.deferred.resolve(data);\r\n\t\t} else {\r\n\t\t\tthis.data = data;\r\n\t\t}\r\n\t}\r\n\tread() {\r\n\t\treturn this.async ? this.deferred.promise : this.data;\r\n\t}\r\n}\r\n\r\nclass MxSelectedObjectsContext extends MxContext {\r\n\tconstructor(injector) {\r\n\t\tsuper(injector, new MxContextOptions([], false, true));\r\n\t}\r\n\tpublish(injector, data) {\r\n\t\tvar objects = data || [];\r\n\r\n\t\tthis.data = Array.isArray(objects) ? objects : [objects];\r\n\t\tinjector.eventService.dispatchEvent(mx.shell.EventCodes.ObjectSelectionChanged, this.data);\r\n\t}\r\n}\r\n\r\nclass MxActionsContextContext extends MxContext {\r\n\tconstructor(injector) {\r\n\t\tsuper(injector, new MxContextOptions(null, false, true));\r\n\t}\r\n\tpublish(injector, data, append) {\r\n\t\tif (!append && this.data === data) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!data) {\r\n\t\t\tthis.data = null;\r\n\t\t} else if (append) {\r\n\t\t\tvar currentContext = this.data;\r\n\r\n\t\t\tif (currentContext) {\r\n\t\t\t\tvar newContext = new mx.shell.ActionsContext();\r\n\r\n\t\t\t\tnewContext.concat(currentContext);\r\n\t\t\t\tnewContext.concat(data);\r\n\t\t\t\tthis.data = newContext;\r\n\t\t\t} else {\r\n\t\t\t\tthis.data = data;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.data = data;\r\n\t\t}\r\n\t\tinjector.eventService.dispatchEvent(mx.shell.EventCodes.ActionsContextChanged, this.data);\r\n\t}\r\n}\r\n\r\nfunction MxContextOptions(data, async, cleanOnRouteChange) {\r\n\tObject.defineProperty(this, 'data', {\r\n\t\twritable: true,\r\n\t\tvalue: data,\r\n\t});\r\n\tObject.defineProperty(this, 'async', {\r\n\t\twritable: true,\r\n\t\tvalue: Boolean(async),\r\n\t});\r\n\tObject.defineProperty(this, 'cleanOnRouteChange', {\r\n\t\twritable: true,\r\n\t\tvalue: Boolean(cleanOnRouteChange),\r\n\t});\r\n}\r\n\r\n/**\r\n * @ngdoc service\r\n * @name mx.shell.ContextService\r\n * @module mx.shell\r\n *\r\n * @description\r\n * Provides logic for obtaining and managing current context of the Application.\r\n *\r\n * @property {object[]} selectedObjects - Gets or sets list of the business objects selected on that moment of time.\r\n * @property {object} actionsContext - Gets or sets ActionContext defined for the current View*\r\n * */\r\nfunction MxContextService($q, eventService, routingService, internationalization) {\r\n\tvar contexts = {};\r\n\tvar globalVal = {};\r\n\r\n\tvar injector = {\r\n\t\t$q: $q,\r\n\t\teventService: eventService,\r\n\t};\r\n\r\n\teventService.subscribeGlobal(mx.shell.EventCodes.RouteActivated, function (event, route) {\r\n\t\tfor (var contextType in contexts) {\r\n\t\t\tif (contexts.hasOwnProperty(contextType)) {\r\n\t\t\t\tvar context = contexts[contextType];\r\n\r\n\t\t\t\tif (context.cleanOnRouteChange && !routingService.isCurrent(route.name, route.parameters)) {\r\n\t\t\t\t\tcontext.publish(injector, null);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tvar result = {\r\n\t\tregister: register,\r\n\t\tregisterContext: registerContext,\r\n\t\tpublish: publish,\r\n\t\tread: read,\r\n\t\tval: val,\r\n\t\tvalAsync: valAsync,\r\n\t};\r\n\r\n\tfunction val(name, data) {\r\n\t\t// Simple schema\r\n\t\tif (!name) {\r\n\t\t\tthrow new Error(internationalization.get('shell.errors.value_name_not_provided'));\r\n\t\t}\r\n\t\tif (typeof data === 'undefined') {\r\n\t\t\treturn globalVal[name];\r\n\t\t}\r\n\t\tglobalVal[name] = data;\r\n\t}\r\n\r\n\tfunction valAsync(name, data) {\r\n\t\treturn _val(name, data, true);\r\n\t}\r\n\r\n\tfunction _val(name, data, async) {\r\n\t\tname = formatValName(name);\r\n\t\tverifyContext(name, data, async);\r\n\t\tif (typeof data === 'undefined') {\r\n\t\t\treturn read(name);\r\n\t\t}\r\n\t\tpublish(name, data);\r\n\t}\r\n\r\n\tfunction formatValName(name) {\r\n\t\tif (!name) {\r\n\t\t\tthrow new Error(internationalization.get('shell.errors.value_name_not_provided'));\r\n\t\t}\r\n\t\treturn 'mx.shell.ValueContext.' + name;\r\n\t}\r\n\r\n\tfunction verifyContext(name, value, async) {\r\n\t\tvar context = contexts[name];\r\n\r\n\t\tif (!context) {\r\n\t\t\tregister(name, new MxContextOptions(value, async));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.ContextService#register\r\n\t *\r\n\t * @description\r\n\t * Registers new application context.\r\n\t *\r\n\t * @param {MxContextTypes} type - Type of the context.\r\n\t * @param {MxContextOptions} options - Context options\r\n\t */\r\n\tfunction register(type, options) {\r\n\t\tregisterContext(type, new MxContext(injector, options));\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.ContextService#registerContext\r\n\t *\r\n\t * @description\r\n\t * Registers new application context.\r\n\t *\r\n\t * @param {MxContextTypes | string} type - Type of the context.\r\n\t * @param {MxContext} context - Context\r\n\t */\r\n\tfunction registerContext(type, context) {\r\n\t\tif (!type) {\r\n\t\t\tthrow new Error(internationalization.get('shell.errors.registerContext_not_provided'));\r\n\t\t}\r\n\t\tif (contexts.hasOwnProperty(type)) {\r\n\t\t\tthrow new Error(internationalization.get('shell.errors.registerContext_type_already_registered'));\r\n\t\t}\r\n\t\tcontexts[type] = context;\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.ContextService#getContext\r\n\t *\r\n\t * @description\r\n\t * Gets application context by type.\r\n\t *\r\n\t * @param {MxContextTypes} type - Type of the context.\r\n\t */\r\n\tfunction getContext(type) {\r\n\t\tvar context = contexts[type];\r\n\r\n\t\tif (!context) {\r\n\t\t\tthrow new Error(internationalization.get('shell.errors.context_with_type') + ' ' + type + ' ' + internationalization.get('shell.errors.not_found'));\r\n\t\t}\r\n\t\treturn context;\r\n\t}\r\n\r\n\tfunction publish(type, data, append) {\r\n\t\tgetContext(type).publish(injector, data, append);\r\n\t}\r\n\r\n\tfunction read(type) {\r\n\t\treturn getContext(type).read();\r\n\t}\r\n\r\n\t// System contexts\r\n\r\n\tresult.registerContext(MxContextTypes.SelectedObjects, new MxSelectedObjectsContext(injector));\r\n\tresult.registerContext(MxContextTypes.ActionsContext, new MxActionsContextContext(injector));\r\n\r\n\tObject.defineProperty(result, 'selectedObjects', {\r\n\t\tget: getSelectedObjects,\r\n\t\tset: setSelectedObjects,\r\n\t});\r\n\tObject.defineProperty(result, 'actionsContext', {\r\n\t\tget: getActionsContext,\r\n\t\tset: setActionsContext,\r\n\t});\r\n\r\n\tresult.extendActionsContext = function (context) {\r\n\t\tpublish(MxContextTypes.ActionsContext, context, true);\r\n\t};\r\n\r\n\tfunction getSelectedObjects() {\r\n\t\treturn read(MxContextTypes.SelectedObjects);\r\n\t}\r\n\r\n\tfunction setSelectedObjects(objects) {\r\n\t\tpublish(MxContextTypes.SelectedObjects, objects);\r\n\t}\r\n\r\n\tfunction getActionsContext() {\r\n\t\treturn read(MxContextTypes.ActionsContext);\r\n\t}\r\n\r\n\tfunction setActionsContext(context) {\r\n\t\tpublish(MxContextTypes.ActionsContext, context);\r\n\t}\r\n\r\n\treturn result;\r\n}\r\n\r\nconst MxContextTypes = {\r\n\tSelectedObjects: 'mx.shell.SelectedObjects',\r\n\tActionsContext: 'mx.shell.ActionsContext',\r\n};\r\n\r\nexport { MxContextService, MxContextOptions, MxContextTypes };\r\n","DownloadHelpService.$inject = [];\r\n/**\r\n * @ngdoc service\r\n * @name mx.shell.DownloadHelpService\r\n * @module mx.shell\r\n *\r\n * @description\r\n * Provides methods for downloading files\r\n **/\r\nexport function DownloadHelpService() {\r\n\tfunction tryGetFileName(fileName) {\r\n\t\tif (fileName && fileName.split) {\r\n\t\t\tlet tempFileName = fileName.split(';')[1];\r\n\r\n\t\t\tif (tempFileName) {\r\n\t\t\t\ttempFileName = tempFileName.trim().split('=')[1];\r\n\r\n\t\t\t\tif (tempFileName) {\r\n\t\t\t\t\treturn decodeURI(tempFileName).replace(/\"/g, '') || 'NoFileName.dat';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn 'NoFileName.dat';\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.DownloadHelpService#downloadContent\r\n\t *\r\n\t * @param {object} response - Http response object\r\n\t * @param {ArrayBuffer} data - Contents of the file to be downloaded\r\n\t * @param {string} forceFileName - A name of a file to be downloaded.\r\n\t * If not specified - file name will be attempted to get from response headers\r\n\t *\r\n\t * @returns {boolean} If false - there were no sufficient data to download a file.\r\n\t *\r\n\t * @description\r\n\t * Used as a success response callback to save response to a file\r\n\t */\r\n\tfunction downloadContent(response, data, forceFileName) {\r\n\t\tif (!response) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tdata = data || response.data;\r\n\r\n\t\tif (!data) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst file = new Blob([data], { type: response.headers('content-type') });\r\n\t\tconst fileName = forceFileName || tryGetFileName(response.headers('Content-Disposition'));\r\n\r\n\t\tconst isChrome = !!window.chrome && (/Google Inc/.test(window.navigator.vendor) || !!window.chrome.webstore);\r\n\r\n\t\tconst isFf = /Firefox/.test(window.navigator.userAgent);\r\n\r\n\t\tconst isEdge = !!window.StyleMedia;\r\n\t\tconst urlLocal = URL || window.URL || window.webkitURL;\r\n\t\tconst link = angular.element('');\r\n\t\tif (isFf || isChrome) {\r\n\t\t\tconst urlObj = urlLocal.createObjectURL(file);\r\n\t\t\tconst a = link[0];\r\n\t\t\tdocument.body.appendChild(a);\r\n\t\t\tlink.attr('href', urlObj);\r\n\t\t\tlink.attr('target', '_self');\r\n\t\t\tlink.attr('download', fileName);\r\n\t\t\ta.click();\r\n\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tdocument.body.removeChild(a);\r\n\t\t\t\turlLocal.revokeObjectURL(urlObj);\r\n\t\t\t}, 100);\r\n\t\t} else if (isEdge) {\r\n\t\t\twindow.navigator.msSaveOrOpenBlob(file, fileName);\r\n\t\t} else {\r\n\t\t\tconst fileUri = URL.createObjectURL(file);\r\n\t\t\twindow.open(fileUri);\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\treturn { downloadContent: downloadContent };\r\n}\r\n","import type { HttpService } from '../../../App/services/http-service';\r\nimport type { ConfigService } from '../../../App/services/mx-config-service';\r\n\r\nexport class FeedbackProviderService {\r\n\tpublic isFeedbackVisible = false;\r\n\tpublic FeedbackEnabled = false;\r\n\r\n\tstatic $inject = ['mx.shell.Http', 'mx.shell.Config'];\r\n\tconstructor(private readonly http: HttpService, private readonly config: ConfigService) {}\r\n\r\n\tpublic async send(feedback: string): Promise {\r\n\t\tawait this.http.post('api/feedback/Send', feedback);\r\n\t}\r\n\r\n\tpublic getContext(): string {\r\n\t\treturn 'context comment';\r\n\t}\r\n\r\n\tpublic async isEnabled(): Promise {\r\n\t\tconst cfg = this.config.get('toolbar') || {};\r\n\t\tif (cfg.showFeedback) {\r\n\t\t\tconst data = await this.http.get('api/feedback/Enabled');\r\n\t\t\treturn Boolean(data);\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n}\r\n","MxInjectorService.$inject = ['$q', '$http', '$controller', '$injector', '$templateCache'];\r\n\r\n/**\r\n * @ngdoc service\r\n * @kind function\r\n * @name mx.shell.InjectorService\r\n * @module mx.shell\r\n *\r\n * @description\r\n * A service provides methods for loading controllers and views\r\n * */\r\nexport function MxInjectorService($q, $http, $controller, $injector, $templateCache) {\r\n\treturn {\r\n\t\tcontroller: controller,\r\n\t\tview: view,\r\n\t};\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.InjectorService#controller\r\n\t *\r\n\t * @description\r\n\t * Returns a promise that resolves controller\r\n\t *\r\n\t * @param {object} definition - a container for controller definition\r\n\t */\r\n\tfunction controller(definition) {\r\n\t\tvar defer = $q.defer();\r\n\r\n\t\tif (definition.controller) {\r\n\t\t\tif (typeof definition.controller === 'string' || typeof definition.controller === 'function') {\r\n\t\t\t\tvar ctrl;\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tctrl = $controller(definition.controller);\r\n\t\t\t\t} catch (exception) {\r\n\t\t\t\t\tthrow new Error('Cannot instantiate controller. exception: ' + exception + '. controller definition: ' + definition.controller);\r\n\t\t\t\t}\r\n\t\t\t\tdefer.resolve(ctrl);\r\n\t\t\t} else {\r\n\t\t\t\tthrow new Error('Cannot instantiate controller. Incorrect controller provided. Expected string or function');\r\n\t\t\t}\r\n\t\t} else if (definition.controllerUrl) {\r\n\t\t\t__non_webpack_require__([definition.controllerUrl], function (res) {\r\n\t\t\t\tdefer.resolve($injector.invoke(res));\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tdefer.resolve(null);\r\n\t\t}\r\n\t\treturn defer.promise;\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.InjectorService#view\r\n\t *\r\n\t * @description\r\n\t * Returns a promise that resolves view markup\r\n\t *\r\n\t * @param {string} url - a container for controller definition\r\n\t */\r\n\tfunction view(url) {\r\n\t\tvar defer = $q.defer();\r\n\r\n\t\t$http.get(url, { cache: $templateCache }).then(\r\n\t\t\tfunction (response) {\r\n\t\t\t\tdefer.resolve(response.data);\r\n\t\t\t},\r\n\t\t\tfunction () {\r\n\t\t\t\tthrow new Error('Cannot load ' + url);\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\treturn defer.promise;\r\n\t}\r\n}\r\n","/**\r\n * @ngdoc service\r\n * @name mx.shell.KeyboardNavigationService\r\n * @module mx.shell\r\n *\r\n * @description Provides registring/unregistring hotkeys functionality\r\n */\r\n\r\nMxKeyboardNavigationService.$inject = ['hotkeys'];\r\n\r\nexport function MxKeyboardNavigationService(hotkeys) {\r\n\tvar service = {\r\n\t\tregisterKey: registerKey,\r\n\t\tunregisterKey: unregisterKey,\r\n\t\tlistKeys: listKeys,\r\n\t\tgetKeyOptions: getKeyOptions,\r\n\t};\r\n\r\n\tvar registeredKeys = {};\r\n\r\n\treturn service;\r\n\r\n\tfunction getKeyOptions(key) {\r\n\t\treturn registeredKeys[key];\r\n\t}\r\n\r\n\tfunction registerKey(options) {\r\n\t\tvar isMultipleKeys = Array.isArray(options);\r\n\r\n\t\tif (isMultipleKeys) {\r\n\t\t\tvalidateOptions(options);\r\n\t\t\tapplyKeys(options);\r\n\t\t} else {\r\n\t\t\tvalidateOption(options);\r\n\t\t\tapplyKey(options);\r\n\t\t}\r\n\r\n\t\tfunction applyKeys(options) {\r\n\t\t\toptions.forEach(function (option) {\r\n\t\t\t\tapplyKey(option);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction applyKey(options) {\r\n\t\t\tvar key = options.key;\r\n\t\t\tvar description = options.description || 'No description';\r\n\t\t\tvar callback = options.callback;\r\n\t\t\tvar scope = options.scope;\r\n\t\t\tvar nameInTemplate = options.nameInTemplate;\r\n\t\t\tvar onRegister = options.onRegister;\r\n\t\t\tvar hint = options.hint;\r\n\r\n\t\t\tregisteredKeys[key] = options;\r\n\r\n\t\t\tif (onRegister) {\r\n\t\t\t\tonRegister();\r\n\t\t\t}\r\n\r\n\t\t\tif (scope) {\r\n\t\t\t\tif (nameInTemplate) {\r\n\t\t\t\t\tif (hint) {\r\n\t\t\t\t\t\tscope[nameInTemplate] = hint;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tscope[nameInTemplate] = key.split('+').slice(1).join('+');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscope.$on('$destroy', function () {\r\n\t\t\t\t\tdelete registeredKeys[key];\r\n\t\t\t\t});\r\n\r\n\t\t\t\thotkeys.bindTo(scope).add({\r\n\t\t\t\t\tcombo: key,\r\n\t\t\t\t\tdescription: description,\r\n\t\t\t\t\tcallback: callback,\r\n\t\t\t\t\tallowIn: ['INPUT', 'SELECT', 'TEXTAREA'],\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\thotkeys.add({\r\n\t\t\t\t\tcombo: key,\r\n\t\t\t\t\tdescription: description,\r\n\t\t\t\t\tcallback: callback,\r\n\t\t\t\t\tallowIn: ['INPUT', 'SELECT', 'TEXTAREA'],\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction unregisterKey(key) {\r\n\t\tif (!key) {\r\n\t\t\tthrow new Error('No hotkey to remove provided.');\r\n\t\t}\r\n\r\n\t\thotkeys.del(key);\r\n\t\tdelete registeredKeys[key];\r\n\t}\r\n\r\n\tfunction listKeys() {\r\n\t\treturn Object.keys(registeredKeys);\r\n\t}\r\n\r\n\tfunction validateOptions(options) {\r\n\t\toptions.forEach(function (option) {\r\n\t\t\tvalidateOption(option);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction validateOption(option) {\r\n\t\tif (!option) {\r\n\t\t\tthrow new Error('No options object provided.');\r\n\t\t}\r\n\r\n\t\tif (!option.key) {\r\n\t\t\tthrow new Error('No hotkey to add provided.');\r\n\t\t}\r\n\r\n\t\tif (!option.callback) {\r\n\t\t\tthrow new Error('No callback for a hotkey provided.');\r\n\t\t}\r\n\r\n\t\t// If (registeredKeys[option.key]) {\r\n\t\t// \tThrow new Error('Key already registered.');\r\n\t\t// }\r\n\t}\r\n}\r\n","MxObjectMapper.$inject = ['mx.internationalization'];\r\n/**\r\n * @ngdoc service\r\n * @name mx.shell.ObjectMapper\r\n * @module mx.shell\r\n *\r\n * @description\r\n * A service provides methods for mapping business items to pandora items. Can be rewritten\r\n * */\r\nexport function MxObjectMapper(i18n) {\r\n\treturn { mapItem: mapItem };\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.ObjectMapper#mapItem\r\n\t *\r\n\t * @description\r\n\t * Maps business object to {@ref mx.shell.Object object}. Should be implemented
\r\n\t * As result - those {@ref mx.shell.Object object} items must contain keys like:\r\n\t * - \"_id\"
\r\n\t * - \"_type\"
\r\n\t * - \"_name\"
\r\n\t * - \"_displayName\"
\r\n\t * - \"_state\"
\r\n\t *
\r\n\t * Details in {@ref mx.shell.Object Object description}\r\n\t *\r\n\t * @returns {mx.shell.Object} {@ref mx.shell.Object object}\r\n\t */\r\n\tfunction mapItem(item) {\r\n\t\titem._type = item['Sys-Entity'];\r\n\t\titem._id = item['Sys-ObjectId'] ? item['Sys-ObjectId'].toLowerCase() : item.ID ? item.ID.toLowerCase() : null;\r\n\t\titem._state = item['Sys-EntityState'];\r\n\t\t// item.DisplayString is needed for ObjectPicker and DefaultDQ\r\n\t\titem._displayName = item.DisplayString = item['Sys-DisplayName'] || item.DisplayString || i18n.notAvailable();\r\n\t\titem._name = item._displayName;\r\n\t\tif (item['Sys-Archived']) {\r\n\t\t\titem._archived = true;\r\n\t\t}\r\n\t\t// item._itemType = 'CI';\r\n\r\n\t\treturn item;\r\n\t}\r\n}\r\n","import { GroupType } from '../../PandoraSolutionBuilderAgent/model/enumerations';\r\nimport { EventCodes } from '../../../App/model/event-codes';\r\n\r\nSearchProviderService.$inject = [\r\n\t'$stateParams',\r\n\t'mx.shell.Config',\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.SidebarService',\r\n\t'mx.shell.View',\r\n\t'mx.internationalization',\r\n\t'mx.shell.RoutingService',\r\n\t'mx.SolutionBuilderAgent.SearchQueryGroup',\r\n];\r\n\r\n/**\r\n * @ngdoc service\r\n * @name mx.shell.SearchProviderService\r\n * @module mx.shell\r\n *\r\n * @description\r\n * A service provides methods to manage search and search related tasks.\r\n */\r\nexport function SearchProviderService($stateParams, config, eventService, sidebarService, MxView, i18n, routingService, SearchQueryGroup) {\r\n\tconst maxRecentSearches = (config.get('search') || {}).maxRecentSearches || 5;\r\n\tconst recentQueriesStorageKey = 'mx.search.rq:';\r\n\tconst searchFormStorageKey = 'mx.search.sf:';\r\n\r\n\tlet builderView;\r\n\r\n\tlet _currentSearch = {\r\n\t\tsearchForm: new SearchQueryGroup(),\r\n\t};\r\n\tlet contexts = [];\r\n\tlet customDataSetContext;\r\n\tlet globalSearchParametersPromise;\r\n\r\n\tlet searchExecuting = false;\r\n\tconst uiToken = 'uiToken:search-page-content';\r\n\tlet searchText = '';\r\n\tlet unifiedSearchExtraConfigFromComponent = {\r\n\t\tenabled: false,\r\n\t\tnavigationItems: [],\r\n\t};\r\n\r\n\tconst globalSearchContext = initGlobalSearchContext();\r\n\r\n\teventService.subscribeGlobal(mx.shell.EventCodes.RouteLoading, onRouteLoading);\r\n\teventService.subscribeGlobal(mx.shell.EventCodes.CurrentNavigationItemChanged, (e, { navigationItem }) => onNavigationItemChanged(navigationItem));\r\n\teventService.subscribeGlobal(mx.shell.EventCodes.NavigationChildrenLoaded, (e, { children }) => setContextsFromNavigationItems(children));\r\n\teventService.subscribeGlobal(mx.shell.EventCodes.NavigationLoaded, (e, { navItems }) => setContextsFromNavigationItems(navItems));\r\n\r\n\tconst self = {\r\n\t\tperformSearch: performSearch,\r\n\t\tgetCurrentGlobalSearchParameters: getCurrentGlobalSearchParameters,\r\n\t\tgetGlobalSearchContext: getGlobalSearchContext,\r\n\t\tisGlobalSearchRoute: isGlobalSearchRoute,\r\n\t\tisUnifiedSearchVisible: isUnifiedSearchVisible,\r\n\t\tshowUnifiedSearch: showUnifiedSearch,\r\n\t\thideUnifiedSearch: hideUnifiedSearch,\r\n\r\n\t\trunSearch: runSearch,\r\n\t\tcurrentContext: currentContext,\r\n\t\tsetContextsFromNavigationItems: setContextsFromNavigationItems,\r\n\t\tgetContexts: getContexts,\r\n\t\tcurrentSearch: currentSearch,\r\n\t\tgetCurrentSearchPageSearchOptions: getCurrentSearchPageSearchOptions,\r\n\t\topenAdvancedSearch: openAdvancedSearch,\r\n\t\topenSearchQueryBuilder: openSearchQueryBuilder,\r\n\t\tgetQueryOperatorText: getQueryOperatorText,\r\n\t\tgetBaseQueryId: getBaseQueryId,\r\n\r\n\t\tresetSearch: resetSearch,\r\n\t\tresetSearchParameters: resetSearchParameters,\r\n\t\tresetAdvancedSearch: resetAdvancedSearch,\r\n\t\tresetKeywordSearch: resetKeywordSearch,\r\n\t\tresetGridSearch: resetGridSearch,\r\n\t\tresetCustomFormSearch: resetCustomFormSearch,\r\n\t\tsetCustomDataSetContext: setCustomDataSetContext,\r\n\t\tuiToken: undefined,\r\n\t};\r\n\r\n\tObject.defineProperty(self, 'searchText', {\r\n\t\tenumerable: true,\r\n\t\tget: function () {\r\n\t\t\treturn searchText;\r\n\t\t},\r\n\t});\r\n\r\n\tObject.defineProperty(self, 'recentQueriesStorageKey', {\r\n\t\twritable: false,\r\n\t\tvalue: recentQueriesStorageKey,\r\n\t});\r\n\tObject.defineProperty(self, 'searchFormStorageKey', {\r\n\t\twritable: false,\r\n\t\tvalue: searchFormStorageKey,\r\n\t});\r\n\tObject.defineProperty(self, 'maxRecentSearches', {\r\n\t\twritable: false,\r\n\t\tvalue: maxRecentSearches,\r\n\t});\r\n\r\n\treturn self;\r\n\r\n\tfunction getGlobalSearchContext() {\r\n\t\treturn globalSearchContext;\r\n\t}\r\n\r\n\tasync function getContextsFromStateParams(allContexts, stateParams, checkSelection = false) {\r\n\t\tif (typeof stateParams !== 'string' || stateParams.length === 0) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\tconst contexts = [];\r\n\t\t(stateParams || '')\r\n\t\t\t.toLowerCase()\r\n\t\t\t.split(',')\r\n\t\t\t.filter((navigationId) => navigationId.length > 0)\r\n\t\t\t.map((stateContextString) => {\r\n\t\t\t\tconst selected = stateContextString[0] !== '!';\r\n\t\t\t\tconst navigationIdString = stateContextString.replace('!', '');\r\n\t\t\t\tconst stateNavigationIds = navigationIdString.split('_');\r\n\t\t\t\tconst stateNavigationId = stateNavigationIds[stateNavigationIds.length - 1];\r\n\r\n\t\t\t\tlet stateContexts = allContexts.filter((context) => navigationIdString === context.parameters.navigationId);\r\n\t\t\t\tlet context;\r\n\r\n\t\t\t\tif (stateContexts.length === 1) {\r\n\t\t\t\t\t// context for standard dataset without filters and structures\r\n\t\t\t\t\tcontext = stateContexts[0];\r\n\t\t\t\t} else if (stateContexts.length > 1) {\r\n\t\t\t\t\t//contexts for filters: state = navigationId\r\n\t\t\t\t\tcontext = stateContexts.find((stateContext) => stateContext.parameters.filterId === '');\r\n\t\t\t\t} else if (stateContexts.length === 0) {\r\n\t\t\t\t\tstateContexts = allContexts.filter((context) => stateNavigationId === context.parameters.navigationId);\r\n\t\t\t\t\tif (stateContexts.length > 1) {\r\n\t\t\t\t\t\t//contexts for filters: state = filterId_navigationId\r\n\t\t\t\t\t\tcontext = stateContexts.find((stateContext) => stateContext.parameters.filterId === stateNavigationIds[0]);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// for structure dynamic navigation items which was not loaded at the moment\r\n\t\t\t\t\t\tconst rootStructureContext = stateContexts[0];\r\n\t\t\t\t\t\tif (rootStructureContext) {\r\n\t\t\t\t\t\t\tif (rootStructureContext.navigationItem.childrenDynamicLoader) {\r\n\t\t\t\t\t\t\t\tconst contextLoader = rootStructureContext.navigationItem.childrenDynamicLoader().then((/*children*/) => {\r\n\t\t\t\t\t\t\t\t\tconst context = getContexts(true).find((context) => navigationIdString === context.parameters.navigationId);\r\n\t\t\t\t\t\t\t\t\tif (checkSelection && context) {\r\n\t\t\t\t\t\t\t\t\t\tcontext.selected = selected;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\treturn context;\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tcontexts.push(contextLoader);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tcontext = rootStructureContext;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!context) {\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (checkSelection) {\r\n\t\t\t\t\tcontext.selected = selected;\r\n\t\t\t\t}\r\n\t\t\t\tcontexts.push(context);\r\n\t\t\t});\r\n\t\treturn await Promise.all(contexts);\r\n\t}\r\n\r\n\tfunction getStateParamFromContexts(contexts, checkSelection = false) {\r\n\t\treturn contexts\r\n\t\t\t.map((context) => {\r\n\t\t\t\tconst filterString = context.parameters.filterType === 'filter' && context.parameters.filterId ? `${context.parameters.filterId}_` : '';\r\n\t\t\t\treturn (!checkSelection || context.selected ? '' : '!') + filterString + context.parameters.navigationId;\r\n\t\t\t})\r\n\t\t\t.join(',');\r\n\t}\r\n\r\n\tasync function getCurrentGlobalSearchParameters(ignoreManager) {\r\n\t\tglobalSearchParametersPromise = globalSearchParametersPromise || _getCurrentGlobalSearchParameters();\r\n\t\tconst parameters = await globalSearchParametersPromise;\r\n\r\n\t\tif (!ignoreManager && unifiedSearchExtraConfigFromComponent.enabled) {\r\n\t\t\t// available contexts on pages where global-search-manager is added with configured contexts\r\n\t\t\t// just contexts configured in LayoutDesigner should be available\r\n\t\t\t// Ex.: SSP => Workplaces, SSP => Home => Management Area\r\n\t\t\tconst contexts = unifiedSearchExtraConfigFromComponent.navigationItems.map((navigationItem) => navigationItem.searchContext);\r\n\t\t\treturn Object.assign({}, parameters, {\r\n\t\t\t\tnavigationId: $stateParams.navigationId,\r\n\t\t\t\tcontexts: contexts,\r\n\t\t\t\tfilteredContexts: contexts,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn parameters;\r\n\t}\r\n\r\n\tasync function _getCurrentGlobalSearchParameters() {\r\n\t\tconst allContexts = getContexts(true);\r\n\t\tallContexts.forEach((context) => (context.selected = false));\r\n\t\tconst navigationId = $stateParams.navigationId;\r\n\t\tconst extraContexts = await getContextsFromStateParams(allContexts, $stateParams.extraContexts);\r\n\t\tconst stateContexts = await getContextsFromStateParams(allContexts, $stateParams.contexts, true);\r\n\r\n\t\tconst parameters = {\r\n\t\t\tkeyword: $stateParams.keyword || '',\r\n\t\t\tcontexts: extraContexts.concat(getGlobalSearchContexts()),\r\n\t\t\textraContexts: extraContexts,\r\n\t\t\tisGlobal: isGlobalSearchRoute(),\r\n\t\t\tcurrentContext: currentContext(true),\r\n\t\t};\r\n\r\n\t\tif (parameters.isGlobal) {\r\n\t\t\tif (navigationId && stateContexts.length) {\r\n\t\t\t\t// 1. available contexts on global-search page which is opened after performing search from option 1.\r\n\t\t\t\tparameters.filteredContexts = parameters.contexts = stateContexts;\r\n\t\t\t\tparameters.navigationId = navigationId;\r\n\t\t\t} else if (stateContexts.length) {\r\n\t\t\t\t// 2. available contexts on standard global-search page (opened not from option 1)\r\n\t\t\t}\r\n\t\t} else if (parameters.currentContext) {\r\n\t\t\t// 3. available contexts for toolbar-search or unified-search on any dataset\r\n\t\t\tif (!parameters.contexts.includes(parameters.currentContext)) {\r\n\t\t\t\tparameters.contexts.push(parameters.currentContext);\r\n\t\t\t\tparameters.extraContexts.push(parameters.currentContext);\r\n\t\t\t}\r\n\t\t\tparameters.currentContext.selected = true;\r\n\t\t}\r\n\r\n\t\treturn parameters;\r\n\t}\r\n\r\n\tfunction initGlobalSearchContext() {\r\n\t\tconst currentStateParameters = routingService.getCurrent().parameters;\r\n\r\n\t\tif (currentStateParameters.keyword) {\r\n\t\t\t_currentSearch.keyword = currentStateParameters.keyword;\r\n\t\t}\r\n\r\n\t\tconst parameters = {\r\n\t\t\tappString: currentStateParameters.appString,\r\n\t\t\tkeyword: currentStateParameters.keyword,\r\n\t\t\tcontexts: currentStateParameters.contexts,\r\n\t\t\tnavigationId: null,\r\n\t\t};\r\n\r\n\t\treturn new mx.shell.SearchContext({\r\n\t\t\tname: 'Global_Search',\r\n\t\t\ttitle: i18n.get('shell.mx-search.noContext'),\r\n\t\t\tparameters: parameters,\r\n\t\t\trouteName: 'globalSearch',\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getContextTitle(navigationItem) {\r\n\t\tif (!navItemIsDynamic(navigationItem)) {\r\n\t\t\treturn navigationItem.title;\r\n\t\t}\r\n\r\n\t\tlet title = '';\r\n\r\n\t\twhile (navigationItem) {\r\n\t\t\ttitle = navigationItem.title + (title ? ' > ' : '') + title;\r\n\r\n\t\t\tif (!navItemIsDynamic(navigationItem)) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tnavigationItem = navigationItem.parent;\r\n\t\t}\r\n\r\n\t\treturn title;\r\n\t}\r\n\r\n\tfunction onRouteLoading() {\r\n\t\tglobalSearchParametersPromise = null;\r\n\t}\r\n\r\n\tasync function onNavigationItemChanged() {\r\n\t\tif (searchExecuting) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst searchParameters = await getCurrentGlobalSearchParameters();\r\n\r\n\t\tif (!searchParameters.currentContext) {\r\n\t\t\tself.currentSearch(null);\r\n\t\t} else {\r\n\t\t\tconst searchContext = searchParameters.currentContext;\r\n\t\t\tconst filters = searchContext.parameters.filterId ? [searchContext.parameters.filterId] : [];\r\n\t\t\tlet filterType = searchContext.parameters.filterType ? searchContext.parameters.filterType : '';\r\n\r\n\t\t\tif ($stateParams.extraFilter && !filters.includes($stateParams.extraFilter)) {\r\n\t\t\t\tfilters.push($stateParams.extraFilter);\r\n\t\t\t\tfilterType = 'filter';\r\n\t\t\t}\r\n\r\n\t\t\tself.currentSearch({\r\n\t\t\t\tkeyword: searchParameters.keyword,\r\n\t\t\t\tcontext: searchContext,\r\n\t\t\t\tuiToken: uiToken,\r\n\t\t\t\tfilters: filters,\r\n\t\t\t\tfilterType: filterType,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tasync function showUnifiedSearch(navigationItems = []) {\r\n\t\tunifiedSearchExtraConfigFromComponent = {\r\n\t\t\tenabled: Array.isArray(navigationItems) && navigationItems.length > 0,\r\n\t\t\tnavigationItems,\r\n\t\t};\r\n\r\n\t\teventService.dispatchEvent(mx.shell.EventCodes.GlobalSearchConfigChanged);\r\n\t}\r\n\r\n\tfunction hideUnifiedSearch() {\r\n\t\tunifiedSearchExtraConfigFromComponent = {\r\n\t\t\tenabled: false,\r\n\t\t\tnavigationItems: [],\r\n\t\t};\r\n\t}\r\n\r\n\tfunction isUnifiedSearchVisible() {\r\n\t\treturn unifiedSearchExtraConfigFromComponent.enabled || isGlobalSearchRoute();\r\n\t}\r\n\r\n\tfunction isGlobalSearchRoute() {\r\n\t\treturn routingService.getCurrent().name === 'globalSearch';\r\n\t}\r\n\r\n\tasync function performSearch(newSearchText, newSelectedContexts) {\r\n\t\tif (!newSearchText || newSearchText.length < 3 || searchExecuting) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsearchExecuting = true;\r\n\t\tnewSelectedContexts = Array.isArray(newSelectedContexts) ? newSelectedContexts : [];\r\n\t\tsearchText = newSearchText;\r\n\r\n\t\tconst curContext = currentContext(true);\r\n\r\n\t\tconst { filteredContexts, contexts, navigationId, extraContexts } = await getCurrentGlobalSearchParameters();\r\n\r\n\t\tconst selectedContexts = (filteredContexts || contexts).filter((context) => {\r\n\t\t\tcontext.selected = newSelectedContexts.indexOf(context) >= 0;\r\n\t\t\treturn context.selected;\r\n\t\t});\r\n\r\n\t\tconst newContext = curContext !== globalSearchContext && selectedContexts.length === 1 && curContext === selectedContexts[0] ? curContext : globalSearchContext;\r\n\r\n\t\tnewContext.parameters.keyword = searchText;\r\n\t\t/*\r\n\t\t\tif context is the same then just execute search with new keyword in search options,\r\n\t\t\totherwise set new options for search (keyword and also filters, filterType) and then change navigation.\r\n\t\t\tAfter navigation is changed new search page (mx-search-page-content) will load data with new options\r\n\t\t*/\r\n\t\tif (newContext === curContext) {\r\n\t\t\tconst searchOptions = self.currentSearch();\r\n\t\t\tsearchOptions.keyword = searchText;\r\n\t\t\tself.currentSearch(searchOptions);\r\n\t\t\teventService.dispatchEvent(mx.shell.EventCodes.Search, searchOptions);\r\n\t\t\tsearchExecuting = false;\r\n\t\t} else {\r\n\t\t\tnewContext.parameters.contexts = getStateParamFromContexts(filteredContexts || selectedContexts, true);\r\n\t\t\tnewContext.parameters.extraContexts = getStateParamFromContexts(extraContexts);\r\n\t\t\tnewContext.parameters.navigationId = navigationId;\r\n\r\n\t\t\tconst searchOptions = {\r\n\t\t\t\tglobalSearch: true,\r\n\t\t\t\tkeyword: searchText,\r\n\t\t\t\tcontext: newContext,\r\n\t\t\t\tuiToken: uiToken,\r\n\t\t\t\tfilters: newContext.parameters && newContext.parameters.filterId ? [newContext.parameters.filterId] : [],\r\n\t\t\t\tfilterType: (newContext.parameters && newContext.parameters.filterType) || '',\r\n\t\t\t};\r\n\t\t\tself.currentSearch(searchOptions);\r\n\t\t\troutingService.go(newContext.routeName, angular.copy(newContext.parameters)).then(function () {\r\n\t\t\t\tsearchExecuting = false;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction openAdvancedSearch(params) {\r\n\t\tconst context = (params && params.context) || self.currentContext();\r\n\r\n\t\tself.uiToken = params && params.uiToken;\r\n\t\tconst searchView = new MxView({\r\n\t\t\tid: '__advanced_search_view__',\r\n\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-advanced-search.searchIn') + ' ' + (context && context.title),\r\n\t\t\tlocals: {\r\n\t\t\t\tcontext: context,\r\n\t\t\t\tuiToken: self.uiToken,\r\n\t\t\t\tdataQueryList: params.dataQueryList,\r\n\t\t\t},\r\n\t\t\tcontroller: function () {},\r\n\t\t\ttemplate: ``,\r\n\t\t});\r\n\r\n\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\teventName: `Advanced search opened`,\r\n\t\t\tsender: params?.dataQueryList?.parameters.id,\r\n\t\t\tsenderTitle: params?.dataQueryList?.parameters.name,\r\n\t\t\tcontextTypeId: params?.dataQueryList?.parameters.entities.map((entity) => entity.id),\r\n\t\t\tcontextTypeTitle: params?.dataQueryList?.parameters.entities.map((entity) => entity.name),\r\n\t\t});\r\n\r\n\t\tsidebarService.open(searchView);\r\n\t}\r\n\r\n\tfunction getQueryOperatorText(value, defaultValue) {\r\n\t\tlet result = defaultValue || 'and';\r\n\r\n\t\tif (value) {\r\n\t\t\tresult = value === mx.SolutionBuilderAgent.SearchQueryLogicalOperator.OR || (value.toLowerCase && value.toLowerCase() === 'or') ? 'or' : 'and';\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tfunction openSearchQueryBuilder(params) {\r\n\t\tbuilderView = new MxView({\r\n\t\t\tid: '__search_query_builder__',\r\n\t\t\tname: params.title || i18n.get('solutionBuilderAgent.components.mx-search-query-builder.editQuery'),\r\n\t\t\tlocals: {\r\n\t\t\t\tquery: params.query,\r\n\t\t\t\tcontext: params.context,\r\n\t\t\t\tparent: params.parent,\r\n\t\t\t\tshowInNavigation: params.showInNavigation,\r\n\t\t\t\tuiToken: self.uiToken,\r\n\t\t\t\tdataQueryList: params.dataQueryList,\r\n\t\t\t},\r\n\t\t\tcontroller: function () {\r\n\t\t\t\tconst vm = this;\r\n\r\n\t\t\t\tvm.closePanel = () => {\r\n\t\t\t\t\topenAdvancedSearch({\r\n\t\t\t\t\t\tuiToken: vm.uiToken,\r\n\t\t\t\t\t\tcontext: vm.context,\r\n\t\t\t\t\t\tdataQueryList: vm.dataQueryList,\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\ttemplate: `\r\n\t\t\t\t\r\n\t\t\t\t`,\r\n\t\t});\r\n\t\tsidebarService.open(builderView);\r\n\t}\r\n\r\n\tfunction resetKeywordSearch() {\r\n\t\tconst currentSearch = self.currentSearch();\r\n\t\tcurrentSearch.keyword = '';\r\n\t\trunSearch(currentSearch);\r\n\t}\r\n\r\n\tfunction resetGridSearch() {\r\n\t\tconst currentSearch = self.currentSearch();\r\n\r\n\t\tcurrentSearch.searchForm.searchText = '';\r\n\t\tcurrentSearch.searchForm.setGroup(new SearchQueryGroup(), GroupType.GridSearch);\r\n\r\n\t\trunSearch(currentSearch);\r\n\t}\r\n\r\n\tfunction resetAdvancedSearch() {\r\n\t\tconst currentSearch = self.currentSearch();\r\n\t\tcurrentSearch.searchForm.setGroup(new SearchQueryGroup(), GroupType.QueryBuilder);\r\n\t\trunSearch(currentSearch);\r\n\t}\r\n\r\n\tfunction resetCustomFormSearch() {\r\n\t\tconst currentSearch = self.currentSearch();\r\n\r\n\t\tcurrentSearch.searchForm.customFormConditions.length = 0;\r\n\r\n\t\trunSearch(currentSearch);\r\n\t}\r\n\r\n\tfunction resetSearchParameters() {\r\n\t\tconst currentSearch = self.currentSearch();\r\n\t\tconst currentContext = self.currentContext();\r\n\t\tlet baseFilter;\r\n\r\n\t\tcurrentSearch.keyword = '';\r\n\t\tcurrentSearch.searchForm = new SearchQueryGroup();\r\n\r\n\t\tif (currentContext) {\r\n\t\t\tbaseFilter = self.getBaseQueryId(currentContext.parameters);\r\n\t\t}\r\n\t\tcurrentSearch.filters = baseFilter ? [baseFilter] : [];\r\n\t\treturn currentSearch;\r\n\t}\r\n\r\n\tfunction resetSearch() {\r\n\t\tconst currentSearch = resetSearchParameters();\r\n\t\trunSearch(currentSearch);\r\n\t}\r\n\r\n\tfunction runSearch(options) {\r\n\t\tconst searchOptions = options || self.currentSearch();\r\n\r\n\t\tif (searchOptions.context) {\r\n\t\t\tconst newOptions = {\r\n\t\t\t\tkeyword: searchOptions.keyword || '',\r\n\t\t\t\tcontext: searchOptions.context,\r\n\t\t\t\tfilters: searchOptions.filters || [],\r\n\t\t\t\tfiltersOperator: searchOptions.filtersOperator || mx.SolutionBuilderAgent.SearchQueryLogicalOperator.AND,\r\n\t\t\t\tsearchForm: searchOptions.searchForm,\r\n\t\t\t\tuiToken: searchOptions.uiToken,\r\n\t\t\t\tuserId: searchOptions.userId,\r\n\t\t\t\tdataQueryList: searchOptions.dataQueryList,\r\n\t\t\t\tdontHideCustomForm: searchOptions.dontHideCustomForm,\r\n\t\t\t};\r\n\r\n\t\t\tself.currentSearch(newOptions);\r\n\t\t\teventService.dispatchEvent(mx.shell.EventCodes.Search, newOptions);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setCustomDataSetContext(context) {\r\n\t\tcustomDataSetContext = context;\r\n\t}\r\n\r\n\tfunction currentContext() {\r\n\t\tconst currentState = routingService.getCurrent();\r\n\t\tif (currentState.name === 'customDataSet') {\r\n\t\t\treturn customDataSetContext;\r\n\t\t} else {\r\n\t\t\tcustomDataSetContext = null;\r\n\t\t}\r\n\r\n\t\tlet { navigationId, filterType, filterId } = currentState.parameters;\r\n\t\tconst contexts = getContexts(true);\r\n\r\n\t\treturn contexts.find((ctx) => ctx.parameters.navigationId === navigationId && ctx.parameters.filterId === filterId && ctx.parameters.filterType === filterType);\r\n\t}\r\n\r\n\tfunction setContextsFromNavigationItems(navItems) {\r\n\t\tif (Array.isArray(navItems)) {\r\n\t\t\tnavItems.forEach((navItem) => addSearchContext(navItem));\r\n\t\t\tcontexts.sort(({ title: name1 }, { title: name2 }) => (name1 > name2 ? 1 : name1 < name2 ? -1 : 0));\r\n\t\t}\r\n\t}\r\n\r\n\tfunction navItemIsDynamic(navigationItem) {\r\n\t\treturn (navigationItem.parameters?.filterType === 'structure' && navigationItem.parameters?.filterId) || navigationItem.parameters?.filterType === 'filter';\r\n\t}\r\n\r\n\tfunction createSearchContext(navigationItem) {\r\n\t\treturn new mx.SolutionBuilderAgent.SearchContext({\r\n\t\t\tname: navigationItem.name,\r\n\t\t\ttitle: getContextTitle(navigationItem),\r\n\t\t\trouteName: navigationItem.routingItem.name || navigationItem.routingItem,\r\n\t\t\tparameters: navigationItem.parameters,\r\n\t\t\tshowInGlobalSearch: navigationItem.availableInSearch,\r\n\r\n\t\t\tdataQuery: navigationItem.dataQuery,\r\n\t\t\twidgetId: navigationItem.contentWidgetId,\r\n\t\t\tnavigationItem: navigationItem,\r\n\t\t});\r\n\t}\r\n\r\n\tfunction addSearchContext(navigationItem) {\r\n\t\tif (navigationItem.routingItem && navigationItem.routingItem.name === 'searchPage') {\r\n\t\t\tconst ctx = createSearchContext(navigationItem);\r\n\t\t\tconst contextExist = contexts.find(\r\n\t\t\t\t({ parameters: { navigationId, filterId, filterType } }) =>\r\n\t\t\t\t\tnavigationId === ctx.parameters.navigationId && filterId === ctx.parameters.filterId && filterType === ctx.parameters.filterType\r\n\t\t\t);\r\n\r\n\t\t\tif (!contextExist) {\r\n\t\t\t\tcontexts.push(ctx);\r\n\t\t\t\tnavigationItem.searchContext = ctx;\r\n\t\t\t} else {\r\n\t\t\t\tnavigationItem.searchContext = contextExist;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (Array.isArray(navigationItem.children)) {\r\n\t\t\tnavigationItem.children.forEach((childItem) => {\r\n\t\t\t\t// For Structures used in navigation this property is undefined.\r\n\t\t\t\tif (!childItem.dataQuery) {\r\n\t\t\t\t\tchildItem.dataQuery = navigationItem.dataQuery;\r\n\t\t\t\t}\r\n\t\t\t\taddSearchContext(childItem);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getCurrentSearchPageSearchOptions() {\r\n\t\tconst currentContext = self.currentContext();\r\n\t\tconst searchOptions = self.currentSearch();\r\n\r\n\t\tif (searchOptions && searchOptions.context === currentContext) {\r\n\t\t\treturn searchOptions;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tcontext: currentContext,\r\n\t\t\tfilters: currentContext && currentContext.parameters && currentContext.parameters.filterId ? [currentContext.parameters.filterId] : [],\r\n\t\t\tfilterType: (currentContext && currentContext.parameters && currentContext.parameters.filterType) || '',\r\n\t\t};\r\n\t}\r\n\r\n\tfunction getContexts(withFiltersContexts = false) {\r\n\t\treturn withFiltersContexts ? contexts.slice() : contexts.filter((context) => !context.navigationItem.__fromFilter);\r\n\t}\r\n\r\n\tfunction getGlobalSearchContexts() {\r\n\t\treturn getContexts(true).filter((item) => item.showInGlobalSearch);\r\n\t}\r\n\r\n\tfunction currentSearch(searchOptions) {\r\n\t\tif (searchOptions) {\r\n\t\t\tsearchOptions.searchForm = searchOptions.searchForm || new SearchQueryGroup();\r\n\t\t\t_currentSearch = searchOptions;\r\n\t\t}\r\n\t\treturn _currentSearch;\r\n\t}\r\n\r\n\tfunction getBaseQueryId(targetParams) {\r\n\t\tconst currentRouteParameters = routingService.getCurrent()?.parameters;\r\n\t\tconst getFilterId = (parameters) => (parameters?.filterType === 'filter' && parameters?.filterId) || '';\r\n\t\tconst currentRouteFilterId = getFilterId(currentRouteParameters);\r\n\r\n\t\treturn !currentRouteFilterId || (currentRouteFilterId && targetParams?.navigationId && targetParams?.navigationId !== currentRouteParameters?.navigationId)\r\n\t\t\t? getFilterId(targetParams)\r\n\t\t\t: currentRouteFilterId;\r\n\t}\r\n}\r\n","SideLayout.$inject = ['mx.shell.EventService'];\r\n\r\n/**\r\n * @ngdoc service\r\n * @name mx.shell.SideLayout\r\n * @module mx.shell\r\n *\r\n * @property keepClosed {boolean} - a flag that controls visibility and showing behaviour of {@ref mx.shell:mxSidePanel side panel}.\r\n * If `true' then `SidePanel` will not be opened in any case (change selection, add new `View`, ... ).\r\n * This is kind of \"pin\" functionality.\r\n * @property {boolean} visible - Reflect visibility of {@ref mx.shell:mxSideLayout Side Layout}.
\r\n * @property {boolean} fullScreenMode - defines if a full screen mode is enabled.\r\n * If true - then {@ref mx.shell:mxSideLayout Side Layout} is opened, and closed otherwise\r\n * @description\r\n * Just controls visibility of Side Layout panel\r\n */\r\nexport function SideLayout(eventService) {\r\n\tvar self = {\r\n\t\tkeepClosed: false,\r\n\t\tvisible: false,\r\n\t\tfullScreenMode: false,\r\n\t\tshow: show,\r\n\t\thide: hide,\r\n\t\tswitchFullScreenMode: switchFullScreenMode,\r\n\t};\r\n\r\n\tvar _debouncedLayoutChangeDispatcher = $.debounce(500, function () {\r\n\t\teventService.dispatchEvent(mx.shell.EventCodes.LayoutChanged, 'sideLayoutResized');\r\n\t});\r\n\r\n\treturn self;\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.SideLayout#show\r\n\t *\r\n\t * @description\r\n\t * Shows {@ref mx.shell:mxSideLayout Side Layout}\r\n\t */\r\n\tfunction show() {\r\n\t\tif (!self.visible) {\r\n\t\t\tself.visible = true;\r\n\t\t\teventService.dispatchEvent(mx.shell.EventCodes.SidePanelVisibility, true);\r\n\t\t\t_debouncedLayoutChangeDispatcher();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.SideLayout#hide\r\n\t *\r\n\t * @description\r\n\t * Hides {@ref mx.shell:mxSideLayout Side Layout}\r\n\t */\r\n\tfunction hide() {\r\n\t\tif (self.visible) {\r\n\t\t\tself.visible = false;\r\n\t\t\teventService.dispatchEvent(mx.shell.EventCodes.SidePanelVisibility, false);\r\n\t\t\t_debouncedLayoutChangeDispatcher();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.SideLayout#switchFullScreenMode\r\n\t *\r\n\t * @description\r\n\t * Switches Full Screen Mode\r\n\t * @param {boolean} isEnabled - defines if Full Screen Mode should be enabled or disabled. If not passed then flag will be changed to opposite.\r\n\t */\r\n\tfunction switchFullScreenMode(isEnabled) {\r\n\t\tvar fullScreenMode = typeof isEnabled === 'undefined' ? !self.fullScreenMode : Boolean(isEnabled);\r\n\r\n\t\tif (self.fullScreenMode !== fullScreenMode) {\r\n\t\t\tself.fullScreenMode = fullScreenMode;\r\n\t\t\teventService.dispatchEvent(mx.shell.EventCodes.SideLayoutWideModeSwitched, self.fullScreenMode);\r\n\t\t\t_debouncedLayoutChangeDispatcher();\r\n\t\t}\r\n\r\n\t\treturn self.fullScreenMode;\r\n\t}\r\n}\r\n","SidePanelActionsService.$inject = [\r\n\t'mx.shell.ContextService',\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.SidePanelService',\r\n\t'mx.shell.ActionManagerService',\r\n\t'mx.shell.NotificationService',\r\n\t'mx.shell.InternationalizationService',\r\n\t'mx.internationalization',\r\n\t'$window',\r\n\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n];\r\n\r\n/**\r\n * @ngdoc service\r\n * @name mx.shell.SidePanelActionsService\r\n * @module mx.shell\r\n *\r\n * @requires {@ref mx.shell.DetailsView mx.shell.DetailsView}\r\n * @requires {@ref mx.shell.ContextService mx.shell.ContextService}\r\n * @requires {@ref mx.shell.SidePanelService mx.shell.SidePanelService}\r\n * @requires {@ref mx.shell.EventService mx.shell.EventService}\r\n * @requires {@ref mx.shell.ActionManagerService mx.shell.ActionManagerService}\r\n * @requires {@ref mx.shell.NotificationService mx.shell.NotificationService}\r\n * @requires {@ref mx.internationalization mx.internationalization}\r\n * @requires $window\r\n * @requires $rootScope\r\n *\r\n * @property {array} commonSelectedItemsActions - common actions for selected items\r\n * @property {array} uiActions - a list of `uiActions`.\r\n * This `uiActions` - it's special buttons on top of {@ref mx.shell.SidePanelService SidePanelService},\r\n * that allows to execute something when user click on them.
\r\n * Examples of `uiActions`: \"Open in Excel\", \"Copy to clipboard\", \"Open in new window\"...
\r\n * `uiActions` can be unique for each {@ref mx.shell.DetailsView DetailsView}.\r\n * {@ref mx.shell.DetailsView DetailsView} has an property `uiActionGroup` as well as each `uiAction` has it\r\n * by which {@ref mx.shell.SidePanelService SidePanelService} knows what `uiActions` should be shown\r\n * when some {@ref mx.shell.DetailsView DetailsView} is shown.\r\n * There are two system `uiActionGroup`s:\r\n * - \"selection\" (for selection tab);\r\n * - \"details_view\" (default).\r\n * @description\r\n * Controls SidePanel actions.\r\n */\r\nexport function SidePanelActionsService(\r\n\tcontextService,\r\n\teventService,\r\n\tsidePanelService,\r\n\tactionManagerService,\r\n\tnotificationService,\r\n\ti18nService,\r\n\ti18n,\r\n\t$window,\r\n\tcontentWidgetService\r\n) {\r\n\tvar self = {\r\n\t\tactionTypes: [mx.shell.ActionContextType.None, mx.shell.ActionContextType.Single, mx.shell.ActionContextType.Multiple],\r\n\t\taddUIAction: addUIAction,\r\n\t\tcalculateCommonActions: calculateCommonActionsForSelectedObjects,\r\n\t\tcalculateViewActions: calculateViewActions,\r\n\t\tgetUIActions: getUIActions,\r\n\t\tuiActions: [],\r\n\t};\r\n\r\n\taddUIAction(\r\n\t\t'with-corresponding-url',\r\n\t\ti18n.get('shell.common.open-in-new-window'),\r\n\t\tfunction () {\r\n\t\t\tif (this.correspondingUrl) {\r\n\t\t\t\tvar search = window.location.search ? window.location.search.replace(/view-options=.+?(?:&|$)/gi, '') : '?';\r\n\r\n\t\t\t\tvar last = search[search.length - 1];\r\n\t\t\t\tif (last !== '&' && last !== '?') {\r\n\t\t\t\t\tsearch = search + '&';\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$window.open(window.location.pathname + search + this.correspondingUrl, '_blank');\r\n\t\t\t} else {\r\n\t\t\t\tnotificationService.error(i18n.get('shell.common.no-URL-for-view'));\r\n\t\t\t}\r\n\t\t},\r\n\t\t'open-in-new-window-menu-item'\r\n\t);\r\n\r\n\taddUIAction(\r\n\t\t'is_printable',\r\n\t\ti18n.get('shell.common.print'),\r\n\t\tfunction () {\r\n\t\t\tif (this.printUrl) {\r\n\t\t\t\t$window.open(this.printUrl, '_blank');\r\n\t\t\t} else {\r\n\t\t\t\tnotificationService.error(i18n.get('shell.common.no-URL-for-view'));\r\n\t\t\t}\r\n\t\t},\r\n\t\t'print-menu-item'\r\n\t);\r\n\r\n\taddUIAction(\r\n\t\t'is_configurable',\r\n\t\ti18n.get('solutionBuilderAgent.common.configure'),\r\n\t\tfunction () {\r\n\t\t\tcontentWidgetService.openConfigurePreview(sidePanelService.currentView);\r\n\t\t},\r\n\t\t'configure-menu-item',\r\n\t\ttrue\r\n\t);\r\n\r\n\taddUIAction(\r\n\t\t'is_customizable',\r\n\t\ti18n.get('shell.common.changeLayout'),\r\n\t\tfunction () {\r\n\t\t\tcontentWidgetService.customizeViewInDesigner(sidePanelService.currentView);\r\n\t\t},\r\n\t\t'customize-menu-item',\r\n\t\ttrue\r\n\t);\r\n\r\n\ti18nService.getLanguages().then(function (langs) {\r\n\t\tif (langs && langs.length > 1) {\r\n\t\t\t_registerLocalizationAction();\r\n\t\t}\r\n\t});\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.SidePanelActionsService#addUIAction\r\n\t *\r\n\t * @description\r\n\t * defines new `uiAction'\r\n\t *\r\n\t * @param {string} uiActionGroup - a group by which actions will be grouped and\r\n\t * connected with {@ref mx.shell.DetailsView DetailsView} which has a property with the same name\r\n\t * @param {string} label - a label, that will be shown on UI\r\n\t * @param {function} handler - a handler that will be executed when User click on this `uiAction` on UI.\r\n\t * @param {string} name - action technical name (also used as automation testing tag).\r\n\t * @param {boolean} ariaHidden - hide action for screen-readers\r\n\t *\r\n\t * @returns {object} this new `uiAction'\r\n\t */\r\n\tfunction addUIAction(uiActionGroup, label, handler, name, ariaHidden) {\r\n\t\tvar actionObj = {\r\n\t\t\thandler: handler,\r\n\t\t\tlabel: label,\r\n\t\t\tname: name,\r\n\t\t\tuiActionGroup: uiActionGroup,\r\n\t\t\tariaHidden: ariaHidden,\r\n\t\t};\r\n\t\tself.uiActions.push(actionObj);\r\n\t\treturn actionObj;\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.SidePanelActionsService#getUIActions\r\n\t *\r\n\t * @description\r\n\t * returns a list of `uiActions` by passed `uiActionGroup`\r\n\t *\r\n\t * @param {string} uiActionGroup - a group by which actions are grouped and\r\n\t * connected with {@ref mx.shell.DetailsView DetailsView} which has a property with the same name\r\n\t *\r\n\t * @returns {array} a list of `uiActions` by passed `uiActionGroup`\r\n\t */\r\n\tfunction getUIActions(uiActionGroup) {\r\n\t\treturn self.uiActions.filter(function (uiAction) {\r\n\t\t\treturn (\r\n\t\t\t\ttypeof uiActionGroup !== 'undefined' &&\r\n\t\t\t\t((Array.isArray(uiActionGroup) && uiActionGroup.indexOf(uiAction.uiActionGroup) !== -1) || uiAction.uiActionGroup === uiActionGroup)\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction calculateCommonActionsForSelectedObjects(selectedObjects) {\r\n\t\t// If debounced call / no `selectedObjects` argument passed\r\n\t\tif (!Array.isArray(selectedObjects)) {\r\n\t\t\tselectedObjects = contextService.selectedObjects;\r\n\t\t}\r\n\r\n\t\tvar objectTypes = selectedObjects\r\n\t\t\t// Get array of types\r\n\t\t\t.map(function (item) {\r\n\t\t\t\treturn item._type;\r\n\t\t\t})\r\n\t\t\t// Filter just unique types\r\n\t\t\t.filter(function (_type, i, newArr) {\r\n\t\t\t\treturn _type && newArr.indexOf(_type) === i;\r\n\t\t\t});\r\n\r\n\t\tvar actionContext = new mx.shell.ActionsContext(\r\n\t\t\tobjectTypes,\r\n\t\t\tcontextService.actionsContext ? contextService.actionsContext.extraActions : [],\r\n\t\t\tmx.shell.ActionUiZone.SidePanel,\r\n\t\t\tcontextService.actionsContext && contextService.actionsContext.hideActions\r\n\t\t);\r\n\r\n\t\treturn actionManagerService.getActions(actionContext, self.actionTypes, selectedObjects).then(function (actions) {\r\n\t\t\treturn actionManagerService.filterActions(actions, null, selectedObjects);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction calculateViewActions(view) {\r\n\t\tif (view.isWizard) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar viewContext = view.context || { _type: view.type };\r\n\t\tvar objectTypes = [viewContext._type];\r\n\t\tvar _selectedObjects = (view.locals && view.locals.selectedObjects) || [viewContext];\r\n\r\n\t\tvar hideActions = contextService.actionsContext && contextService.actionsContext.hideActions;\r\n\r\n\t\tvar actionContext = new mx.shell.ActionsContext(\r\n\t\t\tobjectTypes,\r\n\t\t\tcontextService.actionsContext ? contextService.actionsContext.extraActions : [],\r\n\t\t\tview.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.Edit ? mx.shell.ActionUiZone.EditDialog : mx.shell.ActionUiZone.SidePanel,\r\n\t\t\thideActions\r\n\t\t);\r\n\r\n\t\tactionManagerService\r\n\t\t\t.getActions(actionContext, self.actionTypes, _selectedObjects)\r\n\t\t\t.then(function (actions) {\r\n\t\t\t\treturn actionManagerService.filterActions(actions, view, _selectedObjects);\r\n\t\t\t})\r\n\t\t\t.then(function (filteredActions) {\r\n\t\t\t\tview.__actions = filteredActions;\r\n\t\t\t\teventService.dispatchEvent(mx.shell.EventCodes.ActionsReady, { view: view, actions: filteredActions });\r\n\t\t\t});\r\n\t}\r\n\r\n\tfunction _registerLocalizationAction() {\r\n\t\tvar localizationSwitchAction = addUIAction(\r\n\t\t\t'localizable_view',\r\n\t\t\ti18n.get('shell.common.enable-localization-mode'),\r\n\t\t\tfunction () {\r\n\t\t\t\tvar currentView = sidePanelService.getCurrentView();\r\n\t\t\t\tcurrentView.__localizationModeEnabled = !currentView.__localizationModeEnabled;\r\n\t\t\t\teventService.dispatchEvent(mx.shell.EventCodes.SwitchLocalizationMode, { view: currentView });\r\n\t\t\t\t_setLocalizationActionLabelForCurrentView(currentView);\r\n\t\t\t},\r\n\t\t\t'localization-mode-menu-item'\r\n\t\t);\r\n\t\tvar _setLocalizationActionLabelForCurrentView = function (currentView) {\r\n\t\t\tlocalizationSwitchAction.label = i18n.get('shell.common.' + (currentView && currentView.__localizationModeEnabled ? 'disable' : 'enable') + '-localization-mode');\r\n\t\t};\r\n\t\teventService.subscribeGlobal(mx.shell.EventCodes.SidePanelCurrentViewChanged, function (_, view) {\r\n\t\t\t_setLocalizationActionLabelForCurrentView(view);\r\n\t\t});\r\n\t}\r\n\r\n\treturn self;\r\n}\r\n","import { SystemStorageType } from '../../../App/model/system-storage-types';\r\n\r\n/**\r\n * @ngdoc service\r\n * @name mx.shell.SidePanelService\r\n * @module mx.shell\r\n *\r\n * @description\r\n * Controls SidePanel, its details views and all internal logic in it\r\n * such as showing selected objects from {@ref mx.shell.ContextService mx.shell.ContextService} and other.\r\n */\r\nSidePanelService.$inject = [\r\n\t'$q',\r\n\t'$mdDialog',\r\n\t'$mdSidenav',\r\n\t'mx.app.DeviceService',\r\n\t'mx.internationalization',\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.LeftSidebarService',\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n\t'mx.SolutionBuilderAgent.WidgetManager',\r\n\t'mx.shell.SideLayout',\r\n\t'mx.shell.View',\r\n\t'mx.shell.DetailsView',\r\n\r\n\t'mx.shell.ContextService',\r\n\t'mx.shell.UserProfileService',\r\n\t'mx.shell.DataStorage',\r\n\t'mx.shell.NotificationService',\r\n\t'mx.shell.WizardView',\r\n\t'mx.shell.NavigationManager',\r\n\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n];\r\nexport function SidePanelService(\r\n\t$q,\r\n\t$mdDialog,\r\n\t$mdSidenav,\r\n\tdeviceService,\r\n\ti18n,\r\n\teventService,\r\n\tleftSidebarService,\r\n\tpersonalizationService,\r\n\twidgetManager,\r\n\tsideLayoutService,\r\n\tMxView,\r\n\tDetailsView,\r\n\tcontextService,\r\n\tuserProfileService,\r\n\tdataStorage,\r\n\tnotificationService,\r\n\tWizardView,\r\n\tnavigationManager,\r\n\tcontentWidgetService\r\n) {\r\n\tconst openedViews = [],\r\n\t\tinProgressViews = [];\r\n\tlet currentView;\r\n\r\n\tconst storage = dataStorage.getStorage(SystemStorageType.LocalStorage);\r\n\r\n\tconst self = {\r\n\t\tisViewUnsafeForClosing: isViewUnsafeForClosing,\r\n\t\trefreshView: refreshView,\r\n\t\tisViewOpened: isViewOpened,\r\n\t\tshowCloseTabConfirmationDialog: showCloseTabConfirmationDialog,\r\n\t\tshowConfirmationDialog: showConfirmationDialog,\r\n\r\n\t\taddView: addView,\r\n\t\tcloseView: externalCloseView,\r\n\t\tcloseCurrentView: closeCurrentView,\r\n\t\tswitchToView: switchToView,\r\n\t\tshowView: showView,\r\n\t\thideView: hideView,\r\n\t\tisViewInProgress: isViewInProgress,\r\n\r\n\t\tsetCurrentView: setCurrentView,\r\n\t\tgetCurrentView: getCurrentView,\r\n\t\tgetCurrentMainView: getCurrentMainView,\r\n\r\n\t\tgetOpenedViews: getOpenedViews,\r\n\t\t// getLoadedViews: getLoadedViews,\r\n\r\n\t\tshowPopupInTab: showPopupInTab,\r\n\t\thidePopupInTab: hidePopupInTab,\r\n\r\n\t\thandleItemSelectionOnMobile: handleItemSelectionOnMobile,\r\n\r\n\t\tgetObjectDetailsFromView: getObjectDetailsFromView,\r\n\t\tgetSidePanelView: getSidePanelView,\r\n\t};\r\n\r\n\teventService.subscribeGlobal(mx.shell.EventCodes.RouteLoading, function () {\r\n\t\tsetCurrentView(undefined);\r\n\t});\r\n\r\n\teventService.subscribeGlobal(mx.SolutionBuilderAgent.Events.ObjectTypeChanged, function (e, params) {\r\n\t\tconst object = {\r\n\t\t\tId: params.objectId,\r\n\t\t\tEntityType: params.entityType,\r\n\t\t};\r\n\t\tremoveFromHistory(object);\r\n\t});\r\n\r\n\teventService.subscribeGlobal(mx.SolutionBuilderAgent.Events.ObjectDataDeleted, function (e, data) {\r\n\t\tif (data && Array.isArray(data.affectedObjectIds)) {\r\n\t\t\tdata.affectedObjectIds.forEach(function (objectId) {\r\n\t\t\t\tconst object = { Id: objectId };\r\n\t\t\t\tremoveFromHistory(object);\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\teventService.subscribeGlobal(mx.SolutionBuilderAgent.Events.ViewDirtyStatusChanged, function (e, view) {\r\n\t\tif (!(view instanceof MxView)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (isViewOpened(view)) {\r\n\t\t\tif (view.dirty && !isViewInProgress(view)) {\r\n\t\t\t\tmoveViewToInProgress(view);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\teventService.subscribeGlobal(mx.shell.EventCodes.Search, (event, searchOptions) => onSearch(searchOptions));\r\n\r\n\tObject.defineProperty(self, 'currentView', {\r\n\t\tget: function () {\r\n\t\t\treturn self.getCurrentView();\r\n\t\t},\r\n\t\tset: function (view) {\r\n\t\t\tself.setCurrentView(view);\r\n\t\t},\r\n\t});\r\n\r\n\tObject.defineProperty(self, 'openedViews', {\r\n\t\tget: function () {\r\n\t\t\treturn openedViews;\r\n\t\t},\r\n\t});\r\n\r\n\tObject.defineProperty(self, 'inProgressViews', {\r\n\t\tget: function () {\r\n\t\t\treturn inProgressViews;\r\n\t\t},\r\n\t});\r\n\r\n\tObject.defineProperty(self, 'currentMainView', {\r\n\t\tget: function () {\r\n\t\t\treturn self.getCurrentMainView();\r\n\t\t},\r\n\t});\r\n\r\n\treturn self;\r\n\r\n\tfunction removeFromHistory(object) {\r\n\t\topenedViews.forEach(function (oView) {\r\n\t\t\tremoveFromParents(oView, object);\r\n\t\t});\r\n\t\tif (currentView) {\r\n\t\t\tremoveFromParents(currentView, object);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction removeFromParents(oView, object) {\r\n\t\tlet view = oView;\r\n\t\twhile (view.parentView) {\r\n\t\t\tif ((!object.EntityType || view.parentView.type === object.EntityType) && view.parentView.id === object.Id) {\r\n\t\t\t\tconst parentParent = view.parentView.parentView;\r\n\t\t\t\tcloseView(view.parentView, true);\r\n\t\t\t\tview.parentView = parentParent;\r\n\t\t\t} else {\r\n\t\t\t\tview = view.parentView;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setCurrentView(view) {\r\n\t\tif (view && view.relatedView) {\r\n\t\t\tsetCurrentView(view.relatedView);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst previousView = currentView;\r\n\t\tlet branchChanged = true,\r\n\t\t\tstepForward = false,\r\n\t\t\tstepBack = false;\r\n\t\tif (view instanceof MxView) {\r\n\t\t\tstepForward = view.parentView === currentView;\r\n\t\t\tstepBack = currentView && currentView.parentView === view;\r\n\t\t\tbranchChanged = !stepForward && /*!stepBack &&*/ currentView !== view;\r\n\r\n\t\t\tcurrentView = view;\r\n\t\t\tsideLayoutService.show();\r\n\t\t\tif (currentView.alwaysFullScreen || (stepBack && view.isWizard && sideLayoutService.fullScreenMode)) {\r\n\t\t\t\tsideLayoutService.switchFullScreenMode(true);\r\n\t\t\t} else if (stepBack && !currentView.parentView) {\r\n\t\t\t\tsideLayoutService.switchFullScreenMode(false);\r\n\t\t\t}\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\teventService.dispatchEvent(mx.shell.EventCodes.LayoutChanged, 'SidePanelCurrentViewChanged');\r\n\t\t\t}, 1);\r\n\t\t} else {\r\n\t\t\tcloseRelatedViews(currentView);\r\n\t\t\tcurrentView = undefined;\r\n\t\t\tsideLayoutService.hide();\r\n\t\t\tsideLayoutService.switchFullScreenMode(false);\r\n\t\t\tleftSidebarService.showPanelByName('navigation');\r\n\t\t}\r\n\r\n\t\teventService.dispatchEvent(mx.shell.EventCodes.SidePanelCurrentViewChanged, view);\r\n\r\n\t\tif (branchChanged && previousView) {\r\n\t\t\topenedViews.forEach(function (oView) {\r\n\t\t\t\tif (oView.parentView === currentView) {\r\n\t\t\t\t\tdelete oView.parentView;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tcloseBranch(previousView);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getCurrentView() {\r\n\t\treturn currentView;\r\n\t}\r\n\r\n\tfunction closeBranch(view) {\r\n\t\t/* close all views (step by step from child to parent) which should be closed\r\n\t\t\t(close if the one is not opened or if the one is opened but is not visible in in-progress-panel, so user can't return to that view)\r\n\t\t) */\r\n\t\twhile (view) {\r\n\t\t\tif (!view.keepAsOpened && view !== currentView) {\r\n\t\t\t\tcloseView(view, true);\r\n\t\t\t\tview = view.parentView;\r\n\t\t\t} else {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getCurrentMainView() {\r\n\t\tlet mainCurrentView = currentView;\r\n\r\n\t\twhile (mainCurrentView && mainCurrentView.related) {\r\n\t\t\tmainCurrentView = mainCurrentView.parentView;\r\n\t\t}\r\n\r\n\t\treturn mainCurrentView;\r\n\t}\r\n\r\n\tfunction getOpenedViews() {\r\n\t\treturn openedViews;\r\n\t}\r\n\r\n\tfunction getInProgressViews() {\r\n\t\treturn openedViews.filter(function (oView) {\r\n\t\t\treturn oView.keepAsOpened && !oView.related;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction moveViewToInProgress(view) {\r\n\t\tif (!isViewOpened(view)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tview.keepAsOpened = true;\r\n\t\tupdateInProgressViewList();\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.SidePanelService#addView\r\n\t *\r\n\t * @description\r\n\t * Adds new {@ref mx.shell.DetailsView DetailsView} on this SidePanel.\r\n\t * Also this {@ref mx.shell.DetailsView DetailsView} will got an `__actions` key with available corresponding actions.\r\n\t * Finally it will dispatch an Event {@ref mx.shell.Event Event}\r\n\t * with code: `mx.shell.EventCodes.SidePanelViewAdded`.\r\n\t *\r\n\t * @param {mx.shell.DetailsView} `view` - a view, that will be displayed on SidePanel.\r\n\t * @param {mx.shell.DetailsView} `parentView` - a view, which will be added into adding 'view' as parentView. ParentView has to be already opened in side-panel or it will be ignored\r\n\t * @param {Boolean} `related` - if true than this view is related to parentView and cannot exist without parentView.\r\n\t * \t\t\t\t\t\t\t\tSuch related view blocks its parentView, so if parentView is selected as currentView than currentView will be changed on related view automatically.\r\n\t * \t\t\t\t\t\t\t\tIf parentView is closed than relatedView also will be closed automatically\r\n\t *\r\n\t * @returns {Promise} finish interaction promise for added view\r\n\t */\r\n\tfunction addView(view, parentView, related) {\r\n\t\tif (!view || sideLayoutService.keepClosed) {\r\n\t\t\treturn $q.reject(mx.noLogCatchMessage('side-panel: no view or keepClosed'));\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tview.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.Edit ||\r\n\t\t\tview.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.New ||\r\n\t\t\tview.isWizard\r\n\t\t) {\r\n\t\t\tview.keepAsOpened = true;\r\n\t\t}\r\n\r\n\t\tconst openedView = openedViews.find(\r\n\t\t\t(v) =>\r\n\t\t\t\tv.type === view.type && ((view.id && v.id === view.id) || (!view.isWizard && v.context && view.context && view.context._id && v.context._id === view.context._id))\r\n\t\t);\r\n\r\n\t\tconst sameView =\r\n\t\t\topenedView &&\r\n\t\t\t(view === openedView ||\r\n\t\t\t\t(view.dialogType === openedView.dialogType && contentWidgetService.getWidgetIdFromView(openedView) === contentWidgetService.getWidgetIdFromView(view)));\r\n\t\tconst openedViewHasMorePriority =\r\n\t\t\topenedView &&\r\n\t\t\tview !== openedView &&\r\n\t\t\tisViewInProgress(openedView) &&\r\n\t\t\t(!view.keepAsOpened || openedView.dialogType !== mx.SolutionBuilderAgent.ContentWidgetDialogAction.Preview);\r\n\t\tconst openedViewIsRelated = openedView && openedView.relatedView;\r\n\r\n\t\tif (sameView || openedViewHasMorePriority || openedViewIsRelated) {\r\n\t\t\tview = openedView;\r\n\t\t} else {\r\n\t\t\tif (openedView) {\r\n\t\t\t\tcloseView(openedView, true);\r\n\t\t\t}\r\n\r\n\t\t\tview.opened = true;\r\n\t\t\topenedViews.push(view);\r\n\r\n\t\t\tif (parentView) {\r\n\t\t\t\tif (parentView instanceof WizardView) {\r\n\t\t\t\t\tparentView = getSidePanelView(parentView);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isViewOpened(parentView) || parentView === openedView) {\r\n\t\t\t\t\tview.parentView = parentView;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (related && parentView && !parentView.relatedView) {\r\n\t\t\t\t\t//view can have only one related view which blocks its view\r\n\t\t\t\t\tview.related = true;\r\n\t\t\t\t\tparentView.relatedView = view;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tview.finishDefer = $q.defer();\r\n\t\t\tview.locals = view.locals || {};\r\n\t\t\tview.locals.finishDefer = view.finishDefer;\r\n\t\t}\r\n\r\n\t\tview.visible = true;\r\n\r\n\t\tsetCurrentView(view);\r\n\t\teventService.dispatchEvent(mx.shell.EventCodes.SidePanelViewAdded, view);\r\n\t\tupdateInProgressViewList();\r\n\r\n\t\tview.finishDefer.promise\r\n\t\t\t.then(function () {\r\n\t\t\t\tif (view.isWizard) {\r\n\t\t\t\t\t_handleWizardClosed(view);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch(mx.logCatch)\r\n\t\t\t.finally(function () {\r\n\t\t\t\tcloseView(view);\r\n\t\t\t});\r\n\r\n\t\treturn view.finishDefer.promise;\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.SidePanelService#getSidePanelView\r\n\t *\r\n\t * @description\r\n\t * check if a view is one of opened view or it is a wizard page view of opened wizard and return opened side panel view\r\n\t *\r\n\t * @param {mx.shell.View} view to check if it is sidePanelView\r\n\t * @returns {mx.shell.View | undefined} opened view or undefined if view is not opened in sidePanel\r\n\t */\r\n\tfunction getSidePanelView(view) {\r\n\t\treturn openedViews.find(function (openedView) {\r\n\t\t\treturn openedView === view || (openedView.isWizard && openedView.getWizard() && openedView.getWizard().containsPageView(view));\r\n\t\t});\r\n\t}\r\n\r\n\tfunction externalCloseView(view) {\r\n\t\tif (view && view.finishDefer) {\r\n\t\t\tview.finishDefer.reject(mx.noLogCatchMessage('side-panel: externalCloseView'));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.SidePanelService#closeView\r\n\t *\r\n\t * @description\r\n\t * close {@ref mx.shell.DetailsView DetailsView} on this SidePanel.\r\n\t *\r\n\t *\r\n\t * @param {mx.shell.DetailsView | int | string} view - a view (link to object or its `id`),\r\n\t * that will be closed and removed from SidePanel.\r\n\t * @param {boolean} soft - if true than view will be closed but won't be removed from chain\r\n\t * \t\t\t\t\t(view.parentView will not be removed and currentView won't be automatically switched to parentView)\r\n\t *\r\n\t * @returns {mx.shell.DetailsView[]} updated list of {@ref mx.shell.DetailsView mx.shell.DetailsView}\r\n\t */\r\n\tfunction closeView(view, soft) {\r\n\t\tlet index;\r\n\r\n\t\t// If `view` is an `id` of removing object (not a link to object) lets find this view object\r\n\t\tif (view && typeof view !== 'object' && Array.isArray(openedViews)) {\r\n\t\t\topenedViews.forEach(function (oView) {\r\n\t\t\t\tif (oView.id === view || (angular.isString(oView.id) && angular.isString(view) && oView.id.toLowerCase() === view.toLowerCase())) {\r\n\t\t\t\t\tview = oView;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tindex = openedViews.indexOf(view);\r\n\r\n\t\tif (index > -1) {\r\n\t\t\tif (index > -1) {\r\n\t\t\t\topenedViews.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tview.keepAsOpened = false;\r\n\r\n\t\t\tif (view.related && view.parentView) {\r\n\t\t\t\tdelete view.parentView.relatedView;\r\n\t\t\t\tdelete view.related;\r\n\t\t\t}\r\n\r\n\t\t\t// Fire Closing event\r\n\t\t\teventService.dispatchEvent(mx.shell.EventCodes.SidePanelViewClosed, view);\r\n\r\n\t\t\tcloseRelatedViews(view);\r\n\r\n\t\t\topenedViews.forEach(function (oView) {\r\n\t\t\t\tif (oView.parentView === view) {\r\n\t\t\t\t\tdelete oView.parentView;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (!soft) {\r\n\t\t\t\tif (view === currentView) {\r\n\t\t\t\t\tif (!view.parentView || (view.parentView && isViewOpened(view.parentView))) {\r\n\t\t\t\t\t\tsetCurrentView(view.parentView);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\taddView(view.parentView);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (view.parentView) {\r\n\t\t\t\t\tdelete view.parentView;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tview.finishDefer.reject(mx.noLogCatchMessage('side-panel: closeView'));\r\n\t\t\tupdateInProgressViewList();\r\n\t\t}\r\n\r\n\t\treturn openedViews;\r\n\t}\r\n\r\n\tfunction closeCurrentView() {\r\n\t\tcloseView(currentView);\r\n\t}\r\n\r\n\tfunction closeRelatedViews(view) {\r\n\t\tlet relatedView = view && view.relatedView;\r\n\r\n\t\twhile (relatedView) {\r\n\t\t\tdelete relatedView.parentView;\r\n\t\t\tdelete relatedView.related;\r\n\t\t\trelatedView = relatedView.relatedView;\r\n\t\t}\r\n\r\n\t\tif (view && view.relatedView) {\r\n\t\t\tcloseView(view.relatedView);\r\n\t\t\tdelete view.relatedView;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideView(view) {\r\n\t\tif (view === currentView) {\r\n\t\t\tsetCurrentView(undefined);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction showView(view) {\r\n\t\tsetCurrentView(view);\r\n\t\tif (!sideLayoutService.visible) {\r\n\t\t\tsideLayoutService.show();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction onSearch(searchOptions) {\r\n\t\tif (searchOptions?.uiToken !== 'uiToken:search-page-content') {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (currentView) {\r\n\t\t\tif (currentView.alwaysFullScreen) {\r\n\t\t\t\tsetCurrentView(undefined);\r\n\t\t\t} else {\r\n\t\t\t\tsideLayoutService.switchFullScreenMode(false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.SidePanelService#switchToView\r\n\t *\r\n\t * @description\r\n\t * Switch to passed {@ref mx.shell.DetailsView DetailsView} or its ID on this SidePanel if it exists.\r\n\t *\r\n\t * @param {mx.shell.DetailsView | string} view - `DetailsView` or its ID.\r\n\t *\r\n\t * @returns {mx.shell.DetailsView} current View\r\n\t */\r\n\tfunction switchToView(view) {\r\n\t\tsetCurrentView(\r\n\t\t\topenedViews.filter(function (v) {\r\n\t\t\t\treturn view === v || view === v.id;\r\n\t\t\t})[0]\r\n\t\t);\r\n\r\n\t\treturn currentView;\r\n\t}\r\n\r\n\tfunction getObjectDetailsFromView(view = {}) {\r\n\t\tconst objectDetails = {\r\n\t\t\tId: view.context?._id,\r\n\t\t\tEntityType: view.context?._type,\r\n\t\t\tDisplayString: view.context?._displayName,\r\n\t\t\tEntityDisplayName: view.headerTitle,\r\n\t\t};\r\n\r\n\t\tif (view.hideActions) {\r\n\t\t\tobjectDetails.hideActions = view.hideActions;\r\n\t\t}\r\n\r\n\t\tif (view.isSingleView) {\r\n\t\t\tobjectDetails.isSingleView = view.isSingleView;\r\n\t\t}\r\n\r\n\t\tif (view.readOnly) {\r\n\t\t\tobjectDetails.readOnly = view.readOnly;\r\n\t\t}\r\n\r\n\t\treturn objectDetails;\r\n\t}\r\n\r\n\tfunction handleItemSelectionOnMobile() {\r\n\t\tif (deviceService.screenMobile()) {\r\n\t\t\t$mdSidenav('mx-shell-nav').close();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction updateInProgressViewList() {\r\n\t\tmx.components.Utils.replaceElements(inProgressViews, getInProgressViews());\r\n\t\teventService.dispatchEvent(mx.shell.EventCodes.SidePanelInProgressViewsChanged, inProgressViews);\r\n\t}\r\n\r\n\tfunction isViewInProgress(rView) {\r\n\t\treturn getInProgressViews().some(function (view) {\r\n\t\t\treturn (rView.id === view.id && rView.type === view.type) || view === rView;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction isViewOpened(rView) {\r\n\t\treturn openedViews.some(function (view) {\r\n\t\t\treturn (rView.id === view.id && rView.type === view.type) || view === rView;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.SidePanelService#isViewUnsafeForClosing\r\n\t *\r\n\t * @description\r\n\t * Check if it is safe to close view\r\n\t *\r\n\t * @returns {boolean} is it unsafe to close view or no\r\n\t */\r\n\tfunction isViewUnsafeForClosing(view) {\r\n\t\treturn (\r\n\t\t\tview.dirty &&\r\n\t\t\t(view.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.Edit ||\r\n\t\t\t\tview.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.New ||\r\n\t\t\t\tview.isWizard)\r\n\t\t);\r\n\t}\r\n\r\n\tfunction refreshView(view) {\r\n\t\teventService.dispatchEvent(mx.shell.EventCodes.RefreshCurrentView, { view: view });\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.SidePanelService#showCloseTabConfirmationDialog\r\n\t *\r\n\t * @description\r\n\t * Show confirmation dialog before closing view\r\n\t *\r\n\t * @param {mx.shell.DetailsView} view - a view that will be closed\r\n\t *\r\n\t * @returns {Promise} Promise that return updated list of {@ref mx.shell.DetailsView mx.shell.DetailsView} after confirmation dialog\r\n\t */\r\n\tfunction showCloseTabConfirmationDialog(view) {\r\n\t\tconst dialogConfig = {\r\n\t\t\tid: 'ActionOnSafeCloseTab',\r\n\t\t\ttitle: i18n.get('shell.mx-side-panel-service.unsavedData'),\r\n\t\t\tactions: [\r\n\t\t\t\t{\r\n\t\t\t\t\tid: 'cancel',\r\n\t\t\t\t\tnotForSave: true,\r\n\t\t\t\t\ttitle: i18n.get('shell.mx-side-panel-service.doNothing'),\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tid: 'close',\r\n\t\t\t\t\ttitle: i18n.get('shell.mx-side-panel-service.closeTab'),\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t};\r\n\r\n\t\tif (!view.isWizard) {\r\n\t\t\tdialogConfig.actions.push({\r\n\t\t\t\tid: 'save-and-close',\r\n\t\t\t\ttitle: i18n.get('solutionBuilderAgent.services.side-panel-service.save-and-close'),\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn showConfirmationDialog(dialogConfig).then(function (answer) {\r\n\t\t\tif (answer === 'close') {\r\n\t\t\t\tcloseView(view);\r\n\t\t\t} else if (answer === 'save-and-close') {\r\n\t\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.DialogActionExecuted, {\r\n\t\t\t\t\tview: view,\r\n\t\t\t\t\taction: 2,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.SidePanelService#showConfirmationDialog\r\n\t *\r\n\t * @description\r\n\t * Show confirmation dialog according to config (with possibility to save an answer)\r\n\t *\r\n\t * @param {object} dialogConfig - config of the confirmation dialog with array of actions\r\n\t * @param {MxView} tabView - view from side-panel in which popup will be shown\r\n\t *\r\n\t * @returns {Promise} Promise that return answer from dialog\r\n\t */\r\n\r\n\tfunction showConfirmationDialog(dialogConfig, tabView) {\r\n\t\tif (typeof dialogConfig !== 'object' || !dialogConfig.id) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst def = $q.defer();\r\n\t\tlet userId;\r\n\r\n\t\treturn userProfileService\r\n\t\t\t.get()\r\n\t\t\t.then(function (userProfile) {\r\n\t\t\t\tuserId = userProfile.id;\r\n\t\t\t\treturn storage.get(dialogConfig.id + '::' + userId);\r\n\t\t\t})\r\n\t\t\t.then(function (savedAnswer) {\r\n\t\t\t\tif (savedAnswer) {\r\n\t\t\t\t\treturn savedAnswer;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst buttons =\r\n\t\t\t\t\t\t'{{::button.title}}';\r\n\r\n\t\t\t\t\tconst dialogTemplate =\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'' + // `aria-label` === \" \" here bacause $mdDialog compiles it such way that JAWS Screen Reader reads it twice\r\n\t\t\t\t\t\t'\t' +\r\n\t\t\t\t\t\t'\t\t

' +\r\n\t\t\t\t\t\ti18n.get('shell.mx-side-panel-service.ARIA-confirmationDialogIntro') +\r\n\t\t\t\t\t\t'

' +\r\n\t\t\t\t\t\t'\t\t

{{::vm.dialog.title}}

.' +\r\n\t\t\t\t\t\t'\t\t
' +\r\n\t\t\t\t\t\t'\t\t\t
{{::vm.dialog.message}}
' +\r\n\t\t\t\t\t\t(dialogConfig.buttonsInActionZone ? '' : buttons) +\r\n\t\t\t\t\t\t'\t\t\t' +\r\n\t\t\t\t\t\t'\t\t
' +\r\n\t\t\t\t\t\t'\t\t

' +\r\n\t\t\t\t\t\ti18n.get('shell.mx-side-panel-service.ARIA-confirmationDialogSummary') +\r\n\t\t\t\t\t\t'

' +\r\n\t\t\t\t\t\t'\t
' +\r\n\t\t\t\t\t\t(dialogConfig.buttonsInActionZone ? '' + buttons + '' : '') +\r\n\t\t\t\t\t\t'
';\r\n\r\n\t\t\t\t\tconst viewConfig = {\r\n\t\t\t\t\t\tid: dialogConfig.id,\r\n\t\t\t\t\t\tcontrollerAs: 'vm',\r\n\t\t\t\t\t\tcontroller: function controller() {\r\n\t\t\t\t\t\t\tthis.dialog = dialogConfig;\r\n\t\t\t\t\t\t\tthis.action = function action(button, needSave) {\r\n\t\t\t\t\t\t\t\tif (needSave && !button.notForSave) {\r\n\t\t\t\t\t\t\t\t\tstorage.set(dialogConfig.id + '::' + userId, button.id);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (tabView) {\r\n\t\t\t\t\t\t\t\t\thidePopupInTab(tabView);\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t$mdDialog.hide();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tdef.resolve(button.id);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\ttemplate: dialogTemplate,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tconst popupView = new MxView(viewConfig);\r\n\t\t\t\t\tif (tabView) {\r\n\t\t\t\t\t\tshowPopupInTab(tabView, popupView);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tnotificationService.customDialog(viewConfig).catch(function () {\r\n\t\t\t\t\t\t\tdef.resolve('esc');\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn def.promise;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tfunction showPopupInTab(tabView, popupView) {\r\n\t\ttabView.__showPopup = true;\r\n\t\ttabView.__popup = popupView;\r\n\t}\r\n\r\n\tfunction hidePopupInTab(view) {\r\n\t\tdelete view.__popup;\r\n\t\tview.__showPopup = false;\r\n\t}\r\n\r\n\tfunction _handleWizardClosed(view) {\r\n\t\tconst currentPage = view.locals.wizard.currentPage;\r\n\t\tif (currentPage && currentPage.dataModel && currentPage.dataModel.Context.__hideDetails) {\r\n\t\t\tif (Array.isArray(view.locals.selectedObjects)) {\r\n\t\t\t\tview.locals.selectedObjects.forEach(function (object) {\r\n\t\t\t\t\tconst removingObj = {\r\n\t\t\t\t\t\tEntityType: object['Sys-Entity'] || object._type || object.type,\r\n\t\t\t\t\t\tId: object.ID || object._id || object.id,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// force closing Side Panel\r\n\t\t\t\t\tremoveFromHistory(removingObj);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","/**\r\n * @ngdoc service\r\n * @name mx.shell.SidebarService\r\n * @module mx.shell\r\n *\r\n * @property {boolean} isOpened - get or set state of `Right Side Bar` whether it is opened\r\n * @property {boolean} isPinnedOpen - get or set state of `Right Side Bar` whether it is pinned as open.\r\n * @property {mx.shell.View} view - `View` which should be shown inside of `Right Side Bar`\r\n * @property {array} additionalButtons - an array of objects which represent Buttons for `Right Side Bar` in right stripe.\r\n *\t\t\tObjects may contain keys like: unique `name`, `icon`, `title`, and `active`.\r\n *\t\t\tExample: [\r\n *\t\t\t\t{name: 'feedback', icon: 'feedback', title: 'Open feedback', active: true},\r\n *\t\t\t\t{name: 'save', icon: 'save', title: 'Save all'},\r\n *\t\t\t\t...\r\n *\t\t\t]\r\n *\t\t\tOnes some button is clicked an event `mx.shell.SidenavAdditionalButtonClick` will be fired.\r\n *\t\t\t(In future those buttons could be reworked with `mx.shell.Action`)\r\n *\r\n * @description\r\n * A service provides methods for managing the right Sidebar panel appearance.\r\n */\r\nexport class SidebarService {\r\n\tstatic $inject = ['mx.shell.EventService'];\r\n\r\n\tconstructor(eventService) {\r\n\t\tthis.eventService = eventService;\r\n\r\n\t\tthis.isOpened = false;\r\n\t\tthis.isPinnedOpen = false;\r\n\t\tthis.view = undefined;\r\n\t\tthis.additionalButtons = [];\r\n\r\n\t\tthis._debouncedLayoutChangeDispatcher = $.debounce(500, function () {\r\n\t\t\teventService.dispatchEvent(mx.shell.EventCodes.LayoutChanged);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.SidebarService#open\r\n\t *\r\n\t * @description\r\n\t * Opens right sidebar with the markup and scope passed.\r\n\t *\r\n\t * @param {mx.shell.View} `view` that shoulh be shown.\r\n\t * @param {array} `buttonList` - an array of buttons.\r\n\t */\r\n\topen(view, buttonList) {\r\n\t\tthis.view = view;\r\n\t\tthis.additionalButtons = buttonList;\r\n\t\tthis.show();\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.SidebarService#show\r\n\t *\r\n\t * @description\r\n\t * Opens right sidebar.\r\n\t */\r\n\tshow() {\r\n\t\tthis.isOpened = true;\r\n\t\tthis._debouncedLayoutChangeDispatcher();\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.SidebarService#togglePinnedOpen\r\n\t *\r\n\t * @description\r\n\t * Toggle pinned open state.\r\n\t */\r\n\ttogglePinnedOpen() {\r\n\t\tthis.isPinnedOpen = !this.isPinnedOpen;\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.SidebarService#close\r\n\t *\r\n\t * @description\r\n\t * Closes right sidebar if it isn't pinned.\r\n\t */\r\n\tclose() {\r\n\t\tif (!this.isPinnedOpen) {\r\n\t\t\tthis.isOpened = false;\r\n\t\t\tthis.view = undefined;\r\n\t\t\tthis.eventService.dispatchEvent(mx.shell.EventCodes.SidebarClosed);\r\n\t\t\tthis._debouncedLayoutChangeDispatcher();\r\n\t\t}\r\n\t}\r\n}\r\n","import type { ApplicationProvider } from '../../../App/model/application';\r\nimport type { MxApplicationService } from '../../../App/services/mx-application-service';\r\nimport type { MxActionManagerService, ActionProvider } from './mx-action-manager-service';\r\nimport type { WorkspaceLoaderService } from '../../../WorkspaceLoader/workspace-loader.service';\r\nimport type { MxNavigationService, NavigationProvider } from '../../Navigation/mx-navigation-service';\r\nimport { EventCodes } from '../../../App/model/event-codes';\r\nimport type { EventService } from '../../../App/services/event-service';\r\n\r\ntype ShellAppConfig = {\r\n\tapplicationProvider?: ApplicationProvider;\r\n\tactionProvider?: ActionProvider;\r\n\tnavigationProvider?: NavigationProvider;\r\n};\r\n\r\nexport class ShellAppInitializerService {\r\n\tpublic static $inject = ['mx.shell.AppsService', 'mx.shell.ActionManagerService', 'mx.sb.WorkSpaceLoader.Service', 'mx.shell.NavigationService', 'mx.shell.EventService'];\r\n\tconstructor(\r\n\t\tprivate readonly appsService: MxApplicationService,\r\n\t\tprivate readonly actionManagerService: MxActionManagerService,\r\n\t\tprivate readonly workspaceLoaderService: WorkspaceLoaderService,\r\n\t\tprivate readonly navigationService: MxNavigationService,\r\n\t\tprivate readonly eventService: EventService\r\n\t) {}\r\n\r\n\tpublic async initShellApp({ applicationProvider, actionProvider, navigationProvider }: ShellAppConfig) {\r\n\t\tthis.appsService.setApplicationProvider(applicationProvider);\r\n\t\tthis.actionManagerService.setActionProvider(actionProvider);\r\n\t\tthis.navigationService.setNavigationProvider(navigationProvider);\r\n\r\n\t\tawait this.workspaceLoaderService.loadWorkspaces();\r\n\r\n\t\tthis.eventService.dispatchEvent(EventCodes.ShellAppInitialized);\r\n\t}\r\n}\r\n","routingConfiguration.$inject = ['mx.shell.RoutingService'];\r\nexport function routingConfiguration(routingService) {\r\n\troutingService.addItems([\r\n\t\troutingService.createRoutingItem({\r\n\t\t\tname: '404',\r\n\t\t\tviewUrl: 'layouts/page-not-found/404.html',\r\n\t\t\tpath: null,\r\n\t\t\ttitle: 'Page Not Found',\r\n\t\t\tcontroller: 'mx.shell.PageNotFoundController',\r\n\t\t}),\r\n\t\troutingService.createRoutingItem({\r\n\t\t\tname: '401',\r\n\t\t\tviewUrl: 'layouts/unauthorized/401.html',\r\n\t\t\tpath: null,\r\n\t\t\ttitle: 'Unauthorized',\r\n\t\t\tcontroller: 'mx.shell.UnauthorizedPageController',\r\n\t\t}),\r\n\t\troutingService.createRoutingItem({\r\n\t\t\tname: 'globalSearch',\r\n\t\t\tviewUrl: 'workspaces/SolutionBuilderAgent/layouts/global-search/global-search.html',\r\n\t\t\tpath: '/global-search/:keyword?:contexts?:navigationId?:label?:showContexts?:extraContexts?',\r\n\t\t\ttitle: 'Global Search',\r\n\t\t\tcontroller: 'mx.SolutionBuilderAgent.GlobalSearchController',\r\n\t\t}),\r\n\t]);\r\n}\r\n","import * as angular from 'angular';\r\n\r\nimport { ActionExecutorService } from './mx-action-executor-service';\r\nimport { MxActionManagerService } from './mx-action-manager-service';\r\nimport { ActionProviderService } from './mx-action-provider-service';\r\nimport { ApplicationProviderService } from './mx-application-provider-service';\r\nimport { MxBackgroundProcessProvider } from './mx-background-process-provider';\r\nimport { MxTrackedProcessProvider } from './mx-tracked-process-provider';\r\nimport { MxBackgroundProcessesService } from './mx-background-processes-service';\r\nimport { MxContextService } from './mx-context-service';\r\nimport { DownloadHelpService } from './mx-download-help-service';\r\nimport { FeedbackProviderService } from './mx-feedback-provider-service';\r\nimport { MxInjectorService } from './mx-injector-service';\r\nimport { MxKeyboardNavigationService } from './mx-keyboard-navigation';\r\nimport { MxObjectMapper } from './mx-object-mapper';\r\nimport { SearchProviderService } from './mx-search-provider-service';\r\nimport { SideLayout } from './mx-side-layout-service';\r\nimport { SidePanelActionsService } from './mx-side-panel-actions-service';\r\nimport { SidePanelService } from './mx-side-panel-service';\r\nimport { SidebarService } from './mx-sidebar-service';\r\nimport { ShellAppInitializerService } from './shell-app.initializer.service';\r\n\r\nimport { routingConfiguration } from './mx-routing-configuration-service';\r\n\r\nangular\r\n\t.module('mx.shell')\r\n\t.service('mx.shell.ActionExecutorService', ActionExecutorService)\r\n\t.service('mx.shell.ActionManagerService', MxActionManagerService)\r\n\t.service('mx.shell.ActionProviderService', ActionProviderService)\r\n\t.service('mx.shell.ApplicationProviderService', ApplicationProviderService)\r\n\t.service('mx.shell.BackgroundProcessProvider', MxBackgroundProcessProvider)\r\n\t.service('mx.shell.TrackedProcessProvider', MxTrackedProcessProvider)\r\n\t.service('mx.shell.BackgroundProcessesService', MxBackgroundProcessesService)\r\n\t.service('mx.shell.ContextService', MxContextService)\r\n\t.service('mx.shell.DownloadHelpService', DownloadHelpService)\r\n\t.factory('mx.shell.FeedbackProviderService', FeedbackProviderService)\r\n\t.service('mx.shell.InjectorService', MxInjectorService)\r\n\t.factory('mx.shell.KeyboardNavigationService', MxKeyboardNavigationService)\r\n\t.service('mx.shell.ObjectMapper', MxObjectMapper)\r\n\t.service('mx.shell.SearchProviderService', SearchProviderService)\r\n\t.factory('mx.shell.SideLayout', SideLayout)\r\n\t.factory('mx.shell.SidePanelActionsService', SidePanelActionsService)\r\n\t.service('mx.shell.SidePanelService', SidePanelService)\r\n\t.service('mx.shell.SidebarService', SidebarService)\r\n\t.service('mx.shell.ShellAppInitializerService', ShellAppInitializerService)\r\n\r\n\t.run(routingConfiguration);\r\n","'use strict';\r\n\r\nimport shellModule from './shell.module';\r\nimport './components/mx-action/mx-action.js';\r\nimport './components/mx-actions-dropdown/mx-actions-dropdown.js';\r\nimport './components/mx-command-palette/mx-command-palette.js';\r\nimport './components/mx-common-actions/mx-common-actions.js';\r\nimport './components/mx-extra-panel/mx-extra-panel-ctrl.js';\r\nimport './components/mx-extra-panel/mx-extra-panel-manager.js';\r\nimport './components/mx-horizontal-action-list/mx-horizontal-action-list.js';\r\nimport './components/mx-main-content-zone/mx-main-content-zone.js';\r\nimport './components/mx-relink-event/mx-relink-event.js';\r\nimport './components/mx-shell-avatar/mx-shell-avatar.js';\r\nimport './components/mx-shell-background-processes/mx-shell-background-processes.js';\r\nimport './components/mx-shell-breadcrumbs/mx-shell-breadcrumbs.js';\r\nimport './components/mx-shell-info-panel/mx-shell-info-panel-service.ts';\r\nimport './components/mx-shell-info-panel/mx-shell-info-panel.js';\r\nimport './components/mx-shell-left-sidebar/mx-shell-left-sidebar-service.js';\r\nimport './components/mx-shell-left-sidebar/mx-shell-left-sidebar.js';\r\nimport './components/mx-shell-operation-monitor/mx-shell-operation-monitor.js';\r\nimport './components/mx-shell-search/mx-search-keyboard-manager.js';\r\nimport './components/mx-shell-search/mx-shell-search.js';\r\nimport './components/mx-shell-sidebar/mx-shell-sidebar.js';\r\nimport './components/mx-shell-toolbar/mx-shell-toolbar-app-switcher-controller.js';\r\nimport './components/mx-shell-toolbar/mx-shell-toolbar-manager.js';\r\nimport './components/mx-shell-toolbar/mx-shell-toolbar.js';\r\nimport './components/mx-search-grouped-context-list/mx-search-grouped-context-list.js';\r\nimport './components/mx-shell-unified-search/mx-shell-unified-search.js';\r\nimport './components/mx-shell-unified-search/mx-global-search-manager.js';\r\nimport './components/mx-shell-user-menu/mx-shell-user-menu.js';\r\nimport './components/mx-shell/mx-shell.component.js';\r\nimport './components/mx-side-layout/mx-side-layout.js';\r\nimport './components/mx-toolbar-actions/mx-toolbar-actions.js';\r\nimport './components/mx-toolbar-actions/mx-try-new-look-action/mx-try-new-look-action';\r\nimport './components/mx-view/mx-view.js';\r\nimport './components/mx-wizard/mx-wizard-roadmap.js';\r\nimport './components/mx-wizard/mx-wizard.js';\r\nimport './layouts/page-not-found/page-not-found-controller.js';\r\nimport './layouts/unauthorized/unauthorized.js';\r\nimport './model/action';\r\nimport './model/details-view.ts';\r\nimport './model/display-modes.js';\r\nimport './model/enumerations.js';\r\nimport './model/object.js';\r\nimport './model/search-context.js';\r\nimport './model/view.ts';\r\nimport './model/process-item.ts';\r\nimport './model/wizard/wizard-button.js';\r\nimport './model/wizard/wizard-page.js';\r\nimport './model/wizard/wizard-roadmap-step.js';\r\nimport './model/wizard/wizard-roadmap.js';\r\nimport './model/wizard/wizard-view.ts';\r\nimport './model/wizard/wizard.js';\r\nimport './services';\r\n\r\nexport default shellModule;\r\n","'use strict';\r\n\r\nimport 'signalr';\r\nimport SignalRHub from 'angular-signalr-hub';\r\nimport m42Dashboards from '@dwp/dashboards';\r\nimport 'angular-sortable-view';\r\nimport componentsModule from '../PandoraComponents';\r\n\r\nmx.SolutionBuilderAgent = mx.SolutionBuilderAgent || {};\r\n\r\nexport default angular.module('mx.SolutionBuilderAgent', [componentsModule, SignalRHub, m42Dashboards, 'angular-sortable-view']).name;\r\n","import { IController, IScope, IAttributes, IInterpolateService, IRootElementService } from 'angular';\r\nimport { DataTypes } from './enumerations';\r\nexport function toCamelCase(value: string) {\r\n\treturn value.toLowerCase().replace(/-([a-z])/g, (g) => g[1].toUpperCase());\r\n}\r\n\r\nconst filterExpressionPathPropertiesNumber = 4;\r\nexport interface IFilterExpressionPath {\r\n\twidgetId: string;\r\n\tviewName: string;\r\n\tcontrolName: string;\r\n\tpropertyName: string;\r\n}\r\nfunction isPathCorrect(path?: Partial): path is IFilterExpressionPath {\r\n\tif (!path) {\r\n\t\treturn false;\r\n\t}\r\n\tconst values = Object.values(path);\r\n\treturn values.length === filterExpressionPathPropertiesNumber && values.every((pathValue) => typeof pathValue === 'string' && pathValue.length > 0);\r\n}\r\n\r\ninterface IServiceContext {\r\n\tinfo: {\r\n\t\twidgetId: string;\r\n\t\tviewName: string;\r\n\t};\r\n}\r\n\r\nexport interface ScopeWithServiceContext extends IScope {\r\n\tmxServiceContextController?: IServiceContext;\r\n}\r\n\r\nexport interface FilterExpressionProps {\r\n\tpropertyName: string;\r\n\tcontrolMxAtId: string;\r\n\tcontroller: IController;\r\n\t$scope: ScopeWithServiceContext;\r\n\t$attrs: IAttributes;\r\n\t$interpolate: IInterpolateService;\r\n\t$element: IRootElementService;\r\n\tonChanged?: (value: FilterExpression) => void;\r\n}\r\n\r\nexport type IEmptyFilterExpressionRequest = Record;\r\n\r\nexport interface IFilterExpressionWithID {\r\n\tId: string;\r\n\tParams: IStrictParam[];\r\n}\r\n\r\nexport interface IFilterExpressionWithPath {\r\n\tPath: IFilterExpressionPath;\r\n\tParams: IStrictParam[];\r\n}\r\nexport interface IFilterExpressionRequest {\r\n\tFilterExpression: IFilterExpressionWithID | IFilterExpressionWithPath;\r\n}\r\n\r\nexport interface IWhereExpressionRequest {\r\n\tFilterExpression?: {\r\n\t\tPath: IFilterExpressionPath;\r\n\t};\r\n\tWhereExpression: string;\r\n}\r\n\r\nexport type FilterExpressionRequestParams = IFilterExpressionRequest | IWhereExpressionRequest | IEmptyFilterExpressionRequest;\r\n\r\nexport interface IFilterExpression {\r\n\ttoRequest(): FilterExpressionRequestParams;\r\n}\r\n\r\nexport class FilterExpression implements IFilterExpression {\r\n\tprivate filterDefinition?: IFilterDefinition;\r\n\tprivate id?: string;\r\n\tprivate path?: IFilterExpressionPath;\r\n\tprivate expression?: string;\r\n\r\n\tconstructor(private props: FilterExpressionProps) {\r\n\t\tconst { $attrs, propertyName } = this.props;\r\n\r\n\t\tconst propertyNameCamelCase = toCamelCase(propertyName);\r\n\t\tconst attrValue = $attrs[propertyNameCamelCase];\r\n\t\tconst idValue = $attrs[`${propertyNameCamelCase}Id`];\r\n\r\n\t\tif (typeof idValue === 'string' && idValue.length > 0) {\r\n\t\t\tthis.initComponentFormat(idValue);\r\n\t\t} else if (typeof attrValue === 'string' && attrValue.length > 0) {\r\n\t\t\tthis.initLayoutTransformationFormat(attrValue);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getServiceContext(): IServiceContext | undefined {\r\n\t\tlet scope = this.props.$scope;\r\n\r\n\t\twhile (!scope.mxServiceContextController && scope.$parent) {\r\n\t\t\tscope = scope.$parent;\r\n\t\t}\r\n\r\n\t\treturn scope.mxServiceContextController;\r\n\t}\r\n\r\n\tprivate getPath() {\r\n\t\tconst { propertyName, controlMxAtId } = this.props;\r\n\r\n\t\tconst path: Partial = {\r\n\t\t\tpropertyName,\r\n\t\t\tcontrolName: controlMxAtId,\r\n\t\t};\r\n\r\n\t\tconst serviceContext = this.getServiceContext();\r\n\t\tif (serviceContext?.info) {\r\n\t\t\tpath.widgetId = serviceContext.info.widgetId;\r\n\t\t\tpath.viewName = serviceContext.info.viewName;\r\n\t\t}\r\n\r\n\t\treturn path;\r\n\t}\r\n\r\n\tprivate initComponentFormat(idValue: string): void {\r\n\t\tconst { $attrs, onChanged, propertyName } = this.props;\r\n\r\n\t\tthis.id = idValue;\r\n\r\n\t\tconst filterDefinition: IStrictFilterDefinition = {\r\n\t\t\tIsStrict: true,\r\n\t\t\tStrictExpression: {\r\n\t\t\t\tParams: [],\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tconst paramsAttr = $attrs[toCamelCase(`${propertyName}-params`)];\r\n\t\tif (paramsAttr) {\r\n\t\t\tfilterDefinition.StrictExpression.Params = this.initScopeValue(paramsAttr, (newValue) => {\r\n\t\t\t\tfilterDefinition.StrictExpression.Params = newValue;\r\n\t\t\t\tonChanged?.(this);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.filterDefinition = filterDefinition;\r\n\t}\r\n\r\n\tprivate initLayoutTransformationFormat(attrValue: string): void {\r\n\t\tconst { $scope, onChanged } = this.props;\r\n\r\n\t\tlet newFormat = false;\r\n\t\tlet value;\r\n\t\ttry {\r\n\t\t\tvalue = JSON.parse(attrValue);\r\n\t\t\tnewFormat = typeof value === 'object' && value && (typeof value.IsStrict === 'boolean' || typeof value.LegacyExpression === 'string');\r\n\t\t} catch (e) {\r\n\t\t\t//nothing\r\n\t\t}\r\n\t\tif (!newFormat) {\r\n\t\t\tthis.initDeprecatedFilterFormat();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.filterDefinition = $scope.$parent.$eval(attrValue);\r\n\r\n\t\tconst path = this.getPath();\r\n\t\tif (isPathCorrect(path)) {\r\n\t\t\tthis.path = path;\r\n\t\t} else if (this.filterDefinition?.IsStrict) {\r\n\t\t\tconsole.error('Filter is used with wrong Path and without Id. Filter will be ignored', {\r\n\t\t\t\tpath: path,\r\n\t\t\t\tfilter: attrValue,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.filterDefinition?.IsStrict) {\r\n\t\t\tthis.filterDefinition?.StrictExpression?.Params?.forEach((param) => {\r\n\t\t\t\tparam.Value = this.initScopeValue(param.Value, (newValue) => {\r\n\t\t\t\t\tparam.Value = newValue;\r\n\t\t\t\t\tonChanged?.(this);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.expression = this.initScopeValue(this.filterDefinition?.LegacyExpression || '', (newValue) => {\r\n\t\t\t\tthis.expression = newValue;\r\n\t\t\t\tonChanged?.(this);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate initDeprecatedFilterFormat() {\r\n\t\tconst { propertyName, $attrs, $element, onChanged, $scope } = this.props;\r\n\t\tconst propertyNameCamelCase = toCamelCase(propertyName);\r\n\r\n\t\t/*console.error('Filter is used in deprecated format which will be removed in next versions.', {\r\n\t\t\tcontrol: path.controlName,\r\n\t\t\tproperty: path.propertyName,\r\n\t\t\tfilter: $attrs[propertyNameCamelCase],\r\n\t\t});*/\r\n\r\n\t\tconst rawAttrValue = $element.attr(propertyName);\r\n\t\tif (typeof rawAttrValue !== 'string') {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst initialAttrValue = $attrs[propertyNameCamelCase];\r\n\r\n\t\tlet isInterpolation = rawAttrValue.startsWith('{{');\r\n\t\tif (!isInterpolation) {\r\n\t\t\ttry {\r\n\t\t\t\t$scope.$parent.$eval(initialAttrValue);\r\n\t\t\t\tisInterpolation = false;\r\n\t\t\t} catch (e) {\r\n\t\t\t\tisInterpolation = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isInterpolation) {\r\n\t\t\tthis.expression = this.initInterpolatedValue(propertyNameCamelCase, (newValue) => {\r\n\t\t\t\tthis.expression = newValue;\r\n\t\t\t\tonChanged?.(this);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.expression = this.initScopeValue(initialAttrValue || '', (newValue) => {\r\n\t\t\t\tthis.expression = newValue;\r\n\t\t\t\tonChanged?.(this);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate initInterpolatedValue(attrName: string, onChanged: (newValue: T) => void) {\r\n\t\tconst { $scope, $attrs } = this.props;\r\n\r\n\t\tlet value = $attrs[attrName];\r\n\r\n\t\tconst unsubscribe = $attrs.$observe(attrName, (interpolatedValue?: string) => {\r\n\t\t\tvalue = interpolatedValue || '';\r\n\t\t\tonChanged?.(value as T);\r\n\t\t}) as () => void;\r\n\r\n\t\t$scope.$on('$destroy', () => {\r\n\t\t\tunsubscribe();\r\n\t\t});\r\n\r\n\t\treturn value as T;\r\n\t}\r\n\r\n\tprivate initScopeValue(scopeValue: unknown, onChanged: (newValue: T) => void): T {\r\n\t\tconst { $scope } = this.props;\r\n\r\n\t\tlet value = scopeValue;\r\n\r\n\t\tif (typeof scopeValue === 'string') {\r\n\t\t\tconst transformedScopeValue =\r\n\t\t\t\tscopeValue.startsWith('\"') && scopeValue.endsWith('\"') ? scopeValue : scopeValue.split('.').reduce((prev, current) => prev + `['${current}']`);\r\n\r\n\t\t\tvalue = $scope.$parent.$eval(transformedScopeValue);\r\n\r\n\t\t\tconst unsubscribe = $scope.$parent.$watch(transformedScopeValue, (newValue) => {\r\n\t\t\t\tif (newValue !== value) {\r\n\t\t\t\t\tvalue = newValue;\r\n\t\t\t\t\tonChanged(value as T);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t$scope.$on('$destroy', () => {\r\n\t\t\t\tunsubscribe();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn value as T;\r\n\t}\r\n\r\n\tprivate handleBooleanParams(params: IStrictParam[]): IStrictParam[] {\r\n\t\tparams.forEach((param) => {\r\n\t\t\tif (param.Type === DataTypes.IntType) {\r\n\t\t\t\tif (param.Value === true) {\r\n\t\t\t\t\tparam.Value = 1;\r\n\t\t\t\t} else if (param.Value === false || typeof param.Value === 'undefined') {\r\n\t\t\t\t\tparam.Value = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn params;\r\n\t}\r\n\r\n\tpublic toRequest(): FilterExpressionRequestParams {\r\n\t\tlet properties: FilterExpressionRequestParams = {};\r\n\t\tif (this.filterDefinition?.IsStrict) {\r\n\t\t\tconst params = this.handleBooleanParams(this.filterDefinition.StrictExpression?.Params || []);\r\n\t\t\tif (this.id) {\r\n\t\t\t\tproperties = {\r\n\t\t\t\t\tFilterExpression: {\r\n\t\t\t\t\t\tId: this.id,\r\n\t\t\t\t\t\tParams: params,\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t} else if (this.path) {\r\n\t\t\t\tproperties = {\r\n\t\t\t\t\tFilterExpression: {\r\n\t\t\t\t\t\tPath: this.path,\r\n\t\t\t\t\t\tParams: params,\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t} else if (this.expression) {\r\n\t\t\tproperties = {\r\n\t\t\t\tWhereExpression: this.expression,\r\n\t\t\t};\r\n\t\t\tif (this.path) {\r\n\t\t\t\tproperties.FilterExpression = {\r\n\t\t\t\t\tPath: this.path,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn properties;\r\n\t}\r\n\r\n\tpublic hasFilter(): boolean {\r\n\t\treturn Boolean((this.filterDefinition?.IsStrict && (this.path || this.id)) || this.expression);\r\n\t}\r\n}\r\n\r\nexport interface IStrictFilterDefinition {\r\n\tIsStrict: true;\r\n\tStrictExpression: IStrictExpression;\r\n}\r\n\r\nexport interface ILegacyFilterDefinition {\r\n\tIsStrict?: false;\r\n\tLegacyExpression: string;\r\n}\r\n\r\nexport type IFilterDefinition = IStrictFilterDefinition | ILegacyFilterDefinition;\r\n\r\nexport interface IStrictExpression {\r\n\tParams?: IStrictParam[];\r\n}\r\n\r\nexport interface IStrictParam {\r\n\tName: string;\r\n\tValue: unknown;\r\n\tType: DataTypes;\r\n}\r\n\r\nexport function initFilterExpression(props: FilterExpressionProps): FilterExpression {\r\n\tconst { propertyName, controller } = props;\r\n\tconst filterDefinitionAttrName = toCamelCase(propertyName);\r\n\tcontroller[filterDefinitionAttrName] = new FilterExpression(props);\r\n\treturn controller[filterDefinitionAttrName];\r\n}\r\n","(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc component\r\n\t * @name mx.SolutionBuilderAgent:mxEnumLiteral\r\n\t * @module mx.SolutionBuilderAgent\r\n\t * @description Displays related object\r\n\t * @param {string} label@ - Optional. Label of the control.\r\n\t * @param {string} entityClassName@ - Name of the Enum class.\r\n\t * @param {object} value= - Reference to the Entity object\r\n\t */\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxEnumLiteral', {\r\n\t\tbindings: {\r\n\t\t\tlabel: '@',\r\n\t\t\tvalue: '<',\r\n\t\t\tentityClassName: '@',\r\n\t\t\ticon: '@',\r\n\t\t\tfilter: '@',\r\n\t\t\thideOnEmptyValue: '@',\r\n\t\t\treserveIconSpace: '@',\r\n\t\t\tlabelPosition: '@',\r\n\t\t\tvalueMinWidth: '@',\r\n\t\t\tlabelMinWidth: '@',\r\n\t\t\tlabelMaxWidth: '@',\r\n\t\t\tlabelColor: '@',\r\n\t\t\tvalueColor: '@',\r\n\t\t\ticonColor: '@',\r\n\t\t\tdesignerMode: ''\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t],\r\n\t});\r\n\r\n\tMxEnumLiteralCtrl.$inject = ['mx.SolutionBuilderAgent.EntityService', '$element', 'mx.app.ColorService', 'mx.app.ThemeService'];\r\n\r\n\tfunction MxEnumLiteralCtrl(mxEntityService, $element, colorService, themeService) {\r\n\t\tvar vm = this;\r\n\t\tvar _value, _filter;\r\n\r\n\t\tvm.$onInit = async function () {\r\n\t\t\tvm.isContrast = (await themeService.getCurrentTheme()).isContrastTheme;\r\n\r\n\t\t\t_filter = vm.filter;\r\n\t\t\tsetValue(vm.value);\r\n\r\n\t\t\tObject.defineProperty(vm, 'value', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn _value;\r\n\t\t\t\t},\r\n\t\t\t\tset: setValue,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(vm, 'filter', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn _filter;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (value) {\r\n\t\t\t\t\t_filter = value;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tvm.$postLink = function () {\r\n\t\t\t$element.addClass('mx-literal');\r\n\t\t};\r\n\r\n\t\tfunction processEmptyData() {\r\n\t\t\tvm.literalValue = '-';\r\n\t\t\tvm.dataLoaded = vm.hideOnEmptyValue !== 'true';\r\n\t\t}\r\n\r\n\t\tfunction setValue(newVal) {\r\n\t\t\tif (_value === newVal) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t_value = newVal;\r\n\r\n\t\t\tif (vm.entityClassName && _value !== null && _value !== undefined) {\r\n\t\t\t\tvar enumRequestPromise = vm.mxServiceContext\r\n\t\t\t\t\t? vm.mxServiceContext.$servicePromise.then(function (service) {\r\n\t\t\t\t\t\t\treturn service.isService && (service.EnumNames.indexOf(vm.entityClassName) !== -1 || _.find(service.EnumTypes, { Name: vm.entityClassName }))\r\n\t\t\t\t\t\t\t\t? service.Enums[vm.entityClassName]\r\n\t\t\t\t\t\t\t\t: mxEntityService.getEnumerationValues(vm.entityClassName, vm.filter);\r\n\t\t\t\t\t })\r\n\t\t\t\t\t: mxEntityService.getEnumerationValues(vm.entityClassName, vm.filter);\r\n\r\n\t\t\t\tenumRequestPromise.then(function (enumeration) {\r\n\t\t\t\t\tif (!enumeration) {\r\n\t\t\t\t\t\tprocessEmptyData();\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar res = '';\r\n\t\t\t\t\tvar isString = typeof _value === 'string';\r\n\t\t\t\t\tvar value = isString && _value.indexOf(',') >= 0 ? _value.split(',') : _value;\r\n\t\t\t\t\tlet itemColor;\r\n\r\n\t\t\t\t\tvar isMultipleValue = Array.isArray(value);\r\n\r\n\t\t\t\t\tif (isMultipleValue) {\r\n\t\t\t\t\t\tvalue = value.map(function (val) {\r\n\t\t\t\t\t\t\treturn !isNaN(val) && typeof val === 'string' ? Number(val) : val;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvalue = !isNaN(_value) && isString ? Number(_value) : _value;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (var i = 0; i < enumeration.length; i++) {\r\n\t\t\t\t\t\tvar item = enumeration[i];\r\n\r\n\t\t\t\t\t\tif (isMultipleValue) {\r\n\t\t\t\t\t\t\tif (value.indexOf(item.Value) >= 0) {\r\n\t\t\t\t\t\t\t\tif (res) {\r\n\t\t\t\t\t\t\t\t\tres += ', ';\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tres += item.DisplayString;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else if (item.Value === value) {\r\n\t\t\t\t\t\t\tres = item.DisplayString;\r\n\t\t\t\t\t\t\tif (item.Color) {\r\n\t\t\t\t\t\t\t\titemColor = `#${item.Color.slice(-6)}`;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvm.literalValue = res;\r\n\t\t\t\t\tvm.dataLoaded = true;\r\n\t\t\t\t\tif (itemColor) {\r\n\t\t\t\t\t\t$element[0].style.setProperty(\r\n\t\t\t\t\t\t\t'--mx-enum-literal-value-color-from-pickup',\r\n\t\t\t\t\t\t\tcolorService.enhanceColorContrast(itemColor, undefined, vm.isContrast ? 4.5 : 2)\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, processEmptyData);\r\n\t\t\t} else {\r\n\t\t\t\tprocessEmptyData();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})();\r\n","'use strict';\r\n\r\nexport default function EntityClassRequest(entityClass, filter, top, dataQueryName) {\r\n\tObject.defineProperties(this, {\r\n\t\tentityClass: { value: entityClass, writable: true, enumerable: true },\r\n\t\tfilter: { value: filter, writable: true, enumerable: true },\r\n\t\ttop: { value: top ? top : 0, writable: true, enumerable: true },\r\n\t\tparent: { writable: true, enumerable: true },\r\n\t\trelationName: { writable: true, enumerable: true },\r\n\t\texclude: { writable: true, enumerable: true },\r\n\t\tobjectId: { writable: true, enumerable: true },\r\n\t\tarchived: { writable: true, enumerable: true },\r\n\t\tdataQueryName: { value: dataQueryName, writable: true, enumerable: true },\r\n\t});\r\n}\r\n","import EntityClassRequest from '../../model/entity-class-request';\r\nimport { initFilterExpression } from '../../model/filterExpressionUtils';\r\n\r\n/**\r\n * @ngdoc component\r\n * @name mx.SolutionBuilderAgent:mxObjectsLink\r\n * @module mx.SolutionBuilderAgent\r\n * @description Displays related object\r\n * @param {string} label@ - Optional. Label of the control.\r\n * @param {string} entityClassName@ - SPS class where data should be loaded from.\r\n * @param {value} object= - Reference to the Entity object\r\n */\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxRelatedObjectsLink', {\r\n\trequire: {\r\n\t\tparentViewController: '?^^mxView',\r\n\t},\r\n\tbindings: {\r\n\t\trelation: '\r\n\t\t\t\t\t`;\r\n\t\t},\r\n\t],\r\n});\r\n\r\nMxRelatedObjectsLinkCtrl.$inject = [\r\n\t'mx.SolutionBuilderAgent.SchemaService',\r\n\t'$q',\r\n\t'mx.SolutionBuilderAgent.EntityService',\r\n\t'mx.internationalization',\r\n\t'mx.SolutionBuilderAgent.DialogOpenerService',\r\n\t'$scope',\r\n\t'$attrs',\r\n\t'$element',\r\n];\r\n\r\nfunction MxRelatedObjectsLinkCtrl(schemaService, $q, entityService, i18n, dialogOpener, $scope, $attrs, $element) {\r\n\tconst vm = this;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tinitFilterExpression({\r\n\t\t\tpropertyName: 'filter',\r\n\t\t\tcontrolMxAtId: vm.mxAtId,\r\n\t\t\t$scope,\r\n\t\t\t$attrs,\r\n\t\t\t$element,\r\n\t\t\tcontroller: vm,\r\n\t\t});\r\n\t};\r\n\r\n\tvm.$postLink = function () {\r\n\t\tvm.archived = vm.parentViewController?.mxView?.context?._archived || false;\r\n\t\tinitValue();\r\n\t};\r\n\r\n\tasync function getFragments(top) {\r\n\t\tconst requestData = new EntityClassRequest(vm.relation.relationsConfig.referenceFrom, vm.filter, top, vm.columnDefinition);\r\n\r\n\t\trequestData.allowedTypes = vm.allowedTypes;\r\n\t\trequestData.fragmentId = vm.relation.fragmentId;\r\n\t\trequestData.relationName = vm.relation.relationsConfig.attributeFrom;\r\n\t\trequestData.displayExpression = vm.displayExpression;\r\n\t\trequestData.archived = vm.archived;\r\n\r\n\t\treturn await entityService.getFragmentDescriptors(requestData);\r\n\t}\r\n\r\n\tfunction setShowAllValue(count) {\r\n\t\tconst obj = {\r\n\t\t\ttext: vm.valueLabel || i18n.get('solutionBuilderAgent.components.mx-objects-literal.objects'),\r\n\t\t\tonClick: async () => {\r\n\t\t\t\tdialogOpener\r\n\t\t\t\t\t.openObjectsListPreview(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\trelation: vm.relation,\r\n\t\t\t\t\t\t\tfilterExpression: vm.filter,\r\n\t\t\t\t\t\t\tarchived: vm.archived,\r\n\t\t\t\t\t\t\tlabel: vm.valueLabel || i18n.get('solutionBuilderAgent.components.mx-objects-literal.objects'),\r\n\t\t\t\t\t\t\tcolumnDefinition: vm.columnDefinition,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tvm.parentViewController && vm.parentViewController.mxView\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.catch(mx.logCatch);\r\n\t\t\t},\r\n\t\t};\r\n\t\tif (count) {\r\n\t\t\tobj.text += `[${count}]`;\r\n\t\t}\r\n\t\tvm.value = [obj];\r\n\t}\r\n\r\n\tasync function initValue() {\r\n\t\tif (!(vm.relation instanceof mx.SolutionBuilderAgent.Relation) || vm.relation.Count === 0 || !vm.relation.fragmentId) {\r\n\t\t\tvm.value = null;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst maxVisibleAmount = 4;\r\n\t\tlet fragments;\r\n\r\n\t\tlet objectCount = vm.relation.Count;\r\n\r\n\t\tif (vm.filter.hasFilter()) {\r\n\t\t\tfragments = await getFragments();\r\n\t\t\tobjectCount = fragments.length;\r\n\t\t} else if (typeof objectCount === 'undefined') {\r\n\t\t\tfragments = await getFragments(maxVisibleAmount);\r\n\t\t\tif (fragments.length < maxVisibleAmount) {\r\n\t\t\t\tobjectCount = fragments.length;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (objectCount < maxVisibleAmount) {\r\n\t\t\tfragments = fragments || (await getFragments());\r\n\t\t\tvm.value = fragments.map((fragment) => ({\r\n\t\t\t\ttext: fragment.DisplayString,\r\n\t\t\t\tonClick: () => dialogOpener.openPreview(fragment, undefined, undefined, vm.parentViewController && vm.parentViewController.mxView),\r\n\t\t\t}));\r\n\t\t} else {\r\n\t\t\tsetShowAllValue(objectCount);\r\n\t\t}\r\n\t}\r\n}\r\n","import { initFilterExpression } from '../../model/filterExpressionUtils';\r\n\r\n(function () {\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @ngdoc component\r\n\t * @name mx.SolutionBuilderAgent:mxObjectsLink\r\n\t * @module mx.SolutionBuilderAgent\r\n\t * @description Displays related object\r\n\t * @param {string} label@ - Optional. Label of the control.\r\n\t * @param {string} entityClassName@ - SPS class where data should be loaded from.\r\n\t * @param {value} object= - Reference to the Entity object\r\n\t * @param {idType} enum= - Indicates whether ObjectId or ClassId used in getting data\r\n\t */\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxObjectsLink', {\r\n\t\tbindings: {\r\n\t\t\tlabel: '@',\r\n\t\t\tvalue: '<',\r\n\t\t\tvalueLabel: '@',\r\n\t\t\tentityClassName: '@',\r\n\t\t\thideOnEmptyValue: '@',\r\n\t\t\tcolumnDefinition: '@',\r\n\t\t\tdisplayExpression: '@',\r\n\t\t\tidType: '@',\r\n\t\t\tvalueMinWidth: '@',\r\n\t\t\tlabelMinWidth: '@',\r\n\t\t\tlabelMaxWidth: '@',\r\n\t\t\tlabelPosition: '@?',\r\n\t\t\tdesignerMode: ',   '\r\n\t\t\t\t\t);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar labelPosition = attrs.labelPosition;\r\n\t\t\t\tvar literalClasses = 'mx-literal layout-wrap ' + (labelPosition === 'left' || typeof labelPosition === 'undefined' ? 'layout-row' : 'layout-column');\r\n\t\t\t\tvar valueFlexOrderClass = labelPosition === 'bottom' ? ' flex-order--1' : '';\r\n\r\n\t\t\t\tvar showingItemsCount = attrs.showingItemsCount === '0' ? 0 : parseInt(attrs.showingItemsCount) || 3;\r\n\r\n\t\t\t\tvar literalsTemplate = '';\r\n\t\t\t\tfor (var idx = 0; idx < showingItemsCount; idx++) {\r\n\t\t\t\t\tliteralsTemplate += getLiteralTemplate(idx);\r\n\t\t\t\t}\r\n\t\t\t\tliteralsTemplate +=\r\n\t\t\t\t\t' ' +\r\n\t\t\t\t\tshowingItemsCount +\r\n\t\t\t\t\t'\" ng-click=\"vm.showAll()\" href=\"#\" title=\"{{vm.moreItemsTooltip}}\">' +\r\n\t\t\t\t\t(showingItemsCount === 0 ? '{{vm.objectsAllCount}}' : '') +\r\n\t\t\t\t\t'...';\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\tliteralsTemplate +\r\n\t\t\t\t\t'
'\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t],\r\n\t});\r\n\r\n\tMxObjectsLinkCtrl.$inject = ['mx.internationalization', 'mx.SolutionBuilderAgent.DialogOpenerService', '$scope', '$attrs', '$element'];\r\n\r\n\tfunction MxObjectsLinkCtrl(i18n, dialogOpenerService, $scope, $attrs, $element) {\r\n\t\tconst vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\t$scope.$watch('vm.value', updateTooltip);\r\n\t\t\tinitFilterExpression({\r\n\t\t\t\tpropertyName: 'filter-expression',\r\n\t\t\t\tcontrolMxAtId: vm.mxAtId,\r\n\t\t\t\t$scope,\r\n\t\t\t\t$attrs,\r\n\t\t\t\t$element,\r\n\t\t\t\tcontroller: vm,\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tvm.showAll = function () {\r\n\t\t\tdialogOpenerService\r\n\t\t\t\t.openObjectsListPreview(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tentityClassName: vm.entityClassName,\r\n\t\t\t\t\t\tlabel: vm.valueLabel || i18n.get('solutionBuilderAgent.components.mx-objects-literal.objects'),\r\n\t\t\t\t\t\tcolumnDefinition: vm.columnDefinition,\r\n\t\t\t\t\t\tuseObjectId: vm.idType !== 'class',\r\n\t\t\t\t\t\tfilterExpression: vm.filterExpression,\r\n\t\t\t\t\t\tselectedItemIds: vm.value.map(function (obj) {\r\n\t\t\t\t\t\t\treturn obj.id || obj._id || obj;\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvm.parentViewController && vm.parentViewController.mxView\r\n\t\t\t\t)\r\n\t\t\t\t.catch(mx.logCatch);\r\n\t\t};\r\n\r\n\t\tfunction updateTooltip() {\r\n\t\t\tif (Array.isArray(vm.value) && vm.value.length > vm.showingItemsCount) {\r\n\t\t\t\tvm.moreItemsTooltip = i18n.getFormatted('solutionBuilderAgent.components.mx-objects-literal.showAll', vm.value.length);\r\n\t\t\t\tvm.objectsAllCount = vm.value.length + ' ' + i18n.get('solutionBuilderAgent.components.mx-objects-literal.objects');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})();\r\n","import template from './mx-advanced-search-query.component.html';\r\n\r\nexport class MxAdvancedSearchQueryController {\r\n\tstatic $inject = ['mx.SolutionBuilderAgent.SearchQueryService', 'mx.shell.SearchProviderService', 'mx.shell.EventService', 'mx.internationalization'];\r\n\r\n\tquery;\r\n\tcontext;\r\n\tuiToken;\r\n\tsearchService; /*private*/\r\n\tsearchQueryService; /*private*/\r\n\teventService; /*private*/\r\n\ti18n; /*private*/\r\n\teditText = null;\r\n\teditIcon = null;\r\n\r\n\tconstructor(searchQueryService, searchService, eventService, i18n) {\r\n\t\tthis.searchService = searchService;\r\n\t\tthis.searchQueryService = searchQueryService;\r\n\t\tthis.eventService = eventService;\r\n\t\tthis.i18n = i18n;\r\n\t}\r\n\r\n\tasync edit() {\r\n\t\tawait this.searchQueryService.openFilterDialog(this.query, this.context);\r\n\t}\r\n\r\n\t$onInit() {\r\n\t\tthis.editText = this.i18n.get('solutionBuilderAgent.components.mx-advanced-search-query.' + (this.query.canEdit ? 'edit' : 'view'));\r\n\t\tthis.editIcon = this.query.canEdit ? 'edit' : 'info';\r\n\t}\r\n\r\n\trun() {\r\n\t\tconst queryId = this.query.id;\r\n\r\n\t\tif (queryId) {\r\n\t\t\tconst currentSearch = this.searchService.currentSearch();\r\n\t\t\tcurrentSearch.filters = [queryId];\r\n\t\t\tconst currentBaseFilter = this.searchService.getBaseQueryId(this.context?.parameters);\r\n\t\t\tif (currentBaseFilter) {\r\n\t\t\t\tcurrentSearch.filters.push(currentBaseFilter);\r\n\t\t\t}\r\n\r\n\t\t\tcurrentSearch.context = this.context;\r\n\t\t\tcurrentSearch.uiToken = this.uiToken;\r\n\t\t\tthis.searchService.runSearch();\r\n\t\t\tthis.eventService.dispatchEvent(mx.SolutionBuilderAgent.Events.RunSearchQuery, queryId);\r\n\t\t}\r\n\t}\r\n\r\n\tattach(query) {\r\n\t\tquery.__attached = true;\r\n\t}\r\n}\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxAdvancedSearchQuery', {\r\n\tbindings: {\r\n\t\tquery: '=',\r\n\t\tcontext: '=',\r\n\t\tuiToken: '@',\r\n\t},\r\n\tcontroller: MxAdvancedSearchQueryController,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n});\r\n","// Module\nvar code = \"
\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t
\\r\\n\\t\\t{{vm.query.title}}\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t{{vm.query.description}}\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t{{'solutionBuilderAgent.components.mx-advanced-search-query.runQuery' | mxi18n}}\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t{{::vm.editIcon}}\\r\\n\\t\\t\\t{{::vm.editText}}\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","export class MxAdvancedSearchQueryCustomCtrl {\r\n\t$inject = ['mx.SolutionBuilderAgent.SearchQuery'];\r\n\r\n\tvalue;\r\n\tvalue2;\r\n\tvalue3;\r\n\r\n\tconstructor(SearchQuery) {\r\n\t\tthis.SearchQuery = SearchQuery;\r\n\t}\r\n\r\n\t$onInit() {\r\n\t\tthis.context = {\r\n\t\t\tdatasource: this.value2,\r\n\t\t\twidgetId: this.value3,\r\n\t\t};\r\n\r\n\t\tthis.query = new this.SearchQuery(this.value);\r\n\t}\r\n}\r\n\r\nangular.module('mx.SolutionBuilderAgent').directive('mxAdvancedSearchQueryCustom', [\r\n\tfunction mxAdvancedSearchQueryCustomDirective() {\r\n\t\treturn {\r\n\t\t\trestrict: 'E',\r\n\t\t\tscope: {},\r\n\t\t\tbindToController: {\r\n\t\t\t\tvalue: '=',\r\n\t\t\t\tvalue2: '=',\r\n\t\t\t\tvalue3: '=',\r\n\t\t\t},\r\n\t\t\tcontroller: MxAdvancedSearchQueryCustomCtrl,\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t\ttemplate: ' ',\r\n\t\t};\r\n\t},\r\n]);\r\n","import { GroupType } from '../../model/enumerations';\r\nimport template from './mx-advanced-search.component.html';\r\nimport { EventCodes } from '../../../../App/model/event-codes';\r\n\r\nexport class MxAdvancedSearchController {\r\n\tstatic $inject = [\r\n\t\t'mx.shell.EventService',\r\n\t\t'mx.app.DeviceService',\r\n\t\t'mx.shell.SidebarService',\r\n\t\t'mx.shell.SearchProviderService',\r\n\t\t'mx.SolutionBuilderAgent.SearchQueryService',\r\n\t\t'mx.shell.UserProfileService',\r\n\t\t'mx.internationalization',\r\n\t\t'$scope',\r\n\t\t'mx.SolutionBuilderAgent.SearchQueryGroup',\r\n\t];\r\n\r\n\tSearchQueryGroup;\r\n\tdeviceService;\r\n\tsidebarService;\r\n\tsearchService;\r\n\tsearchQueryService;\r\n\tuserProfileService;\r\n\tcontext;\r\n\r\n\tfilterQueries = '';\r\n\tsortBy = 'title';\r\n\tqueries = [];\r\n\tconditionProperties = [];\r\n\tuiToken;\r\n\r\n\tconstructor(eventService, deviceService, sidebarService, searchService, searchQueryService, userProfileService, i18n, $scope, SearchQueryGroup) {\r\n\t\tthis.SearchQueryGroup = SearchQueryGroup;\r\n\t\tthis.deviceService = deviceService;\r\n\t\tthis.sidebarService = sidebarService;\r\n\t\tthis.searchService = searchService;\r\n\t\tthis.searchQueryService = searchQueryService;\r\n\t\tthis.userProfileService = userProfileService;\r\n\t\tthis.eventService = eventService;\r\n\r\n\t\tthis.advancedSearchGroup = new this.SearchQueryGroup();\r\n\r\n\t\tthis.sortFields = [\r\n\t\t\t{\r\n\t\t\t\tfield: 'title',\r\n\t\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-advanced-search.title'),\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tfield: 'showInNavigation',\r\n\t\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-advanced-search-query.showInNavigation'),\r\n\t\t\t},\r\n\t\t];\r\n\r\n\t\teventService.subscribeTo(mx.SolutionBuilderAgent.Events.SearchQueryAdded, this.resetForm, $scope);\r\n\r\n\t\t$scope.$watch('vm.filterQueries', (text) => {\r\n\t\t\tthis.queries.forEach((item) => {\r\n\t\t\t\titem.__visible = !text || ((item && item.title) || '').toLowerCase().indexOf(text.toLowerCase()) !== -1;\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\t$onInit() {\r\n\t\treturn this.init();\r\n\t}\r\n\r\n\tasync init() {\r\n\t\tthis.queries = (await this.searchQueryService.getQueries(this.context)) || [];\r\n\t\tthis.userId = (await this.userProfileService.get()).id;\r\n\t\tthis.resetForm();\r\n\t}\r\n\r\n\tisAdvancedSearchGroupValid() {\r\n\t\treturn (this.advancedSearchGroup.conditions || this.advancedSearchGroup.groups) && this.searchQueryService.validateGroup(this.advancedSearchGroup);\r\n\t}\r\n\r\n\tsearchClick() {\r\n\t\tif (!this.isAdvancedSearchGroupValid()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst currentSearch = this.searchService.currentSearch();\r\n\t\tcurrentSearch.context = this.context;\r\n\t\tcurrentSearch.searchForm.setGroup(this.advancedSearchGroup, GroupType.QueryBuilder);\r\n\t\tcurrentSearch.uiToken = this.uiToken;\r\n\t\tthis.searchService.runSearch();\r\n\t\tif (this.deviceService.screenMobile()) {\r\n\t\t\tthis.sidebarService.close();\r\n\t\t}\r\n\r\n\t\tthis.trackTelemetry();\r\n\t}\r\n\r\n\tgetFlatGroupConditions(group) {\r\n\t\tconst childrenConditions = group.groups?.flatMap((group) => this.getFlatGroupConditions(group)) || [];\r\n\t\treturn (group.conditions || []).concat(childrenConditions);\r\n\t}\r\n\r\n\ttrackTelemetry() {\r\n\t\tconst conditions = this.getFlatGroupConditions(this.advancedSearchGroup);\r\n\r\n\t\tthis.eventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\teventName: `Advanced search executed`,\r\n\t\t\tsender: this.queryList?.parameters.id,\r\n\t\t\tsenderTitle: this.queryList?.parameters.name,\r\n\t\t\tcontextTypeId: this.queryList?.parameters.entities.map((entity) => entity.id),\r\n\t\t\tcontextTypeTitle: this.queryList?.parameters.entities.map((entity) => entity.name),\r\n\t\t\tcontextId: conditions.map((condition) => ({\r\n\t\t\t\tname: condition.property,\r\n\t\t\t\ttype: condition.type,\r\n\t\t\t\toperator: condition.operatorTechnicalName,\r\n\t\t\t})),\r\n\t\t});\r\n\t}\r\n\r\n\tresetForm() {\r\n\t\tthis.advancedSearchGroup = new this.SearchQueryGroup();\r\n\t}\r\n}\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxAdvancedSearch', {\r\n\tbindings: {\r\n\t\tcontext: '=',\r\n\t\tuiToken: '@',\r\n\t\tqueryList: '<',\r\n\t},\r\n\tcontroller: MxAdvancedSearchController,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n});\r\n","'use strict';\r\n\r\nCalendarResourceCtrl.$inject = ['$scope', '$element', 'mx.internationalization', 'mx.shell.HostUrlHelper'];\r\n\r\nexport default function CalendarResourceCtrl($scope, $element, i18n, hostUrlHelper) {\r\n\tvar vm = this;\r\n\tvm.$onInit = function () {\r\n\t\tvm.resource = vm.calendar.resources.find(function (resource) {\r\n\t\t\treturn resource.id === vm.resourceId;\r\n\t\t});\r\n\r\n\t\tvm.hasEntity = vm.resource.id && vm.resource.id !== 'unassigned';\r\n\t\tvm.photoCss = 'url(\"' + (hostUrlHelper.getFullImageUrl(vm.resource.image) || '') + '\")';\r\n\t\tvm.hintContainer = $element.find('.mx-calendar-resource-header-cell__hint');\r\n\r\n\t\t$scope.$watch(\r\n\t\t\tfunction () {\r\n\t\t\t\treturn vm.resource.eventsOfDay[vm.dayNumber];\r\n\t\t\t},\r\n\t\t\tfunction (numOfEvents) {\r\n\t\t\t\tvar newHint = getHint(numOfEvents);\r\n\t\t\t\tif (vm.hint !== newHint) {\r\n\t\t\t\t\tvm.hint = newHint;\r\n\t\t\t\t\t//hint is rendered with 'text' function and not with a binding because of errors in IE\r\n\t\t\t\t\tvm.hintContainer.text(newHint);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\tvm.zeroHint = i18n.get('solutionBuilderAgent.components.mx-calendar-resource.no-events-in-que');\r\n\tvm.oneHint = i18n.getFormatted('solutionBuilderAgent.components.mx-calendar-resource.event-in-que', 1);\r\n\r\n\tfunction getHint(numOfEvents) {\r\n\t\tswitch (numOfEvents) {\r\n\t\t\tcase 0:\r\n\t\t\tcase undefined:\r\n\t\t\t\treturn vm.zeroHint;\r\n\t\t\tcase 1:\r\n\t\t\t\treturn vm.oneHint;\r\n\t\t\tdefault:\r\n\t\t\t\treturn i18n.getFormatted('solutionBuilderAgent.components.mx-calendar-resource.events-in-que', numOfEvents);\r\n\t\t}\r\n\t}\r\n}\r\n","// Module\nvar code = \"
\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\tplay_circle_outline\\r\\n\\t\\t\\t\\t\\t\\t{{'solutionBuilderAgent.components.mx-advanced-search.runSearch' | mxi18n}}\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\tsearch\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","'use strict';\r\nimport template from './mx-calendar-resource.html';\r\nimport CalendarResourceCtrl from './mx-calendar-resource.controller';\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxCalendarResource', {\r\n\tbindings: {\r\n\t\tresourceId: '@',\r\n\t\tdayNumber: '@',\r\n\t},\r\n\trequire: {\r\n\t\tcalendar: '^^mxCalendar',\r\n\t},\r\n\tcontroller: CalendarResourceCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n});\r\n","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t
 
\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","'use strict';\r\nimport moment from 'moment';\r\n\r\nconst viewNames = {\r\n\ttimeline: {\r\n\t\tday: 'timelineDay',\r\n\t\tweek: 'timelineWeek',\r\n\t\tmonth: 'timelineMonth',\r\n\t},\r\n\tagenda: {\r\n\t\tday: 'agendaDay',\r\n\t\tweek: 'agendaWeek',\r\n\t\tmonth: 'month',\r\n\t},\r\n};\r\nconst defaultCalendarView = 'week';\r\nconst unassignedId = 'unassigned';\r\n\r\nexport default class CalendarController {\r\n\tconstructor($scope, $q, $timeout, $ocLazyLoad, lazyLoadCfg, $element, $rootScope, $compile, i18n, holidaysService, personalizationService, colorService, themeService) {\r\n\t\tthis.$scope = $scope;\r\n\t\tthis.$q = $q;\r\n\t\tthis.$timeout = $timeout;\r\n\t\tthis.$ocLazyLoad = $ocLazyLoad;\r\n\t\tthis.lazyLoadCfg = lazyLoadCfg;\r\n\t\tthis.$element = $element;\r\n\t\tthis.$rootScope = $rootScope;\r\n\t\tthis.$compile = $compile;\r\n\t\tthis.i18n = i18n;\r\n\t\tthis.holidaysService = holidaysService;\r\n\t\tthis.personalizationService = personalizationService;\r\n\t\tthis.colorService = colorService;\r\n\t\tthis.themeService = themeService;\r\n\r\n\t\tthis.isAbstractMode = false;\r\n\t\tthis.isShowHolidays = false;\r\n\t\tthis.isGroupingMode = false;\r\n\t\tthis.resourcesRendered = {};\r\n\r\n\t\tthis.unassignedTitle = i18n.get('solutionBuilderAgent.components.mx-calendar.unassigned');\r\n\r\n\t\tthis.events = [];\r\n\t\tthis.resources = [];\r\n\t\tthis._resourcePromise = $q.when(this.resources);\r\n\t\tthis.firstLoad = true;\r\n\t\tthis.calendarView = defaultCalendarView;\r\n\t\tthis.calendarWidth = 'auto';\r\n\r\n\t\tthis.options = {\r\n\t\t\tschedulerLicenseKey: '0346366776-fcs-1564564612',\r\n\t\t\theader: {\r\n\t\t\t\tleft: 'title',\r\n\t\t\t\tcenter: '',\r\n\t\t\t},\r\n\t\t\tcolumnHeaderHtml: function (mom) {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\tmom.format('dddd') +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\tmom.format('ddd') +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\tmom.format('DD/MM') +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
'\r\n\t\t\t\t);\r\n\t\t\t},\r\n\r\n\t\t\teventSources: [\r\n\t\t\t\t{\r\n\t\t\t\t\tid: 'items',\r\n\t\t\t\t\tevents: this.loadEvents.bind(this),\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tid: 'holidays',\r\n\t\t\t\t\tevents: async (start, end, timezone, callback) => {\r\n\t\t\t\t\t\tif (!this.isShowHolidays || this.isAbstractMode) {\r\n\t\t\t\t\t\t\tcallback([]);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconst holidays = await this.loadHolidays(start, end);\r\n\t\t\t\t\t\tcallback(holidays);\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t\tloading: (isLoading) => {\r\n\t\t\t\tthis.loading = isLoading;\r\n\t\t\t},\r\n\t\t\tresourceLabelText: i18n.get('solutionBuilderAgent.components.mx-calendar.resources'),\r\n\t\t\thandleWindowResize: true,\r\n\t\t\theight: 'parent',\r\n\t\t\teventLimit: true,\r\n\t\t\t// defaultAllDayEventDuration: {days: 1},\r\n\t\t\teventRender: this.eventRender.bind(this),\r\n\t\t\tviewRender: this.viewRender.bind(this),\r\n\t\t\teventDestroy: this.onEventDestroy.bind(this),\r\n\t\t\teventClick: this.onEventClick.bind(this),\r\n\t\t\ttimezone: 'local',\r\n\t\t\tunselectAuto: false,\r\n\t\t\twindowResize: () => {\r\n\t\t\t\tif (typeof this.reset === 'function') {\r\n\t\t\t\t\tthis.reset();\r\n\t\t\t\t\tdelete this.reset;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this.autoWidth) {\r\n\t\t\t\t\t//in case if calendar in 'fixed' mode (100% width of parent)\r\n\t\t\t\t\t//columns can be too small to show full day name\r\n\t\t\t\t\tconst width = this.calendarContainerEl.width();\r\n\r\n\t\t\t\t\tif (width < 700 && !this.calendarContainerEl.hasClass('short-day-name')) {\r\n\t\t\t\t\t\tthis.calendarContainerEl.addClass('short-day-name');\r\n\t\t\t\t\t} else if (width > 700 && this.calendarContainerEl.hasClass('short-day-name')) {\r\n\t\t\t\t\t\tthis.calendarContainerEl.removeClass('short-day-name');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tsnapDuration: '00:05:00',\r\n\t\t\teventAfterAllRender: this.onAfterAllRendered.bind(this),\r\n\t\t\teventTimeFormat: moment.localeData().longDateFormat('LT').replace(/\\s*a$/i, 'a'), // format like '4:00pm' instead of `4p`\r\n\t\t};\r\n\t\tthis.initEventColor();\r\n\t\t$q.all([\r\n\t\t\timport(/* webpackChunkName: \"calendar\" */ 'fullcalendar/dist/fullcalendar.min.css'),\r\n\t\t\timport(/* webpackChunkName: \"calendar\" */ 'fullcalendar/dist/fullcalendar.js'),\r\n\t\t\timport(/* webpackChunkName: \"calendar\" */ 'fullcalendar/dist/locale-all.js'),\r\n\t\t\timport(/* webpackChunkName: \"calendar\" */ 'fullcalendar-scheduler/dist/scheduler.min.js'),\r\n\t\t\timport(/* webpackChunkName: \"calendar\" */ 'fullcalendar-scheduler/dist/scheduler.min.css'),\r\n\t\t\timport(/* webpackChunkName: \"calendar\" */ 'angular-ui-calendar/src/calendar.js'),\r\n\t\t]).then(() => {\r\n\t\t\t$ocLazyLoad.inject('ui.calendar');\r\n\t\t\tthis.lazyLoaded = true;\r\n\t\t});\r\n\r\n\t\t$scope.$watch('vm.language', (newLang) => {\r\n\t\t\tif (newLang && newLang !== this.options.lang) {\r\n\t\t\t\tthis.options.lang = newLang;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$scope.$watch('vm.businessHours', (businessHours) => {\r\n\t\t\tif (businessHours !== undefined && this.calendar) {\r\n\t\t\t\tthis.calendar.option('businessHours', businessHours);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t$onInit() {\r\n\t\tlet allowEventsOverlapping = false;\r\n\r\n\t\tenableJQueryHtmlPrefilterHack();\r\n\r\n\t\tthis.isAbstractMode = (this.abstractMode || '').toLowerCase() === 'true'; // default: false\r\n\t\tthis.isShowHolidays = (this.showHolidays || '').toLowerCase() === 'true'; // default: false\r\n\t\tallowEventsOverlapping = (this.eventOverlap || '').toLowerCase() !== 'false'; // default: true\r\n\t\tthis.isGroupingMode = typeof this.itemExtraDimensionKey === 'string' && this.itemExtraDimensionKey.length > 0;\r\n\t\tthis.calendarContainerEl = this.$element.find('.calendar-container');\r\n\r\n\t\tconst minHeight = parseInt(this.height, 10);\r\n\t\tif (!isNaN(minHeight)) {\r\n\t\t\tthis.$element.css({ height: minHeight + 'px' });\r\n\t\t}\r\n\r\n\t\tthis.itemTitleKey = this.itemTitleKey || 'title';\r\n\t\tthis.itemDescriptionKey = this.itemDescriptionKey || 'description';\r\n\t\tthis.itemStartKey = this.itemStartKey || 'start';\r\n\t\tthis.itemEndKey = this.itemEndKey || 'end';\r\n\r\n\t\t// Calendar options\r\n\t\tangular.extend(this.options, {\r\n\t\t\tdefaultView: this.getDefaultView(),\r\n\t\t\teventOverlap: allowEventsOverlapping,\r\n\t\t\tbusinessHours: this.businessHours || false,\r\n\t\t\tbuttonText: {\r\n\t\t\t\ttoday: this.getTodayButtonTitle(),\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tthis.updateRangeButtons();\r\n\r\n\t\tif (this.isAbstractMode) {\r\n\t\t\tthis.enableAbstractMode();\r\n\t\t}\r\n\r\n\t\tif (this.isGroupingMode) {\r\n\t\t\tthis.enableGroupingMode();\r\n\t\t}\r\n\r\n\t\tif (this.isTimeline) {\r\n\t\t\tthis.enableTimeline();\r\n\t\t}\r\n\r\n\t\tif (!this.language) {\r\n\t\t\tthis.language = this.i18n.language;\r\n\t\t}\r\n\r\n\t\tif (this.language) {\r\n\t\t\tthis.options.lang = this.language;\r\n\t\t\tthis.options.locale = moment.locale();\r\n\t\t}\r\n\r\n\t\tif ((this.enableAdding || '').toLowerCase() === 'true') {\r\n\t\t\tthis.options.selectable = true;\r\n\t\t\tthis.options.select = (start, end, event, view, resource) => {\r\n\t\t\t\tconst newItem = {};\r\n\r\n\t\t\t\t// convert to local time for 'all-day' events, so time will be set as 00:00 for local time-zone\r\n\t\t\t\tnewItem[this.itemStartKey] = this.getLocalTimeISOString(start);\r\n\t\t\t\tnewItem[this.itemEndKey] = this.getLocalTimeISOString(end);\r\n\r\n\t\t\t\tif (this.itemWholeDayKey) {\r\n\t\t\t\t\tnewItem[this.itemWholeDayKey] = !start.hasTime();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.isGroupingMode) {\r\n\t\t\t\t\tnewItem[this.itemExtraDimensionKey] = resource.dimensionId;\r\n\t\t\t\t}\r\n\t\t\t\tif (\r\n\t\t\t\t\tallowEventsOverlapping ||\r\n\t\t\t\t\t//TODO: resource must be used in overlap calculation\r\n\t\t\t\t\t(!allowEventsOverlapping && !this._doesEventOverlapAnyEvents(newItem))\r\n\t\t\t\t) {\r\n\t\t\t\t\tthis.createEvent(newItem);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif ((this.enableChanging || '').toLowerCase() === 'true') {\r\n\t\t\tthis.options.editable = true;\r\n\t\t\t// Drag & drop\r\n\t\t\tthis.options.eventDrop = this._handleItemPositionChange.bind(this);\r\n\t\t\tthis.options.eventResize = this._handleItemPositionChange.bind(this);\r\n\t\t}\r\n\t}\r\n\r\n\t$onChanges(changes) {\r\n\t\tconst reloadResourcesIsNeeded =\r\n\t\t\t(changes.extraDimensions && Array.isArray(changes.extraDimensions.currentValue)) ||\r\n\t\t\t(changes.showUnassigned && typeof changes.showUnassigned.currentValue === 'boolean');\r\n\r\n\t\tif (reloadResourcesIsNeeded && !this.waitingDimensions) {\r\n\t\t\tthis.reloadResources();\r\n\t\t}\r\n\r\n\t\tif (changes.isTimeline && typeof changes.isTimeline.currentValue === 'boolean') {\r\n\t\t\tif (changes.isTimeline.currentValue) {\r\n\t\t\t\tthis.enableTimeline();\r\n\t\t\t} else {\r\n\t\t\t\tthis.disableTimeline();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (changes.calendarView && typeof changes.calendarView.currentValue === 'string') {\r\n\t\t\tthis.setCalendarView(changes.calendarView.currentValue);\r\n\t\t}\r\n\t}\r\n\r\n\t$onDestroy() {\r\n\t\tdisableJQueryHtmlPrefilterHack();\r\n\t}\r\n\r\n\tasync loadEvents(start, end, timezone, callback) {\r\n\t\tconst defer = this.$q.defer();\r\n\t\tthis._resourcePromise = defer.promise;\r\n\t\tawait this.loadItems(start, end);\r\n\t\tthis.events = this.mapEvents(this.items, start, end);\r\n\t\tthis.waitingDimensions = true;\r\n\r\n\t\tthis.$timeout(() => {\r\n\t\t\t//wait 1 digest while extra-dimensions will be bind to directive, to avoid double loading\r\n\t\t\tthis.waitingDimensions = false;\r\n\r\n\t\t\tthis.previousRangeStart = start.clone();\r\n\t\t\tthis.previousRangeEnd = end.clone();\r\n\r\n\t\t\tconst resources = this.getResources(start, end);\r\n\t\t\tconst resourcesChanged = this.isResourcesChanged(this.resources, resources);\r\n\t\t\tif (resourcesChanged) {\r\n\t\t\t\tthis.resources = resources;\r\n\t\t\t}\r\n\t\t\tdefer.resolve(this.resources);\r\n\t\t\tcallback(this.events);\r\n\t\t});\r\n\t}\r\n\r\n\tasync loadItems(start, end) {\r\n\t\tstart = start.clone();\r\n\t\tend = end.clone();\r\n\t\tif (!this.itemsWatcher) {\r\n\t\t\tconst watcherDefer = this.$q.defer();\r\n\t\t\tthis.itemsWatcher = this.$scope.$watchCollection('vm.items', (newValue, oldValue) => {\r\n\t\t\t\twatcherDefer.resolve();\r\n\t\t\t\tif (newValue === oldValue) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (!this.internalRequestInProgress) {\r\n\t\t\t\t\tif (this.calendar) {\r\n\t\t\t\t\t\tthis.itemsWatcherInProgress = true;\r\n\t\t\t\t\t\tthis.calendar.refetchEvents();\r\n\t\t\t\t\t\tthis.itemsWatcherInProgress = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tawait watcherDefer.promise;\r\n\t\t}\r\n\r\n\t\tif (typeof this.itemsLoader === 'function' && !this.itemsWatcherInProgress) {\r\n\t\t\tthis.addBufferTime(start, end);\r\n\t\t\tthis.internalRequestInProgress = true;\r\n\t\t\tthis.items = await this.itemsLoader({\r\n\t\t\t\tstart: start,\r\n\t\t\t\tend: end,\r\n\t\t\t\tcurrentDate: this.calendar ? this.calendar.currentDate : moment(),\r\n\t\t\t\tcalendarView: this.calendarView,\r\n\t\t\t});\r\n\t\t\tthis.internalRequestInProgress = false;\r\n\t\t}\r\n\t\treturn this.$q.when(this.items);\r\n\t}\r\n\r\n\tgetWholeDayTimezoneCorrection(_date) {\r\n\t\t//wholeDay events has Start as time and not as date (because there is no Date type in DB),\r\n\t\t//and start is saved 00:00 in local time (ex. for Ukraine it is saved as 21:00 previous day UTC)\r\n\t\t//so it is necessary to get just correct Date from such time with correction on time-zone\r\n\t\tconst date = moment.utc(_date);\r\n\r\n\t\tif (date.hour() >= 12) {\r\n\t\t\tdate.add(1, 'days');\r\n\t\t}\r\n\t\tdate.stripTime();\r\n\r\n\t\treturn date.toISOString();\r\n\t}\r\n\r\n\tgetLocalTimeISOString(_date) {\r\n\t\treturn moment(_date.toISOString()).toISOString();\r\n\t}\r\n\r\n\tmapEvent(item) {\r\n\t\tconst color = (item[this.itemColorKey] || '').toLowerCase().replace('0xff', '#');\r\n\t\tconst allDay = Boolean(item[this.itemWholeDayKey]);\r\n\t\tlet start = item[this.itemStartKey];\r\n\t\tlet end = item[this.itemEndKey];\r\n\r\n\t\tif (allDay) {\r\n\t\t\tstart = this.getWholeDayTimezoneCorrection(start);\r\n\t\t\tconst endOfOneDayAllDay = moment(start).add(1, 'd').stripTime().toISOString();\r\n\r\n\t\t\tif (end) {\r\n\t\t\t\tend = this.getWholeDayTimezoneCorrection(end);\r\n\t\t\t\tif (moment(end).isSameOrBefore(moment(start))) {\r\n\t\t\t\t\tend = endOfOneDayAllDay;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tend = endOfOneDayAllDay;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst event = {\r\n\t\t\tid: item._id,\r\n\t\t\tbackgroundColor: color,\r\n\t\t\tborderColor: color,\r\n\t\t\ttextColor: this.colorService.getBrightness(color) > 123 ? '#000000cc' : '#ffffffcc',\r\n\t\t\tallDay: allDay,\r\n\t\t\tresourceId: this.getResourceIdFromItem(item),\r\n\t\t\tdimensionId: this.getExtraDimensionIdFromItem(item),\r\n\t\t\tstart: start,\r\n\t\t\tend: end,\r\n\r\n\t\t\t__originalItem: item,\r\n\t\t};\r\n\r\n\t\tif (item[this.itemBackgroundKey]) {\r\n\t\t\tangular.extend(event, {\r\n\t\t\t\teditable: false,\r\n\t\t\t\tisBackgroundItem: true,\r\n\t\t\t\trendering: 'background',\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tangular.extend(event, {\r\n\t\t\t\ttitle: item[this.itemTitleKey],\r\n\t\t\t\tdescription: item[this.itemDescriptionKey],\r\n\t\t\t\teditable: this.options.editable && !item[this.itemReadonlyKey],\r\n\t\t\t\tclassName: item[this.itemReadonlyKey] ? ['readonly'] : [],\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn event;\r\n\t}\r\n\r\n\tmapEvents(data, start, end) {\r\n\t\tconst comparer = this.rangeComparer(start, end);\r\n\r\n\t\tif (Array.isArray(data)) {\r\n\t\t\treturn this.mapComplexEvents(data.map(this.mapEvent, this))\r\n\t\t\t\t.filter(comparer, this)\r\n\t\t\t\t.filter((event) => {\r\n\t\t\t\t\treturn !this.isTimeline || !event.isBackgroundItem;\r\n\t\t\t\t});\r\n\t\t}\r\n\t\treturn [];\r\n\t}\r\n\r\n\trangeComparer(_periodStart, _periodEnd) {\r\n\t\tconst allDayPeriodStart = moment.utc(this.getWholeDayTimezoneCorrection(_periodStart));\r\n\t\tconst allDayPeriodEnd = moment.utc(this.getWholeDayTimezoneCorrection(_periodEnd));\r\n\r\n\t\treturn function isDateInRange(event) {\r\n\t\t\tconst periodStart = event.allDay ? allDayPeriodStart : _periodStart;\r\n\t\t\tconst periodEnd = event.allDay ? allDayPeriodEnd : _periodEnd;\r\n\r\n\t\t\tconst eventStart = moment.utc(event.start);\r\n\t\t\tconst eventEnd = moment.utc(event.end);\r\n\r\n\t\t\tif (event.allDay) {\r\n\t\t\t\teventStart.stripTime();\r\n\t\t\t\teventEnd.stripTime();\r\n\t\t\t}\r\n\r\n\t\t\tconst diff = Math.min(periodEnd, eventEnd) - Math.max(periodStart, eventStart);\r\n\t\t\treturn diff > 0 || (event.allDay && diff > 0);\r\n\t\t};\r\n\t}\r\n\r\n\tmapComplexEvents(events) {\r\n\t\tconst eventsGroupedById = {};\r\n\r\n\t\tevents.sort(function (eventA, eventB) {\r\n\t\t\tconst diff = moment(eventA.start) - moment(eventB.start);\r\n\t\t\treturn diff > 0 ? 1 : diff ? 0 : -1;\r\n\t\t});\r\n\t\tevents.forEach(function (event) {\r\n\t\t\tif (typeof event.id === 'undefined') {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\teventsGroupedById[event.id] = eventsGroupedById[event.id] || [];\r\n\t\t\teventsGroupedById[event.id].push(event);\r\n\t\t});\r\n\r\n\t\tObject.keys(eventsGroupedById).forEach((id) => {\r\n\t\t\tconst groupedEvents = eventsGroupedById[id];\r\n\t\t\tif (groupedEvents.length > 1) {\r\n\t\t\t\tconst complexEventConfig = {\r\n\t\t\t\t\tid: id,\r\n\t\t\t\t\ttitle: groupedEvents[0].title,\r\n\t\t\t\t\tnumOfParts: eventsGroupedById[id].length,\r\n\t\t\t\t\tstart: moment(groupedEvents[0].start),\r\n\t\t\t\t\tend: groupedEvents[groupedEvents.length - 1].end && moment(groupedEvents[groupedEvents.length - 1].end),\r\n\t\t\t\t\teditable: groupedEvents[0].editable,\r\n\t\t\t\t\tevents: groupedEvents,\r\n\t\t\t\t};\r\n\t\t\t\tgroupedEvents.forEach((event, i) => {\r\n\t\t\t\t\tevent.complexEventConfig = complexEventConfig;\r\n\t\t\t\t\tevent.id += '_' + i;\r\n\t\t\t\t\tevent.complexEvent = true;\r\n\t\t\t\t\tevent.complexEventPart = i;\r\n\t\t\t\t\tevent.className = ['mx-complex-event'];\r\n\t\t\t\t\tevent.title =\r\n\t\t\t\t\t\tthis.i18n.getFormatted('solutionBuilderAgent.components.mx-calendar.complexEventTitle', event.complexEventPart + 1, event.complexEventConfig.numOfParts) +\r\n\t\t\t\t\t\t': ' +\r\n\t\t\t\t\t\t(event.title || '');\r\n\r\n\t\t\t\t\tevent.editable = false;\r\n\t\t\t\t\tevent.startEditable = false;\r\n\t\t\t\t\tevent.durationEditable = false;\r\n\t\t\t\t\tevent.tooltip = this.i18n.get('solutionBuilderAgent.components.mx-calendar.complexEventTooltip');\r\n\t\t\t\t});\r\n\t\t\t\tgroupedEvents[0].startEditable = complexEventConfig.editable;\r\n\t\t\t\tgroupedEvents[0].className.push('mx-complex-event-first');\r\n\t\t\t\tgroupedEvents[complexEventConfig.numOfParts - 1].durationEditable = complexEventConfig.editable;\r\n\t\t\t\tgroupedEvents[complexEventConfig.numOfParts - 1].className.push('mx-complex-event-last');\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn events;\r\n\t}\r\n\r\n\tmapHolidays(data) {\r\n\t\tif (Array.isArray(data)) {\r\n\t\t\treturn data.map((holiday) => {\r\n\t\t\t\tconst resourceIds = this.isTimeline ? [] : this.resources.map((resource) => resource.id);\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttitle: holiday.name,\r\n\t\t\t\t\tstart: this.getWholeDayTimezoneCorrection(holiday.dateFrom),\r\n\t\t\t\t\teditable: false,\r\n\t\t\t\t\tallDay: true,\r\n\t\t\t\t\tholidayEvent: true,\r\n\t\t\t\t\tresourceIds: resourceIds,\r\n\t\t\t\t\t__originalItem: holiday,\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn [];\r\n\t}\r\n\r\n\tasync loadHolidays(start, end) {\r\n\t\tconst data = await this.holidaysService.getUserHolidays(start.toISOString(), end.toISOString());\r\n\t\treturn this.mapHolidays(data);\r\n\t}\r\n\r\n\treloadResources() {\r\n\t\tif (!this.previousRangeStart) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst resources = this.getResources(this.previousRangeStart, this.previousRangeEnd);\r\n\t\tconst resourcesChanged = this.isResourcesChanged(this.resources, resources);\r\n\t\tif (resourcesChanged) {\r\n\t\t\tthis.resources = resources;\r\n\t\t\tthis._resourcePromise = this.$q.when(this.resources);\r\n\r\n\t\t\tif (this.calendar) {\r\n\t\t\t\tthis.calendar.refetchResources();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetResources(start, end) {\r\n\t\tif (!this.isGroupingMode) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\tthis.resourcesRendered = {};\r\n\t\tlet resources = [];\r\n\t\tconst dimensions = Array.isArray(this.extraDimensions) ? this.extraDimensions.slice() : [];\r\n\r\n\t\tif (this.isTimeline) {\r\n\t\t\tresources = dimensions.map((dimension) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tid: dimension.id,\r\n\t\t\t\t\ttitle: this.i18n.get('solutionBuilderAgent.components.mx-calendar.selectRangeToAddItem'),\r\n\t\t\t\t\tdimensionId: dimension.id,\r\n\t\t\t\t\tdimensionTitle: dimension.title,\r\n\t\t\t\t\temptyLine: true,\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tif (this.showUnassigned) {\r\n\t\t\t\tresources.unshift({\r\n\t\t\t\t\tid: unassignedId,\r\n\t\t\t\t\ttitle: this.i18n.get('solutionBuilderAgent.components.mx-calendar.selectRangeToAddItem'),\r\n\t\t\t\t\tdimensionId: null,\r\n\t\t\t\t\tdimensionTitle: this.unassignedTitle,\r\n\t\t\t\t\temptyLine: true,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconst childrenResources = this.mapEvents(this.items, start, end)\r\n\t\t\t\t.map((event) => {\r\n\t\t\t\t\tconst resource =\r\n\t\t\t\t\t\tresources.find(function (resource) {\r\n\t\t\t\t\t\t\treturn resource.dimensionId === event.dimensionId;\r\n\t\t\t\t\t\t}) || {};\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tid: event.complexEvent ? event.complexEventConfig.id : event.id,\r\n\t\t\t\t\t\ttitle: event.complexEvent ? event.complexEventConfig.title : event.title,\r\n\t\t\t\t\t\tdimensionTitle: resource.dimensionTitle,\r\n\t\t\t\t\t\tdimensionId: resource.dimensionId,\r\n\t\t\t\t\t};\r\n\t\t\t\t})\r\n\t\t\t\t.filter(function (resource) {\r\n\t\t\t\t\treturn typeof resource.dimensionId !== 'undefined';\r\n\t\t\t\t});\r\n\r\n\t\t\tconst accum = {};\r\n\t\t\tresources = childrenResources.concat(resources);\r\n\t\t\tresources.forEach(function (item) {\r\n\t\t\t\tif (!accum.hasOwnProperty(item.dimensionId)) {\r\n\t\t\t\t\taccum[item.dimensionId] = true;\r\n\t\t\t\t}\r\n\t\t\t\titem.isOdd = !accum[item.dimensionId];\r\n\t\t\t\taccum[item.dimensionId] = !accum[item.dimensionId];\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tresources = dimensions;\r\n\t\t\tresources.forEach(function (resource) {\r\n\t\t\t\tresource.dimensionId = resource.id;\r\n\t\t\t\tresource.eventsOfDay = {};\r\n\t\t\t});\r\n\r\n\t\t\tif (this.showUnassigned) {\r\n\t\t\t\tresources.unshift({\r\n\t\t\t\t\tid: unassignedId,\r\n\t\t\t\t\ttitle: this.unassignedTitle,\r\n\t\t\t\t\tdimensionId: null,\r\n\t\t\t\t\teventsOfDay: {},\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn resources;\r\n\t}\r\n\r\n\tisResourcesChanged(oldResources, newResources) {\r\n\t\tif (!Array.isArray(oldResources) || !Array.isArray(newResources) || oldResources.length !== newResources.length) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tconst dimensions = {};\r\n\t\toldResources.forEach(function (resource) {\r\n\t\t\tdimensions[resource.id] = resource.dimensionId;\r\n\t\t});\r\n\t\treturn !newResources.every(function (resource) {\r\n\t\t\treturn dimensions[resource.id] === resource.dimensionId;\r\n\t\t});\r\n\t}\r\n\r\n\taddBufferTime(start, end) {\r\n\t\t// TODO: Improve the showing events between the switching.\r\n\t\t// At current moment it was reached through the extension of the date range's window.\r\n\t\tlet bufferSize = 0;\r\n\t\tswitch (this.calendarView) {\r\n\t\t\tcase 'day':\r\n\t\t\t\tbufferSize = 4;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'week':\r\n\t\t\t\tbufferSize = 3;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'month':\r\n\t\t\t\tbufferSize = 2;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tstart.add(-bufferSize, this.calendarView + 's');\r\n\t\tend.add(bufferSize, this.calendarView + 's');\r\n\t}\r\n\r\n\tonEventClick(item, clickEvent) {\r\n\t\tif (item.holidayEvent) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\t(this.enableRemoving || '').toLowerCase() === 'true' &&\r\n\t\t\t// If clicked on close-button \"X\"\r\n\t\t\tclickEvent.offsetY <= 14 &&\r\n\t\t\tclickEvent.offsetX >= $(clickEvent.target).width() - 14\r\n\t\t) {\r\n\t\t\tthis.$scope.$evalAsync(() => {\r\n\t\t\t\tif (item.__originalItem) {\r\n\t\t\t\t\tconst index = this.items.indexOf(item.__originalItem);\r\n\t\t\t\t\tthis.items.splice(index, 1);\r\n\t\t\t\t\t// updateEvents(vm.items);\r\n\t\t\t\t\tthis.onItemRemoved({\r\n\t\t\t\t\t\tevent: clickEvent,\r\n\t\t\t\t\t\titem: item.__originalItem,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.onItemClick({\r\n\t\t\t\tevent: clickEvent,\r\n\t\t\t\titem: item.__originalItem,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tonEventDestroy(event, element) {\r\n\t\tif (!this.dropdownMenuOptions) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\telement.off('contextmenu');\r\n\t}\r\n\r\n\trerenderCalendarHeader() {\r\n\t\tif (!this.calendar) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.calendar.renderHeader();\r\n\t\tthis.calendar.setToolbarsTitle(this.calendar.view.title);\r\n\t\tthis.calendar.updateToolbarButtons(this.calendar.view.dateProfile);\r\n\t\tthis.calendar.toolbarsManager.proxyCall('activateButton', this.calendar.view.type);\r\n\t}\r\n\r\n\tupdateTodayButtonTitle() {\r\n\t\tif (!this.calendar) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.calendar.optionsManager.overrides.buttonText = {\r\n\t\t\ttoday: this.getTodayButtonTitle(),\r\n\t\t};\r\n\t\tthis.rerenderCalendarHeader();\r\n\t}\r\n\r\n\tviewRender(view /*, element*/) {\r\n\t\tthis.view = view;\r\n\t\tthis.calendar = view.calendar;\r\n\t\tthis.resourcesRendered = {};\r\n\r\n\t\tif (this.calendarView !== view.viewSpec.singleUnit) {\r\n\t\t\tthis.calendarView = view.viewSpec.singleUnit;\r\n\t\t\tthis.personalizationService.saveCalendarView(this.contextId, this.calendarView);\r\n\r\n\t\t\tthis.updateTodayButtonTitle();\r\n\t\t}\r\n\t\tif (this.autoWidth && !this.isTimeline) {\r\n\t\t\tconst columnMinWidth = this.calendarView !== 'month' ? 245 : 100;\r\n\t\t\tconst numOfColumns = (this.calendarView === 'day' ? 1 : 7) * Math.max(this.resources.length, 1);\r\n\t\t\tthis.calendarWidth = numOfColumns * columnMinWidth + 'px';\r\n\t\t} else {\r\n\t\t\tthis.calendarWidth = 'auto';\r\n\t\t}\r\n\r\n\t\t// restore moment correct locale.\r\n\t\tmoment.locale(mx.components.Utils.getMomentJsSupportedLocale(this.language));\r\n\t}\r\n\r\n\teventRender(event, element) {\r\n\t\tconst content = element[0].firstChild;\r\n\t\tlet node;\r\n\r\n\t\tif (event.description) {\r\n\t\t\tnode = document.createElement('div');\r\n\t\t\tnode.className = 'fc-description';\r\n\t\t\tnode.innerText = event.description;\r\n\t\t\tcontent.appendChild(node);\r\n\t\t}\r\n\r\n\t\tif (event.tooltip) {\r\n\t\t\telement.attr('title', event.tooltip);\r\n\t\t}\r\n\r\n\t\tif (!this.dropdownMenuOptions) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\telement.on('contextmenu', async (ev) => {\r\n\t\t\tev.preventDefault();\r\n\r\n\t\t\tif (!event.holidayEvent && !event.isBackgroundItem) {\r\n\t\t\t\tconst actions = await this.onItemRightClick({ item: event.__originalItem });\r\n\t\t\t\tangular.extend(this.dropdownMenuOptions, {\r\n\t\t\t\t\tdropdownEvent: ev,\r\n\t\t\t\t\tmenuItems: actions,\r\n\t\t\t\t\tisDropdownOpen: true,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tresourceRender(resource, labelTds, bodyTds, view) {\r\n\t\tthis.view = view;\r\n\t\tthis.calendar = view.calendar;\r\n\r\n\t\tif (!this.isGroupingMode || (!this.isTimeline && view.viewSpec.singleUnit === 'month')) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.isTimeline) {\r\n\t\t\tif (resource.emptyLine) {\r\n\t\t\t\tlabelTds.addClass('resource-empty-line');\r\n\t\t\t\tbodyTds.addClass('resource-empty-line');\r\n\t\t\t}\r\n\t\t\tconst buildClassName = (type) => 'resource-item-base-' + type + (resource.isOdd ? '-odd' : '-even');\r\n\t\t\tlabelTds.addClass(buildClassName('label'));\r\n\t\t\tbodyTds.addClass(buildClassName('body'));\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.resourcesRendered[resource.id] = this.resourcesRendered[resource.id] || 0;\r\n\r\n\t\tlabelTds[0].innerHTML = '';\r\n\r\n\t\tconst dayNumber = this.resourcesRendered[resource.id];\r\n\r\n\t\tconst template = '';\r\n\r\n\t\tconst _elem = angular.element(template);\r\n\t\t$(labelTds[0]).append(_elem);\r\n\t\tthis.compile(_elem);\r\n\r\n\t\tthis.resourcesRendered[resource.id]++;\r\n\t}\r\n\r\n\tsetNumberOfEventsPerDay() {\r\n\t\tif (this.isGroupingMode && !this.isTimeline && this.view && this.view.timeGrid) {\r\n\t\t\tthis.view.timeGrid.dayIndices.forEach((dayNumber) => {\r\n\t\t\t\tthis.resources.forEach((resource) => {\r\n\t\t\t\t\tresource.eventsOfDay[dayNumber] = this.getNumEventsOfDay(dayNumber, resource.id);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tupdateNumberOfEventsPerDay(newEvent, oldEvent) {\r\n\t\tconst newDayNumber = this.getDayNumberByTime(newEvent.start, newEvent.end);\r\n\t\tconst oldDayNumber = this.getDayNumberByTime(oldEvent.start, oldEvent.end);\r\n\t\tconst resource = this.resources.find((resource) => resource.id === newEvent.resourceId);\r\n\t\tconst isResourceChanged = newEvent.resourceId !== oldEvent.resourceId;\r\n\r\n\t\tif (isResourceChanged) {\r\n\t\t\tconst newResource = resource;\r\n\t\t\tconst oldResource = this.resources.find((resource) => resource.id === oldEvent.resourceId);\r\n\r\n\t\t\tnewResource.eventsOfDay[newDayNumber]++;\r\n\t\t\toldResource.eventsOfDay[oldDayNumber]--;\r\n\t\t} else {\r\n\t\t\tresource.eventsOfDay[newDayNumber]++;\r\n\t\t\tresource.eventsOfDay[oldDayNumber]--;\r\n\t\t}\r\n\t}\r\n\r\n\tonAfterAllRendered(view) {\r\n\t\tthis.setNumberOfEventsPerDay();\r\n\r\n\t\tif (view.axisWidth > 1) {\r\n\t\t\t$('th.fc-axis.fc-widget-header').css('min-width', view.axisWidth + 'px');\r\n\t\t}\r\n\r\n\t\t// in autoWidth mode in \"week\" view calendar width can be more than container width,\r\n\t\t// so it is necessary to scroll to current day after init,\r\n\t\t// but only if calendar is visible at current moment (ex. it should not be scrolled if it was rendered in hidden tab)\r\n\t\tif (this.firstLoad && this.autoWidth && this.calendarView === 'week' && this.$element.is(':visible') && this.$element.css('visibility') !== 'hidden') {\r\n\t\t\tthis.scrollToCurrentDay();\r\n\t\t}\r\n\r\n\t\tthis.firstLoad = false;\r\n\t}\r\n\r\n\tgetTodayButtonTitle() {\r\n\t\tswitch (this.calendarView) {\r\n\t\t\tcase 'week':\r\n\t\t\t\treturn this.i18n.get('solutionBuilderAgent.components.mx-calendar.currentWeek');\r\n\t\t\tcase 'month':\r\n\t\t\t\treturn this.i18n.get('solutionBuilderAgent.components.mx-calendar.currentMonth');\r\n\t\t\tcase 'day':\r\n\t\t\t\treturn this.i18n.get('solutionBuilderAgent.common.today');\r\n\t\t\tdefault:\r\n\t\t\t\treturn this.i18n.get('solutionBuilderAgent.common.today');\r\n\t\t}\r\n\t}\r\n\r\n\tsetCalendarView(inputView) {\r\n\t\tconst supportedViews = this.getSupportedViews();\r\n\r\n\t\tswitch (inputView) {\r\n\t\t\tcase 'day':\r\n\t\t\tcase 'agendaDay':\r\n\t\t\t\tthis.calendarView = 'day';\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'week':\r\n\t\t\tcase 'agendaWeek':\r\n\t\t\t\tthis.calendarView = 'week';\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'month':\r\n\t\t\t\tthis.calendarView = 'month';\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthis.calendarView = 'week';\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif (supportedViews.indexOf(this.calendarView) < 0) {\r\n\t\t\tif (!supportedViews.length || supportedViews.indexOf(defaultCalendarView) > 0) {\r\n\t\t\t\tthis.calendarView = defaultCalendarView;\r\n\t\t\t} else {\r\n\t\t\t\tthis.calendarView = supportedViews[0];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetDefaultView() {\r\n\t\treturn viewNames[this.getCurrentViewType()][this.calendarView];\r\n\t}\r\n\r\n\tenableAbstractMode() {\r\n\t\tangular.extend(this.options, {\r\n\t\t\theader: {\r\n\t\t\t\tleft: '',\r\n\t\t\t\tcenter: '',\r\n\t\t\t\tright: '',\r\n\t\t\t},\r\n\t\t\tcolumnFormat: 'ddd',\r\n\t\t\tdefaultDate: new Date('1970-01-05'),\r\n\t\t\ttimezone: 'UTC',\r\n\t\t});\r\n\t}\r\n\r\n\tgetSupportedViews() {\r\n\t\tconst supportedViews = [];\r\n\t\t['Day', 'Week', 'Month'].forEach((viewName) => {\r\n\t\t\tif (this['show' + viewName + 'View'] !== false) {\r\n\t\t\t\t//true or undefined (by default)\r\n\t\t\t\tsupportedViews.push(viewName.toLowerCase());\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn supportedViews;\r\n\t}\r\n\r\n\tgetCurrentViewType() {\r\n\t\treturn this.isTimeline ? 'timeline' : 'agenda';\r\n\t}\r\n\r\n\tupdateRangeButtons() {\r\n\t\tthis.options.header.right = 'prev,today,next ';\r\n\r\n\t\tconst viewType = this.getCurrentViewType();\r\n\t\tlet views = '';\r\n\t\tconst supportedViews = this.getSupportedViews();\r\n\t\tif (supportedViews.length <= 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsupportedViews.forEach((viewName) => {\r\n\t\t\tconst view = viewNames[viewType][viewName] || '';\r\n\t\t\tviews += (view && views ? ',' : '') + view;\r\n\t\t});\r\n\t\tthis.options.header.right += views;\r\n\t}\r\n\r\n\tenableTimeline() {\r\n\t\tthis.updateRangeButtons();\r\n\t\tthis.options.slotLabelFormat = null;\r\n\t\tthis.options.selectAllow = (selectInfo) => {\r\n\t\t\treturn this.resources.some(\r\n\t\t\t\t(resource) => resource.id === selectInfo.resourceId && (resource.dimensionId === selectInfo.resourceId || selectInfo.resourceId === unassignedId)\r\n\t\t\t);\r\n\t\t};\r\n\t}\r\n\r\n\tdisableTimeline() {\r\n\t\tthis.updateRangeButtons();\r\n\t\tthis.options.slotLabelFormat = 'LT';\r\n\t\tdelete this.options.selectAllow;\r\n\t}\r\n\r\n\tenableGroupingMode() {\r\n\t\tangular.extend(this.options, {\r\n\t\t\t// datesAboveResources: true,\r\n\t\t\tviews: {\r\n\t\t\t\tmonth: {\r\n\t\t\t\t\tgroupByDateAndResource: false,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tslotLabelFormat: 'LT',\r\n\t\t\tnowIndicator: true,\r\n\t\t\tgroupByDateAndResource: true,\r\n\t\t\tresourceGroupField: 'dimensionTitle',\r\n\t\t\trefetchResourcesOnNavigate: true,\r\n\t\t\tlazyFetching: false,\r\n\t\t\tresources: async (callback) => {\r\n\t\t\t\tconst resources = await this._resourcePromise;\r\n\t\t\t\tcallback(resources);\r\n\t\t\t},\r\n\t\t\tresourceRender: this.resourceRender.bind(this),\r\n\t\t});\r\n\t}\r\n\r\n\tgetNumEventsOfDay(dayNumber, resourceId) {\r\n\t\tconst dayRange = this.view.timeGrid.dayRanges[dayNumber];\r\n\t\tif (dayRange) {\r\n\t\t\tconst start = moment(dayRange.startMs - moment().utcOffset() * 60000),\r\n\t\t\t\tend = moment(dayRange.endMs - moment().utcOffset() * 60000);\r\n\t\t\tconst comparer = this.rangeComparer(start.toDate(), end.toDate());\r\n\t\t\tconst events = this.calendar.getResourceEvents(resourceId);\r\n\t\t\treturn events.filter((event) => !event.isBackgroundItem && !event.holidayEvent && comparer(event)).length;\r\n\t\t}\r\n\t}\r\n\r\n\tcompile(tpl /*, resource*/) {\r\n\t\tlet localScope = this.$rootScope.$new(false, this.$scope);\r\n\t\tthis.$compile(tpl)(localScope);\r\n\t\tthis.$element.on('$destroy', () => {\r\n\t\t\tif (localScope) {\r\n\t\t\t\tlocalScope.$destroy();\r\n\r\n\t\t\t\tlocalScope = null;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_doesEventOverlapAnyEvents(item) {\r\n\t\tconst itemStart = moment.utc(item[this.itemStartKey]);\r\n\t\tconst itemEnd = moment.utc(item[this.itemEndKey]);\r\n\t\t//TODO: works just for 1 case, fix for all cases\r\n\t\treturn this.events.some((it) => itemStart < it.end && it.start < itemEnd);\r\n\t}\r\n\r\n\tcreateEvent(newItem) {\r\n\t\tthis.disabled = true;\r\n\r\n\t\treturn (\r\n\t\t\ttypeof this.onRangeSelect === 'function'\r\n\t\t\t\t? // External Handler\r\n\t\t\t\t this.onRangeSelect({\r\n\t\t\t\t\t\tstart: newItem[this.itemStartKey],\r\n\t\t\t\t\t\tend: newItem[this.itemEndKey],\r\n\t\t\t\t\t\twholeDay: newItem[this.itemWholeDayKey],\r\n\t\t\t\t\t\tdimensionId: this.getExtraDimensionIdFromItem(newItem),\r\n\t\t\t\t })\r\n\t\t\t\t: // Internal handler\r\n\t\t\t\t this.$q((resolve) => {\r\n\t\t\t\t\t\tthis.items.push(newItem);\r\n\t\t\t\t\t\tresolve(newItem);\r\n\t\t\t\t })\r\n\t\t).finally(() => {\r\n\t\t\tthis.setNumberOfEventsPerDay();\r\n\t\t\tthis.disabled = false;\r\n\t\t});\r\n\t}\r\n\r\n\tgetDayNumberByTime(start, end) {\r\n\t\tconst day = this.view.timeGrid.dayRanges.find(function (range) {\r\n\t\t\tconst dayStart = moment(range.startMs);\r\n\t\t\tconst dayEnd = moment(range.endMs);\r\n\t\t\treturn start >= dayStart && end <= dayEnd;\r\n\t\t});\r\n\t\treturn this.view.timeGrid.dayRanges.indexOf(day);\r\n\t}\r\n\r\n\tasync _handleItemPositionChange(event, delta, revertFunc /*, jsEvent, ui, view*/) {\r\n\t\tthis.disabled = true;\r\n\t\tconst oldEvent = this.mapEvent(event.__originalItem);\r\n\t\toldEvent.start = moment(oldEvent.start);\r\n\t\toldEvent.end = oldEvent.end && moment(oldEvent.end);\r\n\r\n\t\tif (this.isGroupingMode) {\r\n\t\t\tevent.dimensionId = this.resources.find((resource) => resource.id === event.resourceId).dimensionId;\r\n\t\t}\r\n\r\n\t\tlet start, end;\r\n\r\n\t\tif (event.complexEvent) {\r\n\t\t\tstart = moment(event.complexEventConfig.start + (event.start - oldEvent.start));\r\n\t\t\tif (event.end) {\r\n\t\t\t\tend = moment(event.complexEventConfig.end + (event.end - oldEvent.end));\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tstart = event.start;\r\n\t\t\tend = event.end;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\t//external handler\r\n\t\t\tif (typeof this.onItemMove === 'function') {\r\n\t\t\t\tawait this.onItemMove({\r\n\t\t\t\t\tstart: this.getLocalTimeISOString(start),\r\n\t\t\t\t\tend: end && this.getLocalTimeISOString(end),\r\n\t\t\t\t\twholeDay: event.allDay,\r\n\t\t\t\t\tdimensionId: event.dimensionId,\r\n\t\t\t\t\titem: event.__originalItem,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.updateChangedEvent(event);\r\n\t\t\tif (this.isGroupingMode) {\r\n\t\t\t\tthis.updateNumberOfEventsPerDay(event, oldEvent);\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tthis.reset = revertFunc;\r\n\t\t\tthis.reset();\r\n\t\t}\r\n\r\n\t\tthis.disabled = false;\r\n\t}\r\n\r\n\tgetResourceIdFromItem(item) {\r\n\t\tif (!this.isGroupingMode) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.isTimeline) {\r\n\t\t\treturn item._id;\r\n\t\t} else {\r\n\t\t\tconst dimensionId = this.getExtraDimensionIdFromItem(item);\r\n\t\t\treturn dimensionId === null ? unassignedId : dimensionId;\r\n\t\t}\r\n\t}\r\n\r\n\tgetExtraDimensionIdFromItem(item) {\r\n\t\treturn this.isGroupingMode && typeof item[this.itemExtraDimensionKey] !== 'undefined' ? item[this.itemExtraDimensionKey] : null;\r\n\t}\r\n\r\n\tupdateChangedEvent(event) {\r\n\t\tevent.__originalItem[this.itemStartKey] = this.getLocalTimeISOString(event.start);\r\n\t\tevent.__originalItem[this.itemEndKey] = event.end && this.getLocalTimeISOString(event.end);\r\n\t\tevent.__originalItem[this.itemWholeDayKey] = event.allDay;\r\n\t\tif (this.isGroupingMode) {\r\n\t\t\tevent.__originalItem[this.itemExtraDimensionKey] = event.dimensionId;\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToCurrentDay() {\r\n\t\tconst element = $('.fc-view-container .fc-view .fc-head .fc-day-header.fc-today')[0];\r\n\t\tif (!element) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (typeof element.scrollIntoView === 'function') {\r\n\t\t\telement.scrollIntoView({\r\n\t\t\t\tblock: 'end',\r\n\t\t\t\tinline: 'center',\r\n\t\t\t});\r\n\t\t\t// Fix Calendar layout for Edge (after page refresh by browser button)\r\n\t\t\tif (/Edge/.test(navigator.userAgent)) {\r\n\t\t\t\t// force layout refresh to fix it\r\n\t\t\t\t$(window).trigger('resize');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tasync initEventColor() {\r\n\t\tconst currentTheme = await this.themeService.getCurrentTheme();\r\n\t\tconst warningColor = currentTheme['validation-warning-color'];\r\n\t\tconst contentBgColor = currentTheme['content-bg-color'];\r\n\t\tconst contentTextColor = currentTheme['content-text-color'];\r\n\r\n\t\tconst colorService = this.colorService;\r\n\t\tconst colorContrastDelta = colorService.getContrastDelta(warningColor, contentBgColor);\r\n\r\n\t\tconst newContrastDelta = colorService.getContrastDelta(colorService.mixColors(contentTextColor, contentBgColor, 0.5), contentBgColor);\r\n\r\n\t\tconst getAverageLightness = (a, b) => (colorService.getLightness(a) + colorService.getLightness(b)) / 2;\r\n\t\tconst eventColor =\r\n\t\t\tcolorContrastDelta < 50 && newContrastDelta > colorContrastDelta\r\n\t\t\t\t? this.colorService.lighten(warningColor, getAverageLightness(contentTextColor, contentBgColor))\r\n\t\t\t\t: warningColor;\r\n\r\n\t\tconst eventTextColor = this.colorService.getProperContrastTextColor(eventColor);\r\n\t\tconst eventColorContrast = this.colorService.enhanceColorContrast(eventColor, eventTextColor, 7);\r\n\r\n\t\tthis.$element.css('--mx-calendar-event-color', eventColor);\r\n\t\tthis.$element.css('--mx-calendar-event-text-color', eventTextColor);\r\n\t\tthis.$element.css('--mx-calendar-event-color-contrast', eventColorContrast);\r\n\t}\r\n}\r\nCalendarController.$inject = [\r\n\t'$scope',\r\n\t'$q',\r\n\t'$timeout',\r\n\t'$ocLazyLoad',\r\n\t'mx.components.LazyLoadCfg',\r\n\t'$element',\r\n\t'$rootScope',\r\n\t'$compile',\r\n\t'mx.internationalization',\r\n\t'mx.SolutionBuilderAgent.HolidaysService',\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n\t'mx.app.ColorService',\r\n\t'mx.app.ThemeService',\r\n];\r\n\r\n// jQuery 3.5 has breaking change which corrupt angular-ui-calendar.\r\n// To fix it, according to JQuery 3.5 Upgrade Guide https://jquery.com/upgrade-guide/3.5/,\r\n// it is added workaround for htmlPrefilter\r\n// TODO: Should be removed when BUG 263731 is fixed\r\n// https://matrix42.visualstudio.com/BPM/_backlogs/backlog/KERBEROS/Backlog%20items/?workitem=263731\r\nconst originalHtmlPrefilter = $.htmlPrefilter;\r\nconst hackedPrefilter = function (html) {\r\n\tconst rxHtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi;\r\n\treturn html.replace(rxHtmlTag, '<$1>');\r\n};\r\n\r\nlet openedCalendars = 0;\r\n\r\nfunction enableJQueryHtmlPrefilterHack() {\r\n\tif (openedCalendars === 0) {\r\n\t\t$.htmlPrefilter = hackedPrefilter;\r\n\t}\r\n\topenedCalendars++;\r\n}\r\n\r\nfunction disableJQueryHtmlPrefilterHack() {\r\n\topenedCalendars--;\r\n\tif (openedCalendars === 0) {\r\n\t\t$.htmlPrefilter = originalHtmlPrefilter;\r\n\t}\r\n}\r\n","'use strict';\r\nimport './mx-calendar-resource/mx-calendar-resource.component';\r\n\r\nimport CalendarController from './mx-calendar.controller';\r\nimport template from './mx-calendar.html';\r\n\r\n/**\r\n * @ngdoc component\r\n * @name mx.components:mxCalendar\r\n * @module mx.components\r\n *\r\n * @description\r\n * Visualizes data/event-items on calendar.\r\n * mxCalendar expects `items` attribute as an array of objects with keys like:\r\n * `title`, `start`, `end`, `allDay`.\r\n * Full list of event options is the same as for `fullCalendar`\r\n * and can be found here: http://fullcalendar.io/docs/event_data/Event_Object/\r\n *\r\n *\r\n * @usage\r\n * vm.items = [\r\n * {title: 'Today event', start: new Date()},\r\n * {title: 'First 2000 day', start: '2000-01-01'},\r\n * ...\r\n * ]\r\n * ```html\r\n * \r\n * ```\r\n *\r\n *\r\n * An `on-item-click` attribute allows to set handler on event-item click.\r\n * Handler function gets corresponding event-item-object as 'item' parameter\r\n * and link to mouse click-event as 'event' parameter.\r\n * ```html\r\n * \r\n * \r\n * ```\r\n * (`item` attribute contains link to original event-item in `item.__originalItem` key)\r\n *\r\n * Attribute `enable-adding` allows to set adding mode,\r\n * which allows adding event-items directly from calendar by selecting some period on it.\r\n * This new event-item will be added into `items` automatically.\r\n *\r\n *\r\n * Attribute `enable-changing` allows to set changing mode,\r\n * which allows changing event-item's start and end dates by dragging and resizing them on calendar.\r\n * This changes of event-item will be effected on `items` automatically.\r\n *\r\n *\r\n * Attribute `enable-removing` allows to set removing mode,\r\n * which allows event-items removing directly from calendar by clicking \"x\"-button on event.\r\n * Removed event-item will be removed from `items` as well automatically.\r\n *\r\n *\r\n * Attribute `show-holidays` allows to show public holidays.\r\n * HolidaysService is used to get list of public holidays for period shown in calendar.\r\n *\r\n *\r\n * An `on-range-select` attribute enable selection mode and\r\n * allows to set handler for selection some date range on calendar.\r\n * Handler function gets start-date, end-date as parameters.\r\n * (attribute `enable-adding=\"true\"`` should be set)\r\n * ```html\r\n * \r\n * \r\n * ```\r\n * An `on-item-move` attribute enables dragging and resizong events mode and\r\n * allows to set handler when item/event is moved or resized.\r\n * Handler function gets start-date, end-date and moved item as parameters.\r\n * (attribute `enable-changing=\"true\"`` should be set)\r\n * ```html\r\n * \r\n * \r\n * ```\r\n * (`movedItem` attribute contains link to original event-item in `movedItem.__originalItem` key)\r\n *\r\n *\r\n * Attribute `on-item-removed` allows to set handler for the case when any event-item is removed.\r\n * (attribute `enable-removing=\"true\"`` should be set)\r\n * ```html\r\n * \r\n * \r\n * ```\r\n * (`removedItem` attribute contains link to original event-item in `movedItem.__originalItem` key)\r\n *\r\n *\r\n * `language` attribute allows to set localization (default: `en`).\r\n *\r\n *\r\n * `mxCalendar` words via \"load on demand\" approach.\r\n * To configure components Dir make like this:\r\n * For config phase:\r\n * ```js\r\n * .config(['mx.components.LazyLoadCfgProvider', function (lazyLoadCfgProvider) {\r\n * \t\tlazyLoadCfgProvider.setComponentsDir('my_components_root/');\r\n * \t}])\r\n * ```\r\n * For executing phase:\r\n * ```js\r\n * .run('myCtrl', ['mx.components.LazyLoadCfg', function (lazyLoadCfg) {\r\n * \t\tlazyLoadCfg.componentsDir = 'my_components_root/';\r\n * \t}]);\r\n * ```\r\n *\r\n *\r\n * It's possible to hightlight Business Hours by passing attribute:\r\n * ```html\r\n * \r\n * ```\r\n * Format of `vm.myBusinessHours` is the same as described here https://fullcalendar.io/docs/display/businessHours/\r\n *\r\n *\r\n * Attributes `item-title-key`, 'item-start-key', 'item-end-key' allows to set other keys in incoming data.\r\n * vm.myItems = [\r\n * {displayName: 'Today event', from: '2016-10-25', to: '2016-10-26'},\r\n * {displayName: 'First 2000 day', from: '2016-10-27', to: '2016-10-28'},\r\n * ...\r\n * ]\r\n * ```html\r\n * \r\n * \r\n * ```\r\n *\r\n *\r\n * Attribute `abstract-mode` allows to set an Abstract mode,\r\n * which is mean that calendar isn't connected with some particular dates or timezone (uses \"UTC\")\r\n * and doesn't show header with some particular dates.\r\n *\r\n *\r\n * Attribute `on-range-changed` allows to set handler for the case when\r\n * showing time period on calendar will be changed.\r\n * For example: Switching on other month or week.\r\n *\r\n *\r\n * Attribute `event-overlap` (default: `true`) allows/forbids event-items overlapping\r\n * when uses trying to add new or change existent event.\r\n *\r\n * Attribute `disabled` (default: `false`) allows to set Calendar in disabled mode.\r\n *\r\n **/\r\nangular.module('mx.SolutionBuilderAgent').component('mxCalendar', {\r\n\tbindings: {\r\n\t\titems: '=',\r\n\t\titemsLoader: '=?',\r\n\t\tonItemClick: '&',\r\n\t\tonItemRightClick: '&',\r\n\t\tdropdownMenuOptions: '=',\r\n\t\tonRangeSelect: '=?',\r\n\t\tonItemMove: '=?',\r\n\t\tonItemRemoved: '&',\r\n\t\tlanguage: '@',\r\n\t\tbusinessHours: '=?',\r\n\t\theight: '@',\r\n\t\tautoWidth: '<', // if true then calendar can use more width than parentWidth with styled width of columns\r\n\r\n\t\titemTitleKey: '@',\r\n\t\titemDescriptionKey: '@',\r\n\t\titemStartKey: '@',\r\n\t\titemEndKey: '@',\r\n\t\titemColorKey: '@',\r\n\t\titemWholeDayKey: '@',\r\n\t\titemReadonlyKey: '@',\r\n\t\titemExtraDimensionKey: '@',\r\n\t\titemBackgroundKey: '@',\r\n\r\n\t\tcalendarView: '@defaultTimeView',\r\n\t\tcontextId: '@',\r\n\t\tabstractMode: '@',\r\n\t\tenableAdding: '@',\r\n\t\tenableChanging: '@',\r\n\t\tenableRemoving: '@',\r\n\t\teventOverlap: '@',\r\n\t\tdisabled: '@',\r\n\t\tshowHolidays: '@',\r\n\r\n\t\tshowUnassigned: '<',\r\n\t\tshowDayView: '<',\r\n\t\tshowWeekView: '<',\r\n\t\tshowMonthView: '<',\r\n\t\textraDimensions: '<',\r\n\t\tisTimeline: '<',\r\n\t},\r\n\tcontroller: CalendarController,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n});\r\n","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t
\\r\\n\\t
\\r\\n
\\r\\n\\r\\n
\\r\\n
\";\n// Exports\nexport default code;","'use strict';\r\nimport noChartImage from '../../../assets/images/no-chart-icon.svg';\r\nimport { initFilterExpression } from '../../model/filterExpressionUtils';\r\n\r\nangular.module('mx.SolutionBuilderAgent').factory('mx.SolutionBuilderAgent.BaseChartService', mxBaseChartService);\r\nangular.module('mx.SolutionBuilderAgent').controller('mx.SolutionBuilderAgent.MxBaseChartController', MxBaseChartCtrl);\r\n\r\nfunction mxBaseChartService() {\r\n\treturn {\r\n\t\tmxBaseChartDirective: mxBaseChartDirective,\r\n\t\tgetBaseChartConfig: async (vm) => {\r\n\t\t\tconst currentTheme = await vm.themeService.getCurrentTheme();\r\n\t\t\treturn await getBaseChartConfig(vm, currentTheme);\r\n\t\t},\r\n\t};\r\n}\r\n\r\nfunction mxBaseChartDirective($injector) {\r\n\treturn {\r\n\t\trestrict: 'E',\r\n\t\trequire: {\r\n\t\t\tm42DashboardWidgetCustom: '?^m42DashboardWidgetCustom',\r\n\t\t\tmxCommonLandingPageContent: '?^mxCommonLandingPageContent',\r\n\t\t\tparentViewController: '?^^mxView',\r\n\t\t\tmxContainerCtrl: '?^^mxContainer',\r\n\t\t},\r\n\t\tscope: {},\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-charts/mx-charts.html',\r\n\t\tbindToController: {\r\n\t\t\tdata: ' 0) {\r\n\t\t\t\t\t\tscope.vm.chartContainer = angular.element(findEl[0]);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tscope.vm.chartContainer = element;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscope.vm.getChartConfig().then(function (config) {\r\n\t\t\t\t\tscope.vm.chart = window.Highcharts.chart(scope.vm.chartContainer[0], config);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tscope.vm.requestChartRerender = function () {\r\n\t\t\t\tif (!scope.vm.highchartsLoaded || !scope.vm.hasData || !scope.vm.hasChartSize) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (scope.vm.dataChanged) {\r\n\t\t\t\t\trenderChart();\r\n\t\t\t\t} else if (scope.vm.sizeChanged) {\r\n\t\t\t\t\tif (scope.vm.chart) {\r\n\t\t\t\t\t\tscope.vm.chart.setSize(scope.vm.chartWidth, scope.vm.chartHeight, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscope.vm.dataChanged = scope.vm.sizeChanged = false;\r\n\t\t\t};\r\n\r\n\t\t\tscope.vm.dataWatcher = scope.$watch(\r\n\t\t\t\t'vm.data',\r\n\t\t\t\tfunction () {\r\n\t\t\t\t\tif (!scope.vm.data || scope.vm.data.length === 0) {\r\n\t\t\t\t\t\tscope.vm.hasData = false;\r\n\t\t\t\t\t\tif (scope.vm.chartContainer.empty) {\r\n\t\t\t\t\t\t\tscope.vm.chartContainer.empty();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tscope.vm.hasData = true;\r\n\t\t\t\t\tscope.vm.dataChanged = true;\r\n\t\t\t\t\tscope.vm.requestChartRerender();\r\n\t\t\t\t},\r\n\t\t\t\ttrue\r\n\t\t\t);\r\n\r\n\t\t\tvar _setSizes = $.debounce(500, function () {\r\n\t\t\t\tif (!element.is(':visible')) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tscope.$evalAsync(function () {\r\n\t\t\t\t\tscope.vm.chartHeight = element.height();\r\n\t\t\t\t\tscope.vm.chartWidth = element.width();\r\n\t\t\t\t\tscope.vm.smallHeight = scope.vm.chartHeight < 160;\r\n\r\n\t\t\t\t\tscope.vm.hasChartSize = true;\r\n\t\t\t\t\tscope.vm.sizeChanged = true;\r\n\t\t\t\t\tscope.vm.requestChartRerender();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\teventService.subscribeTo(mx.shell.EventCodes.LayoutChanged, _setSizes, scope);\r\n\t\t\tscope.$evalAsync(function () {\r\n\t\t\t\t_setSizes();\r\n\t\t\t});\r\n\r\n\t\t\teventService.subscribeTo(\r\n\t\t\t\tmx.shell.EventCodes.ThemeChanged,\r\n\t\t\t\tasync () => {\r\n\t\t\t\t\tconst config = await scope.vm.getChartConfig();\r\n\t\t\t\t\tscope.vm.chart?.update(config);\r\n\t\t\t\t},\r\n\t\t\t\tscope\r\n\t\t\t);\r\n\r\n\t\t\tif (ctrls.mxContainerCtrl) {\r\n\t\t\t\tctrls.mxContainerCtrl.registerChild(scope);\r\n\t\t\t}\r\n\t\t},\r\n\t\tcontrollerAs: 'vm',\r\n\t};\r\n}\r\n\r\nMxBaseChartCtrl.$inject = ['$injector', '$scope', '$attrs', '$element', 'mx.shell.Config'];\r\n\r\nfunction MxBaseChartCtrl($injector, $scope, $attrs, $element, mxConfig) {\r\n\tconst vm = $scope.vm;\r\n\tconst $timeout = $injector.get('$timeout');\r\n\tconst $ocLazyLoad = $injector.get('$ocLazyLoad');\r\n\tconst lazyLoadCfg = $injector.get('mx.components.LazyLoadCfg');\r\n\tconst dialogOpenerService = $injector.get('mx.SolutionBuilderAgent.DialogOpenerService');\r\n\tconst i18n = $injector.get('mx.internationalization');\r\n\tconst sideLayout = $injector.get('mx.shell.SideLayout');\r\n\tvm.themeService = $injector.get('mx.app.ThemeService');\r\n\tvm.chartsI18n = i18n.get('solutionBuilderAgent.components.mx-charts');\r\n\tvm.highchartsLoaded = false;\r\n\tvm.getColorSet = getColorSet;\r\n\tconst anticache = `?anticache=${mxConfig.settings.productVersion}`;\r\n\t$ocLazyLoad\r\n\t\t.load({\r\n\t\t\tserie: true,\r\n\t\t\tfiles: [`${lazyLoadCfg.componentsDir}highcharts/highcharts.js${anticache}`, `${lazyLoadCfg.componentsDir}highcharts/modules/accessibility.js${anticache}`],\r\n\t\t})\r\n\t\t.then(function () {\r\n\t\t\tvm.highchartsLoaded = true;\r\n\t\t\tvm.requestChartRerender();\r\n\t\t});\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvm.noRequiredData = vm.noDataMessage || vm.chartsI18n.noRequiredData;\r\n\r\n\t\tinitFilterExpression({\r\n\t\t\tpropertyName: 'details-filter-expression',\r\n\t\t\tcontrolMxAtId: vm.mxAtId,\r\n\t\t\t$scope,\r\n\t\t\t$attrs,\r\n\t\t\t$element,\r\n\t\t\tcontroller: vm,\r\n\t\t});\r\n\t};\r\n\r\n\tvm.getChartConfig = async function () {\r\n\t\tconst currentTheme = await vm.themeService.getCurrentTheme();\r\n\t\treturn await getBaseChartConfig(vm, currentTheme);\r\n\t};\r\n\tvm.onChartClick = onChartClick;\r\n\r\n\t// This method reorders the series data in the same order as the first series.\r\n\t// It does not affect visualization and just affects the order of elements in DOM-structure, and that's why change focus order.\r\n\t// So this method sets more predictable focus order by tab-key for Stacked Column/Bar Charts.\r\n\tvm.reorderAllStackedSeriesAsFirstSeries = (series) => {\r\n\t\tif (series?.[0]?.data?.length) {\r\n\t\t\tfor (let i = 1; i < series?.length; i++) {\r\n\t\t\t\tseries[i].data?.sort((a, b) => {\r\n\t\t\t\t\tlet aIndex = series[0].data.findIndex((el) => a?.name && el?.name === a.name);\r\n\t\t\t\t\taIndex = aIndex === -1 ? Number.MAX_SAFE_INTEGER : aIndex;\r\n\t\t\t\t\tlet bIndex = series[0].data.findIndex((el) => b?.name && el?.name === b.name);\r\n\t\t\t\t\tbIndex = bIndex === -1 ? Number.MAX_SAFE_INTEGER : bIndex;\r\n\t\t\t\t\treturn aIndex - bIndex;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn series;\r\n\t};\r\n\r\n\treturn vm;\r\n\r\n\tfunction onChartClick(chart) {\r\n\t\tvar chartTitle = vm.stackFieldName ? chart.name + ', ' + chart.series.name : chart.name;\r\n\r\n\t\t$scope.$apply(function () {\r\n\t\t\t(vm.data || []).some(function (item) {\r\n\t\t\t\tif (\r\n\t\t\t\t\t(!vm.stackFieldName && item[vm.legendFieldName] === chart.name) ||\r\n\t\t\t\t\t(vm.stackFieldName && item[vm.stackFieldName] === chart.name && item[vm.legendFieldName] === chart.series.name)\r\n\t\t\t\t) {\r\n\t\t\t\t\tvm.selectedItem = item;\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t$timeout(function () {\r\n\t\t\tvar detailsType;\r\n\r\n\t\t\tif (typeof vm.detailsType !== 'undefined') {\r\n\t\t\t\tdetailsType = vm.detailsType;\r\n\t\t\t} else if (vm.detailsEntityClassName) {\r\n\t\t\t\tdetailsType = 'list';\r\n\t\t\t} else if (vm.detailsEntityType) {\r\n\t\t\t\tdetailsType = 'object';\r\n\t\t\t} else {\r\n\t\t\t\tdetailsType = 'none';\r\n\t\t\t}\r\n\t\t\tsideLayout.switchFullScreenMode(false);\r\n\r\n\t\t\tswitch (detailsType) {\r\n\t\t\t\tcase 'list':\r\n\t\t\t\t\tvar title = vm.widgetTitle ? vm.widgetTitle + ' - ' + chartTitle : chartTitle;\r\n\t\t\t\t\tdialogOpenerService\r\n\t\t\t\t\t\t.openObjectsListPreview(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: i18n.get('solutionBuilderAgent.browseDialog.chart_data'),\r\n\t\t\t\t\t\t\t\tentityClassName: vm.detailsEntityClassName,\r\n\t\t\t\t\t\t\t\ttitle: vm.detailsTitle || title,\r\n\t\t\t\t\t\t\t\tfilterExpression: vm.detailsFilterExpression,\r\n\t\t\t\t\t\t\t\tcolumnDefinition: vm.detailsColumnDefinition,\r\n\t\t\t\t\t\t\t\tmultiSelection: true,\r\n\t\t\t\t\t\t\t\tshowActionsPanel: true,\r\n\t\t\t\t\t\t\t\tshowSelectAll: true,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tvm.parentViewController && vm.parentViewController.mxView\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.then(function () {\r\n\t\t\t\t\t\t\tvm.selectedItem = null;\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch(mx.logCatch);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'object':\r\n\t\t\t\t\tdialogOpenerService.openPreview(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tEntityType: vm.detailsEntityType,\r\n\t\t\t\t\t\t\tId: vm.detailsObjectId,\r\n\t\t\t\t\t\t\tDisplayString: vm.detailsTitle || chart.name,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tundefined,\r\n\t\t\t\t\t\tundefined,\r\n\t\t\t\t\t\tvm.parentViewController && vm.parentViewController.mxView\r\n\t\t\t\t\t);\r\n\t\t\t\t\tvm.selectedItem = null;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nfunction normalizeColor(color) {\r\n\treturn typeof color === 'string' ? color.replace(/0xff/i, '#') : null;\r\n}\r\n\r\nfunction getColorSet(currentTheme) {\r\n\tconst colors = ['#1395ba', '#117899', '#0f5b78', '#0d3c55', '#c02e1d', '#d94e1f', '#f16c20', '#ef8b2c', '#ecaa38', '#ebc844', '#a2b86c', '#5ca793'];\r\n\tconst enhancedContrastColorsLightMode = ['#003C71', '#1894ff', '#D93F1E', '#676767', '#698F01', '#e87511', '#830ae3', '#0fa78b', '#B7104A', '#AF9023', '#1A704C', '#c970e8'];\r\n\tconst enhancedContrastColorsDarkMode = ['#0073f5', '#1ebae7', '#ff430f', '#7f7f7f', '#2fff00', '#ff9700', '#ba28ff', '#00ff8c', '#fe0054', '#f2c117', '#098f57', '#ff8fff'];\r\n\r\n\tif (currentTheme.isContrastTheme) {\r\n\t\treturn currentTheme.isDarkTheme ? enhancedContrastColorsDarkMode : enhancedContrastColorsLightMode;\r\n\t} else {\r\n\t\tcolors.forEach(function (color, index) {\r\n\t\t\tcolors[index] = currentTheme['palette-color' + (index + 1)] || color;\r\n\t\t});\r\n\t\treturn colors;\r\n\t}\r\n}\r\nfunction getBorderColor(currentTheme) {\r\n\treturn currentTheme.isContrastTheme ? (currentTheme.isDarkTheme ? '#000000' : '#FFFFFF') : currentTheme?.['content-bg-color'];\r\n}\r\nfunction getBorderWidth(currentTheme) {\r\n\treturn currentTheme.isContrastTheme ? 3 : 2;\r\n}\r\nasync function getBaseChartConfig(vm, currentTheme) {\r\n\tlet defaultLegendConfig = {\r\n\t\t\tx: 0,\r\n\t\t\tenabled: vm.legendVisible === 'true',\r\n\t\t\tlayout: vm.legendLayout || 'horizontal',\r\n\t\t\talign: vm.legendAlign || 'center',\r\n\t\t\tverticalAlign: vm.legendVerticalAlign || 'bottom',\r\n\r\n\t\t\titemWidth: undefined,\r\n\t\t\tmaxHeight: undefined,\r\n\t\t\titemStyle: {\r\n\t\t\t\twidth: '',\r\n\t\t\t\ttextOverflow: '',\r\n\t\t\t\toverflow: '',\r\n\t\t\t\tfontWeight: '200',\r\n\t\t\t\tcolor: currentTheme['content-text-color'],\r\n\t\t\t\tfill: currentTheme['content-text-color'],\r\n\t\t\t},\r\n\t\t\titemHoverStyle: { color: currentTheme['content-text-color'] },\r\n\t\t\titemHiddenStyle: { color: currentTheme['content-computed-color2'] },\r\n\r\n\t\t\tnavigation: {\r\n\t\t\t\tstyle: { color: currentTheme['content-text-color'] },\r\n\t\t\t\tactiveColor: currentTheme['content-icon-color'],\r\n\t\t\t\tinactiveColor: currentTheme['content-computed-color2'],\r\n\t\t\t},\r\n\t\t},\r\n\t\tseriesConfig = [];\r\n\tvm.defaultLegendConfig = defaultLegendConfig;\r\n\r\n\tif (vm.data) {\r\n\t\tif (vm.stackFieldName) {\r\n\t\t\tvar usedSeries = [];\r\n\r\n\t\t\tvm.data.forEach(function (item, i) {\r\n\t\t\t\tif (usedSeries.indexOf(item[vm.legendFieldName]) >= 0) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tusedSeries.push(item[vm.legendFieldName]);\r\n\r\n\t\t\t\tvar serie = {\r\n\t\t\t\t\tborderColor: getBorderColor(currentTheme),\r\n\t\t\t\t\tborderWidth: getBorderWidth(currentTheme),\r\n\t\t\t\t\tname: item[vm.legendFieldName] || vm.chartsI18n.defaultSeries?.replace('{number}', seriesConfig.length + 1),\r\n\t\t\t\t\tcolor: vm.seriesColorFieldName ? normalizeColor(item[vm.seriesColorFieldName]) : null,\r\n\t\t\t\t\tdata: [],\r\n\t\t\t\t};\r\n\r\n\t\t\t\tfor (var j = i; j < vm.data.length; j++) {\r\n\t\t\t\t\tvar item2 = vm.data[j];\r\n\r\n\t\t\t\t\tif (item[vm.legendFieldName] === item2[vm.legendFieldName]) {\r\n\t\t\t\t\t\tserie.data.push({\r\n\t\t\t\t\t\t\tname: item2[vm.stackFieldName],\r\n\t\t\t\t\t\t\ty: item2[vm.valueFieldName],\r\n\t\t\t\t\t\t\tcolor: vm.itemColorFieldName ? normalizeColor(item2[vm.itemColorFieldName]) : null,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tseriesConfig.push(serie);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tseriesConfig = [\r\n\t\t\t\t{\r\n\t\t\t\t\tname: vm.titleYAxis,\r\n\t\t\t\t\tcolor: vm.seriesColorFieldName && vm.data.length ? normalizeColor(vm.data[0][vm.seriesColorFieldName]) : null,\r\n\t\t\t\t\tdata: vm.data.map(function (item) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tname: item[vm.legendFieldName],\r\n\t\t\t\t\t\t\ty: item[vm.valueFieldName],\r\n\t\t\t\t\t\t\tcolor: vm.itemColorFieldName ? normalizeColor(item[vm.itemColorFieldName]) : null,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}),\r\n\t\t\t\t},\r\n\t\t\t];\r\n\t\t}\r\n\t}\r\n\r\n\tvm.responsiveLegend = function () {\r\n\t\tvar sizeOfGridCell = 170,\r\n\t\t\tlegendItemWidth;\r\n\r\n\t\tif (!this.legend || !this.legend.legendWidth) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!vm.maxLegendWidth) {\r\n\t\t\tvm.maxLegendWidth = Math.round(this.legend.legendWidth);\r\n\t\t}\r\n\r\n\t\tvar legendConfig = angular.copy(vm.defaultLegendConfig);\r\n\r\n\t\tif (this.chartHeight > sizeOfGridCell && this.chartWidth - vm.maxLegendWidth < sizeOfGridCell) {\r\n\t\t\tangular.extend(legendConfig, {\r\n\t\t\t\tlayout: 'vertical',\r\n\t\t\t\talign: 'center',\r\n\t\t\t\tverticalAlign: 'bottom',\r\n\t\t\t\tmaxHeight: Math.round(this.chartHeight / 2),\r\n\t\t\t});\r\n\r\n\t\t\tif (this.chartWidth < vm.maxLegendWidth) {\r\n\t\t\t\tlegendItemWidth = Math.round(this.chartWidth - 45);\r\n\r\n\t\t\t\tangular.extend(legendConfig, {\r\n\t\t\t\t\titemWidth: legendItemWidth,\r\n\t\t\t\t\titemStyle: Object.assign({}, vm.defaultLegendConfig.itemStyle, {\r\n\t\t\t\t\t\twidth: legendItemWidth + 'px',\r\n\t\t\t\t\t\ttextOverflow: 'ellipsis',\r\n\t\t\t\t\t\toverflow: 'hidden',\r\n\t\t\t\t\t\twhiteSpace: 'nowrap',\r\n\t\t\t\t\t}),\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.chartHeight < sizeOfGridCell) {\r\n\t\t\tif (this.chartWidth / 2 < vm.maxLegendWidth) {\r\n\t\t\t\tlegendItemWidth = Math.round(this.chartWidth / 2);\r\n\r\n\t\t\t\tangular.extend(legendConfig, {\r\n\t\t\t\t\titemWidth: legendItemWidth,\r\n\t\t\t\t\titemStyle: Object.assign({}, vm.defaultLegendConfig.itemStyle, {\r\n\t\t\t\t\t\twidth: legendItemWidth + 'px',\r\n\t\t\t\t\t\ttextOverflow: 'ellipsis',\r\n\t\t\t\t\t\toverflow: 'hidden',\r\n\t\t\t\t\t\twhiteSpace: 'nowrap',\r\n\t\t\t\t\t}),\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (this.chartWidth < sizeOfGridCell) {\r\n\t\t\t\tangular.extend(legendConfig, { x: sizeOfGridCell * 2 });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ($(window).width() < $(window).height()) {\r\n\t\t\tangular.extend(legendConfig, {\r\n\t\t\t\tlayout: 'horizontal',\r\n\t\t\t\talign: 'center',\r\n\t\t\t\tverticalAlign: 'bottom',\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif ($(window).width() < $(window).height()) {\r\n\t\t\tangular.extend(legendConfig, {\r\n\t\t\t\tlayout: 'horizontal',\r\n\t\t\t\talign: 'center',\r\n\t\t\t\tverticalAlign: 'bottom',\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (!angular.equals(vm.lastLegendConfig, legendConfig)) {\r\n\t\t\tconst options = angular.copy(this.legend.options);\r\n\r\n\t\t\tangular.extend(options, legendConfig);\r\n\r\n\t\t\tthis.legend.getAllItems().forEach(function (item) {\r\n\t\t\t\titem.legendItem?.css?.(legendConfig.itemStyle);\r\n\t\t\t});\r\n\r\n\t\t\tvm.lastLegendConfig = legendConfig;\r\n\r\n\t\t\tthis.legend.update(options);\r\n\t\t}\r\n\t};\r\n\r\n\tconst linesColor = await vm.themeService.getContentColorShade(0.13);\r\n\r\n\treturn {\r\n\t\tyAxis: {\r\n\t\t\ttitle: { text: vm.titleYAxis, style: { color: currentTheme['content-text-color'] } },\r\n\t\t\taccessibility: { description: vm.titleYAxis || vm.chartsI18n.defaultValues },\r\n\t\t\tlabels: { style: { color: currentTheme['content-text-color'] } },\r\n\t\t\tlineColor: currentTheme['content-computed-color2'],\r\n\t\t\tgridLineColor: linesColor,\r\n\t\t\tminorGridLineColor: linesColor,\r\n\t\t\tminorTickColor: currentTheme['content-computed-color3'],\r\n\t\t\ttickColor: currentTheme['content-computed-color2'],\r\n\t\t},\r\n\t\txAxis: {\r\n\t\t\ttitle: { text: vm.titleXAxis, style: { color: currentTheme['content-text-color'] } },\r\n\t\t\taccessibility: { description: vm.titleXAxis || vm.chartsI18n.defaultCategories },\r\n\t\t\tlabels: { style: { color: currentTheme['content-text-color'] } },\r\n\t\t\tlineColor: currentTheme['content-computed-color2'],\r\n\t\t\tgridLineColor: linesColor,\r\n\t\t\tminorGridLineColor: linesColor,\r\n\t\t\tminorTickColor: currentTheme['content-computed-color3'],\r\n\t\t\ttickColor: currentTheme['content-computed-color2'],\r\n\r\n\t\t\ttype: 'category',\r\n\t\t\tcategories: !vm.stackFieldName ? null : _.uniq(vm.data.map((item) => item[vm.stackFieldName])),\r\n\t\t},\r\n\t\tlegend: defaultLegendConfig,\r\n\t\ttitle: {\r\n\t\t\ttext: vm.chartTitle || '',\r\n\t\t\talign: vm.titleAlign,\r\n\t\t\tstyle: vm.chartTitle ? { color: currentTheme['content-text-color'] } : { display: 'none' },\r\n\t\t},\r\n\t\tchart: {\r\n\t\t\tbackgroundColor: 'transparent',\r\n\t\t\tcolorCount: 12,\r\n\t\t},\r\n\t\tcolors: getColorSet(currentTheme),\r\n\t\tsubtitle: { text: '' },\r\n\t\texporting: { buttons: { contextButton: { enabled: false } } },\r\n\t\tcredits: { enabled: false },\r\n\t\ttooltip: {\r\n\t\t\tformatter: function () {\r\n\t\t\t\tvar y = this.y % 1 === 0 ? this.y : Number(this.y).toFixed(2);\r\n\t\t\t\tvar x = this.key;\r\n\t\t\t\tvar s = this.series.name;\r\n\t\t\t\tvar p = (this.percentage % 1 === 0 ? this.percentage : Number(this.percentage).toFixed(2)) + '%';\r\n\t\t\t\tvar t = this.total;\r\n\r\n\t\t\t\tif (typeof vm.tooltipFormat === 'string' && vm.tooltipFormat.length > 0) {\r\n\t\t\t\t\treturn vm.tooltipFormat.replace(/{x}/g, x).replace(/{y}/g, y).replace(/{s}/g, s).replace(/{p}/g, p).replace(/{t}/g, t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn vm.stackFieldName ? s + ' — ' + y : x + ' — ' + y;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t},\r\n\t\tplotOptions: {\r\n\t\t\tseries: {\r\n\t\t\t\tborderColor: getBorderColor(currentTheme),\r\n\t\t\t\tborderWidth: getBorderWidth(currentTheme),\r\n\t\t\t\tpoint: {\r\n\t\t\t\t\tevents: {\r\n\t\t\t\t\t\tclick: function () {\r\n\t\t\t\t\t\t\tvm.onChartClick(this);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t},\r\n\t\tseries: seriesConfig,\r\n\t\tresponsive: {\r\n\t\t\trules: [\r\n\t\t\t\t{\r\n\t\t\t\t\tcondition: {\r\n\t\t\t\t\t\tcallback: function () {\r\n\t\t\t\t\t\t\tvm.responsiveLegend.call(this);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t},\r\n\t\tlang: {\r\n\t\t\taccessibility: {\r\n\t\t\t\tdefaultChartTitle: `${vm.chartsI18n.a11y?.defaultChartTitle || ''} ${vm.m42DashboardWidgetCustom?.title || ''}`,\r\n\t\t\t\tchartContainerLabel: vm.chartsI18n.a11y?.chartContainerLabel,\r\n\t\t\t\tsvgContainerLabel: vm.chartsI18n.a11y?.svgContainerLabel,\r\n\t\t\t\tscreenReaderSection: {\r\n\t\t\t\t\tendOfChartMarker: vm.chartsI18n.a11y?.endOfChartMarker,\r\n\t\t\t\t},\r\n\t\t\t\tlegend: {\r\n\t\t\t\t\tlegendLabelNoTitle: vm.chartsI18n.a11y?.legend?.legendLabelNoTitle,\r\n\t\t\t\t\tlegendLabel: vm.chartsI18n.a11y?.legend?.legendLabel,\r\n\t\t\t\t\tlegendItem: vm.chartsI18n.a11y?.legend?.legendItem,\r\n\t\t\t\t},\r\n\t\t\t\tchartTypes: {\r\n\t\t\t\t\temptyChart: vm.chartsI18n.a11y?.chartTypes?.emptyChart,\r\n\t\t\t\t\tcombinationChart: vm.chartsI18n.a11y?.chartTypes?.combinationChart,\r\n\t\t\t\t\tdefaultSingle: vm.chartsI18n.a11y?.chartTypes?.defaultSingle,\r\n\t\t\t\t\tdefaultMultiple: vm.chartsI18n.a11y?.chartTypes?.defaultMultiple,\r\n\t\t\t\t\tsplineSingle: vm.chartsI18n.a11y?.chartTypes?.lineSingle,\r\n\t\t\t\t\tsplineMultiple: vm.chartsI18n.a11y?.chartTypes?.lineMultiple,\r\n\t\t\t\t\tlineSingle: vm.chartsI18n.a11y?.chartTypes?.lineSingle,\r\n\t\t\t\t\tlineMultiple: vm.chartsI18n.a11y?.chartTypes?.lineMultiple,\r\n\t\t\t\t\tcolumnSingle: vm.chartsI18n.a11y?.chartTypes?.columnSingle,\r\n\t\t\t\t\tcolumnMultiple: vm.chartsI18n.a11y?.chartTypes?.columnMultiple,\r\n\t\t\t\t\tbarSingle: vm.chartsI18n.a11y?.chartTypes?.barSingle,\r\n\t\t\t\t\tbarMultiple: vm.chartsI18n.a11y?.chartTypes?.barMultiple,\r\n\t\t\t\t\tpieSingle: vm.chartsI18n.a11y?.chartTypes?.pieSingle,\r\n\t\t\t\t\tpieMultiple: vm.chartsI18n.a11y?.chartTypes?.pieMultiple,\r\n\t\t\t\t},\r\n\t\t\t\taxis: {\r\n\t\t\t\t\txAxisDescriptionSingular: vm.chartsI18n.a11y?.axis?.xAxisDescriptionSingular,\r\n\t\t\t\t\txAxisDescriptionPlural: vm.chartsI18n.a11y?.axis?.xAxisDescriptionPlural,\r\n\t\t\t\t\tyAxisDescriptionSingular: vm.chartsI18n.a11y?.axis?.yAxisDescriptionSingular,\r\n\t\t\t\t\tyAxisDescriptionPlural: vm.chartsI18n.a11y?.axis?.yAxisDescriptionPlural,\r\n\t\t\t\t\trangeFromTo: vm.chartsI18n.a11y?.axis?.rangeFromTo,\r\n\t\t\t\t\trangeCategories: vm.chartsI18n.a11y?.axis?.rangeCategories,\r\n\t\t\t\t},\r\n\t\t\t\tseries: {\r\n\t\t\t\t\tsummary: {\r\n\t\t\t\t\t\tdefault: vm.chartsI18n.a11y?.series?.summary?.default,\r\n\t\t\t\t\t\tdefaultCombination: vm.chartsI18n.a11y?.series?.summary?.defaultCombination,\r\n\t\t\t\t\t\tline: vm.chartsI18n.a11y?.series?.summary?.line,\r\n\t\t\t\t\t\tlineCombination: vm.chartsI18n.a11y?.series?.summary?.lineCombination,\r\n\t\t\t\t\t\tspline: vm.chartsI18n.a11y?.series?.summary?.line,\r\n\t\t\t\t\t\tsplineCombination: vm.chartsI18n.a11y?.series?.summary?.lineCombination,\r\n\t\t\t\t\t\tcolumn: vm.chartsI18n.a11y?.series?.summary?.column,\r\n\t\t\t\t\t\tcolumnCombination: vm.chartsI18n.a11y?.series?.summary?.columnCombination,\r\n\t\t\t\t\t\tbar: vm.chartsI18n.a11y?.series?.summary?.bar,\r\n\t\t\t\t\t\tbarCombination: vm.chartsI18n.a11y?.series?.summary?.barCombination,\r\n\t\t\t\t\t\tpie: vm.chartsI18n.a11y?.series?.summary?.pie,\r\n\t\t\t\t\t\tpieCombination: vm.chartsI18n.a11y?.series?.summary?.pieCombination,\r\n\t\t\t\t\t},\r\n\t\t\t\t\txAxisDescription: vm.chartsI18n.a11y?.series?.xAxisDescription,\r\n\t\t\t\t\tyAxisDescription: vm.chartsI18n.a11y?.series?.yAxisDescription,\r\n\t\t\t\t\tnullPointValue: vm.chartsI18n.a11y?.series?.nullPointValue,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tnoData: vm.noDataMessage || vm.chartsI18n.noRequiredData,\r\n\t\t},\r\n\t};\r\n}\r\n","import moment from 'moment';\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxConditionDate', {\r\n\tbindings: { condition: '=' },\r\n\tcontroller: MxConditionDateCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-date.html',\r\n});\r\n\r\nMxConditionDateCtrl.$inject = ['mx.internationalization', 'mx.SolutionBuilderAgent.ConditionsBuilder.Enums'];\r\n\r\nfunction MxConditionDateCtrl(i18n, conditionsBuilderEnums) {\r\n\tconst vm = this;\r\n\tconst ConditionDateMods = conditionsBuilderEnums.ConditionDateMods;\r\n\tvm.ConditionDateMods = ConditionDateMods;\r\n\tvm.i18n = i18n.get('solutionBuilderAgent.components.mx-conditions-builder');\r\n\tvm.modes = [\r\n\t\t{\r\n\t\t\tid: ConditionDateMods.Date,\r\n\t\t\ttitle: vm.i18n.exactDate,\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: ConditionDateMods.DateExpression,\r\n\t\t\ttitle: vm.i18n.dateExpression,\r\n\t\t},\r\n\t];\r\n\r\n\tlet expression = '';\r\n\tlet mode;\r\n\tlet date = new Date();\r\n\r\n\tObject.defineProperty(vm, 'mode', {\r\n\t\tget: function () {\r\n\t\t\treturn mode;\r\n\t\t},\r\n\t\tset: function (value) {\r\n\t\t\tmode = value;\r\n\r\n\t\t\tif (mode === ConditionDateMods.Date) {\r\n\t\t\t\tvm.condition.value = date.toISOString();\r\n\t\t\t} else {\r\n\t\t\t\tvm.condition.value = expression;\r\n\t\t\t}\r\n\t\t},\r\n\t});\r\n\r\n\tObject.defineProperty(vm, 'expression', {\r\n\t\tget: function () {\r\n\t\t\treturn expression;\r\n\t\t},\r\n\t\tset: function (value) {\r\n\t\t\texpression = value || '';\r\n\t\t\tvm.condition.value = expression;\r\n\t\t},\r\n\t});\r\n\r\n\tObject.defineProperty(vm, 'date', {\r\n\t\tget: function () {\r\n\t\t\treturn date;\r\n\t\t},\r\n\t\tset: function (newDate) {\r\n\t\t\tdate = newDate;\r\n\t\t\tif (newDate instanceof Date) {\r\n\t\t\t\tvm.condition.value = newDate.toISOString();\r\n\t\t\t} else {\r\n\t\t\t\tvm.condition.value = '';\r\n\t\t\t}\r\n\t\t},\r\n\t});\r\n\r\n\tvm.$onInit = function () {\r\n\t\tif (Array.isArray(vm.condition?._builderConfig?.availableDateMods)) {\r\n\t\t\tvm.modes = vm.modes.filter((mode) => vm.condition?._builderConfig?.availableDateMods.includes(mode.id));\r\n\t\t}\r\n\r\n\t\tconst modeIds = vm.modes.map((mode) => mode.id);\r\n\t\tconst inputDate = moment(vm.condition.value, moment.ISO_8601);\r\n\t\tif (modeIds.includes(ConditionDateMods.Date) && inputDate.isValid()) {\r\n\t\t\tmode = ConditionDateMods.Date;\r\n\t\t\tdate = inputDate.toDate();\r\n\t\t} else if (modeIds.includes(ConditionDateMods.DateExpression)) {\r\n\t\t\tmode = ConditionDateMods.DateExpression;\r\n\t\t\texpression = vm.condition.value || '';\r\n\t\t} else {\r\n\t\t\tmode = modeIds[0];\r\n\t\t\tvm.condition.value = mode === ConditionDateMods.Date ? date : expression;\r\n\t\t}\r\n\t};\r\n\treturn vm;\r\n}\r\n","import moment from 'moment';\r\n\r\nangular.module('mx.SolutionBuilderAgent').service('mx.SolutionBuilderAgent.ComplianceRuleConditionsService', MxComplianceRuleConditionsService);\r\nMxComplianceRuleConditionsService.$inject = [\r\n\t'$q',\r\n\t'mx.SolutionBuilderAgent.ConditionsBuilder.Builder',\r\n\t'mx.SolutionBuilderAgent.ConditionsBuilder.Enums',\r\n\t'mx.SolutionBuilderAgent.ConditionsBuilder.Helper',\r\n\t'mx.SolutionBuilderAgent.EntityService',\r\n\t'mx.SolutionBuilderAgent.SchemaService',\r\n\t'mx.SolutionBuilderAgent.SchemaService.Enums',\r\n\t'mx.SolutionBuilderAgent.ComplianceRuleEnums',\r\n];\r\n\r\nfunction MxComplianceRuleConditionsService($q, ConditionsBuilder, ConditionsBuilderEnums, helper, entityService, schemaService, SchemaServiceEnums, ComplianceRuleEnums) {\r\n\tvar ComplianceRuleTriggerTypes = ComplianceRuleEnums.ComplianceRuleTriggerTypes;\r\n\tvar ComplianceRuleConditionStart = ComplianceRuleEnums.ComplianceRuleConditionStart;\r\n\tvar ConditionValueTypes = ConditionsBuilderEnums.ConditionValueTypes;\r\n\tvar ConditionTypes = ConditionsBuilderEnums.ConditionTypes;\r\n\tvar ConditionBuilderMode = ConditionsBuilderEnums.ConditionBuilderMode;\r\n\tvar DataTypes = SchemaServiceEnums.DataTypes;\r\n\tvar RelatedClassCardinality = SchemaServiceEnums.RelatedClassCardinality;\r\n\r\n\tvar self = this;\r\n\tvar cache = {\r\n\t\tproperties: {},\r\n\t};\r\n\tvar pickerPromise, operatorsPromise;\r\n\r\n\tself.getBuilder = getBuilder;\r\n\tself.getProperties = getProperties;\r\n\r\n\tvar MxComplianceRuleEnumerationMap = {\r\n\t\tget startCondition() {\r\n\t\t\tvar startConditionMap = {};\r\n\t\t\tstartConditionMap[ComplianceRuleTriggerTypes.CreateObject] = [ComplianceRuleConditionStart.After];\r\n\t\t\tstartConditionMap[ComplianceRuleTriggerTypes.DeleteObject] = [ComplianceRuleConditionStart.Before];\r\n\t\t\tstartConditionMap[ComplianceRuleTriggerTypes.ChangeObject] = [ComplianceRuleConditionStart.Before, ComplianceRuleConditionStart.After];\r\n\r\n\t\t\treturn startConditionMap;\r\n\t\t},\r\n\r\n\t\tfilter: function (fieldName, sourceKey, enumeration) {\r\n\t\t\tif (!Array.isArray(enumeration)) {\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\r\n\t\t\tvar map = this[fieldName];\r\n\r\n\t\t\tif (!map) {\r\n\t\t\t\treturn enumeration;\r\n\t\t\t}\r\n\r\n\t\t\tif (!(sourceKey in map)) {\r\n\t\t\t\treturn enumeration;\r\n\t\t\t}\r\n\r\n\t\t\tvar sourceMap = map[sourceKey];\r\n\r\n\t\t\treturn enumeration.filter(function (enumValue) {\r\n\t\t\t\treturn sourceMap.some(function (sourceMapValue) {\r\n\t\t\t\t\treturn sourceMapValue === enumValue.value;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t},\r\n\t};\r\n\r\n\treturn self;\r\n\r\n\tfunction getBuilder({ trigger, conditions, typeIds, isBasedOnDD = false }) {\r\n\t\tvar config = {};\r\n\r\n\t\tvar isObjectTrigger =\r\n\t\t\ttrigger === ComplianceRuleTriggerTypes.CreateObject ||\r\n\t\t\ttrigger === ComplianceRuleTriggerTypes.DeleteObject ||\r\n\t\t\ttrigger === ComplianceRuleTriggerTypes.ChangeObject ||\r\n\t\t\ttrigger === ComplianceRuleTriggerTypes.Action;\r\n\r\n\t\tif (!isObjectTrigger) {\r\n\t\t\treturn $q.when();\r\n\t\t}\r\n\r\n\t\tpickerPromise = pickerPromise || loadPickers();\r\n\r\n\t\treturn pickerPromise\r\n\t\t\t.then(function (pickersConfig) {\r\n\t\t\t\tconfig = angular.copy(pickersConfig);\r\n\t\t\t\tconfig.startConditions.enumeration = MxComplianceRuleEnumerationMap.filter('startCondition', trigger, config.startConditions.enumeration);\r\n\t\t\t\tconfig.conditionOutput = conditionOutput;\r\n\t\t\t\tconfig.groupOutput = groupOutput;\r\n\t\t\t\tconfig.builderOutput = builderOutput;\r\n\t\t\t\tconfig.trigger = trigger;\r\n\t\t\t\tconfig.maxLevel = 1;\r\n\t\t\t\treturn getOperators(trigger);\r\n\t\t\t})\r\n\t\t\t.then(function (operators) {\r\n\t\t\t\tconfig.operators = operators;\r\n\t\t\t\tconfig.mode = ConditionBuilderMode.disableDifferentOperatorsInGroup;\r\n\r\n\t\t\t\tif (Array.isArray(conditions)) {\r\n\t\t\t\t\tconfig.predefinedConditions = {\r\n\t\t\t\t\t\tConditions: [],\r\n\t\t\t\t\t\tGroups: [],\r\n\t\t\t\t\t};\r\n\t\t\t\t\tvar groups = {};\r\n\r\n\t\t\t\t\tvar promises = conditions\r\n\t\t\t\t\t\t.sort(function (conditionA, conditionB) {\r\n\t\t\t\t\t\t\treturn (Number(conditionA.Order) || 0) - (Number(conditionB.Order) || 0);\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.map(function (condition) {\r\n\t\t\t\t\t\t\treturn conditionInputMapping({ condition: condition, typeIds: typeIds, isBasedOnDD: isBasedOnDD });\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn $q.all(promises).then(function (mappedConditions) {\r\n\t\t\t\t\t\tconditions.forEach(function (condition, index) {\r\n\t\t\t\t\t\t\tvar mappedCondition = mappedConditions[index];\r\n\t\t\t\t\t\t\tif (!mappedCondition) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (!condition.Group) {\r\n\t\t\t\t\t\t\t\tconfig.predefinedConditions.Conditions.push(mappedCondition);\r\n\t\t\t\t\t\t\t\t// config.LogicOperator = Number(condition.ClauseCondition);\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (groups[condition.Group]) {\r\n\t\t\t\t\t\t\t\tgroups[condition.Group].Conditions.push(mappedCondition);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tgroups[condition.Group] = {\r\n\t\t\t\t\t\t\t\t\tConditions: [mappedCondition],\r\n\t\t\t\t\t\t\t\t\tLogicOperator: mappedCondition.LogicOperator,\r\n\t\t\t\t\t\t\t\t\tOrder: index,\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tObject.keys(groups)\r\n\t\t\t\t\t\t\t.sort(function (keyA, keyB) {\r\n\t\t\t\t\t\t\t\treturn Number(keyB) - Number(keyA);\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t.forEach(function (key) {\r\n\t\t\t\t\t\t\t\tconfig.predefinedConditions.Groups.push(groups[key]);\r\n\r\n\t\t\t\t\t\t\t\tif (hasDifferentLogicOperators(groups[key].Conditions.slice(1))) {\r\n\t\t\t\t\t\t\t\t\tconfig.mode = ConditionBuilderMode.enableDifferentOperatorsInGroup;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tvar children = config.predefinedConditions.Conditions.concat(config.predefinedConditions.Groups).sort(function (childA, childB) {\r\n\t\t\t\t\t\t\treturn (Number(childA.Order) || 0) - (Number(childB.Order) || 0);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tif (hasDifferentLogicOperators(children.slice(1))) {\r\n\t\t\t\t\t\t\tconfig.mode = ConditionBuilderMode.enableDifferentOperatorsInGroup;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn config;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then(function () {\r\n\t\t\t\treturn new ConditionsBuilder(config);\r\n\t\t\t});\r\n\t}\r\n\r\n\tfunction hasDifferentLogicOperators(conditions) {\r\n\t\tif (conditions.length > 1) {\r\n\t\t\tvar operator = conditions[0].LogicOperator;\r\n\t\t\treturn conditions.some(function (condition) {\r\n\t\t\t\treturn condition.LogicOperator !== operator;\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfunction getValueOfInputCondition({ condition, typeIds, isBasedOnDD = false }) {\r\n\t\tif (condition.ValueType === ConditionValueTypes.Value) {\r\n\t\t\treturn $q.when(condition.Value);\r\n\t\t} else if (condition.ValueType === ConditionValueTypes.Attribute) {\r\n\t\t\tif (typeof condition.ValueExpression === 'string' && condition.ValueExpression.indexOf('.')) {\r\n\t\t\t\tvar className = condition.ValueExpression.substring(condition.ValueExpression.indexOf('(') + 1, condition.ValueExpression.indexOf(')'));\r\n\t\t\t\treturn getClassPropertyByName({\r\n\t\t\t\t\tclassName: className,\r\n\t\t\t\t\tattributeName: condition.ValueExpression.split('.')[1],\r\n\t\t\t\t\ttypeIds: typeIds,\r\n\t\t\t\t\tisBasedOnDD: isBasedOnDD,\r\n\t\t\t\t}).then(function (property) {\r\n\t\t\t\t\treturn property.AttributeId;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} else if (condition.ValueType === ConditionValueTypes.Expression) {\r\n\t\t\treturn $q.when(condition.ValueExpression);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction conditionInputMapping({ condition, typeIds, isBasedOnDD = false }) {\r\n\t\tvar classId;\r\n\t\tif (typeof condition.AttributePath === 'string' && condition.AttributePath.indexOf('.') >= 0) {\r\n\t\t\tclassId = condition.AttributePath.split('.')[0].toLowerCase();\r\n\t\t} else if (condition.AttributePath) {\r\n\t\t\tclassId = condition.AttributePath.toLowerCase();\r\n\t\t}\r\n\r\n\t\treturn schemaService\r\n\t\t\t.getClass(classId, true)\r\n\t\t\t.then(function (classObj) {\r\n\t\t\t\treturn getClassPropertyById({ className: classObj.InternalName, attributeId: condition.AttributeId, typeIds: typeIds, isBasedOnDD: isBasedOnDD });\r\n\t\t\t})\r\n\t\t\t.then(function (property) {\r\n\t\t\t\tif (!property) {\r\n\t\t\t\t\treturn $q.when(property);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tproperty.Id = condition.Id;\r\n\t\t\t\tproperty.ValueType = Number(condition.ValueType);\r\n\t\t\t\tproperty.ConditionStart = Number(condition.ConditionStart) || ComplianceRuleConditionStart.After;\r\n\t\t\t\tproperty.Operator = Number(condition.Operator);\r\n\t\t\t\tproperty.LogicOperator = Number(condition.ClauseCondition);\r\n\t\t\t\tproperty.Order = Number(condition.Order);\r\n\r\n\t\t\t\treturn getValueOfInputCondition({ condition: condition, typeIds: typeIds, isBasedOnDD: isBasedOnDD }).then(function (value) {\r\n\t\t\t\t\t// for BoolType\r\n\t\t\t\t\tif (property.TypeId === 9 && (!property.IsAttribute || property.ValueType === 0)) {\r\n\t\t\t\t\t\tif (typeof value === 'string') {\r\n\t\t\t\t\t\t\t// to convert '0' to false and '1' to true\r\n\t\t\t\t\t\t\tvalue = parseInt(value);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvalue = Boolean(value);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (property.TypeId === 3 && (!property.IsAttribute || property.ValueType === 0)) {\r\n\t\t\t\t\t\t// CoRU \"Date\" format = 4/10/2024 1:44:00 PM\r\n\t\t\t\t\t\t// CoRU \"DateExpression\" format = Today + 1\r\n\t\t\t\t\t\t// moment(Today + 1).isValid() === true, so it is necessary to check -/+ additionally\r\n\t\t\t\t\t\tconst inputDate = moment(value);\r\n\t\t\t\t\t\tconst isDateMode = inputDate.isValid() && typeof value === 'string' && !value.includes('Today') && !value.includes('+') && !value.includes('-');\r\n\t\t\t\t\t\tvalue = isDateMode ? inputDate.toISOString() : value;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tproperty.Value = value;\r\n\t\t\t\t\treturn property;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\tfunction builderOutput(builder) {\r\n\t\tvar conditions = builder.conditions.map(function (condition) {\r\n\t\t\tcondition.output.Order = builder.conditions.indexOf(condition);\r\n\t\t\treturn condition.output;\r\n\t\t});\r\n\t\tvar order = conditions.length;\r\n\t\tvar groupsConditions = builder.groups.map(function (group) {\r\n\t\t\tif (Array.isArray(group.output)) {\r\n\t\t\t\tgroup.output.forEach(function (condition) {\r\n\t\t\t\t\tcondition.Group = builder.groups.indexOf(group) + 1;\r\n\t\t\t\t\tcondition.Order = order;\r\n\t\t\t\t\torder++;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\treturn group.output;\r\n\t\t});\r\n\r\n\t\treturn Array.prototype.concat.apply(conditions, groupsConditions);\r\n\t}\r\n\r\n\tfunction groupOutput(group) {\r\n\t\treturn group.conditions.map(function (condition, index) {\r\n\t\t\tcondition.output.Order = index;\r\n\t\t\tif (index === 0) {\r\n\t\t\t\tcondition.output.ClauseCondition = group.logicOperatorValue;\r\n\t\t\t}\r\n\t\t\treturn condition.output;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction conditionOutput(condition) {\r\n\t\tvar value = null,\r\n\t\t\tvalueExpression = null;\r\n\t\tvar selectedAttributeId;\r\n\r\n\t\tif (condition.type !== ConditionTypes.Fragment && condition.type !== ConditionTypes.MultiFragment) {\r\n\t\t\tif (condition.valueTypeValue === ConditionValueTypes.Value) {\r\n\t\t\t\tvalue = condition.value;\r\n\t\t\t} else if (condition.valueTypeValue === ConditionValueTypes.Attribute && condition.selectedAttribute) {\r\n\t\t\t\tvar attributePath = condition.selectedAttribute.AttributeClassPath;\r\n\t\t\t\tvar attributeName = attributePath.substr(attributePath.lastIndexOf('.') + 1);\r\n\t\t\t\tvalueExpression = 'T(' + condition.selectedAttribute.EntityClassName + ').' + attributeName;\r\n\t\t\t\tselectedAttributeId = condition.selectedAttribute.AttributeId;\r\n\t\t\t\tvalue = selectedAttributeId;\r\n\t\t\t} else if (condition.valueTypeValue === ConditionValueTypes.Expression) {\r\n\t\t\t\tvalueExpression = condition.value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (condition._options.TypeId === 9 && !selectedAttributeId) {\r\n\t\t\tvalue = value ? '1' : '0';\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tID: condition.id,\r\n\t\t\t// Order: condition.parent.conditions.indexOf(condition),\r\n\t\t\tValueType: condition.valueTypeValue,\r\n\t\t\tValue: value,\r\n\t\t\tValueExpression: valueExpression,\r\n\t\t\tAttributePath: condition._options.AttributePath,\r\n\t\t\tConditionStart: condition.startConditionValue,\r\n\t\t\tAttributeId: condition._options.AttributeId,\r\n\t\t\tOperator: condition.operatorValue,\r\n\t\t\tClauseCondition: condition.logicOperatorValue,\r\n\r\n\t\t\t/* extra properties to avoid extra requests in wizard */\r\n\t\t\tReferenceTo: condition._options.ReferenceTo,\r\n\t\t\tReferenceFilter: condition._options.ReferenceFilter,\r\n\t\t\tTypeId: condition._options.TypeId,\r\n\t\t\tConditionType: condition.conditionType,\r\n\t\t\tSelectedAttributeId: selectedAttributeId,\r\n\t\t\tName: condition.name,\r\n\t\t\tEntityClassName: condition._options.EntityClassName,\r\n\t\t};\r\n\t}\r\n\r\n\tfunction loadPickers() {\r\n\t\tvar pickers = {\r\n\t\t\tlogicOperators: {\r\n\t\t\t\tenumClassName: 'SPSComplianceRulePickupClauseCondition',\r\n\t\t\t},\r\n\t\t\tvalueTypes: {\r\n\t\t\t\tenumClassName: 'SPSComplianceRulePickupConditionValueType',\r\n\t\t\t},\r\n\t\t\tstartConditions: {\r\n\t\t\t\tenumClassName: 'SPSComplianceRulePickupConditionStart',\r\n\t\t\t},\r\n\t\t};\r\n\t\tvar promises = [];\r\n\t\tvar keys = Object.keys(pickers);\r\n\t\tkeys.forEach(function (key) {\r\n\t\t\tpromises.push(\r\n\t\t\t\tentityService.getEnumeration(pickers[key].enumClassName).then(function (enumeration) {\r\n\t\t\t\t\tpickers[key].enumeration = enumeration.Values.map(function (value) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttitle: value.DisplayString,\r\n\t\t\t\t\t\t\tvalue: value.Value,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\treturn $q.all(promises).then(function () {\r\n\t\t\treturn pickers;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getOperators(trigger) {\r\n\t\toperatorsPromise = operatorsPromise || loadOperators();\r\n\t\treturn operatorsPromise.then(function (operatorsByTrigger) {\r\n\t\t\tif (!operatorsByTrigger) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\treturn operatorsByTrigger[trigger];\r\n\t\t});\r\n\t}\r\n\r\n\tfunction loadOperators() {\r\n\t\treturn schemaService.getClassInfo('SPSComplianceRulePickupOperators').then(function (classInfo) {\r\n\t\t\tif (!classInfo || !Array.isArray(classInfo.Data)) {\r\n\t\t\t\treturn $q.when(null);\r\n\t\t\t}\r\n\r\n\t\t\tvar operatorsByType = {};\r\n\t\t\tvar conditionTypeIds = [];\r\n\t\t\tObject.keys(ConditionTypes).forEach(function (key) {\r\n\t\t\t\tvar id = ConditionTypes[key];\r\n\t\t\t\tconditionTypeIds.push(id);\r\n\t\t\t\toperatorsByType[id] = [];\r\n\t\t\t});\r\n\r\n\t\t\tclassInfo.Data.sort(function (itemA, itemB) {\r\n\t\t\t\treturn Number(itemA.Value) - Number(itemB.Value);\r\n\t\t\t}).forEach(function (item) {\r\n\t\t\t\tvar operator = {\r\n\t\t\t\t\ttitle: item.DisplayString,\r\n\t\t\t\t\tvalue: item.Value,\r\n\t\t\t\t\tsupportedTriggers: item.SupportedTriggers,\r\n\t\t\t\t\tunconfigurableStartCondition: item.Value >= 12, // //Fragment/Relation Changed/Added/Removed\r\n\t\t\t\t\tunconfigurableValue:\r\n\t\t\t\t\t\titem.Value >= 12 || //Fragment/Relation Changed/Added/Removed\r\n\t\t\t\t\t\titem.Value === 6 || //IsEmpty\r\n\t\t\t\t\t\titem.Value === 7, //IsNotEmpty\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (typeof item.SupportedTypes === 'string') {\r\n\t\t\t\t\titem.SupportedTypes.split(',').forEach(function (type) {\r\n\t\t\t\t\t\ttype = Number(type);\r\n\t\t\t\t\t\tif (!Array.isArray(operatorsByType[type])) {\r\n\t\t\t\t\t\t\toperatorsByType[type] = [];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\toperatorsByType[type].push(operator);\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconditionTypeIds.forEach(function (id) {\r\n\t\t\t\t\t\toperatorsByType[id].push(operator);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar operatorsByTrigger = {};\r\n\r\n\t\t\tObject.keys(ComplianceRuleTriggerTypes).forEach(function (key) {\r\n\t\t\t\tvar triggerId = ComplianceRuleTriggerTypes[key];\r\n\t\t\t\toperatorsByTrigger[triggerId] = {};\r\n\t\t\t\tconditionTypeIds.forEach(function (conditionId) {\r\n\t\t\t\t\toperatorsByTrigger[triggerId][conditionId] = operatorsByType[conditionId].filter(function (operator) {\r\n\t\t\t\t\t\tif (typeof operator.supportedTriggers === 'string') {\r\n\t\t\t\t\t\t\treturn operator.supportedTriggers.split(',').indexOf(triggerId.toString()) >= 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\treturn operatorsByTrigger;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction loadStatusPickup(condition, className, typeIds) {\r\n\t\treturn entityService.getEnumerationValues(condition._options.ReferenceTo, condition._options.ReferenceFilter).then(function (enumeration) {\r\n\t\t\treturn getStateGroups(className, typeIds).then(function (stateGroups) {\r\n\t\t\t\treturn Array.prototype.concat.apply(\r\n\t\t\t\t\t[],\r\n\t\t\t\t\tstateGroups.map(function (stateGroup) {\r\n\t\t\t\t\t\treturn enumeration\r\n\t\t\t\t\t\t\t.filter(function (enumItem) {\r\n\t\t\t\t\t\t\t\treturn stateGroup.value === enumItem.StateGroup;\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t.map(function (enumItem) {\r\n\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\ttitle: enumItem.DisplayString + (stateGroups.length > 1 ? ' (' + stateGroup.title + ')' : ''),\r\n\t\t\t\t\t\t\t\t\tvalue: enumItem.Value,\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t.sort(function (a, b) {\r\n\t\t\t\t\t\t\t\treturn ('' + a.title).localeCompare(b.title);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction enumLoader(condition, className, typeIds) {\r\n\t\tif (condition._options.ReferenceTo === 'SPSCommonPickupObjectStatus') {\r\n\t\t\treturn loadStatusPickup(condition, className, typeIds);\r\n\t\t}\r\n\r\n\t\treturn entityService.getEnumerationValues(condition._options.ReferenceTo, condition._options.ReferenceFilter).then(function (enumeration) {\r\n\t\t\treturn enumeration\r\n\t\t\t\t.map(function (item) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttitle: item.DisplayString,\r\n\t\t\t\t\t\tvalue: item.Value,\r\n\t\t\t\t\t};\r\n\t\t\t\t})\r\n\t\t\t\t.sort(function (a, b) {\r\n\t\t\t\t\treturn ('' + a.title).localeCompare(b.title);\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getClassPropertyByName({ className, attributeName, typeIds, isBasedOnDD = false }) {\r\n\t\treturn getClassConditionInfo({ className: className, typeIds: typeIds }).then(function (classConditionInfo) {\r\n\t\t\treturn getClassProperties({ classObject: classConditionInfo, typeIds: typeIds, isBasedOnDD: isBasedOnDD }).then(function (properties) {\r\n\t\t\t\treturn angular.copy(\r\n\t\t\t\t\tproperties.filter(function (property) {\r\n\t\t\t\t\t\tif (property.IsAttribute) {\r\n\t\t\t\t\t\t\tvar attributeClassPath = className + '.' + attributeName;\r\n\t\t\t\t\t\t\treturn property.AttributeClassPath === attributeClassPath;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})[0]\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getClassPropertyById({ className, attributeId, typeIds, isBasedOnDD = false }) {\r\n\t\treturn getClassConditionInfo({ className: className, typeIds: typeIds }).then(function (classConditionInfo) {\r\n\t\t\treturn getClassProperties({ classObject: classConditionInfo, trigger: ComplianceRuleTriggerTypes.ChangeObject, typeIds: typeIds, isBasedOnDD: isBasedOnDD }).then(\r\n\t\t\t\tfunction (properties) {\r\n\t\t\t\t\treturn angular.copy(\r\n\t\t\t\t\t\tproperties.filter(function (property) {\r\n\t\t\t\t\t\t\treturn property.AttributeId === attributeId;\r\n\t\t\t\t\t\t})[0]\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getClassConditionInfo({ className, typeIds }) {\r\n\t\treturn schemaService.getClassInfo(className).then(function (classInfo) {\r\n\t\t\tvar usedTypeCardinalities = (classInfo.Cardinalities || []).filter(function (typeCardinality) {\r\n\t\t\t\treturn typeIds.some(function (typeId) {\r\n\t\t\t\t\treturn typeId === typeCardinality.TypeId;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\treturn {\r\n\t\t\t\tName: classInfo.InternalName,\r\n\t\t\t\tCardinality: usedTypeCardinalities.length > 0 ? usedTypeCardinalities[0].Cardinality : RelatedClassCardinality.one,\r\n\t\t\t};\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getClassProperties({ classObject, trigger, typeIds, isBasedOnDD = false }) {\r\n\t\tcache.properties[classObject.Name] =\r\n\t\t\tcache.properties[classObject.Name] ||\r\n\t\t\tschemaService.getClassInfo(classObject.Name).then(function (classEntity) {\r\n\t\t\t\tvar attributes = classEntity.Attributes || [];\r\n\t\t\t\tvar relations = classEntity.Relations || [];\r\n\r\n\t\t\t\tvar mappedAttributes = attributes.map(function (property) {\r\n\t\t\t\t\tvar conditionType = getConditionType(property);\r\n\r\n\t\t\t\t\tvar attrTitle = classEntity.DisplayName ? classEntity.DisplayName : classEntity.InternalName;\r\n\t\t\t\t\tattrTitle += '.' + property.InternalName;\r\n\t\t\t\t\tattrTitle += property.DisplayName ? ' (' + property.DisplayName + ')' : '';\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tAttributeId: property.Id,\r\n\t\t\t\t\t\tAttributePath: classEntity.Id + '.' + property.InternalName,\r\n\t\t\t\t\t\tIsAttribute: true,\r\n\t\t\t\t\t\tTitle: attrTitle,\r\n\t\t\t\t\t\tName: property.InternalName,\r\n\t\t\t\t\t\tConditionType: conditionType,\r\n\t\t\t\t\t\tConditionStart: ComplianceRuleConditionStart.After,\r\n\t\t\t\t\t\tEnumLoader: undefined,\r\n\t\t\t\t\t\tEntityClassName: classEntity.InternalName,\r\n\t\t\t\t\t\tReferenceTo: conditionType === ConditionTypes.EnumerationReference ? property.PickupClass.InternalName : undefined,\r\n\t\t\t\t\t\tReferenceFilter: null,\r\n\t\t\t\t\t\tTypeId: property.Datatype || 0,\r\n\t\t\t\t\t\tTypeName: getDataTypeName(property),\r\n\t\t\t\t\t\tAttributeClassPath: classEntity.InternalName + '.' + property.InternalName,\r\n\t\t\t\t\t\tRelationType: undefined,\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvar mappedRelations = relations.map(function (property) {\r\n\t\t\t\t\tvar relationTitle = classEntity.DisplayName ? classEntity.DisplayName : classEntity.InternalName;\r\n\t\t\t\t\trelationTitle += '.' + property.AttributeLeft.InternalName;\r\n\t\t\t\t\trelationTitle += property.AttributeLeft.DisplayName ? ' (' + property.AttributeLeft.DisplayName + ')' : '';\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tAttributeId: property.AttributeLeft.Id,\r\n\t\t\t\t\t\tAttributePath: classEntity.Id + '.' + property.AttributeLeft.InternalName,\r\n\t\t\t\t\t\tIsAttribute: true,\r\n\t\t\t\t\t\tTitle: relationTitle,\r\n\t\t\t\t\t\tName: property.AttributeLeft.InternalName,\r\n\t\t\t\t\t\tConditionType: helper.getConditionTypeByRelation(property.RelationType),\r\n\t\t\t\t\t\tConditionStart: ComplianceRuleConditionStart.After,\r\n\t\t\t\t\t\tEnumLoader: undefined,\r\n\t\t\t\t\t\tEntityClassName: classEntity.InternalName,\r\n\t\t\t\t\t\tReferenceTo: property.ClassRight.InternalName,\r\n\t\t\t\t\t\tReferenceFilter: null,\r\n\t\t\t\t\t\tTypeId: 1,\r\n\t\t\t\t\t\tTypeName: 'GuidType',\r\n\t\t\t\t\t\tAttributeClassPath: classEntity.InternalName + '.' + property.AttributeLeft.InternalName,\r\n\t\t\t\t\t\tRelationType: property.RelationType,\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tmappedAttributes = mappedAttributes.concat(mappedRelations);\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tDisplayName: classEntity.DisplayName,\r\n\t\t\t\t\tName: classEntity.DisplayName,\r\n\t\t\t\t\tId: classEntity.Id,\r\n\t\t\t\t\tUsedInTypes: classEntity.UsedInTypes,\r\n\t\t\t\t\tproperties: mappedAttributes,\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\treturn cache.properties[classObject.Name].then(function (classEntity) {\r\n\t\t\tvar localEnumLoader = function (condition) {\r\n\t\t\t\treturn enumLoader(condition, classObject.Name, typeIds);\r\n\t\t\t};\r\n\r\n\t\t\tif (!isBasedOnDD && (classObject.Cardinality === RelatedClassCardinality.oneOrMany || classObject.Cardinality === RelatedClassCardinality.zeroOrMany)) {\r\n\t\t\t\treturn trigger === ComplianceRuleTriggerTypes.ChangeObject || trigger === ComplianceRuleTriggerTypes.CreateObject\r\n\t\t\t\t\t? [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tAttributeId: classEntity.Id,\r\n\t\t\t\t\t\t\t\tAttributePath: classEntity.Id,\r\n\t\t\t\t\t\t\t\tTitle: classEntity.DisplayName,\r\n\t\t\t\t\t\t\t\tName: classEntity.Name,\r\n\t\t\t\t\t\t\t\tEntityClassName: classObject.Name,\r\n\t\t\t\t\t\t\t\tConditionType: ConditionTypes.MultiFragment,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t ]\r\n\t\t\t\t\t: [];\r\n\t\t\t} else {\r\n\t\t\t\tvar properties = classEntity.properties.slice();\r\n\t\t\t\tproperties.forEach(function (property) {\r\n\t\t\t\t\tif (property.ConditionType === ConditionTypes.EnumerationReference) {\r\n\t\t\t\t\t\tproperty.EnumLoader = localEnumLoader;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (trigger === ComplianceRuleTriggerTypes.ChangeObject) {\r\n\t\t\t\t\tproperties.unshift({\r\n\t\t\t\t\t\tAttributeId: classEntity.Id,\r\n\t\t\t\t\t\tAttributePath: classEntity.Id,\r\n\t\t\t\t\t\tTitle: classEntity.DisplayName + '.*',\r\n\t\t\t\t\t\tName: classEntity.DisplayName,\r\n\t\t\t\t\t\tConditionType: ConditionTypes.Fragment,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn properties;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getProperties({ relatedClasses, trigger, typeIds, isBasedOnDD = false }) {\r\n\t\tvar promises = [];\r\n\t\tif (!Array.isArray(relatedClasses) || relatedClasses.length === 0) {\r\n\t\t\treturn $q.when([]);\r\n\t\t}\r\n\t\trelatedClasses.forEach(function (relatedClass) {\r\n\t\t\tpromises.push(getClassProperties({ classObject: relatedClass, trigger: trigger, typeIds: typeIds, isBasedOnDD: isBasedOnDD }));\r\n\t\t});\r\n\r\n\t\treturn $q.all(promises).then(function (classesProperties) {\r\n\t\t\treturn Array.prototype.concat.apply([], classesProperties);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getDataTypeName(property) {\r\n\t\tif (property.IsPickup === true) {\r\n\t\t\treturn 'EnumType';\r\n\t\t}\r\n\r\n\t\tswitch (property.Datatype) {\r\n\t\t\tcase DataTypes.BoolType:\r\n\t\t\t\treturn 'BoolType';\r\n\t\t\tcase DataTypes.DateType:\r\n\t\t\t\treturn 'DateType';\r\n\t\t\tcase DataTypes.ExpressionGuidType:\r\n\t\t\t\treturn 'Expression';\r\n\t\t\tdefault:\r\n\t\t\t\treturn 'String';\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getConditionType(property) {\r\n\t\tif (property.IsPickup === true) {\r\n\t\t\treturn ConditionTypes.EnumerationReference;\r\n\t\t}\r\n\r\n\t\treturn helper.getConditionTypeByDataType(property.Datatype);\r\n\t}\r\n\r\n\tfunction getAllStateGroups() {\r\n\t\tif (self.allStateGroups) {\r\n\t\t\treturn $q.when(self.allStateGroups);\r\n\t\t}\r\n\t\treturn entityService.getEnumeration('SPSCommonPickupStateGroup').then(function (enumeration) {\r\n\t\t\tself.allStateGroups = {\r\n\t\t\t\tmapper: {},\r\n\t\t\t\tenum: [],\r\n\t\t\t};\r\n\t\t\tself.allStateGroups.enum = enumeration.Values.map(function (stateGroup) {\r\n\t\t\t\tself.allStateGroups.mapper[stateGroup.Value] = stateGroup.DisplayString;\r\n\t\t\t\treturn {\r\n\t\t\t\t\tvalue: stateGroup.Value,\r\n\t\t\t\t\ttitle: stateGroup.DisplayString,\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\treturn self.allStateGroups;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getStateGroups(className, typeIds) {\r\n\t\treturn schemaService.getClassInfo(className).then(function (classObj) {\r\n\t\t\tvar entityTypes = (classObj.UsedInTypes || []).filter(function (type) {\r\n\t\t\t\treturn typeIds.indexOf(type.Id) > -1;\r\n\t\t\t});\r\n\r\n\t\t\treturn getAllStateGroups().then(function (allStateGroups) {\r\n\t\t\t\tif (Array.isArray(entityTypes) && entityTypes.length > 0) {\r\n\t\t\t\t\tvar stateGroups = entityTypes\r\n\t\t\t\t\t\t.filter(function (type) {\r\n\t\t\t\t\t\t\treturn type.StateGroup;\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.map(function (type) {\r\n\t\t\t\t\t\t\treturn type.StateGroup;\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\tstateGroups = _.uniq(stateGroups);\r\n\t\t\t\t\tif (stateGroups.length) {\r\n\t\t\t\t\t\treturn stateGroups.map(function (stateGroup) {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\tvalue: stateGroup,\r\n\t\t\t\t\t\t\t\ttitle: allStateGroups.mapper[stateGroup],\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn allStateGroups.enum;\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n}\r\n","import { initFilterExpression } from '../../model/filterExpressionUtils';\r\n\r\n(function () {\r\n\t'use strict';\r\n\r\n\tvar NUMOFCHARTS = 4;\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').directive('mxComboChart', MxComboChartDirective);\r\n\r\n\tMxComboChartDirective.$inject = ['$injector', 'mx.SolutionBuilderAgent.BaseChartService'];\r\n\r\n\tfunction MxComboChartDirective($injector, baseChartService) {\r\n\t\tvar directive = baseChartService.mxBaseChartDirective($injector);\r\n\r\n\t\tdirective.controller = MxComboChartCtrl;\r\n\r\n\t\tfor (var i = 1; i <= NUMOFCHARTS; i++) {\r\n\t\t\tvar newDefinitions = {};\r\n\r\n\t\t\tnewDefinitions['chart' + i + 'Data'] = '=?';\r\n\t\t\tnewDefinitions['chart' + i + 'Type'] = '@';\r\n\t\t\tnewDefinitions['chart' + i + 'Title'] = '@';\r\n\t\t\tnewDefinitions['chart' + i + 'LegendFieldName'] = '@';\r\n\t\t\tnewDefinitions['chart' + i + 'ValueFieldName'] = '@';\r\n\t\t\tnewDefinitions['chart' + i + 'IndividualYAxis'] = '@';\r\n\r\n\t\t\tnewDefinitions['chart' + i + 'EntityClass'] = '@';\r\n\t\t\tnewDefinitions['chart' + i + 'ColumnDefinition'] = '@';\r\n\t\t\tnewDefinitions['chart' + i + 'EntityType'] = '@';\r\n\t\t\tnewDefinitions['chart' + i + 'ObjectId'] = '@';\r\n\t\t\tnewDefinitions['chart' + i + 'SelectedItem'] = '=?';\r\n\r\n\t\t\tangular.extend(directive.bindToController, newDefinitions);\r\n\t\t}\r\n\r\n\t\tvar baseLink = directive.link;\r\n\r\n\t\tdirective.link = function (scope, element, attrs, ctrl) {\r\n\t\t\tif (typeof baseLink === 'function') {\r\n\t\t\t\tbaseLink(scope, element, attrs, ctrl);\r\n\t\t\t}\r\n\r\n\t\t\tif (typeof scope.vm.dataWatcher === 'function') {\r\n\t\t\t\tscope.vm.dataWatcher();\r\n\t\t\t}\r\n\r\n\t\t\tscope.vm.debouncedAllDataWatcher = $.debounce(500, function () {\r\n\t\t\t\tscope.$evalAsync(function () {\r\n\t\t\t\t\tscope.vm.hasData = Object.keys(scope.vm.hasDataChart).some(function (i) {\r\n\t\t\t\t\t\treturn scope.vm.hasDataChart[i];\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (scope.vm.hasData) {\r\n\t\t\t\t\t\tscope.vm.dataChanged = true;\r\n\t\t\t\t\t\tscope.vm.requestChartRerender();\r\n\t\t\t\t\t} else if (scope.vm.chartContainer.empty) {\r\n\t\t\t\t\t\tscope.vm.chartContainer.empty();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tscope.vm.hasDataChart = {};\r\n\t\t\tfor (var i = 1; i <= NUMOFCHARTS; i++) {\r\n\t\t\t\tscope.vm.hasDataChart[i] = false;\r\n\t\t\t\taddChartDataWatcher(scope, i);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction addChartDataWatcher(scope, i) {\r\n\t\t\tscope.$watch(\r\n\t\t\t\t'vm.chart' + i + 'Data',\r\n\t\t\t\tfunction (items) {\r\n\t\t\t\t\tscope.vm.hasDataChart[i] = Array.isArray(items) && items.length > 0;\r\n\t\t\t\t\tscope.vm.debouncedAllDataWatcher();\r\n\t\t\t\t},\r\n\t\t\t\ttrue\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tMxComboChartCtrl.$inject = [\r\n\t\t'$injector',\r\n\t\t'$controller',\r\n\t\t'$scope',\r\n\t\t'$attrs',\r\n\t\t'$element',\r\n\t\t'mx.SolutionBuilderAgent.BaseChartService',\r\n\t\t'mx.shell.EventService',\r\n\t\t'mx.app.ColorService',\r\n\t];\r\n\tfunction MxComboChartCtrl($injector, $controller, $scope, $attrs, $element, baseChartService, eventService, colorService) {\r\n\t\tvar vm = $controller('mx.SolutionBuilderAgent.MxBaseChartController', {\r\n\t\t\t$injector: $injector,\r\n\t\t\t$scope: $scope,\r\n\t\t\t$attrs: $attrs,\r\n\t\t\t$element: $element,\r\n\t\t});\r\n\r\n\t\tconst adjustContrast = (color, level) => (mx.isEnhancedColorContrastMode ? colorService.enhanceColorContrast(color, undefined, level) : color);\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tfor (let i = 1; i <= NUMOFCHARTS; i++) {\r\n\t\t\t\tinitFilterExpression({\r\n\t\t\t\t\tpropertyName: `chart${i}-filter-expression`,\r\n\t\t\t\t\tcontrolMxAtId: vm.mxAtId,\r\n\t\t\t\t\t$scope,\r\n\t\t\t\t\t$attrs,\r\n\t\t\t\t\t$element,\r\n\t\t\t\t\tcontroller: vm,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tinitFields();\r\n\t\t};\r\n\r\n\t\tfunction initFields() {\r\n\t\t\tconst fields = [\r\n\t\t\t\t{\r\n\t\t\t\t\tbase: 'legendFieldName',\r\n\t\t\t\t\tcombo: 'LegendFieldName',\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tbase: 'valueFieldName',\r\n\t\t\t\t\tcombo: 'ValueFieldName',\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tbase: 'detailsFilterExpression',\r\n\t\t\t\t\tcombo: 'FilterExpression',\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tbase: 'detailsEntityClassName',\r\n\t\t\t\t\tcombo: 'EntityClass',\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tbase: 'detailsColumnDefinition',\r\n\t\t\t\t\tcombo: 'ColumnDefinition',\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tbase: 'detailsEntityType',\r\n\t\t\t\t\tcombo: 'EntityType',\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tbase: 'detailsObjectId',\r\n\t\t\t\t\tcombo: 'ObjectId',\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tbase: 'detailsType',\r\n\t\t\t\t\tcombo: 'DetailsType',\r\n\t\t\t\t},\r\n\t\t\t];\r\n\r\n\t\t\tfunction fieldGetter(i) {\r\n\t\t\t\treturn function () {\r\n\t\t\t\t\treturn vm['chart' + vm.currentSelectedChart + fields[i].combo];\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tfunction fieldSetter(i) {\r\n\t\t\t\treturn function (value) {\r\n\t\t\t\t\tif (fields[i].combo !== 'FilterExpression') {\r\n\t\t\t\t\t\tvm['chart' + vm.currentSelectedChart + fields[i].combo] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tfor (let i = 0; i < fields.length; i++) {\r\n\t\t\t\tObject.defineProperty(vm, fields[i].base, {\r\n\t\t\t\t\tget: fieldGetter(i),\r\n\t\t\t\t\tset: fieldSetter(i),\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvm.getChartConfig = function () {\r\n\t\t\treturn baseChartService.getBaseChartConfig(vm).then(function (baseConfig) {\r\n\t\t\t\tconst config = angular.extend({}, baseConfig);\r\n\t\t\t\tlet i;\r\n\r\n\t\t\t\tconfig.legend = {\r\n\t\t\t\t\tenabled: true,\r\n\t\t\t\t\tlayout: 'horizontal',\r\n\t\t\t\t\talign: 'center',\r\n\t\t\t\t\tverticalAlign: 'bottom',\r\n\t\t\t\t\titemStyle: { color: adjustContrast(config.legend.itemStyle.color) },\r\n\t\t\t\t\titemHoverStyle: config.legend.itemHoverStyle,\r\n\t\t\t\t\titemHiddenStyle: config.legend.itemHiddenStyle,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvm.responsiveLegend = function () {};\r\n\r\n\t\t\t\tconfig.plotOptions.series.point.events.click = function () {\r\n\t\t\t\t\tfor (i = 1; i <= NUMOFCHARTS; i++) {\r\n\t\t\t\t\t\tif (vm['chart' + i + 'Title'] === this.series.options.name) {\r\n\t\t\t\t\t\t\tvm.currentSelectedChart = i;\r\n\t\t\t\t\t\t\tvm.data = vm['chart' + i + 'Data'];\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvm.onChartClick(this);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar yAxis = [angular.copy(config.yAxis)];\r\n\r\n\t\t\t\tfor (i = 1; i <= NUMOFCHARTS; i++) {\r\n\t\t\t\t\tvar serie = createSerie(i);\r\n\r\n\t\t\t\t\tif (!serie) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (vm['chart' + i + 'IndividualYAxis'] === 'true') {\r\n\t\t\t\t\t\tyAxis.push({\r\n\t\t\t\t\t\t\tgridLineWidth: 0,\r\n\t\t\t\t\t\t\topposite: true,\r\n\t\t\t\t\t\t\ttitle: {\r\n\t\t\t\t\t\t\t\tenabled: null,\r\n\t\t\t\t\t\t\t\tstyle: { display: 'none' },\r\n\t\t\t\t\t\t\t\ttext: serie.name || '',\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tlabels: { style: { color: adjustContrast(window.Highcharts.getOptions().colors[i], 4.5) } },\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tserie.yAxis = yAxis.length - 1;\r\n\t\t\t\t\t\tserie.color = adjustContrast(window.Highcharts.getOptions().colors[i]);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconfig.series.push(serie);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (yAxis.length >= config.series.length + 1) {\r\n\t\t\t\t\tyAxis[1] = angular.copy(config.yAxis);\r\n\t\t\t\t\tyAxis[0].visible = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconfig.yAxis = yAxis;\r\n\r\n\t\t\t\tconfig.series.sort(function (item, item2) {\r\n\t\t\t\t\tif (item.type === 'areaspline' && item2.type !== 'areaspline') {\r\n\t\t\t\t\t\treturn -1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (item.type !== 'areaspline' && item2.type === 'areaspline') {\r\n\t\t\t\t\t\treturn 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconfig.lang.accessibility.axis.yAxisDescriptionPlural = vm.chartsI18n.a11y?.axis?.yAxisDescriptionPluralSimple;\r\n\r\n\t\t\t\treturn config;\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.shell.EventCodes.ThemeChanged,\r\n\t\t\t() => {\r\n\t\t\t\t$scope.vm.chart?.update({\r\n\t\t\t\t\tyAxis: $scope.vm.chart?.yAxis?.map((a, i) => ({ labels: { style: { color: adjustContrast(vm.chart?.yAxis[i].userOptions.labels.style.color, 4.5) } } })),\r\n\t\t\t\t\tseries: $scope.vm.chart?.series?.map((s, i) => ({ color: adjustContrast(vm.chart?.series[i]?.color) })),\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\r\n\t\tfunction createSerie(i) {\r\n\t\t\tif (!vm['chart' + i + 'Data'] || vm['chart' + i + 'Data'].length === 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\ttype: vm['chart' + i + 'Type'],\r\n\t\t\t\tname: vm['chart' + i + 'Title'],\r\n\t\t\t\tdata: vm['chart' + i + 'Data'].map(function (item) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tname: item[vm['chart' + i + 'LegendFieldName']],\r\n\t\t\t\t\t\ty: item[vm['chart' + i + 'ValueFieldName']],\r\n\t\t\t\t\t};\r\n\t\t\t\t}),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","import template from './azure-ad-conditions-builder.directive.html';\r\n\r\nexport class AzureAdConditionsBuilderCtrl {\r\n\tstatic $inject = ['$scope', '$timeout', 'mx.SolutionBuilderAgent.AzureAdConditionsService', 'mx.internationalization', 'mx.SolutionBuilderAgent.ConditionsBuilder.Enums'];\r\n\r\n\t$scope;\r\n\t$timeout;\r\n\tazureAdConditionsService;\r\n\ti18n;\r\n\tentityService;\r\n\tconditionsBuilderEnums;\r\n\r\n\tquery;\r\n\tcurrentQuery = '';\r\n\tcurrentProperties = '';\r\n\tbuilder;\r\n\r\n\t// This constant is not documented. It was taken from error messages.\r\n\taadConditionsLimit = 15;\r\n\twarningMessage;\r\n\r\n\tlabel;\r\n\tproperties;\r\n\tform;\r\n\r\n\tconstructor($scope, $timeout, azureAdConditionsService, i18n, conditionsBuilderEnums) {\r\n\t\tthis.$scope = $scope;\r\n\t\tthis.$timeout = $timeout;\r\n\t\tthis.azureAdConditionsService = azureAdConditionsService;\r\n\t\tthis.i18n = i18n;\r\n\t\tthis.conditionsBuilderEnums = conditionsBuilderEnums;\r\n\t}\r\n\r\n\t$onInit() {\r\n\t\tmx.components.FormControlControllerBase.call(this, this.$timeout);\r\n\r\n\t\tthis.initBuilder(this.properties, this.query);\r\n\r\n\t\tthis.warningMessage = new mx.components.Forms.ErrorMessage(\r\n\t\t\t`
${this.label}
${this.i18n.get(\r\n\t\t\t\t'components.form-validation.aadConditionsLimitWarning'\r\n\t\t\t)}
`,\r\n\t\t\tfalse,\r\n\t\t\t'warning'\r\n\t\t);\r\n\r\n\t\tthis.form.addFormErrorMessage(this.warningMessage);\r\n\r\n\t\tthis.$scope.$watch('vm.query', (newQuery) => {\r\n\t\t\tconst builder = this.initBuilder(this.currentProperties, newQuery);\r\n\t\t\tconst validationState = this.validateConditions(builder);\r\n\t\t\tthis.handleWarningMessage(validationState.showWarning);\r\n\t\t\tthis.handleErrorMessage(validationState);\r\n\t\t});\r\n\r\n\t\tthis.$scope.$watchCollection('vm.properties', (newProperties) => {\r\n\t\t\tif (newProperties) {\r\n\t\t\t\tthis.initBuilder(newProperties, this.currentQuery);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t$onDestroy() {\r\n\t\tthis.handleWarningMessage(false);\r\n\t}\r\n\r\n\t/* private */\r\n\tinitBuilder(properties, query) {\r\n\t\tconst isEqualQueries = query === this.currentQuery;\r\n\t\tconst isEqualProperties = properties === this.currentProperties;\r\n\r\n\t\tif (isEqualQueries && isEqualProperties) {\r\n\t\t\treturn this.builder;\r\n\t\t}\r\n\r\n\t\tthis.currentProperties = properties;\r\n\t\tthis.currentQuery = query;\r\n\r\n\t\tconst builder = this.azureAdConditionsService.getBuilder(this.currentProperties, this.currentQuery);\r\n\t\tthis.builder = builder;\r\n\t\tthis.builder.onOutputChange = (output) => {\r\n\t\t\tthis.currentQuery = output;\r\n\t\t\tthis.query = output;\r\n\t\t};\r\n\r\n\t\treturn builder;\r\n\t}\r\n\r\n\t/* private */\r\n\thandleWarningMessage(showWarning) {\r\n\t\tthis.warningMessage.isActive = showWarning;\r\n\t}\r\n\r\n\t/* private */\r\n\thandleErrorMessage(validationState) {\r\n\t\t// Trick to refresh Error Message\r\n\t\tthis.customValidation = { IsValid: true };\r\n\t\tif (!validationState.isValid) {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.customValidation = {\r\n\t\t\t\t\tIsValid: false,\r\n\t\t\t\t\tErrorMessage: this.i18n.getFormatted('components.form-validation.aadConditionsLimitError', validationState.conditionsAmount, this.aadConditionsLimit),\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/* private */\r\n\tvalidateConditions(group) {\r\n\t\tconst state = group ? this.checkConditionsState(group) : null;\r\n\t\treturn {\r\n\t\t\tisValid: state ? state.conditionsAmount <= this.aadConditionsLimit || !state.hasOr : true,\r\n\t\t\tshowWarning: state ? state.conditionsAmount > this.aadConditionsLimit && !state.hasOr : false,\r\n\t\t\tconditionsAmount: state ? state.conditionsAmount : 0,\r\n\t\t};\r\n\t}\r\n\r\n\t/* private */\r\n\tcheckConditionsState(group, hasOr) {\r\n\t\tconst result = {\r\n\t\t\tconditionsAmount: group.conditions.length,\r\n\t\t\thasOr: hasOr || [...group.conditions, ...group.groups].some((c) => c.logicOperator === this.conditionsBuilderEnums.ConditionLogicOperators.OR),\r\n\t\t};\r\n\t\tgroup.groups.forEach((g) => {\r\n\t\t\tconst condState = this.checkConditionsState(g, result.hasOr);\r\n\t\t\tresult.conditionsAmount += condState.conditionsAmount;\r\n\t\t\tresult.hasOr = condState.hasOr || result.hasOr;\r\n\t\t});\r\n\t\treturn result;\r\n\t}\r\n}\r\n\r\nexport function AzureAdConditionsBuilderDirective() {\r\n\tconst directive = new mx.components.FormControlBase(AzureAdConditionsBuilderCtrl);\r\n\tangular.extend(directive.require, {\r\n\t\tform: '?^form',\r\n\t});\r\n\tangular.extend(directive.bindToController, {\r\n\t\tproperties: '@',\r\n\t\tquery: '=?ngModel',\r\n\t});\r\n\tdirective.template = template;\r\n\treturn directive;\r\n}\r\n\r\nangular.module('mx.SolutionBuilderAgent').directive('mxAzureAdConditionsBuilder', AzureAdConditionsBuilderDirective);\r\n","// Module\nvar code = \"\\r\\n\\r\\n\";\n// Exports\nexport default code;","export class AzureAdConditionsService {\r\n\tstatic $inject = [\r\n\t\t'mx.internationalization',\r\n\t\t'mx.SolutionBuilderAgent.ConditionsBuilder.Builder',\r\n\t\t'mx.SolutionBuilderAgent.ConditionsBuilder.Enums',\r\n\t\t'mx.sb.Agent.DataQuery.FilterOperatorsFactory',\r\n\t\t'mx.SolutionBuilderAgent.EntityService',\r\n\t];\r\n\r\n\tconditionsBuilder;\r\n\tconditionsBuilderEnums;\r\n\tfilterOperatorsFactory;\r\n\tentityService;\r\n\r\n\tConditionLogicOperators;\r\n\tConditionValueTypes;\r\n\tConditionTypes;\r\n\tConditionBuilderMode;\r\n\r\n\ti18nBuilder;\r\n\tlocalEnumLoader;\r\n\r\n\tconstructor(i18n, conditionsBuilder, conditionsBuilderEnums, filterOperatorsFactory, entityService) {\r\n\t\tthis.conditionsBuilder = conditionsBuilder;\r\n\t\tthis.conditionsBuilderEnums = conditionsBuilderEnums;\r\n\t\tthis.filterOperatorsFactory = filterOperatorsFactory;\r\n\t\tthis.entityService = entityService;\r\n\r\n\t\tthis.ConditionLogicOperators = this.conditionsBuilderEnums.ConditionLogicOperators;\r\n\t\tthis.ConditionValueTypes = this.conditionsBuilderEnums.ConditionValueTypes;\r\n\t\tthis.ConditionTypes = this.conditionsBuilderEnums.ConditionTypes;\r\n\t\tthis.ConditionBuilderMode = this.conditionsBuilderEnums.ConditionBuilderMode;\r\n\r\n\t\tthis.i18nBuilder = i18n.get('solutionBuilderAgent.components.mx-conditions-builder');\r\n\t\tthis.localEnumLoader = async (condition) => await this.enumLoader(condition);\r\n\t}\r\n\r\n\tgetBuilder(inputProperties, query) {\r\n\t\tconst config = {\r\n\t\t\tlogicOperators: {\r\n\t\t\t\tenumeration: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttitle: this.i18nBuilder.and,\r\n\t\t\t\t\t\tvalue: this.ConditionLogicOperators.AND,\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttitle: this.i18nBuilder.or,\r\n\t\t\t\t\t\tvalue: this.ConditionLogicOperators.OR,\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\tvalueTypes: {\r\n\t\t\t\tenumeration: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttitle: this.i18nBuilder.condition,\r\n\t\t\t\t\t\tvalue: this.ConditionValueTypes.Value,\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\tstartConditions: {\r\n\t\t\t\tenumeration: [],\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tconfig.conditionOutput = this.conditionOutput;\r\n\t\tconfig.groupOutput = this.groupOutput;\r\n\t\tconfig.builderOutput = this.builderOutput;\r\n\t\tconfig.operators = [];\r\n\t\tconfig.maxLevel = 2;\r\n\t\tconfig.availableDateMods = [this.conditionsBuilderEnums.ConditionDateMods.Date];\r\n\r\n\t\tconfig.hidePropertiesFilter = true;\r\n\t\tconfig.mode = this.ConditionBuilderMode.disableDifferentOperatorsInGroup;\r\n\r\n\t\tlet properties = [];\r\n\t\ttry {\r\n\t\t\tproperties = JSON.parse(inputProperties).map((property) => {\r\n\t\t\t\tconst prop = {\r\n\t\t\t\t\tValueType: this.ConditionValueTypes.Value,\r\n\t\t\t\t\tConditionType: property.Type,\r\n\t\t\t\t\tTitle: property.Name,\r\n\t\t\t\t\tName: property.Name,\r\n\t\t\t\t\tOperators: this.setupOperators(property),\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (prop.ConditionType === this.ConditionTypes.EnumerationReference) {\r\n\t\t\t\t\tprop.ReferenceTo = property.ReferenceTo;\r\n\t\t\t\t\tprop.ReferenceFilter = property.ReferenceFilter;\r\n\t\t\t\t\tprop.EnumLoader = this.localEnumLoader;\r\n\t\t\t\t}\r\n\t\t\t\treturn prop;\r\n\t\t\t});\r\n\t\t} catch (e) {\r\n\t\t\tconsole.error(e.message);\r\n\t\t}\r\n\r\n\t\tconfig.predefinedConditions = this.inputMapping(query, properties);\r\n\t\tconst builder = new this.conditionsBuilder(config);\r\n\t\tbuilder.properties = properties;\r\n\t\treturn builder;\r\n\t}\r\n\r\n\t/*private*/\r\n\tsetupOperators(property) {\r\n\t\tlet operators = null;\r\n\t\tif (property.ConditionOperators && property.ConditionOperators.length > 0) {\r\n\t\t\toperators = [];\r\n\t\t\tconst operatorIDs = property.ConditionOperators.split(',').map((operatorString) => parseInt(operatorString.trim()));\r\n\r\n\t\t\tif (property.IsNullable) {\r\n\t\t\t\tif (!operatorIDs.includes(this.filterOperatorsFactory.operators.IsSet.value)) {\r\n\t\t\t\t\toperatorIDs.push(this.filterOperatorsFactory.operators.IsSet.value);\r\n\t\t\t\t}\r\n\t\t\t\tif (!operatorIDs.includes(this.filterOperatorsFactory.operators.IsNotSet.value)) {\r\n\t\t\t\t\toperatorIDs.push(this.filterOperatorsFactory.operators.IsNotSet.value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\toperatorIDs.forEach((filterOperator) => {\r\n\t\t\t\tObject.keys(this.filterOperatorsFactory.operators).forEach((key) => {\r\n\t\t\t\t\tconst operator = this.filterOperatorsFactory.operators[key];\r\n\t\t\t\t\tif (operator.value === filterOperator) {\r\n\t\t\t\t\t\toperators.push({\r\n\t\t\t\t\t\t\ttitle: operator.name,\r\n\t\t\t\t\t\t\tvalue: operator.value,\r\n\t\t\t\t\t\t\tisArray: operator.isArray || false,\r\n\t\t\t\t\t\t\tunconfigurableValue: operator.withoutParams || false,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn operators;\r\n\t}\r\n\r\n\t/*private*/\r\n\tasync enumLoader(condition) {\r\n\t\tconst enumerationValues = await this.entityService.getEnumerationValues(condition._options.ReferenceTo, condition._options.ReferenceFilter);\r\n\r\n\t\treturn enumerationValues\r\n\t\t\t.map(function (item) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttitle: item.DisplayString,\r\n\t\t\t\t\tvalue: item.Value,\r\n\t\t\t\t};\r\n\t\t\t})\r\n\t\t\t.sort(function (a, b) {\r\n\t\t\t\treturn ('' + a.title).localeCompare(b.title);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/*private*/\r\n\tinputMapping(query, properties) {\r\n\t\tlet rootGroup = {};\r\n\t\ttry {\r\n\t\t\trootGroup = JSON.parse(query);\r\n\t\t} catch (e) {\r\n\t\t\tmx.logCatch(e);\r\n\t\t}\r\n\r\n\t\treturn this.createInputMapper(properties)(rootGroup);\r\n\t}\r\n\r\n\t/*private*/\r\n\tcreateInputMapper(properties) {\r\n\t\tconst types = {};\r\n\t\tproperties.forEach((property) => {\r\n\t\t\tconst prop = {\r\n\t\t\t\tConditionType: property.ConditionType,\r\n\t\t\t\tOperators: property.Operators,\r\n\t\t\t};\r\n\r\n\t\t\tif (prop.ConditionType === this.ConditionTypes.EnumerationReference) {\r\n\t\t\t\tprop.ReferenceTo = property.ReferenceTo;\r\n\t\t\t\tprop.ReferenceFilter = property.ReferenceFilter;\r\n\t\t\t}\r\n\r\n\t\t\ttypes[property.Name] = prop;\r\n\t\t});\r\n\r\n\t\tconst groupInput = function (group) {\r\n\t\t\tif (typeof group !== 'object' || group === null) {\r\n\t\t\t\treturn {};\r\n\t\t\t}\r\n\r\n\t\t\tconst inputGroup = {\r\n\t\t\t\tGroups: Array.isArray(group.Groups) ? group.Groups.map(groupInput) : [],\r\n\t\t\t\tConditions: Array.isArray(group.Conditions) ? group.Conditions.map(conditionInput) : [],\r\n\t\t\t};\r\n\r\n\t\t\tinputGroup.Groups.concat(inputGroup.Conditions).forEach(function (child) {\r\n\t\t\t\tchild.LogicOperator = group.LogicalOperator;\r\n\t\t\t});\r\n\t\t\treturn inputGroup;\r\n\t\t};\r\n\r\n\t\tconst conditionInput = (condition) => {\r\n\t\t\tif (typeof condition !== 'object' || condition === null) {\r\n\t\t\t\treturn {};\r\n\t\t\t}\r\n\t\t\tconst mappedCondition = {\r\n\t\t\t\tName: condition.Name,\r\n\t\t\t\tConditionType: types[condition.Name]?.ConditionType,\r\n\t\t\t\tOperator: condition.Operator,\r\n\t\t\t\tOperators: types[condition.Name]?.Operators,\r\n\t\t\t\tValue: condition.Value,\r\n\t\t\t};\r\n\r\n\t\t\tif (mappedCondition.ConditionType === this.ConditionTypes.EnumerationReference) {\r\n\t\t\t\tmappedCondition.ReferenceTo = types[condition.Name].ReferenceTo;\r\n\t\t\t\tmappedCondition.ReferenceFilter = types[condition.Name].ReferenceFilter;\r\n\t\t\t\tmappedCondition.EnumLoader = this.localEnumLoader;\r\n\t\t\t}\r\n\t\t\treturn mappedCondition;\r\n\t\t};\r\n\r\n\t\treturn groupInput;\r\n\t}\r\n\r\n\t/*private*/\r\n\tbuilderOutput(builder) {\r\n\t\treturn this.groupOutput(builder, true);\r\n\t}\r\n\r\n\t/*private*/\r\n\tgroupOutput(group, isBuilder) {\r\n\t\tconst conditions = group.conditions.map((condition) => condition.output);\r\n\t\tconst groups = group.groups.filter((group) => typeof group.output.LogicalOperator !== 'undefined');\r\n\t\tlet logicalOperator;\r\n\t\tif (group.conditions.length) {\r\n\t\t\tlogicalOperator = group.conditions[0].logicOperator;\r\n\t\t} else if (groups.length) {\r\n\t\t\tlogicalOperator = groups[0].logicOperator;\r\n\t\t}\r\n\t\tconst output = typeof logicalOperator === 'undefined' ? {} : { Conditions: conditions, Groups: groups.map((group) => group.output), LogicalOperator: logicalOperator };\r\n\t\treturn isBuilder ? JSON.stringify(output) : output;\r\n\t}\r\n\r\n\t/*private*/\r\n\tconditionOutput(condition) {\r\n\t\treturn {\r\n\t\t\tName: condition.name,\r\n\t\t\tValue: condition.value,\r\n\t\t\tOperator: condition.operatorValue,\r\n\t\t};\r\n\t}\r\n}\r\n\r\nangular.module('mx.SolutionBuilderAgent').service('mx.SolutionBuilderAgent.AzureAdConditionsService', AzureAdConditionsService);\r\n","'use strict';\r\n\r\nconst DataSetRowIdentity = {\r\n\tequal: rowsAreEqual,\r\n\tuniqBy: rowUniqueBy,\r\n\tid: rowIdentifierProperty,\r\n};\r\n\r\nfunction rowsAreEqual(rowA, rowB) {\r\n\tvar idProperty = rowIdentifierProperty(rowA);\r\n\treturn rowA && rowB && ((idProperty && rowA[idProperty] === rowB[idProperty]) || rowA === rowB);\r\n}\r\n\r\nfunction rowUniqueBy(row) {\r\n\tvar idProperty = rowIdentifierProperty(row);\r\n\treturn row && ((idProperty && row[idProperty]) || row);\r\n}\r\n\r\nfunction rowIdentifierProperty(row) {\r\n\treturn row && typeof row._id !== 'undefined' && '_id';\r\n}\r\n\r\nexport default DataSetRowIdentity;\r\n","'use strict';\r\nimport DataSetRowIdentity from '../../../services/dataset-row-identity';\r\n\r\n/** *\r\n * This `MxDataQueryList` can be used for getting data with all preprocessors (paging, sorting, filtering).\r\n *\r\n * How to use it:\r\n *\r\n * Basic example: In this case you'll get basic preprocessors like:\r\n * - mx.SolutionBuilderAgent.SortingPreprocessor\r\n * - mx.SolutionBuilderAgent.PagingPreprocessor\r\n * - mx.SolutionBuilderAgent.SearchPreprocessor\r\n *\r\n * Let's create an example controller `MyController`.\r\n *\r\n * MyController.$inject = ['$injector', '$scope'];\r\n * MyController.prototype = Object.create(DataQueryList.prototype);\r\n * function MyController($injector, $scope) {\r\n *\t\t\tvar vm = this;\r\n *\t\t\tvm.type = mx.SolutionBuilderAgent.ListingType.list; // For example for List\r\n *\t\t\tthis.initialize($injector, $scope); // init\r\n *\t\t\tvm.load(); // This method should be called just ones. If you need to refresh data use `vm.reload();`\r\n *\r\n *\t\t\t// You'll get data in `vm.data` which you can use in templates.\r\n *\t\t}\r\n *\r\n *\r\n * If you need to create/use not basic preprocessor (e.g. DateRange for calendar). You can do it like this:\r\n *\r\n * Let's create an example controller `MyNotBasicController`.\r\n *\r\n * MyNotBasicController.$inject = ['$injector', '$scope'];\r\n * MyNotBasicController.prototype = Object.create(DataQueryList.prototype);\r\n * function MyNotBasicController($injector, $scope) {\r\n *\t\t\tvar vm = this;\r\n *\t\t\tvm.type = mx.SolutionBuilderAgent.ListingType.calendar;\r\n *\t\t\tvm.preInitialize($injector, $scope);\t// here we use `preInitialize()` instead of `initialize()`\r\n *\t\t\t\t\t\t\t\t\t \t\t\t\t// so we can define preprocessors on our own instead of basics.\r\n *\t\t\t// Init our own preprocessors instead of basics\r\n *\t\t\t vm.initPreprocessors([\r\n *\t\t\t\t mx.SolutionBuilderAgent.DateRangePreprocessor,\r\n *\t\t\t\t mx.SolutionBuilderAgent.SearchPreprocessor\r\n *\t\t\t ]);\r\n *\t\t\tvm.load(); // This method should be called just ones. If you need to refresh data use `vm.reload();`\r\n *\r\n *\t\t\t// You'll get data in `vm.data` which you can use in templates.\r\n *\t\t}\r\n *\r\n **/\r\nexport default function MxDataQueryList() {}\r\n\r\nlet eventService;\r\nlet injector;\r\nlet _allSelectedState;\r\n\r\nMxDataQueryList.prototype = {\r\n\tget wholeDatasetSelected() {\r\n\t\treturn this.pagingPreprocessor.count !== -1 && this.contextService.selectedObjects.length === this.pagingPreprocessor.count;\r\n\t},\r\n\r\n\tget allSelectedState() {\r\n\t\treturn _allSelectedState;\r\n\t},\r\n\tset allSelectedState(newValue) {\r\n\t\t_allSelectedState = newValue;\r\n\t\tif (!newValue) {\r\n\t\t\tthis.clearSelection();\r\n\t\t}\r\n\t},\r\n};\r\n\r\nMxDataQueryList.prototype.initPreprocessors = function (preprocessors) {\r\n\tconst that = this;\r\n\tconst DataQueryExecutor = injector.get('mx.SolutionBuilderAgent.DataQueryExecutor');\r\n\tconst ODataQueryExecutor = injector.get('mx.SolutionBuilderAgent.ODataQueryExecutor');\r\n\tconst ClientQueryExecutor = injector.get('mx.SolutionBuilderAgent.ClientQueryExecutor');\r\n\r\n\tthat.preprocessors = [];\r\n\tthat.preprocessorsByName = {};\r\n\tconst serviceInfo = that.parameters.dataQuery.ServiceInfo;\r\n\tthat.parameters.dataQueryList = that;\r\n\r\n\tif (!serviceInfo) {\r\n\t\tthat.dataQueryExecutor = new DataQueryExecutor();\r\n\t} else if (serviceInfo.SupportedOperationTypes & 4 /* Supported odata operation*/) {\r\n\t\tthat.dataQueryExecutor = new ODataQueryExecutor();\r\n\t} else if (serviceInfo.SupportedOperationTypes & 2 /* Supported list operation*/) {\r\n\t\tthat.dataQueryExecutor = new ClientQueryExecutor();\r\n\t}\r\n\r\n\tconst executorPreprocessors = that.dataQueryExecutor.init(that.type, that.parameters);\r\n\tconst types = that.parameters.isMultiFragment ? [] : that.dataQueryExecutor.getTypes();\r\n\r\n\t//Init actions\r\n\tthis.contextService.val('SolutionBuilderAgent.ObjectTypes', types);\r\n\tthis.contextService.actionsContext = new mx.shell.ActionsContext(\r\n\t\ttypes,\r\n\t\tthis.contextService.actionsContext ? this.contextService.actionsContext.extraActions : [],\r\n\t\tmx.shell.ActionUiZone.SearchPage,\r\n\t\tthat.parameters.isMultiFragment\r\n\t);\r\n\r\n\tpreprocessors = preprocessors || [];\r\n\tpreprocessors = preprocessors.concat(executorPreprocessors);\r\n\r\n\tpreprocessors.forEach((Preprocessor) => {\r\n\t\tconst preprocessor = new Preprocessor();\r\n\r\n\t\tswitch (preprocessor.type) {\r\n\t\t\tcase mx.SolutionBuilderAgent.PreprocessorType.Sorting:\r\n\t\t\t\tthat.sortingPreprocessor = preprocessor;\r\n\t\t\t\tif (preprocessor instanceof injector.get('mx.SolutionBuilderAgent.SortingPreprocessor')) {\r\n\t\t\t\t\tthat.preprocessorsByName.sortingPreprocessor = preprocessor;\r\n\t\t\t\t} else if (preprocessor instanceof injector.get('mx.SolutionBuilderAgent.SortingGridPreprocessor')) {\r\n\t\t\t\t\tthat.preprocessorsByName.sortingGridPreprocessor = preprocessor;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase mx.SolutionBuilderAgent.PreprocessorType.QuickFilter:\r\n\t\t\t\tthat.quickFilterPreprocessor = preprocessor;\r\n\t\t\t\tthat.preprocessorsByName.quickFilterPreprocessor = preprocessor;\r\n\t\t\t\tbreak;\r\n\t\t\tcase mx.SolutionBuilderAgent.PreprocessorType.Paging:\r\n\t\t\t\tthat.pagingPreprocessor = preprocessor;\r\n\t\t\t\tthat.pagingPreprocessor.getDataCount = function () {\r\n\t\t\t\t\treturn that.getDataCount().then(function (c) {\r\n\t\t\t\t\t\tpreprocessor.count = c;\r\n\t\t\t\t\t\tthat.parameters.totalCount = c;\r\n\t\t\t\t\t\treturn c;\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\t\t\t\tthat.preprocessorsByName.pagingPreprocessor = preprocessor;\r\n\t\t\t\tbreak;\r\n\t\t\tcase mx.SolutionBuilderAgent.PreprocessorType.Search:\r\n\t\t\t\tthat.searchPreprocessor = preprocessor;\r\n\t\t\t\tthat.preprocessorsByName.searchPreprocessor = preprocessor;\r\n\t\t\t\tbreak;\r\n\t\t\tcase mx.SolutionBuilderAgent.PreprocessorType.Structure:\r\n\t\t\t\tthat.structurePreprocessor = preprocessor;\r\n\t\t\t\tthat.preprocessorsByName.structurePreprocessor = preprocessor;\r\n\t\t\t\tbreak;\r\n\t\t\tcase mx.SolutionBuilderAgent.PreprocessorType.ColumnDefinition:\r\n\t\t\t\tthat.columnDefinitionPreprocessor = preprocessor;\r\n\t\t\t\tthat.preprocessorsByName.columnDefinitionPreprocessor = preprocessor;\r\n\t\t\t\tbreak;\r\n\t\t\tcase mx.SolutionBuilderAgent.PreprocessorType.Grouping:\r\n\t\t\t\tthat.groupingPreprocessor = preprocessor;\r\n\t\t\t\tthat.preprocessorsByName.groupingPreprocessor = preprocessor;\r\n\t\t\t\tbreak;\r\n\t\t\tcase mx.SolutionBuilderAgent.PreprocessorType.DateRange:\r\n\t\t\t\tthat.dateRangePreprocessor = preprocessor;\r\n\t\t\t\tthat.preprocessorsByName.dateRangePreprocessor = preprocessor;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tpreprocessor.init(that.dataQueryExecutor, that.parameters, that);\r\n\r\n\t\tthat.preprocessors.push(preprocessor);\r\n\t});\r\n};\r\n\r\nMxDataQueryList.prototype.load = async function () {\r\n\tconst that = this;\r\n\tthat.loading = true;\r\n\r\n\tthat.dataModel = that.parameters.dataModel;\r\n\tthat.columns = that.parameters.dataQuery.Columns || [];\r\n\r\n\tawait Promise.all(that.preprocessors.map((preprocessor) => preprocessor.load(that.parameters.id, that.parameters.dataQueryId, that.parameters)));\r\n\tthat.addChangedHandlers();\r\n\tif (!that.lastDebouncedReloadTime) {\r\n\t\treturn await that.reload();\r\n\t}\r\n};\r\n\r\nMxDataQueryList.prototype.preInitialize = function ($injector, $scope) {\r\n\tconst that = this;\r\n\r\n\tinjector = $injector;\r\n\r\n\tthis.dataModelService = $injector.get('mx.SolutionBuilderAgent.DataModelService');\r\n\tthis.extensions = JSON.parse(this.parameters.dataModelOptions || '{}');\r\n\tthis.contextService = $injector.get('mx.shell.ContextService');\r\n\tthis.actionExecutorService = $injector.get('mx.shell.ActionExecutorService');\r\n\tthis.sidePanelActionsService = $injector.get('mx.shell.SidePanelActionsService');\r\n\tthis.dialogOpenerService = $injector.get('mx.SolutionBuilderAgent.DialogOpenerService');\r\n\tthis.personalizationService = $injector.get('mx.SolutionBuilderAgent.PersonalizationService');\r\n\r\n\teventService = $injector.get('mx.shell.EventService');\r\n\teventService.subscribeTo(\r\n\t\tmx.shell.EventCodes.Search,\r\n\t\tfunction (event, searchOptions) {\r\n\t\t\tconst searchPageUiToken = that.contextService.val('globalUiToken');\r\n\r\n\t\t\tif (searchOptions.dataQueryList !== that) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (searchOptions) {\r\n\t\t\t\tif (searchOptions.globalSearch && !searchOptions.uiToken) {\r\n\t\t\t\t\tsearchOptions.uiToken = searchPageUiToken;\r\n\t\t\t\t\tconst searchProviderService = $injector.get('mx.shell.SearchProviderService');\r\n\r\n\t\t\t\t\tsearchProviderService.uiToken = searchPageUiToken;\r\n\t\t\t\t}\r\n\t\t\t\tif (searchOptions.uiToken === searchPageUiToken) {\r\n\t\t\t\t\tthat.searchPreprocessor.callChanged();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthat.searchPreprocessor.callChanged();\r\n\t\t\t}\r\n\t\t},\r\n\t\t$scope\r\n\t);\r\n\r\n\teventService.subscribeTo(\r\n\t\tmx.SolutionBuilderAgent.Events.SearchPageDataChanged,\r\n\t\tfunction (ev, eventParams) {\r\n\t\t\tif ((eventParams || {}).affectedEntity) {\r\n\t\t\t\tthat.highlightItem = eventParams.affectedEntity;\r\n\t\t\t}\r\n\r\n\t\t\tthat.clearSelection();\r\n\t\t},\r\n\t\t$scope\r\n\t);\r\n\r\n\tthat.loading = true;\r\n\r\n\tconst _debouncedReload = $.debounce(50, function () {\r\n\t\tif (that.lastDebouncedReloadTime > that.lastReloadTime) {\r\n\t\t\t// if reload was executed directly during debounce period then do not execute reload\r\n\t\t\tthat.reload.apply(that, arguments);\r\n\t\t}\r\n\t});\r\n\r\n\tthat.debouncedReload = function () {\r\n\t\tthat.lastDebouncedReloadTime = Date.now();\r\n\t\t_debouncedReload.apply(that, arguments);\r\n\t};\r\n};\r\n\r\nMxDataQueryList.prototype.initialize = function ($injector, $scope, customPreprocessors) {\r\n\tconst that = this;\r\n\r\n\tthat.preInitialize($injector, $scope);\r\n\r\n\tthat.initPreprocessors(\r\n\t\tcustomPreprocessors || [\r\n\t\t\tinjector.get('mx.SolutionBuilderAgent.SortingPreprocessor'),\r\n\t\t\tinjector.get('mx.SolutionBuilderAgent.PagingPreprocessor'),\r\n\t\t\tinjector.get('mx.SolutionBuilderAgent.SearchPreprocessor'),\r\n\t\t\tinjector.get('mx.SolutionBuilderAgent.StructurePreprocessor'),\r\n\t\t\tinjector.get('mx.SolutionBuilderAgent.GroupingPreprocessor'),\r\n\t\t\tinjector.get('mx.SolutionBuilderAgent.QuickFilterPreprocessor'),\r\n\t\t]\r\n\t);\r\n};\r\n\r\nMxDataQueryList.prototype.addChangedHandlers = function () {\r\n\tconst that = this;\r\n\r\n\tthat.preprocessors.forEach(function (preprocessor) {\r\n\t\tpreprocessor.addChangedHandler(function () {\r\n\t\t\tif (\r\n\t\t\t\t(preprocessor.type === mx.SolutionBuilderAgent.PreprocessorType.QuickFilter ||\r\n\t\t\t\t\tpreprocessor.type === mx.SolutionBuilderAgent.PreprocessorType.Sorting ||\r\n\t\t\t\t\tpreprocessor.type === mx.SolutionBuilderAgent.PreprocessorType.Grouping ||\r\n\t\t\t\t\tpreprocessor.type === mx.SolutionBuilderAgent.PreprocessorType.Search) &&\r\n\t\t\t\tthat.pagingPreprocessor\r\n\t\t\t) {\r\n\t\t\t\tthat.pagingPreprocessor.clear();\r\n\t\t\t}\r\n\r\n\t\t\tif (preprocessor.type === mx.SolutionBuilderAgent.PreprocessorType.QuickFilter) {\r\n\t\t\t\tthat.parameters.quickFilters = preprocessor.filters;\r\n\t\t\t}\r\n\r\n\t\t\tthat.parameters.data = undefined;\r\n\r\n\t\t\tthat.debouncedReload(true);\r\n\t\t});\r\n\t});\r\n};\r\n\r\nMxDataQueryList.prototype.setData = function (data) {\r\n\tconst self = this;\r\n\tself.dataModelService.extendSourceResult(self.dataModel, 'DataQuery.return', self.dataModel.DataQuery, 'return', data);\r\n\tself.data = self.dataModel.DataQuery.return;\r\n};\r\n\r\nMxDataQueryList.prototype.reload = async function (dontClearSelection) {\r\n\tconst that = this;\r\n\r\n\tif (that._destroyed) {\r\n\t\treturn that.parameters.data;\r\n\t}\r\n\tconst eventService = injector.get('mx.shell.EventService');\r\n\tconst $q = injector.get('$q');\r\n\r\n\tthat.loading = true;\r\n\tthat.lastReloadTime = Date.now();\r\n\tconst currentReloadTime = that.lastReloadTime; // save last ReloadTime in the scope for cases when several requests are executed. In this case only the latest execution will be finished\r\n\r\n\tconst currentSearch = injector.get('mx.shell.SearchProviderService').currentSearch();\r\n\tObject.defineProperty(currentSearch, 'dataQueryList', { writable: true, enumerable: false, value: that });\r\n\r\n\ttry {\r\n\t\tif (that.parameters.data) {\r\n\t\t\t// This block was done to avoid useless reloading from server.\r\n\r\n\t\t\tthat.setData(that.parameters.data);\r\n\r\n\t\t\tthat.preprocessors.forEach(function (preprocessor) {\r\n\t\t\t\tpreprocessor.process(that.data, that.parameters.totalCount);\r\n\t\t\t});\r\n\r\n\t\t\tif (!Array.isArray(that.parameters.data) || that.parameters.data.length === 0) {\r\n\t\t\t\tthat.noFilteredData = that._hasSearchFilters();\r\n\t\t\t} else {\r\n\t\t\t\tthat.noFilteredData = false;\r\n\t\t\t}\r\n\r\n\t\t\tthat.loading = false;\r\n\t\t\treturn $q.when(that.parameters.data);\r\n\t\t}\r\n\r\n\t\tif (!dontClearSelection) {\r\n\t\t\tthat.clearSelection();\r\n\t\t}\r\n\r\n\t\t// TODO: tmp implementation for $inactive\r\n\t\tconst inactive = that.dataModel.DataQuery[mx.SolutionBuilderAgent.DataModelSystemProperty.Inactive] === true;\r\n\r\n\t\tif (inactive) {\r\n\t\t\tthat.loading = false;\r\n\t\t\treturn $q.when(that.parameters.data);\r\n\t\t}\r\n\r\n\t\tconst parts = await that._getParts();\r\n\t\tconst result = await that.dataQueryExecutor.run(parts);\r\n\r\n\t\tif (currentReloadTime !== that.lastReloadTime) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthat.parameters.data = result.data;\r\n\t\tthat.parameters.totalCount = result.totalCount;\r\n\r\n\t\tawait Promise.all(that.preprocessors.map((preprocessor) => preprocessor.process(result.data, result.totalCount)));\r\n\r\n\t\tif (result && Array.isArray(result.data)) {\r\n\t\t\tresult.data.forEach(function (item) {\r\n\t\t\t\tObject.defineProperty(item, mx.SolutionBuilderAgent.DataModelSystemProperty.Item, {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn this;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function () {},\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthat.setData(result.data);\r\n\r\n\t\tif (dontClearSelection) {\r\n\t\t\tif (Array.isArray(that.contextService.selectedObjects)) {\r\n\t\t\t\t(that.data || []).forEach(function (newItem) {\r\n\t\t\t\t\tthat.contextService.selectedObjects.some((oldItem, key) => {\r\n\t\t\t\t\t\tif (DataSetRowIdentity.equal(newItem, oldItem)) {\r\n\t\t\t\t\t\t\tnewItem.__isSelected = true;\r\n\t\t\t\t\t\t\tthat.contextService.selectedObjects[key] = newItem;\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthat.clearSelection();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (result && (!Array.isArray(result.data) || result.data.length === 0)) {\r\n\t\t\tthat.noFilteredData = that._hasSearchFilters();\r\n\t\t} else {\r\n\t\t\tthat.noFilteredData = false;\r\n\t\t}\r\n\r\n\t\tif (!this._destroyed) {\r\n\t\t\tthat.contextService.val('SolutionBuilderAgent.DataSetView.Data', that.data);\r\n\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.SearchPageReloaded, { dataQueryList: that });\r\n\t\t}\r\n\t} catch (e) {\r\n\t\tmx.logCatch(e);\r\n\t}\r\n\r\n\tthat.loading = false;\r\n\treturn $q.when(that.parameters.data);\r\n};\r\n\r\nMxDataQueryList.prototype.$onDestroy = function () {\r\n\tthis._destroyed = true;\r\n};\r\n\r\nMxDataQueryList.prototype._hasSearchFilters = function () {\r\n\tconst searchService = injector.get('mx.shell.SearchProviderService');\r\n\tconst currentSearch = searchService.currentSearch() || {};\r\n\tconst { conditions } = currentSearch.searchForm;\r\n\treturn currentSearch.keyword || conditions?.length || hasAdditionalFilters(searchService, currentSearch) || this.quickFilterPreprocessor?.color;\r\n};\r\n\r\nfunction hasAdditionalFilters(searchService, currentSearch) {\r\n\tconst currentContext = searchService.currentContext();\r\n\tif (!currentContext) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tconst baseFilter = searchService.getBaseQueryId(currentContext.parameters);\r\n\tconst hasBaseFilter = (currentSearch.filters || []).indexOf(baseFilter) >= 0;\r\n\treturn ((currentSearch.filters || []).length - hasBaseFilter ? 1 : 0) > 0;\r\n}\r\n\r\nMxDataQueryList.prototype._getParts = async function (preprocessorFilterFunc) {\r\n\tconst $q = injector.get('$q');\r\n\tconst parts = [];\r\n\r\n\tlet filteredPreprocessors = this.preprocessors;\r\n\tif (preprocessorFilterFunc && typeof preprocessorFilterFunc === 'function') {\r\n\t\tfilteredPreprocessors = filteredPreprocessors.filter((preprocessor) => preprocessorFilterFunc(preprocessor));\r\n\t}\r\n\r\n\tfor (const preprocessor of filteredPreprocessors) {\r\n\t\tconst part = await preprocessor.build(this.parameters);\r\n\t\tif (part) {\r\n\t\t\tparts.push(part);\r\n\t\t}\r\n\t}\r\n\r\n\treturn $q.when(parts);\r\n};\r\n\r\nMxDataQueryList.prototype.getDataCount = function () {\r\n\tconst that = this;\r\n\r\n\treturn that._getParts().then(function (parts) {\r\n\t\treturn that.dataQueryExecutor.getDataCount(parts, that.parameters.id, that.parameters.dataQueryId);\r\n\t});\r\n};\r\n\r\nMxDataQueryList.prototype.clearSelection = function () {\r\n\tthis.contextService.selectedObjects.forEach(function (item) {\r\n\t\titem.__isSelected = false;\r\n\t});\r\n\tthis.contextService.selectedObjects = [];\r\n\tif (_allSelectedState) {\r\n\t\t_allSelectedState = false;\r\n\t}\r\n};\r\n\r\nMxDataQueryList.prototype.selectionChanged = function (currentPageSelectedItems) {\r\n\tconst self = this;\r\n\tconst rowIdentity = DataSetRowIdentity;\r\n\r\n\tif (!self.pagingPreprocessor) {\r\n\t\tself.contextService.selectedObjects = currentPageSelectedItems;\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst selectedObjects = self.contextService.selectedObjects;\r\n\r\n\tconst newSelectedItems = _.uniqBy(currentPageSelectedItems, rowIdentity.uniqBy).filter(function (item) {\r\n\t\treturn !_.find(selectedObjects, function (sItem) {\r\n\t\t\treturn rowIdentity.equal(sItem, item);\r\n\t\t});\r\n\t});\r\n\r\n\tif (newSelectedItems.length) {\r\n\t\tselectedObjects.splice.apply(selectedObjects, [selectedObjects.length, 0].concat(newSelectedItems));\r\n\t}\r\n\r\n\tself.contextService.selectedObjects = _.filter(selectedObjects, '__isSelected');\r\n};\r\n\r\nMxDataQueryList.prototype.itemRightClickHandler = function (item) {\r\n\tconst self = this;\r\n\tif (self.parameters.isMultiFragment) {\r\n\t\treturn injector.get('$q').when([]);\r\n\t}\r\n\tlet selectedObjects = item ? [].concat(item) : this.contextService.selectedObjects;\r\n\tif (this.contextService.selectedObjects.length > 1) {\r\n\t\t// mean multi select and we should skip item\r\n\t\tselectedObjects = this.contextService.selectedObjects;\r\n\t}\r\n\r\n\tif (!selectedObjects.length) {\r\n\t\treturn injector.get('$q').when([]);\r\n\t}\r\n\r\n\treturn this.sidePanelActionsService.calculateCommonActions(selectedObjects).then(function (actions) {\r\n\t\treturn actions.map(function (action) {\r\n\t\t\treturn {\r\n\t\t\t\ticon: action.icon,\r\n\t\t\t\tlabel: action.title,\r\n\t\t\t\tonItemClick: function () {\r\n\t\t\t\t\tif (selectedObjects.length === 1 && action.view && !action.view.isWizard) {\r\n\t\t\t\t\t\taction.view.displayName = selectedObjects[0]['Sys-DisplayName'] || selectedObjects[0]._displayName;\r\n\t\t\t\t\t\taction.view.name = selectedObjects[0].Name || selectedObjects[0]._name;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\taction.useSameView = false;\r\n\t\t\t\t\tself.actionExecutorService.execute(action, selectedObjects).catch(mx.logCatch);\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t});\r\n\t});\r\n};\r\n\r\nMxDataQueryList.prototype.itemDblClickHandler = function (entity) {\r\n\tif (entity) {\r\n\t\tconst self = this;\r\n\t\tthis.sidePanelActionsService.calculateCommonActions([entity]).then(function (actions) {\r\n\t\t\tconst actionToRun = actions.find(function (a) {\r\n\t\t\t\treturn a.name.indexOf('ActionEdit') > -1 || a.name === 'AdvancedDetails';\r\n\t\t\t});\r\n\t\t\tif (actionToRun) {\r\n\t\t\t\tself.actionExecutorService.execute(actionToRun, [entity]).catch(mx.logCatch);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n};\r\n\r\nMxDataQueryList.prototype.itemClickHandler = async function (item) {\r\n\tconst that = this;\r\n\r\n\tconst view = await that.dialogOpenerService.openPreview(item, {\r\n\t\tselectedObjects: [item],\r\n\t\tnavigationId: that.parameters.dataModel.Context.NavigationId,\r\n\t\tsearchPageWidgetId: that.parameters.id,\r\n\t\thideActions: that.parameters.isMultiFragment,\r\n\t});\r\n\r\n\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.DataQueryListItemClicked, item);\r\n\tif (view) {\r\n\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.TrackViewTelemetry, { eventName: `Search Page: item clicked`, view });\r\n\t}\r\n};\r\n\r\nMxDataQueryList.prototype._selectEntireDatasetProgressHandler = function (e) {\r\n\tif (e && e.lengthComputable) {\r\n\t\tthis.contextService.selectedObjectsLoadingProgress = parseInt((e.loaded / e.total) * 100, 10);\r\n\t}\r\n};\r\n\r\nMxDataQueryList.prototype.selectEntireDataset = async function () {\r\n\tthis.contextService.selectedObjectsLoading = true;\r\n\tthis.contextService.selectedObjectsLoadingProgress = 0;\r\n\r\n\tif (this.dataModel.DataQuery[mx.SolutionBuilderAgent.DataModelSystemProperty.Inactive] === true) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst parts = await this._getParts((preprocessor) => preprocessor.type !== 'paging');\r\n\r\n\tconst result = await this.dataQueryExecutor.run(parts, this._selectEntireDatasetProgressHandler.bind(this));\r\n\r\n\tconst objects = result.data.map((object) => {\r\n\t\tif (this.parameters.data) {\r\n\t\t\tconst objectsFromParams = this.parameters.data.filter((paramObject) => paramObject._id === object._id);\r\n\t\t\tobject = objectsFromParams[0] || object;\r\n\t\t}\r\n\t\tobject.__isSelected = true;\r\n\t\treturn object;\r\n\t});\r\n\r\n\tconst newObjects = objects.filter((object) => !this.contextService.selectedObjects.some((selObject) => DataSetRowIdentity.equal(selObject, object)));\r\n\r\n\tthis.contextService.selectedObjects = this.contextService.selectedObjects.concat(newObjects);\r\n\tthis.contextService.selectedObjectsLoadingProgress = 100;\r\n\tthis.contextService.selectedObjectsLoading = false;\r\n\treturn injector.get('$q').when();\r\n};\r\n","'use strict';\r\nimport DataQueryList from './mx-data-query-list.js';\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxContentWidgetViewBoard', {\r\n\ttransclude: true,\r\n\tbindings: {\r\n\t\tparameters: '<',\r\n\t\t// tilesConfig: '<',\r\n\t\toutputPreprocessors: '<',\r\n\t},\r\n\tcontroller: MxContentWidgetViewBoardCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-board.html',\r\n});\r\n\r\nMxContentWidgetViewBoardCtrl.$inject = [\r\n\t'$q',\r\n\t'$injector',\r\n\t'$scope',\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n\t'mx.SolutionBuilderAgent.EntityService',\r\n\t'mx.SolutionBuilderAgent.PagingPreprocessor',\r\n\t'mx.SolutionBuilderAgent.SearchPreprocessor',\r\n\t'mx.SolutionBuilderAgent.SortingPreprocessor',\r\n\t'mx.SolutionBuilderAgent.QuickFilterPreprocessor',\r\n\t'mx.SolutionBuilderAgent.ColumnDefinitionPreprocessor',\r\n\t'mx.SolutionBuilderAgent.GroupingPreprocessor',\r\n];\r\nMxContentWidgetViewBoardCtrl.prototype = Object.create(DataQueryList.prototype);\r\n\r\nfunction MxContentWidgetViewBoardCtrl(\r\n\t$q,\r\n\t$injector,\r\n\t$scope,\r\n\tpersonalizationService,\r\n\tentityService,\r\n\tPagingPreprocessor,\r\n\tSearchPreprocessor,\r\n\tSortingPreprocessor,\r\n\tQuickFilterPreprocessor,\r\n\tColumnDefinitionPreprocessor,\r\n\tGroupingPreprocessor\r\n) {\r\n\tvar vm = this;\r\n\tvar horizontalGroupingField,\r\n\t\thorizontalGroupingFieldExpression,\r\n\t\thorizontalGroupingValues = [];\r\n\tvar useCustomTile = false;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvm.type = mx.SolutionBuilderAgent.ListingType.board;\r\n\t\t// vm.pageSizes = [20];\r\n\t\tvm.preInitialize($injector, $scope);\r\n\t\tvm.initPreprocessors([PagingPreprocessor, SearchPreprocessor, SortingPreprocessor, QuickFilterPreprocessor, ColumnDefinitionPreprocessor, GroupingPreprocessor]);\r\n\t\tif (typeof vm.outputPreprocessors === 'object') {\r\n\t\t\tangular.extend(vm.outputPreprocessors, vm.preprocessorsByName);\r\n\t\t}\r\n\r\n\t\tvm.itemTitlePropertyName = 'Sys-DisplayName';\r\n\r\n\t\tvm.parameters.board.groupingIsAvailable = vm.dataQueryExecutor.supportsGrouping();\r\n\t\tif (!vm.parameters.board.groupingIsAvailable) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvm.load().then(initBoard);\r\n\t};\r\n\r\n\tfunction initBoard() {\r\n\t\tinitAvailableFields(); // init configuration for \"fields which are available for grouping in board, can be used as horizontal (or vertical in future) grouping and changed in settings panel\"\r\n\t\tinitHorizontalGroupingFieldAndValues(); // init configuration for for field which is used now for horizontal grouping, all possible values of this field automatically loaded and shown in settings panel\r\n\t\tinitCustomTileAndVisibleFieldsInTile(); // init configuration for fields which are set from settings panel and shown in dynamic tile\r\n\r\n\t\treturn loadPersonalization().then(function () {\r\n\t\t\tvm.tileTemplate = createTemplate();\r\n\t\t});\r\n\t}\r\n\r\n\tvm.onItemChanged = onItemChanged;\r\n\r\n\tvm.$postLink = function () {};\r\n\r\n\tvm.$onDestroy = function () {\r\n\t\tDataQueryList.prototype.$onDestroy.call(this);\r\n\t\tdelete vm.parameters.board.horizontalGroupingField;\r\n\t\tdelete vm.parameters.board.availableFields;\r\n\t\tdelete vm.parameters.board.visibleFieldsInTile;\r\n\t\tdelete vm.parameters.board.horizontalGroupingValues;\r\n\t\tdelete vm.parameters.board.useCustomTile;\r\n\t};\r\n\r\n\treturn vm;\r\n\r\n\tfunction loadPersonalization() {\r\n\t\treturn $q\r\n\t\t\t.all([\r\n\t\t\t\tpersonalizationService.getBoardHorizontalGroupingField(vm.parameters.id),\r\n\t\t\t\tpersonalizationService.getBoardVisibleFields(vm.parameters.id),\r\n\t\t\t\tpersonalizationService.getBoardUseCustomTile(vm.parameters.id),\r\n\t\t\t\t// personalizationService.getBoardHorizontalGroupingField(vm.parameters.id)\r\n\t\t\t])\r\n\t\t\t.then(function (personalization) {\r\n\t\t\t\tvm.parameters.board.horizontalGroupingField = personalization[0] || vm.parameters.board.defaultHorizontalGroupingField;\r\n\r\n\t\t\t\tangular.extend(vm.visibleFields, personalization[1]);\r\n\t\t\t\tvm.parameters.board.visibleFieldsInTile.forEach(function (field) {\r\n\t\t\t\t\tfield._visible = vm.visibleFields[field.value];\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvm.parameters.board.useCustomTile = personalization[2];\r\n\t\t\t});\r\n\t}\r\n\r\n\tfunction initAvailableFields() {\r\n\t\tvar availableFields = vm.columnDefinitionPreprocessor.allColumns\r\n\t\t\t.filter(function (column) {\r\n\t\t\t\treturn column.GroupingIsAvailable && column.IsDisplay && column.ReferenceTo && column.AttributeValueType === mx.shell.ObjectPropertyType.Integer.name; //temporary only for enums\r\n\t\t\t})\r\n\t\t\t.map(function (column) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttitle: column.Title || column.Name,\r\n\t\t\t\t\tvalue: column.Name,\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\tObject.defineProperty(vm.parameters.board, 'availableFields', {\r\n\t\t\tconfigurable: true,\r\n\t\t\tget: function () {\r\n\t\t\t\treturn availableFields;\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction initCustomTileAndVisibleFieldsInTile() {\r\n\t\tObject.defineProperty(vm.parameters.board, 'useCustomTile', {\r\n\t\t\tconfigurable: true,\r\n\t\t\tget: function () {\r\n\t\t\t\treturn useCustomTile;\r\n\t\t\t},\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tif (useCustomTile !== newValue) {\r\n\t\t\t\t\tuseCustomTile = newValue;\r\n\t\t\t\t\tpersonalizationService.saveBoardUseCustomTile(useCustomTile, vm.parameters.id);\r\n\t\t\t\t\tupdateTemplate();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tvm.visibleFields = {};\r\n\t\tvar visibleFieldsInTile = vm.columnDefinitionPreprocessor.allColumns\r\n\t\t\t.filter(function (column) {\r\n\t\t\t\treturn column.IsDisplay === true;\r\n\t\t\t})\r\n\t\t\t.map(function (column) {\r\n\t\t\t\tvar col = {\r\n\t\t\t\t\ttitle: column.Title || column.Name,\r\n\t\t\t\t\tvalue: column.Name,\r\n\t\t\t\t\t_visible: false,\r\n\t\t\t\t};\r\n\t\t\t\tObject.defineProperty(col, 'visible', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn this._visible;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (newValue !== this._visible) {\r\n\t\t\t\t\t\t\tthis._visible = newValue;\r\n\t\t\t\t\t\t\tvm.visibleFields[this.value] = newValue;\r\n\t\t\t\t\t\t\tpersonalizationService.saveBoardVisibleFields(vm.visibleFields, vm.parameters.id);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t\tvm.visibleFields[col.value] = col.visible;\r\n\t\t\t\treturn col;\r\n\t\t\t});\r\n\r\n\t\tObject.defineProperty(vm.parameters.board, 'visibleFieldsInTile', {\r\n\t\t\tconfigurable: true,\r\n\t\t\tget: function () {\r\n\t\t\t\treturn visibleFieldsInTile;\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction initHorizontalGroupingFieldAndValues() {\r\n\t\tObject.defineProperty(vm.parameters.board, 'horizontalGroupingField', {\r\n\t\t\tconfigurable: true,\r\n\t\t\tget: function () {\r\n\t\t\t\treturn horizontalGroupingField;\r\n\t\t\t},\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tif (horizontalGroupingField !== newValue) {\r\n\t\t\t\t\tsetHorizontalGroupingField(newValue);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(vm.parameters.board, 'horizontalGroupingValues', {\r\n\t\t\tconfigurable: true,\r\n\t\t\tget: function () {\r\n\t\t\t\treturn horizontalGroupingValues;\r\n\t\t\t},\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\thorizontalGroupingValues = Array.isArray(newValue) ? newValue : [];\r\n\t\t\t\tvar currentHorizontalGroupingField = horizontalGroupingField;\r\n\r\n\t\t\t\tpersonalizationService.getBoardVisibleColumns(vm.parameters.id, horizontalGroupingField).then(function (personalizedColumns) {\r\n\t\t\t\t\tif (currentHorizontalGroupingField !== horizontalGroupingField) {\r\n\t\t\t\t\t\treturn; // if field was changed during personalization loading than don't enable this personalization and wait fot next\r\n\t\t\t\t\t}\r\n\t\t\t\t\thorizontalGroupingValues.forEach(function (item) {\r\n\t\t\t\t\t\titem._visible = !Array.isArray(personalizedColumns) || personalizedColumns.indexOf(item.value) >= 0;\r\n\t\t\t\t\t\tObject.defineProperty(item, 'visible', {\r\n\t\t\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\t\t\treturn this._visible;\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\t\t\tthis._visible = newValue;\r\n\t\t\t\t\t\t\t\tupdateVisibleColumns();\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t\tupdateVisibleColumns();\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction setHorizontalGroupingField(newValue) {\r\n\t\tif (horizontalGroupingField === newValue) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvm.columnDefinitionPreprocessor.allColumns.some(function (column) {\r\n\t\t\tif (/*column.boardGroupingIsAvailable &&*/ newValue === column.Name) {\r\n\t\t\t\thorizontalGroupingField = newValue;\r\n\t\t\t\thorizontalGroupingFieldExpression = column.Expression;\r\n\t\t\t\tpersonalizationService.saveBoardHorizontalGroupingField(horizontalGroupingField, vm.parameters.id);\r\n\r\n\t\t\t\t// vm.parameters.board.horizontalGroupingValues = [];\r\n\t\t\t\tgetAllColumnValues(column).then(function (columnValues) {\r\n\t\t\t\t\tvm.parameters.board.horizontalGroupingValues = columnValues;\r\n\t\t\t\t});\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction onItemChanged(item, newColumnValue /*, itemBefore, itemAfter*/) {\r\n\t\tentityService.updateEntity(item._type, item._id, vm.parameters.dataQuery.SchemaClassName, [\r\n\t\t\t{\r\n\t\t\t\tExpression: horizontalGroupingFieldExpression,\r\n\t\t\t\tValue: newColumnValue,\r\n\t\t\t},\r\n\t\t]);\r\n\t}\r\n\r\n\tfunction createTemplate() {\r\n\t\tif (typeof vm.parameters.board.template === 'string' && vm.parameters.board.template.length && !vm.parameters.board.useCustomTile) {\r\n\t\t\tvar re = new RegExp('vm.dataModel', 'g');\r\n\t\t\treturn vm.parameters.board.template.replace(re, '__vm.dataModel');\r\n\t\t}\r\n\r\n\t\tvar template = '';\r\n\r\n\t\tif (Array.isArray(vm.parameters.board.visibleFieldsInTile) && vm.parameters.board.visibleFieldsInTile.length && vm.parameters.board.useCustomTile) {\r\n\t\t\ttemplate += '

';\r\n\r\n\t\t\tvm.parameters.board.visibleFieldsInTile.forEach(function (field) {\r\n\t\t\t\tvar fieldTemplate =\r\n\t\t\t\t\t'';\r\n\r\n\t\t\t\ttemplate += fieldTemplate;\r\n\t\t\t});\r\n\r\n\t\t\ttemplate += '

';\r\n\t\t}\r\n\r\n\t\treturn template;\r\n\t}\r\n\r\n\tfunction updateTemplate() {\r\n\t\tvm.tileTemplate = createTemplate();\r\n\t}\r\n\r\n\tfunction updateVisibleColumns() {\r\n\t\tvm.parameters.board.visibleColumns = horizontalGroupingValues.filter(function (field) {\r\n\t\t\treturn field.visible;\r\n\t\t});\r\n\t\tvar personalizedColumns = vm.parameters.board.visibleColumns.map(function (column) {\r\n\t\t\treturn column.value;\r\n\t\t});\r\n\t\tpersonalizationService.saveBoardVisibleColumns(personalizedColumns, horizontalGroupingField, vm.parameters.id);\r\n\t}\r\n\r\n\tfunction getAllColumnValues(column) {\r\n\t\t//TODO: should return DISTINCT list\r\n\r\n\t\t// if (boardGroupingIsAvailable)\r\n\t\tif (column.ReferenceTo && column.AttributeValueType === mx.shell.ObjectPropertyType.Integer.name) {\r\n\t\t\t//if enum\r\n\t\t\treturn entityService.getEnumerationValues(column.ReferenceTo, column.ReferenceFilter).then(function (enumeration) {\r\n\t\t\t\treturn enumeration.map(function (item) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttitle: item.DisplayString || item.Name,\r\n\t\t\t\t\t\tvalue: item.Value,\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t/*if (column.ReferenceTo && column.AttributeValueType === mx.shell.ObjectPropertyType.Guid.name) { //if relation\r\n\t\t\tdataQueryService.getRelationItems(request)\r\n\t\t\trequest = {\r\n\t\t\t\tdataQueryName: vm.columnDefinition,\r\n\t\t\t\tentityClassName: vm.entityClassName,\r\n\t\t\t\trelationName: vm.relationName,\r\n\t\t\t\twhereExpression: vm.filter\r\n\t\t\t};\r\n\t\t}\r\n\r\n\r\n\t\tif (column.AttributeValueType === mx.shell.ObjectPropertyType.Boolean.name) {\r\n\r\n\t\t}*/\r\n\r\n\t\treturn $q.when([]);\r\n\t}\r\n}\r\n","'use strict';\r\nimport DataQueryList from './mx-data-query-list.js';\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxContentWidgetViewCalendar', {\r\n\ttransclude: true,\r\n\tbindings: { parameters: '=' },\r\n\tcontroller: MxContentWidgetViewCalendarCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-calendar.html',\r\n});\r\n\r\nMxContentWidgetViewCalendarCtrl.$inject = [\r\n\t'$injector',\r\n\t'$scope',\r\n\t'mx.SolutionBuilderAgent.DialogOpenerService',\r\n\t'mx.internationalization',\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.SearchProviderService',\r\n\t'mx.SolutionBuilderAgent.Http',\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n\t'$timeout',\r\n\t'$q',\r\n\t'mx.shell.ActionManagerService',\r\n\t'mx.shell.ActionExecutorService',\r\n\t'mx.SolutionBuilderAgent.DateRangePreprocessor',\r\n\t'mx.SolutionBuilderAgent.SearchPreprocessor',\r\n\t'mx.SolutionBuilderAgent.GroupingPreprocessor',\r\n\t'mx.SolutionBuilderAgent.StructurePreprocessor',\r\n];\r\n\r\nMxContentWidgetViewCalendarCtrl.prototype = Object.create(DataQueryList.prototype);\r\n\r\nfunction MxContentWidgetViewCalendarCtrl(\r\n\t$injector,\r\n\t$scope,\r\n\tdialogOpener,\r\n\ti18n,\r\n\teventService,\r\n\tsearchService,\r\n\thttp,\r\n\tpersonalizationService,\r\n\t$timeout,\r\n\t$q,\r\n\tactionManagerService,\r\n\tactionExecutorService,\r\n\tDateRangePreprocessor,\r\n\tSearchPreprocessor,\r\n\tGroupingPreprocessor,\r\n\tStructurePreprocessor\r\n) {\r\n\tvar vm = this;\r\n\tvar personalizedParams = {};\r\n\tvm.calendarReinit = false;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvm.type = mx.SolutionBuilderAgent.ListingType.calendar;\r\n\t\tvm.businessHours = true;\r\n\t\tvm.items = [];\r\n\t\tvm.langCode = i18n.language;\r\n\t\tvm.startDate = undefined;\r\n\t\tvm.endDate = undefined;\r\n\t\tvm._inited = false;\r\n\t\tvm.dropdownMenuOptions = {};\r\n\t\tvm.readonlyKey = vm.parameters.calendar.readonlyKey || '_readonly';\r\n\r\n\t\tvm.itemsLoader = itemsLoader;\r\n\t\tvm.editMovedItem = editMovedItem;\r\n\t\tvm.rangeSelectionHandler = rangeSelectionHandler;\r\n\r\n\t\t$q.all([personalizationService.getCalendarSettings(vm.parameters.id), actionManagerService.getCreateActions(vm.parameters.entityTypes[0])]).then(function (data) {\r\n\t\t\tvar settings = data[0] || {},\r\n\t\t\t\tcreateActions = data[1];\r\n\r\n\t\t\tvm.isCreateEnabled = Array.isArray(createActions) && createActions.length > 0;\r\n\r\n\t\t\tif (settings.calendarView) {\r\n\t\t\t\tvm.parameters.calendar.defaultView = settings.calendarView;\r\n\t\t\t}\r\n\r\n\t\t\tpersonalizedParams = settings;\r\n\t\t\tpersonalizedParams.extraDimensionValuesVisibility = personalizedParams.extraDimensionValuesVisibility || {};\r\n\t\t\ttryInitGroupingSettings(personalizedParams);\r\n\r\n\t\t\tvm.initialize($injector, $scope, [DateRangePreprocessor, SearchPreprocessor, GroupingPreprocessor, StructurePreprocessor]);\r\n\r\n\t\t\tvm.calendarReinit = true;\r\n\t\t});\r\n\t};\r\n\r\n\t$scope.$watch('vm.data', function (data) {\r\n\t\tif (Array.isArray(data)) {\r\n\t\t\tvm.items = data;\r\n\r\n\t\t\tif (vm.parameters.calendar.calendarExtraDimensionRelation) {\r\n\t\t\t\t_prepareExtraDimension();\r\n\t\t\t\tvar newExtraDimensions = getVisibleExtraDimensions();\r\n\r\n\t\t\t\tif (!mx.components.Utils.arraysEqual(newExtraDimensions, vm.parameters.calendar.extraDimensions, dimensionEqualityFunction)) {\r\n\t\t\t\t\tvm.parameters.calendar.extraDimensions = newExtraDimensions;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tvm.$onDestroy = function () {\r\n\t\tDataQueryList.prototype.$onDestroy.call(this);\r\n\t\tdelete vm.parameters.calendar._doGrouping;\r\n\t\tdelete vm.parameters.calendar.extraDimensions;\r\n\t\tdelete vm.parameters.calendar.allExtraDimensions;\r\n\t};\r\n\r\n\treturn vm;\r\n\r\n\tfunction markItemsWithoutEditAction(items) {\r\n\t\tif (!Array.isArray(items)) {\r\n\t\t\treturn $q.when([]);\r\n\t\t}\r\n\t\treturn $q\r\n\t\t\t.all(\r\n\t\t\t\titems.map(function (item) {\r\n\t\t\t\t\treturn actionManagerService.getEditActions(item).then(function (editActions) {\r\n\t\t\t\t\t\titem[vm.readonlyKey] = item[vm.readonlyKey] || editActions.length === 0;\r\n\t\t\t\t\t});\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t\t.then(function () {\r\n\t\t\t\treturn items;\r\n\t\t\t});\r\n\t}\r\n\r\n\tfunction dimensionEqualityFunction(dimension1, dimension2) {\r\n\t\treturn dimension1.id === dimension2.id;\r\n\t}\r\n\r\n\tfunction tryInitGroupingSettings(personalizedParams) {\r\n\t\tvar params = vm.parameters.calendar;\r\n\t\tvar storedIfGroupByExtra = personalizedParams.groupByExtraDimension;\r\n\r\n\t\t// Do grouping if extra dimension is set\r\n\t\tparams._doGrouping = !!params.calendarExtraDimensionRelation;\r\n\r\n\t\tvar _showUnassigned;\r\n\t\tif (!vm.parameters.calendar.hasOwnProperty('showUnassigned')) {\r\n\t\t\tObject.defineProperty(vm.parameters.calendar, 'showUnassigned', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn _showUnassigned;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (isVisible) {\r\n\t\t\t\t\t_showUnassigned = isVisible;\r\n\t\t\t\t\tif (personalizedParams.showUnassigned !== _showUnassigned) {\r\n\t\t\t\t\t\tpersonalizedParams.showUnassigned = _showUnassigned;\r\n\t\t\t\t\t\tpersonalizationService.saveCalendarSettings(vm.parameters.id, personalizedParams);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t_showUnassigned = typeof personalizedParams.showUnassigned === 'undefined' ? true : personalizedParams.showUnassigned;\r\n\r\n\t\tif (params._doGrouping && !params.groupByDimensionValue) {\r\n\t\t\tparams.extraDimensionKey = params.calendarExtraDimensionRelation + '_Value';\r\n\r\n\t\t\tif (storedIfGroupByExtra || (storedIfGroupByExtra === undefined && params.groupByExtraDimension)) {\r\n\t\t\t\tparams._groupByDimensionValue = 'extra';\r\n\t\t\t} else {\r\n\t\t\t\tparams._groupByDimensionValue = 'default';\r\n\t\t\t\tparams.isTimeline = true;\r\n\t\t\t}\r\n\r\n\t\t\tObject.defineProperty(params, 'groupByDimensionValue', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn params._groupByDimensionValue;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (newVal) {\r\n\t\t\t\t\tvar groupByExtraDimension = newVal === 'extra';\r\n\t\t\t\t\tparams._groupByDimensionValue = newVal;\r\n\t\t\t\t\tparams.isTimeline = !groupByExtraDimension;\r\n\t\t\t\t\tparams.showUnassigned = groupByExtraDimension;\r\n\t\t\t\t\tpersonalizedParams.groupByExtraDimension = groupByExtraDimension;\r\n\t\t\t\t\tpersonalizationService.saveCalendarSettings(vm.parameters.id, personalizedParams);\r\n\t\t\t\t\t_prepareExtraDimension();\r\n\t\t\t\t\tparams.extraDimensions = getVisibleExtraDimensions();\r\n\r\n\t\t\t\t\tvm.calendarReinit = false;\r\n\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\tvm.calendarReinit = true;\r\n\t\t\t\t\t}, 200);\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tvar promise;\r\n\t\t\tif (vm.parameters.entities.length === 1) {\r\n\t\t\t\tpromise = $q.when(vm.parameters.entities[0].displayName);\r\n\t\t\t} else {\r\n\t\t\t\tpromise = vm.parameters.dataQuery.getRecordTypeDisplayString();\r\n\t\t\t}\r\n\r\n\t\t\tpromise.then(function (recordDisplayName) {\r\n\t\t\t\tparams._groupByDimensionArr = [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: 'default',\r\n\t\t\t\t\t\ttitle: recordDisplayName,\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: 'extra',\r\n\t\t\t\t\t\ttitle: _getColumnExtraDimensionTitle(),\r\n\t\t\t\t\t},\r\n\t\t\t\t];\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction _getColumnExtraDimensionTitle() {\r\n\t\tvar relation = vm.parameters.calendar.calendarExtraDimensionRelation;\r\n\t\treturn (\r\n\t\t\tvm.parameters.dataQuery.Columns.find(function (it) {\r\n\t\t\t\treturn it.Name === relation;\r\n\t\t\t}).Title || relation\r\n\t\t);\r\n\t}\r\n\r\n\tfunction itemsLoader(options) {\r\n\t\tvar start = options.start,\r\n\t\t\tend = options.end;\r\n\r\n\t\t// Not in range of last loads\r\n\t\tif (vm._inited && (start.toDate() < new Date(vm.lastLoadedStartDate) || end.toDate() > new Date(vm.lastLoadedEndDate))) {\r\n\t\t\tvm.lastLoadedStartDate = start.toISOString();\r\n\t\t\tvm.lastLoadedEndDate = end.toISOString();\r\n\t\t\tvm.parameters.data = undefined;\r\n\t\t}\r\n\r\n\t\tvm.dateRangePreprocessor.startDate = start.toISOString();\r\n\t\tvm.dateRangePreprocessor.endDate = end.toISOString();\r\n\r\n\t\tupdateBusinessHours(options.currentDate, options.calendarView);\r\n\r\n\t\tif (!vm._inited) {\r\n\t\t\tvm.lastLoadedStartDate = vm.dateRangePreprocessor.startDate;\r\n\t\t\tvm.lastLoadedEndDate = vm.dateRangePreprocessor.endDate;\r\n\t\t\tvm._inited = true;\r\n\r\n\t\t\treturn vm.load().then(function () {\r\n\t\t\t\treturn markItemsWithoutEditAction(vm.data);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\treturn vm.reload().then(function () {\r\n\t\t\t\treturn markItemsWithoutEditAction(vm.data);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction rangeSelectionHandler(options) {\r\n\t\t// Disable calendar for the editing period\r\n\t\tvm.calendarDisabled = true;\r\n\t\tvar presetFields = _formPresetFields(options);\r\n\t\tvar actionExecutedPromise = actionExecutorService.executeCreateAction(vm.parameters.entityTypes[0], undefined, presetFields);\r\n\t\tactionExecutedPromise.finally(function () {\r\n\t\t\tvm.calendarDisabled = false;\r\n\t\t});\r\n\r\n\t\treturn actionExecutedPromise;\r\n\t}\r\n\r\n\tfunction editMovedItem(options) {\r\n\t\tvm.calendarDisabled = true;\r\n\t\tvar presetFields = _formPresetFields(options);\r\n\t\tvar actionExecutedPromise = actionExecutorService.executeEditAction(options.item, undefined, presetFields);\r\n\r\n\t\tactionExecutedPromise.finally(function () {\r\n\t\t\tvm.calendarDisabled = false;\r\n\t\t});\r\n\r\n\t\treturn actionExecutedPromise;\r\n\t}\r\n\r\n\tfunction _prepareExtraDimension() {\r\n\t\tvar extraDimensionArr = [];\r\n\r\n\t\tvar data = vm.items;\r\n\r\n\t\tvar relationKey = vm.parameters.calendar.calendarExtraDimensionRelation;\r\n\t\tvar relationValueKey = vm.parameters.calendar.calendarExtraDimensionRelation + '_Value';\r\n\t\tvar relationColumn = vm.parameters.dataQuery.Columns.find(function (column) {\r\n\t\t\treturn column.Name === relationKey;\r\n\t\t});\r\n\r\n\t\tif (!Array.isArray(data) || !data.length) {\r\n\t\t\textraDimensionArr = [];\r\n\t\t} else {\r\n\t\t\tvar ids = {};\r\n\r\n\t\t\textraDimensionArr = data\r\n\t\t\t\t.filter(function onlyUnique(item) {\r\n\t\t\t\t\tif (item[relationValueKey] && !ids[item[relationValueKey]]) {\r\n\t\t\t\t\t\tids[item[relationValueKey]] = true;\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.map(function (item) {\r\n\t\t\t\t\tvar newExtraDimensionValue = {\r\n\t\t\t\t\t\tid: item[relationValueKey],\r\n\t\t\t\t\t\ttitle: item[relationKey],\r\n\t\t\t\t\t\timage: item[vm.parameters.calendar.calendarExtraDimensionImageColumn],\r\n\t\t\t\t\t\treferenceTo: relationColumn && relationColumn.ReferenceTo,\r\n\t\t\t\t\t\t_visible: personalizedParams.extraDimensionValuesVisibility[item[relationValueKey]] !== false,\r\n\t\t\t\t\t};\r\n\t\t\t\t\tObject.defineProperty(newExtraDimensionValue, 'visible', {\r\n\t\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\t\treturn this._visible;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tset: function (isVisible) {\r\n\t\t\t\t\t\t\tthis._visible = isVisible;\r\n\t\t\t\t\t\t\tpersonalizedParams.extraDimensionValuesVisibility[this.id] = isVisible;\r\n\t\t\t\t\t\t\tpersonalizationService.saveCalendarSettings(vm.parameters.id, personalizedParams);\r\n\r\n\t\t\t\t\t\t\tvm.parameters.calendar.extraDimensions = getVisibleExtraDimensions();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn newExtraDimensionValue;\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\textraDimensionArr.sort(function (first, second) {\r\n\t\t\tvar firstTitle = first.title || '';\r\n\t\t\tvar secondTitle = second.title || '';\r\n\t\t\treturn firstTitle.localeCompare(secondTitle, undefined, { sensitivity: 'accent' });\r\n\t\t});\r\n\r\n\t\tvm.parameters.calendar.allExtraDimensions = extraDimensionArr;\r\n\t}\r\n\r\n\tfunction getVisibleExtraDimensions() {\r\n\t\treturn vm.parameters.calendar.allExtraDimensions.filter(function (dimension) {\r\n\t\t\treturn dimension.visible;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction _applyPresetFieldByPath(presetFields, path, value) {\r\n\t\tvar presetStep = (presetFields = presetFields || {});\r\n\t\tpath.forEach(function (pathStep, index, array) {\r\n\t\t\tif (index < array.length - 1) {\r\n\t\t\t\tpresetStep[pathStep] = presetStep[pathStep] || {};\r\n\t\t\t\tpresetStep = presetStep[pathStep];\r\n\t\t\t} else {\r\n\t\t\t\tpresetStep[pathStep] = value;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction _applyPresetFieldByColumn(presetFields, columnName, value) {\r\n\t\tvar path = vm.parameters.dataQuery.getPropertyPath(columnName);\r\n\t\tif (!Array.isArray(path) || path.length < 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t_applyPresetFieldByPath(presetFields, path, value);\r\n\t}\r\n\r\n\tfunction _formPresetFields(options) {\r\n\t\tvar presetFields = {};\r\n\r\n\t\tif (vm.parameters.calendar.startDateKey) {\r\n\t\t\t_applyPresetFieldByColumn(presetFields, vm.parameters.calendar.startDateKey, options.start);\r\n\t\t}\r\n\r\n\t\tif (vm.parameters.calendar.endDateKey) {\r\n\t\t\t_applyPresetFieldByColumn(presetFields, vm.parameters.calendar.endDateKey, options.end);\r\n\t\t}\r\n\r\n\t\tif (vm.parameters.calendar.wholeDayKey) {\r\n\t\t\t_applyPresetFieldByColumn(presetFields, vm.parameters.calendar.wholeDayKey, Boolean(options.wholeDay));\r\n\t\t}\r\n\r\n\t\tif (vm.parameters.calendar.calendarExtraDimensionRelation) {\r\n\t\t\t_applyPresetFieldByColumn(presetFields, vm.parameters.calendar.calendarExtraDimensionRelation, options.dimensionId);\r\n\t\t}\r\n\r\n\t\treturn presetFields;\r\n\t}\r\n\r\n\tfunction getBusinessHours(date) {\r\n\t\treturn http.get('api/calendar/workingHours' + '?year=' + date.year() + '&week=' + date.week(), undefined, { cache: true }).then(function (resBusinessHours) {\r\n\t\t\t// Move `Sunday` as 7th day\r\n\t\t\tresBusinessHours.push(resBusinessHours.shift());\r\n\r\n\t\t\treturn resBusinessHours\r\n\t\t\t\t.map(function (day, i) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdow: [i + 1],\r\n\t\t\t\t\t\tstart: day.WorkingTimeStart,\r\n\t\t\t\t\t\tend: day.WorkingTimeEnd,\r\n\t\t\t\t\t\tisWorkingDay: day.IsWorkingDay,\r\n\t\t\t\t\t};\r\n\t\t\t\t})\r\n\t\t\t\t.filter(function (day) {\r\n\t\t\t\t\treturn day.isWorkingDay;\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction updateBusinessHours(currentDate, calendarView) {\r\n\t\tif (['week', 'day'].indexOf(calendarView) !== -1) {\r\n\t\t\tvar year = currentDate.year();\r\n\t\t\tvar week = currentDate.week();\r\n\r\n\t\t\tif (year === vm.previousBussinessYear && week === vm.previousBussinessWeek) {\r\n\t\t\t\treturn $q.when();\r\n\t\t\t}\r\n\t\t\tvm.previousBussinessWeek = week;\r\n\t\t\tvm.previousBussinessYear = year;\r\n\r\n\t\t\treturn getBusinessHours(currentDate).then(function (businessHours) {\r\n\t\t\t\tif (!angular.equals(vm.businessHours, businessHours)) {\r\n\t\t\t\t\tvm.businessHours = businessHours;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t// If not Week or Day modes (e.g. for Month mode) then just show default business hours\r\n\t\t\tvm.businessHours = true;\r\n\t\t\treturn $q.when();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default MxContentWidgetViewCalendarCtrl;\r\n","import DataQueryList from './mx-data-query-list.js';\r\nimport DataSetRowIdentity from '../../../services/dataset-row-identity';\r\nimport { GroupType } from '../../../model/enumerations';\r\nimport { EventCodes } from '../../../../../App/model/event-codes';\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxContentWidgetViewGrid', {\r\n\ttransclude: true,\r\n\tbindings: {\r\n\t\tparameters: '=',\r\n\t\toutputPreprocessors: '<',\r\n\t},\r\n\tcontroller: MxContentWidgetViewGridCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-grid.html',\r\n});\r\n\r\nMxContentWidgetViewGridCtrl.$inject = [\r\n\t'$q',\r\n\t'$scope',\r\n\t'$element',\r\n\t'$injector',\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n\t'mx.internationalization',\r\n\t'mx.shell.SearchProviderService',\r\n\t'mx.SolutionBuilderAgent.SearchQueryService',\r\n\t'mx.shell.ContextService',\r\n\t'mx.shell.EventService',\r\n\t'mx.sb.Agent.DataQuery.Enums',\r\n\t'mx.SolutionBuilderAgent.SortingGridPreprocessor',\r\n\t'mx.SolutionBuilderAgent.PagingPreprocessor',\r\n\t'mx.SolutionBuilderAgent.SearchPreprocessor',\r\n\t'mx.SolutionBuilderAgent.StructurePreprocessor',\r\n\t'mx.SolutionBuilderAgent.QuickFilterPreprocessor',\r\n\t'mx.SolutionBuilderAgent.ColumnDefinitionPreprocessor',\r\n\t'mx.SolutionBuilderAgent.GroupingPreprocessor',\r\n\t'mx.shell.AriaService',\r\n\t'mx.SolutionBuilderAgent.SearchQueryGroup',\r\n\t'mx.SolutionBuilderAgent.GroupingPanelService',\r\n];\r\n\r\nMxContentWidgetViewGridCtrl.prototype = Object.create(DataQueryList.prototype);\r\n\r\nMxContentWidgetViewGridCtrl.prototype.reload = function () {\r\n\tconst self = this;\r\n\treturn DataQueryList.prototype.reload.apply(self, arguments).then(function () {\r\n\t\tif (self.injector.get('mx.shell.SideLayout').visible) {\r\n\t\t\tself.eventService.subscribeOnce(mx.shell.EventCodes.SidePanelVisibility, function (_, visible) {\r\n\t\t\t\tif (!visible && self.options && typeof self.options.refreshGridCanvas === 'function') {\r\n\t\t\t\t\tsetTimeout(self.options.refreshGridCanvas, 1000);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n};\r\n\r\nfunction MxContentWidgetViewGridCtrl(\r\n\t$q,\r\n\t$scope,\r\n\t$element,\r\n\t$injector,\r\n\tpersonalizationService,\r\n\ti18n,\r\n\tsearchService,\r\n\tsearchQueryService,\r\n\tcontextService,\r\n\teventService,\r\n\tdataQueryEnums,\r\n\tSortingGridPreprocessor,\r\n\tPagingPreprocessor,\r\n\tSearchPreprocessor,\r\n\tStructurePreprocessor,\r\n\tQuickFilterPreprocessor,\r\n\tColumnDefinitionPreprocessor,\r\n\tGroupingPreprocessor,\r\n\tariaService,\r\n\tSearchQueryGroup,\r\n\tgroupingPanelService\r\n) {\r\n\tconst vm = this;\r\n\tlet columnFiltersIsActive = false;\r\n\tconst ColumnSortingEnum = dataQueryEnums.ColumnSortingEnum;\r\n\tconst searchPageGridSelector = '.mx-search-page-grid';\r\n\r\n\tvm.$onInit = function () {\r\n\t\tariaService.readMessage(i18n.get('solutionBuilderAgent.aria.loading'));\r\n\r\n\t\tvm.groupingClickHandler = groupingClickHandler;\r\n\t\tvm.type = mx.SolutionBuilderAgent.ListingType.grid;\r\n\r\n\t\t// Todo: should think how to refactor\r\n\t\tvm.onSortChanged = onSortChanged;\r\n\t\tvm.contextService = contextService;\r\n\r\n\t\tvm.parameters.dataQuery.addFilterChangeHandler((columns) => searchInColumns(columns));\r\n\r\n\t\tvm.injector = $injector;\r\n\t\tvm.eventService = eventService;\r\n\r\n\t\tvm.preInitialize($injector, $scope);\r\n\t\tvm.initPreprocessors([\r\n\t\t\tSortingGridPreprocessor,\r\n\t\t\tPagingPreprocessor,\r\n\t\t\tSearchPreprocessor,\r\n\t\t\tStructurePreprocessor,\r\n\t\t\tQuickFilterPreprocessor,\r\n\t\t\tColumnDefinitionPreprocessor,\r\n\t\t\tGroupingPreprocessor,\r\n\t\t]);\r\n\r\n\t\tif (typeof vm.outputPreprocessors === 'object') {\r\n\t\t\tangular.extend(vm.outputPreprocessors, vm.preprocessorsByName);\r\n\t\t}\r\n\r\n\t\tvm.options = {\r\n\t\t\tcolumnDefinitionDescriptor: vm.columnDefinitionPreprocessor,\r\n\t\t\trowHeight: vm.parameters.rowHeight || 30,\r\n\t\t\tenableGridMenu: false,\r\n\t\t\tparameters: vm.parameters,\r\n\t\t\tallowPaging: false,\r\n\t\t\trowColoringEnabled: vm.parameters.rowColoringEnabled === true,\r\n\t\t\tuseExternalPagination: vm.dataQueryExecutor.usePostBack,\r\n\t\t\tuseExternalSorting: vm.dataQueryExecutor.usePostBack,\r\n\t\t\tenableFiltering: true,\r\n\t\t\tselectionChanged: vm.selectionChanged.bind(vm),\r\n\t\t\trowIdentity: DataSetRowIdentity,\r\n\t\t\tonItemClick: vm.itemClickHandler.bind(vm),\r\n\t\t\tonRightClick: function (entity) {\r\n\t\t\t\treturn vm.itemRightClickHandler(entity);\r\n\t\t\t},\r\n\t\t\tonRowDblClick: function (entity) {\r\n\t\t\t\tvm.itemDblClickHandler(entity);\r\n\t\t\t},\r\n\t\t};\r\n\t\tvm.load().then(function () {\r\n\t\t\tif (vm.parameters.quickFilters && vm.quickFilterPreprocessor.parts > 0) {\r\n\t\t\t\tvm.options.columns = [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tAttributeValueType: 'quickfilter',\r\n\t\t\t\t\t\tAlignment: '1',\r\n\t\t\t\t\t\tName: 'Sys-Flags',\r\n\t\t\t\t\t\tWidth: '58px',\r\n\t\t\t\t\t\tTitle: i18n.get('solutionBuilderAgent.common.quickFilter'),\r\n\t\t\t\t\t\tLabels: vm.quickFilterPreprocessor.titles,\r\n\t\t\t\t\t\tParts: vm.quickFilterPreprocessor.parts,\r\n\t\t\t\t\t\tIsDisplay: true,\r\n\t\t\t\t\t\tAriaHidden: true,\r\n\t\t\t\t\t},\r\n\t\t\t\t].concat(vm.columns);\r\n\t\t\t} else {\r\n\t\t\t\tvm.options.columns = vm.columns;\r\n\t\t\t}\r\n\r\n\t\t\tariaService.readMessage(i18n.get('solutionBuilderAgent.aria.loaded'), 2000).then(ariaService.createPoliteFocusSettingFn(searchPageGridSelector));\r\n\t\t});\r\n\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.shell.EventCodes.SidePanelVisibility,\r\n\t\t\tfunction (e, visibility) {\r\n\t\t\t\tif (!visibility) {\r\n\t\t\t\t\tariaService.createPoliteFocusSettingFn(searchPageGridSelector)();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.shell.EventCodes.NavigationItemClicked,\r\n\t\t\t(e, navItem) => {\r\n\t\t\t\tif (navItem.activated) {\r\n\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\t$(searchPageGridSelector).trigger('focus');\r\n\t\t\t\t\t}, 200);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\t};\r\n\r\n\tvm.$postLink = function () {\r\n\t\tconst gridMenu = $element.find('.ui-grid-menu-button');\r\n\r\n\t\tangular.element('.mx-search-page-place-holder').empty().append(gridMenu);\r\n\t};\r\n\r\n\t$scope.$watch('vm.loading', function (value) {\r\n\t\tvm.pagingPreprocessor.loading = value;\r\n\t});\r\n\r\n\t$scope.$watch('vm.parameters.rowHeight', function (value) {\r\n\t\tvm.options.rowHeight = value;\r\n\t});\r\n\r\n\t$scope.$watch('vm.parameters.rowColoringEnabled', function () {\r\n\t\tvm.options.rowColoringEnabled = vm.parameters.rowColoringEnabled === true;\r\n\t});\r\n\r\n\teventService.subscribeTo(\r\n\t\tmx.shell.EventCodes.Search,\r\n\t\tfunction (event, searchOptions) {\r\n\t\t\tsearchOptions = searchOptions || {};\r\n\r\n\t\t\tif (searchOptions.uiToken !== vm.parameters.uiToken || searchOptions.dataQueryList !== vm) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (columnFiltersIsActive) {\r\n\t\t\t\tconst conditions = searchOptions.searchForm.getGroup(GroupType.GridSearch)?.conditions;\r\n\t\t\t\tif (!conditions?.length) {\r\n\t\t\t\t\tresetFilters();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t$scope\r\n\t);\r\n\r\n\tvm.onSelectAllClick = function (allSelectedState) {\r\n\t\tsearchService.currentSearch().dataQueryList.allSelectedState = allSelectedState;\r\n\t};\r\n\r\n\teventService.subscribeTo(mx.SolutionBuilderAgent.Events.SearchPageReloaded, _setAriaGridInfo, $scope);\r\n\r\n\treturn vm;\r\n\r\n\tfunction getSortedColumns(columns) {\r\n\t\tcolumns = (columns || []).map(function (column) {\r\n\t\t\treturn {\r\n\t\t\t\tname: column.field,\r\n\t\t\t\tsorting: column.sort.direction === 'asc' ? ColumnSortingEnum.Ascending : ColumnSortingEnum.Descending,\r\n\t\t\t\tpriority: column.sort.priority,\r\n\t\t\t};\r\n\t\t});\r\n\t\tcolumns.sort(function (columnA, columnB) {\r\n\t\t\treturn columnA.priority - columnB.priority;\r\n\t\t});\r\n\t\treturn columns;\r\n\t}\r\n\r\n\tfunction resetFilters() {\r\n\t\tcolumnFiltersIsActive = false;\r\n\t\t//TODO: in this case search options is controlled by external search-service and not by DataQuery or Executor instance,\r\n\t\t// that's why private variable is used to avoid additional search run on change handler\r\n\t\t// Should be removed when Executor can be used instead of search-service, and search-state component can use Executor for reset search\r\n\t\tvm.parameters.dataQuery._previousFilter = [];\r\n\t\tvm.parameters.dataQuery.clearAllFilters();\r\n\t}\r\n\r\n\tasync function searchInColumns(columns) {\r\n\t\tlet searchForm;\r\n\t\tconst currentSearch = searchService.currentSearch();\r\n\t\tsearchForm = currentSearch.searchForm;\r\n\r\n\t\tlet gridSearchGroup = searchForm.getGroup(GroupType.GridSearch);\r\n\t\tif (gridSearchGroup) {\r\n\t\t\tgridSearchGroup.conditions = [];\r\n\t\t} else {\r\n\t\t\tgridSearchGroup = new SearchQueryGroup();\r\n\t\t\tsearchForm.addGroup(gridSearchGroup, GroupType.GridSearch);\r\n\t\t}\r\n\r\n\t\tconst conditions = await Promise.all(\r\n\t\t\tcolumns.map(async (column) => {\r\n\t\t\t\tconst condition = await searchQueryService.createConditionByColumn(column.Name, vm.parameters.dataQuery);\r\n\t\t\t\tcondition.operator = column.filter.operator;\r\n\t\t\t\tcondition.value = column.filter.value.slice();\r\n\t\t\t\treturn condition;\r\n\t\t\t})\r\n\t\t);\r\n\t\tgridSearchGroup.conditions.push(...conditions);\r\n\r\n\t\tcolumnFiltersIsActive = columns.length > 0;\r\n\r\n\t\tcurrentSearch.searchForm = searchForm;\r\n\t\tcurrentSearch.uiToken = vm.parameters.uiToken;\r\n\t\tsearchService.runSearch();\r\n\r\n\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\teventName: `Filter by column(s) executed`,\r\n\t\t\tsender: vm.parameters.id,\r\n\t\t\tsenderTitle: vm.parameters.name,\r\n\t\t\tcontextTypeId: vm.parameters.entities.map((entity) => entity.id),\r\n\t\t\tcontextTypeTitle: vm.parameters.entities.map((entity) => entity.name),\r\n\t\t\tcontextId: conditions.map((condition) => ({ name: condition.property, type: condition.type, operator: condition.operatorTechnicalName })),\r\n\t\t});\r\n\t}\r\n\r\n\tasync function groupingClickHandler(event, column) {\r\n\t\tif (!groupingPanelService.isActive()) {\r\n\t\t\tgroupingPanelService.open(vm.groupingPreprocessor);\r\n\t\t}\r\n\t\tawait vm.groupingPreprocessor.toggleColumnGrouping(column.Name);\r\n\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\teventName: `Data grouped`,\r\n\t\t\tsender: vm.parameters.id,\r\n\t\t\tsenderTitle: vm.parameters.name,\r\n\t\t\tcontextTypeId: vm.parameters.entities.map((entity) => entity.id),\r\n\t\t\tcontextTypeTitle: vm.parameters.entities.map((entity) => entity.name),\r\n\t\t\tcontextId: vm.groupingPreprocessor.groupedColumns.map((column) => column.Name),\r\n\t\t});\r\n\t\t$scope.$evalAsync();\r\n\t}\r\n\r\n\tfunction onSortChanged(columns) {\r\n\t\tconst sortColumns = getSortedColumns(columns || []);\r\n\t\tvm.sortingPreprocessor.setSort(sortColumns);\r\n\r\n\t\tif (!vm.dataQueryExecutor.usePostBack) {\r\n\t\t\tvm.sortingPreprocessor.callChanged();\r\n\t\t}\r\n\r\n\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\teventName: `Data sorted`,\r\n\t\t\tsender: vm.parameters.id,\r\n\t\t\tsenderTitle: vm.parameters.name,\r\n\t\t\tcontextTypeId: vm.parameters.entities.map((entity) => entity.id),\r\n\t\t\tcontextTypeTitle: vm.parameters.entities.map((entity) => entity.name),\r\n\t\t\tcontextId: (columns || []).map((column) => ({\r\n\t\t\t\tname: column.field,\r\n\t\t\t\tsorting: column.sort.direction,\r\n\t\t\t\tpriority: column.sort.priority,\r\n\t\t\t})),\r\n\t\t});\r\n\t\tpersonalizationService.savePersonalizedSorting(getSortedColumns(columns), vm.parameters.id);\r\n\t}\r\n\r\n\tfunction _setAriaGridInfo() {\r\n\t\tconst i18nPrefix = 'solutionBuilderAgent.layouts.search-page.search-page-content.';\r\n\t\tconst i18nMany = i18n.get('components.mx-datasource-paging-panel.many');\r\n\t\tconst totalCount = vm.parameters.totalCount > -1 ? vm.parameters.totalCount : i18nMany;\r\n\t\tconst currentPageNumber = vm.pagingPreprocessor.page || 1;\r\n\t\tconst itemsPerPage = vm.pagingPreprocessor.pageSize;\r\n\t\tconst pageAmount = typeof totalCount === 'number' ? Math.ceil(totalCount / itemsPerPage) : i18nMany;\r\n\t\tconst gridInfo = i18n.getFormatted(i18nPrefix + 'ARIA-gridNItems', totalCount);\r\n\t\tconst paginationInfo =\r\n\t\t\t(typeof pageAmount === 'number' && pageAmount > 1) || typeof pageAmount === 'string' /* if \"Many\" */\r\n\t\t\t\t? i18n.getFormatted(i18nPrefix + 'ARIA-pagination', currentPageNumber, pageAmount)\r\n\t\t\t\t: '';\r\n\t\tconst switchPagesInfo = paginationInfo && currentPageNumber === 1 ? i18n.get(i18nPrefix + 'ARIA-switchPagesInfo') : '';\r\n\t\t$element.find('[role=grid]').attr('aria-label', `${gridInfo}. ${paginationInfo} ${switchPagesInfo}`);\r\n\t}\r\n}\r\n","'use strict';\r\nimport DataQueryList from './mx-data-query-list';\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxContentWidgetViewList', {\r\n\ttransclude: true,\r\n\tbindings: {\r\n\t\tparameters: '=',\r\n\t\toutputPreprocessors: '<',\r\n\t},\r\n\tcontroller: MxContentWidgetViewListCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-list.html',\r\n});\r\n\r\nMxContentWidgetViewListCtrl.$inject = ['$injector', '$element', '$scope'];\r\n\r\nMxContentWidgetViewListCtrl.prototype = Object.create(DataQueryList.prototype);\r\n\r\nfunction MxContentWidgetViewListCtrl($injector, $element, $scope) {\r\n\tvar vm = this;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvm.type = mx.SolutionBuilderAgent.ListingType.list;\r\n\r\n\t\tvm.initialize($injector, $scope);\r\n\t\tif (typeof vm.outputPreprocessors === 'object') {\r\n\t\t\tangular.extend(vm.outputPreprocessors, vm.preprocessorsByName);\r\n\t\t}\r\n\t\tvm.load();\r\n\t};\r\n\r\n\tvm.$postLink = function () {\r\n\t\tvar sortingPanel = $element.find('mx-workspace-common-order-panel');\r\n\r\n\t\tangular.element('.mx-search-page-place-holder').empty().append(sortingPanel);\r\n\t};\r\n\r\n\t$scope.$watch('vm.loading', function (value) {\r\n\t\tvm.pagingPreprocessor.loading = value;\r\n\t});\r\n\r\n\treturn vm;\r\n}\r\n","'use strict';\r\nimport DataQueryList from './mx-data-query-list';\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxContentWidgetViewTiles', {\r\n\ttransclude: true,\r\n\tbindings: {\r\n\t\tparameters: '<',\r\n\t\ttilesConfig: '<',\r\n\t\toutputPreprocessors: '<',\r\n\t},\r\n\tcontroller: MxContentWidgetViewTilesCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-tiles.html',\r\n});\r\n\r\nMxContentWidgetViewTilesCtrl.$inject = ['mx.shell.EventService', 'mx.shell.SideLayout', '$injector', '$element', '$scope'];\r\n\r\nMxContentWidgetViewTilesCtrl.prototype = Object.create(DataQueryList.prototype);\r\n\r\nfunction MxContentWidgetViewTilesCtrl(eventService, sideLayout, $injector, $element, $scope) {\r\n\tvar vm = this;\r\n\tvar container = $element.find('.mx-template-tiles--zone')[0];\r\n\tvar _cachedContainerWidth = container.offsetWidth - 1;\r\n\r\n\tvar tileSpacePx = 10;\r\n\tvar scrollWidth = 10;\r\n\tvar DEFAULT_TILE_SIZE = 300;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvm.type = mx.SolutionBuilderAgent.ListingType.tiles;\r\n\t\tvm.initialize($injector, $scope);\r\n\t\tif (typeof vm.outputPreprocessors === 'object') {\r\n\t\t\tangular.extend(vm.outputPreprocessors, vm.preprocessorsByName);\r\n\t\t}\r\n\r\n\t\tvm.load();\r\n\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.shell.EventCodes.LayoutChanged,\r\n\t\t\t$.debounce(500, function (e, name) {\r\n\t\t\t\tif (name === 'sideLayoutResized') {\r\n\t\t\t\t\tif (vm.clickedItem) {\r\n\t\t\t\t\t\tscrollToItem(vm.clickedItem);\r\n\t\t\t\t\t\tdelete vm.clickedItem;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tupdateTilesSizes();\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t\t$scope\r\n\t\t);\r\n\t\tupdateTilesSizes();\r\n\t};\r\n\r\n\tvar scrollZone, contentWidgetView, tileWrapper;\r\n\r\n\tfunction scrollToItem(item) {\r\n\t\tscrollZone = scrollZone || $('.mx-search-page-scrollable-content');\r\n\t\tcontentWidgetView = contentWidgetView || $('.mx-search-page-scrollable-content mx-content-widget-view')[0];\r\n\t\ttileWrapper = tileWrapper || $('.mx-search-page-scrollable-content mx-content-widget-view .mx-tile-wrapper')[0];\r\n\r\n\t\tvar element = $('[key=' + item.Id + ']', scrollZone)[0];\r\n\t\tif (!element) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (typeof element.scrollIntoView === 'function') {\r\n\t\t\telement.scrollIntoView({ behavior: 'smooth' });\r\n\t\t} else {\r\n\t\t\tvar top = contentWidgetView.offsetTop + tileWrapper.offsetTop + element.offsetTop;\r\n\t\t\tscrollZone.animate(\r\n\t\t\t\t{\r\n\t\t\t\t\tscrollTop: top,\r\n\t\t\t\t},\r\n\t\t\t\t100\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tvm.$postLink = function () {\r\n\t\tvar sortingPanel = $element.find('mx-workspace-common-order-panel');\r\n\r\n\t\tangular.element('.mx-search-page-place-holder').empty().append(sortingPanel);\r\n\t};\r\n\r\n\t$scope.$watch('vm.loading', function (value) {\r\n\t\tvm.pagingPreprocessor.loading = value;\r\n\t});\r\n\r\n\treturn vm;\r\n\r\n\tfunction updateTilesSizes() {\r\n\t\tvar newContainerWidth = container.offsetWidth;\r\n\t\tif (newContainerWidth > 0 && newContainerWidth !== _cachedContainerWidth) {\r\n\t\t\t_cachedContainerWidth = newContainerWidth;\r\n\r\n\t\t\t$scope.$evalAsync(function () {\r\n\t\t\t\tvar columns = getColumnsNumber(vm.tilesConfig.width, newContainerWidth);\r\n\t\t\t\tvm.tileWidth = Math.floor((newContainerWidth - 2 * scrollWidth) / columns) - tileSpacePx;\r\n\t\t\t\tvm.tileHeight = getPixelWidthByUnit(vm.tilesConfig.height, container.offsetHeight);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getColumnsNumber(minTileWidth, tilesZoneWidth) {\r\n\t\tvar availSpace = tilesZoneWidth;\r\n\r\n\t\t// this `isHalfSpace` is needed just for the case if open side-panel tiles shouldn't jump\r\n\t\tvar isHalfSpace = sideLayout.visible && !sideLayout.fullScreenMode;\r\n\r\n\t\tif (isHalfSpace) {\r\n\t\t\tavailSpace = availSpace * 2 + 8;\r\n\t\t} else if (availSpace % 2 !== 0) {\r\n\t\t\tavailSpace += 1;\r\n\t\t}\r\n\r\n\t\tvar cols = Math.floor((availSpace + tileSpacePx) / (getPixelWidthByUnit(vm.tilesConfig.width, tilesZoneWidth) + tileSpacePx));\r\n\r\n\t\tif (cols % 2 !== 0) {\r\n\t\t\tcols--;\r\n\t\t}\r\n\r\n\t\treturn Math.max(1, isHalfSpace ? cols / 2 : cols);\r\n\t}\r\n\r\n\tfunction getPixelWidthByUnit(initialValue, offsetValue) {\r\n\t\tvar value = parseFloat(initialValue);\r\n\r\n\t\tif (isNaN(value)) {\r\n\t\t\treturn DEFAULT_TILE_SIZE;\r\n\t\t}\r\n\r\n\t\tif (initialValue.indexOf('px') !== -1) {\r\n\t\t\treturn parseInt(value);\r\n\t\t} else if (initialValue.indexOf('%') !== -1) {\r\n\t\t\treturn parseInt((offsetValue * value) / 100);\r\n\t\t} else if (initialValue.indexOf('rem') !== -1) {\r\n\t\t\treturn parseInt(value * 10);\r\n\t\t} else if (initialValue.indexOf('em') !== -1) {\r\n\t\t\tvar containerElem = document.getElementsByClassName('mx-template-tiles--zone')[0];\r\n\t\t\tvar fontSizePoints = document.defaultView.getComputedStyle(containerElem, null).fontSize || 12;\r\n\r\n\t\t\treturn parseInt((parseInt(fontSizePoints) * value) / 0.75);\r\n\t\t}\r\n\r\n\t\treturn parseInt(value);\r\n\t}\r\n}\r\n","import { EditorBindingType, PropertyEditorType } from '../../model/enumerations';\r\nimport template from './mx-control-property-editor.html';\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxControlPropertyEditor', {\r\n\tbindings: {\r\n\t\tvalue: '=?',\r\n\t\tproperties: ' (vm.tags = tags));\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvm.mode = 1;\r\n\t\tvm.entityClassName = '';\r\n\t\tvm.allowedTypes = '';\r\n\t\tvm.useObjectId = false;\r\n\t\tvm.useMultiSelect = false;\r\n\t\tvm.supportedTypes = {};\r\n\t\tvm.enumeration = {};\r\n\t\tvm.editorTypes = [];\r\n\t\tvm.enumerationUpdate = strEnumerationToJson;\r\n\r\n\t\tstFromArray();\r\n\t\tstrEnumerationFromJson();\r\n\t\tlocalChanged = false;\r\n\r\n\t\tvm.editors = [\r\n\t\t\t{\r\n\t\t\t\tname: 'ControlPropertyEditor',\r\n\t\t\t\ttitle: 'Property Editor',\r\n\t\t\t\tvalue: 0,\r\n\t\t\t\teditorTypes: [\r\n\t\t\t\t\t{ name: 'String', value: PropertyEditorType.String },\r\n\t\t\t\t\t{ name: 'Boolean', value: PropertyEditorType.Boolean },\r\n\t\t\t\t\t{ name: 'Integer', value: PropertyEditorType.Integer },\r\n\t\t\t\t\t{ name: 'Localizable', value: PropertyEditorType.Localizable },\r\n\t\t\t\t\t{ name: 'Image', value: PropertyEditorType.Image },\r\n\t\t\t\t\t{ name: 'Unit', value: PropertyEditorType.Unit },\r\n\t\t\t\t\t{ name: 'Complex Data', value: PropertyEditorType.ComplexData },\r\n\t\t\t\t\t{ name: 'Text', value: PropertyEditorType.Text },\r\n\t\t\t\t\t{ name: 'Layout Grid', value: PropertyEditorType.LayoutGrid },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'ControlBindablePropertyEditor',\r\n\t\t\t\ttitle: 'Bindable Editor',\r\n\t\t\t\tvalue: 1,\r\n\t\t\t\tsupportedKey: 'SupportedTypes',\r\n\t\t\t\teditorTypes: [{ name: 'Bindable', value: PropertyEditorType.Bindable }],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'ControlEnumerationPropertyEditor',\r\n\t\t\t\ttitle: 'Enumeration Editor',\r\n\t\t\t\tvalue: 3,\r\n\t\t\t\tsupportedKey: 'Enumeration',\r\n\t\t\t\teditorTypes: [{ name: 'Enumeration', value: PropertyEditorType.Enumeration }],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'ControlStylePropertyEditor',\r\n\t\t\t\ttitle: 'Style Editor',\r\n\t\t\t\tvalue: 4,\r\n\t\t\t\tsupportedKey: 'RelatedTag',\r\n\t\t\t\teditorTypes: [{ name: 'Style Picker', value: PropertyEditorType.StylePicker }],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'ControlSchemaPropertyEditor',\r\n\t\t\t\ttitle: 'Schema Editor',\r\n\t\t\t\tvalue: 5,\r\n\t\t\t\tsupportedKey: ['Mode', 'Bindable', 'IsMultiPicker'],\r\n\t\t\t\teditorTypes: [{ name: 'Schema', value: PropertyEditorType.Schema }],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'ControlObjectPickerPropertyEditor',\r\n\t\t\t\ttitle: 'Object Picker Editor',\r\n\t\t\t\tvalue: 6,\r\n\t\t\t\tsupportedKey: ['EntityClassName', 'AllowedTypes', 'UseObjectId', 'UseMultiSelect'],\r\n\t\t\t\teditorTypes: [{ name: 'Object Picker', value: PropertyEditorType.ObjectPicker }],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'ControlDescriptorStylesPropertyEditor',\r\n\t\t\t\ttitle: 'Descriptor Style Editor',\r\n\t\t\t\tvalue: 7,\r\n\t\t\t\teditorTypes: [{ name: 'Descriptor Styles Picker', value: PropertyEditorType.DescriptorStylesPicker }],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'ControlFilterExpressionPropertyEditor',\r\n\t\t\t\ttitle: 'Filter Expression Editor',\r\n\t\t\t\tvalue: 8,\r\n\t\t\t\tsupportedKey: ['DataDefinitionPropertyName'],\r\n\t\t\t\teditorTypes: [{ name: 'Filter Expression Editor', value: PropertyEditorType.ExpressionFilter }],\r\n\t\t\t},\r\n\t\t];\r\n\r\n\t\tvm.editors.getByValue = function (value) {\r\n\t\t\treturn _.find(vm.editors, ['value', value]) || {};\r\n\t\t};\r\n\r\n\t\tvm.types = [\r\n\t\t\t{ name: 'GuidType', value: 0 },\r\n\t\t\t{ name: 'StringType', value: 1 },\r\n\t\t\t{ name: 'BoolType', value: 2 },\r\n\t\t\t{ name: 'DateType', value: 3 },\r\n\t\t\t{ name: 'IntType', value: 4 },\r\n\t\t\t{ name: 'FloatType', value: 5 },\r\n\t\t\t{ name: 'DecimalType', value: 6 },\r\n\t\t\t{ name: 'TextType', value: 7 },\r\n\t\t\t{ name: 'ObjectReference', value: 8 },\r\n\t\t\t{ name: 'EnumReference', value: 9 },\r\n\t\t\t{ name: 'Fragment', value: 10 },\r\n\t\t\t{ name: 'MultipleObjectReference', value: 11 },\r\n\t\t\t{ name: 'CurrencyType', value: 12 },\r\n\t\t\t{ name: 'ColorType', value: 15 },\r\n\t\t\t{ name: 'HtmlType', value: 16 },\r\n\t\t\t{ name: 'IsArray', value: 101 },\r\n\t\t];\r\n\r\n\t\tvm.schemaEditorMode = [\r\n\t\t\t{ name: 'Types', value: 1 },\r\n\t\t\t{ name: 'Classes', value: 2 },\r\n\t\t];\r\n\r\n\t\tvm.bindingTypeItems = [\r\n\t\t\t{ name: 'One Way', value: EditorBindingType.OneWay },\r\n\t\t\t{ name: 'Two Way', value: EditorBindingType.TwoWay },\r\n\t\t];\r\n\t};\r\n\r\n\t$scope.$watch('vm.value', function (newValue) {\r\n\t\tif (localChanged) {\r\n\t\t\tlocalChanged = false;\r\n\t\t} else {\r\n\t\t\tvm._value = JSON.parse(newValue) || {};\r\n\t\t\tif (vm.editor === undefined || vm.editor === -1) {\r\n\t\t\t\tvm.editors.some(function (editor) {\r\n\t\t\t\t\tvar result = editor.editorTypes.some(function (types) {\r\n\t\t\t\t\t\treturn types.value === vm._value.Type;\r\n\t\t\t\t\t});\r\n\t\t\t\t\tif (result) {\r\n\t\t\t\t\t\tvm.editor = editor.value;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t$scope.$watch(\r\n\t\t'vm._value',\r\n\t\tfunction (newValue) {\r\n\t\t\tlocalChanged = true;\r\n\t\t\tprocessValue(newValue);\r\n\t\t},\r\n\t\ttrue\r\n\t);\r\n\r\n\t$scope.$watch('vm.relatedTag', function (newValue) {\r\n\t\tif (newValue !== undefined) {\r\n\t\t\tsetValue('RelatedTag', vm.tags.getNameByValue(newValue));\r\n\t\t}\r\n\t});\r\n\r\n\t$scope.$watch(\r\n\t\tfunction (scope) {\r\n\t\t\treturn scope.vm.mode + (scope.vm.isMultiPicker ? 10 : 0) + (scope.vm.bindable ? 50 : 0);\r\n\t\t},\r\n\t\tfunction () {\r\n\t\t\tsetValue('Mode', vm.mode);\r\n\t\t\tsetValue('IsMultiPicker', vm.isMultiPicker);\r\n\t\t\tsetValue('Bindable', vm.bindable);\r\n\t\t}\r\n\t);\r\n\r\n\t$scope.$watch('vm.entityClassName', function (newValue) {\r\n\t\tsetValue('EntityClassName', newValue);\r\n\t});\r\n\r\n\t$scope.$watch('vm.allowedTypes', function (newValue) {\r\n\t\tsetValue('AllowedTypes', newValue);\r\n\t});\r\n\r\n\t$scope.$watch('vm.useObjectId', function (newValue) {\r\n\t\tsetValue('UseObjectId', newValue);\r\n\t});\r\n\r\n\t$scope.$watch('vm.useMultiSelect', function (newValue) {\r\n\t\tsetValue('UseMultiSelect', newValue);\r\n\t});\r\n\r\n\t$scope.$watch('vm.dataDefinitionPropertyName', function (newValue) {\r\n\t\tsetValue('DataDefinitionPropertyName', newValue);\r\n\t});\r\n\r\n\t$scope.$watch(\r\n\t\t'vm.supportedTypes',\r\n\t\tfunction (newValue) {\r\n\t\t\tstToArray(newValue);\r\n\t\t\tsetValue('SupportedTypes', supportedTypes);\r\n\t\t},\r\n\t\ttrue\r\n\t);\r\n\r\n\t$scope.$watch('vm.editor', function (newValue, oldValue) {\r\n\t\tif (newValue === undefined || newValue === oldValue) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar sk = vm.editors.getByValue(oldValue).supportedKey;\r\n\t\tif (sk) {\r\n\t\t\tvm._value[sk] = undefined;\r\n\t\t}\r\n\t\tvar editor = vm.editors.getByValue(newValue);\r\n\t\tvm.editorTypes = editor.editorTypes;\r\n\r\n\t\tif (\r\n\t\t\t!editor.editorTypes.some(function (type) {\r\n\t\t\t\treturn type.value === vm._value.Type;\r\n\t\t\t})\r\n\t\t) {\r\n\t\t\tif (newValue === 0 && type) {\r\n\t\t\t\tvm._value.Type = type;\r\n\t\t\t} else {\r\n\t\t\t\tvm._value.Type = editor.editorTypes[0].value;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tfunction stToArray(st) {\r\n\t\tvar arr = [];\r\n\t\t_.forIn(st, function (value, key) {\r\n\t\t\tif (value) {\r\n\t\t\t\tif (key === '101') {\r\n\t\t\t\t\tarr.push({ IsArray: true });\r\n\t\t\t\t} else {\r\n\t\t\t\t\tarr.push({ Type: key });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tsupportedTypes = arr;\r\n\t}\r\n\r\n\tfunction stFromArray() {\r\n\t\t_.forIn(vm.supportedTypes, function (value, key) {\r\n\t\t\tif (value) {\r\n\t\t\t\tvm.supportedTypes[key] = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tsupportedTypes.forEach(function (item) {\r\n\t\t\tif (item.Type === undefined) {\r\n\t\t\t\tvm.supportedTypes[101] = true;\r\n\t\t\t} else {\r\n\t\t\t\tvm.supportedTypes[item.Type] = true;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction strEnumerationFromJson() {\r\n\t\tif (enumeration) {\r\n\t\t\tvar arr = [];\r\n\t\t\tvar obj = JSON.parse(enumeration);\r\n\t\t\t_.forIn(obj, function (value, key) {\r\n\t\t\t\tarr.push(key + ':' + value);\r\n\t\t\t});\r\n\t\t\tvm.enumeration = arr.join('\\r\\n');\r\n\t\t} else {\r\n\t\t\tvm.enumeration = '';\r\n\t\t}\r\n\t}\r\n\r\n\tfunction strEnumerationToJson() {\r\n\t\tvar reg = /^(?:\\s+)?([\\w_\\-\\d.\\\\:\\\\ ]+?)(?:\\s+)?:(?:\\s+)?([\\w_\\-\\d.\\\\:\\\\ ]+?)(?:\\s+)?$/gim;\r\n\t\tvar obj = {};\r\n\r\n\t\tvar result;\r\n\t\twhile ((result = reg.exec(vm.enumeration))) {\r\n\t\t\tobj[result[1]] = result[2];\r\n\t\t}\r\n\r\n\t\tenumeration = JSON.stringify(obj).replace(/[\\\\/]/gi, '');\r\n\t\tsetValue('Enumeration', enumeration);\r\n\t}\r\n\r\n\tfunction processValue(value) {\r\n\t\tprocessEditor(value);\r\n\t\tprocessType(value);\r\n\t\tvar obj = angular.copy(value);\r\n\t\tobj.EntityClassName = obj.EntityClassName || undefined;\r\n\t\tobj.Enumeration = obj.Enumeration || undefined;\r\n\t\tobj.RelatedTag = obj.RelatedTag || undefined;\r\n\t\tvm.value = JSON.stringify(obj);\r\n\t}\r\n\r\n\tfunction processEditor(value) {\r\n\t\tif (vm.editor === 0) {\r\n\t\t\ttype = value.Type;\r\n\t\t}\r\n\r\n\t\tif (value.SupportedTypes) {\r\n\t\t\tsupportedTypes = value.SupportedTypes;\r\n\t\t\tstFromArray();\r\n\t\t}\r\n\r\n\t\tif (value.Enumeration) {\r\n\t\t\tenumeration = value.Enumeration;\r\n\t\t\tstrEnumerationFromJson();\r\n\t\t}\r\n\r\n\t\tif (value.Mode) {\r\n\t\t\tvm.mode = value.Mode;\r\n\t\t\tvm.bindable = value.Bindable;\r\n\t\t\tvm.isMultiPicker = value.IsMultiPicker;\r\n\t\t}\r\n\r\n\t\tif (value.RelatedTag) {\r\n\t\t\tvm.relatedTag = vm.tags.getValueByName(value.RelatedTag);\r\n\t\t}\r\n\r\n\t\tif (value.EntityClassName) {\r\n\t\t\tvm.entityClassName = value.EntityClassName;\r\n\t\t}\r\n\r\n\t\tif (value.AllowedTypes) {\r\n\t\t\tvm.allowedTypes = value.AllowedTypes;\r\n\t\t}\r\n\r\n\t\tif (value.UseObjectId) {\r\n\t\t\tvm.useObjectId = value.UseObjectId;\r\n\t\t}\r\n\r\n\t\tif (value.UseMultiSelect) {\r\n\t\t\tvm.useMultiSelect = value.UseMultiSelect;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction processType(value) {\r\n\t\tswitch (value.Type) {\r\n\t\t\tcase PropertyEditorType.String:\r\n\t\t\tcase PropertyEditorType.Text:\r\n\t\t\tcase PropertyEditorType.Boolean:\r\n\t\t\tcase PropertyEditorType.Integer:\r\n\t\t\tcase PropertyEditorType.Image:\r\n\t\t\tcase PropertyEditorType.Unit:\r\n\t\t\tcase PropertyEditorType.ComplexData:\r\n\t\t\tcase PropertyEditorType.Localizable:\r\n\t\t\t\tbreak;\r\n\t\t\tcase PropertyEditorType.StylePicker:\r\n\t\t\t\tvm.editor = 4;\r\n\t\t\t\tvalue.RelatedTag = vm.tags.getNameByValue(vm.relatedTag);\r\n\t\t\t\tbreak;\r\n\t\t\tcase PropertyEditorType.Enumeration: //enumeration\r\n\t\t\t\tvalue.Enumeration = enumeration;\r\n\t\t\t\tvm.editor = 3;\r\n\t\t\t\tbreak;\r\n\t\t\tcase PropertyEditorType.Bindable: //bindable\r\n\t\t\t\tvalue.SupportedTypes = supportedTypes;\r\n\t\t\t\tvm.editor = 1;\r\n\t\t\t\tbreak;\r\n\t\t\tcase PropertyEditorType.Schema: //schema\r\n\t\t\t\tvm.editor = 5;\r\n\t\t\t\tvalue.Mode = vm.mode;\r\n\t\t\t\tvalue.IsMultiPicker = vm.isMultiPicker;\r\n\t\t\t\tvalue.Bindable = vm.bindable;\r\n\t\t\t\tbreak;\r\n\t\t\tcase PropertyEditorType.ObjectPicker:\r\n\t\t\t\tvm.editor = 6;\r\n\t\t\t\tvalue.EntityClassName = vm.entityClassName;\r\n\t\t\t\tvalue.AllowedTypes = vm.allowedTypes;\r\n\t\t\t\tvalue.UseObjectId = vm.useObjectId;\r\n\t\t\t\tvalue.UseMultiSelect = vm.useMultiSelect;\r\n\t\t\t\tbreak;\r\n\t\t\tcase PropertyEditorType.DescriptorStylesPicker:\r\n\t\t\t\tvm.editor = 7;\r\n\t\t\t\tbreak;\r\n\t\t\tcase PropertyEditorType.ExpressionFilter:\r\n\t\t\t\tvm.editor = 8;\r\n\t\t\t\tvm.dataDefinitionPropertyName = value.DataDefinitionPropertyName;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setValue(key, value) {\r\n\t\tconst supportedKeys = vm.editors.getByValue(vm.editor).supportedKey;\r\n\t\tif (!supportedKeys) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet contains = false;\r\n\t\tif (typeof supportedKeys === 'string' && supportedKeys === key) {\r\n\t\t\tcontains = true;\r\n\t\t} else if (Array.isArray(supportedKeys) && supportedKeys.indexOf(key) !== -1) {\r\n\t\t\tcontains = true;\r\n\t\t}\r\n\r\n\t\tif (contains) {\r\n\t\t\tvm._value[key] = value;\r\n\t\t}\r\n\t}\r\n\r\n\tasync function loadStyles() {\r\n\t\tif (tags) {\r\n\t\t\treturn tags;\r\n\t\t}\r\n\r\n\t\ttags = [];\r\n\t\tconst classes = stylesService.loadClasses();\r\n\r\n\t\tclasses.forEach(function (cls) {\r\n\t\t\tif (cls.tags && Array.isArray(cls.tags)) {\r\n\t\t\t\ttags = tags.concat(cls.tags);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\ttags = _.uniq(tags).map(function (tag, i) {\r\n\t\t\treturn {\r\n\t\t\t\tvalue: i,\r\n\t\t\t\tname: tag,\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\ttags.getNameByValue = function (value) {\r\n\t\t\treturn (tags[value] || {}).name;\r\n\t\t};\r\n\r\n\t\ttags.getValueByName = function (name) {\r\n\t\t\treturn (_.find(tags, ['name', name]) || {}).value;\r\n\t\t};\r\n\r\n\t\treturn tags;\r\n\t}\r\n}\r\n","// Module\nvar code = \"
\\r\\n\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\r\\n\\t 1\\\">\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n
\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n
\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\r\\n
\";\n// Exports\nexport default code;","export class MxDatasetViewManagerController {\r\n\tstatic $inject = ['mx.shell.SearchProviderService', 'mx.shell.EventService', 'mx.SolutionBuilderAgent.EntityService', '$scope', '$q'];\r\n\r\n\tconstructor(searchService, eventService, entityService, $scope, $q) {\r\n\t\tObject.assign(this, { searchService, eventService, entityService, $scope, $q });\r\n\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.shell.EventCodes.Search,\r\n\t\t\t(event, searchOptions) => {\r\n\t\t\t\tif (searchOptions && (!searchOptions.searchForm.customFormConditions || searchOptions.searchForm.customFormConditions.length === 0)) {\r\n\t\t\t\t\tthis.resetForm = true;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\t}\r\n\r\n\t$onChanges(changes) {\r\n\t\tObject.keys(changes).forEach((propertyName) => {\r\n\t\t\tconst handlerName = propertyName + 'ChangeHandler';\r\n\t\t\tif (typeof this[handlerName] === 'function') {\r\n\t\t\t\tthis[handlerName](changes[propertyName].currentValue, changes[propertyName].previousValue);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tasync triggerDataReloadChangeHandler(reload) {\r\n\t\tif (reload && typeof this.mxSearchPageContentCtrl.onRefreshClick === 'function') {\r\n\t\t\tif (this.formConditions && Boolean(this.formConditions.length)) {\r\n\t\t\t\tconst promises = [];\r\n\t\t\t\tconst keys = Object.keys(this.formConditions);\r\n\t\t\t\tkeys.forEach((key) => {\r\n\t\t\t\t\tif (this.formConditions[key].hasOwnProperty('referenceTo')) {\r\n\t\t\t\t\t\tpromises.push(\r\n\t\t\t\t\t\t\tthis.entityService.getEnumeration(this.formConditions[key].referenceTo).then((enumeration) => {\r\n\t\t\t\t\t\t\t\tconst cond = this.formConditions[key];\r\n\t\t\t\t\t\t\t\tconst _enum = _.find(enumeration.Values, { Value: cond.value });\r\n\t\t\t\t\t\t\t\tif (_enum) {\r\n\t\t\t\t\t\t\t\t\tcond.value = _enum.DisplayString;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tawait Promise.all(promises);\r\n\t\t\t\t// Adds configuration form conditions\r\n\t\t\t\tconst currentSearch = this.searchService.currentSearch();\r\n\r\n\t\t\t\tif (!currentSearch.searchForm.hasOwnProperty('customFormConditions')) {\r\n\t\t\t\t\tcurrentSearch.searchForm.customFormConditions = this.formConditions;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcurrentSearch.searchForm.customFormConditions.length = 0;\r\n\t\t\t\t\tArray.prototype.push.apply(currentSearch.searchForm.customFormConditions, this.formConditions);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.mxSearchPageContentCtrl.onRefreshClick();\r\n\t\t\t} else {\r\n\t\t\t\t// Reload search with new conditions\r\n\t\t\t\tthis.mxSearchPageContentCtrl.onRefreshClick();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxDatasetViewManager', {\r\n\trequire: { mxSearchPageContentCtrl: '^mxSearchPageContent' },\r\n\tbindings: {\r\n\t\ttriggerDataReload: '<',\r\n\t\tformConditions: ' {\r\n\t\t\tvm.items = items;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction loadEnumeration() {\r\n\t\tlet loadPromise = mxEntityService.getEnumerationValues(vm.entityClassName, vm.filter).then((items) => (loadPromise !== vm.lastLoadPromise ? vm.lastLoadPromise : items));\r\n\r\n\t\tvm.lastLoadPromise = loadPromise;\r\n\t\treturn loadPromise;\r\n\t}\r\n\r\n\tvm.loadItems = async function () {\r\n\t\tif (!vm.entityClassName) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tlet items = await loadEnumeration();\r\n\t\tif (!items) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tif (vm.showValue === 'true') {\r\n\t\t\titems = items.map(function (item) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tDisplayString: item.DisplayString + ' (' + item.Value + ')',\r\n\t\t\t\t\tValue: item.Value,\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (!vm.model && vm.model !== 0 && vm.default !== undefined) {\r\n\t\t\tvm.model = vm.default;\r\n\t\t}\r\n\r\n\t\treturn items;\r\n\t};\r\n}\r\n\r\nconst commonPickerProperties = {\r\n\tentityClassName: '@',\r\n\tfilter: '=?',\r\n\tngRequired: '=?',\r\n\trequired: '=?require',\r\n\tdropdownHtmlClass: '@',\r\n};\r\n\r\nconst commonPickerTemplate =\r\n\t'data-name=\"{{vm.name}}\" ' +\r\n\t'data-label=\"{{vm.label}}\" ' +\r\n\t'data-hint=\"{{vm.hint}}\" ' +\r\n\t'ng-model=\"vm.model\" ' +\r\n\t'data-load-items=\"vm.loadItems\" ' +\r\n\t'data-items=\"vm.items\" ' +\r\n\t'data-no-label=\"vm.allowEmpty !== \\'true\\'\" ' +\r\n\t'allow-empty=\"{{vm.allowEmpty}}\" ' +\r\n\t'data-item-title-field=\"DisplayString\" ' +\r\n\t'data-item-id-field=\"Value\" ' +\r\n\t'data-disabled=\"vm.disabled\" ' +\r\n\t'data-read-only=\"vm.readOnly\" ' +\r\n\t'ng-required=\"(vm.required || vm.ngRequired) && !vm.disabled && !vm.readOnly\" ' +\r\n\t'data-on-change=\"vm.onChange()\" ' +\r\n\t'dropdown-html-class=\"{{::vm.dropdownHtmlClass}}\"' +\r\n\t'custom-validation=\"vm.customValidation\"';\r\n\r\nangular.module('mx.SolutionBuilderAgent').directive('mxEnumPicker', function mxEnumPickerDirective() {\r\n\tvar directive = new mx.components.FormControlBase(MxEnumPickerCtrl, null);\r\n\r\n\tdirective.template = '';\r\n\r\n\tangular.extend(directive.bindToController, commonPickerProperties);\r\n\tdirective.bindToController.default = '=?';\r\n\tdirective.bindToController.allowEmpty = '@';\r\n\tdirective.require.mxServiceContext = '?^mxServiceContext';\r\n\r\n\tdelete directive.link;\r\n\r\n\treturn directive;\r\n});\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name mx.components:mxMultiEnumPicker\r\n * @module mx.components\r\n * @restrict 'E'\r\n * @description\r\n * The mx-multi-enum-picker control is used to create a picker where user can select enums in multiple mode.\r\n *\r\n * The example below demonstrates some of the attributes you may use with the MultiEnumPicker control:\r\n * @param {string} entityClassName@ - SPS class where data should be loaded from.\r\n * @param {string} filter= - Expression to extract only specific records.\r\n * @param {string} required= - The required property sets or returns whether a mxMultiObjectPicker must be filled out before submitting a form.\r\n * @param {string} dropdownHtmlClass@ - This will be applied to the dropdown menu for styling.\r\n *\r\n * @usage \r\n */\r\nangular.module('mx.SolutionBuilderAgent').directive('mxMultiEnumPicker', function mxMultiEnumPickerDirective() {\r\n\tvar directive = new mx.components.FormControlBase(MxEnumPickerCtrl, null);\r\n\r\n\tdirective.template = '';\r\n\r\n\tangular.extend(directive.bindToController, commonPickerProperties);\r\n\tdirective.bindToController.showValue = '@';\r\n\tdirective.require.mxServiceContext = '?^mxServiceContext';\r\n\r\n\tdelete directive.link;\r\n\r\n\treturn directive;\r\n});\r\n","import { EventCodes } from '../../../../App/model/event-codes';\r\n\r\n(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').directive('mxWorkspaceCommonOrderPanel', function mxWorkspaceCommonOrderPanelDirective() {\r\n\t\tMxWorkspaceCommonOrderPanelCtrl.$inject = ['$scope', 'mx.app.DeviceService', 'mx.shell.EventService'];\r\n\r\n\t\tfunction MxWorkspaceCommonOrderPanelCtrl($scope, deviceService, eventService) {\r\n\t\t\tvar vm = this;\r\n\r\n\t\t\tvm.$onInit = function () {\r\n\t\t\t\tvm.sortFields = vm.preprocessor.sortableColumns.map(function (column) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tlabel: column.Name,\r\n\t\t\t\t\t\tonItemClick: function () {\r\n\t\t\t\t\t\t\tsetSort(column.Name, vm.preprocessor.sortedColumns[0].Sorting);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t};\r\n\r\n\t\t\tObject.defineProperties(vm, {\r\n\t\t\t\tisMobile: {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn deviceService.screenExtraSmall();\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tdirection: {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn vm.preprocessor.sortedColumns[0].Sorting === 1 ? 'asc' : 'desc'; // 1 (asc) or 2 (desc)\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tfield: {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn vm.preprocessor.sortedColumns[0].Name;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tsetSort(newValue, vm.preprocessor.sortedColumns[0].Sorting);\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tvm.changeDirection = function () {\r\n\t\t\t\tsetSort(vm.field, vm.direction === 'asc' ? 2 : 1);\r\n\t\t\t};\r\n\r\n\t\t\tfunction setSort(field, sorting) {\r\n\t\t\t\tconst sortOptions = [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: field,\r\n\t\t\t\t\t\tsorting: sorting,\r\n\t\t\t\t\t\tpriority: 0,\r\n\t\t\t\t\t},\r\n\t\t\t\t];\r\n\t\t\t\tvm.preprocessor.setSort(sortOptions);\r\n\r\n\t\t\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\t\t\teventName: `Data sorted`,\r\n\t\t\t\t\tsender: vm.preprocessor.parameters.id,\r\n\t\t\t\t\tsenderTitle: vm.preprocessor.parameters.name,\r\n\t\t\t\t\tcontextTypeId: vm.preprocessor.parameters.entities.map((entity) => entity.id),\r\n\t\t\t\t\tcontextTypeTitle: vm.preprocessor.parameters.entities.map((entity) => entity.name),\r\n\t\t\t\t\tcontextId: sortOptions,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\treturn vm;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\trestrict: 'E',\r\n\t\t\tscope: {},\r\n\t\t\tbindToController: { preprocessor: '<' },\r\n\t\t\tcontroller: MxWorkspaceCommonOrderPanelCtrl,\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-datasource-order-panel/mx-datasource-order-panel.html',\r\n\t\t};\r\n\t});\r\n})();\r\n","angular.module('mx.SolutionBuilderAgent').directive('mxHelp', mxHelpDirective);\r\n\r\nmxHelpDirective.$inject = ['$compile', 'mx.internationalization'];\r\n\r\nexport function mxHelpDirective($compile, i18n) {\r\n\treturn {\r\n\t\trequire: { mxSidePanel: '?^^mxSidePanel' },\r\n\t\tcontroller: MxHelpController,\r\n\t\tcontrollerAs: 'mxHelpController',\r\n\t\tlink: link,\r\n\t};\r\n\r\n\tfunction link(scope, element, attrs, ctrl) {\r\n\t\tconst id = Math.random() * 10.0e16;\r\n\r\n\t\tconst template = `\r\n\t\t\t\t\r\n\t\t\t\t\thelp_outline\r\n\t\t\t\t`;\r\n\r\n\t\tconst compiled = $compile(template)(scope);\r\n\t\tlet containerTitle;\r\n\r\n\t\tcompiled.prop('viewId', id);\r\n\r\n\t\tsetTimeout(function () {\r\n\t\t\tif (element.is('md-slider')) {\r\n\t\t\t\telement.after(compiled);\r\n\t\t\t} else if (element.is('mx-checkbox')) {\r\n\t\t\t\telement.find('.md-label').after(compiled);\r\n\t\t\t} else if (element.is('.mx-literal') || element.find('> .mx-literal').length) {\r\n\t\t\t\tconst label = element.find('label:visible');\r\n\t\t\t\tif (label.length > 0) {\r\n\t\t\t\t\tlabel.append(compiled);\r\n\t\t\t\t} else {\r\n\t\t\t\t\telement.find('.literal-value').after(compiled);\r\n\t\t\t\t}\r\n\t\t\t} else if (element.is('[mx-container]') && (containerTitle = element.find('> div > .panel-title')).length) {\r\n\t\t\t\tcontainerTitle.append(compiled);\r\n\t\t\t} else {\r\n\t\t\t\telement.append(compiled);\r\n\t\t\t}\r\n\t\t}, 1000);\r\n\t}\r\n}\r\n\r\nclass MxHelpController {\r\n\tstatic $inject = ['mx.SolutionBuilderAgent.ViewHelpService'];\r\n\r\n\tconstructor(viewHelpService) {\r\n\t\tthis.viewHelpService = viewHelpService;\r\n\t}\r\n\r\n\tshowContent(ev, calledFromSidePanel) {\r\n\t\tev.stopPropagation();\r\n\r\n\t\tconst target = angular.element(ev.target);\r\n\t\tconst slider = target.siblings('md-slider');\r\n\t\tconst isSlider = slider.length;\r\n\t\tconst mxHelp = target.closest('[mx-help]');\r\n\t\tlet content = mxHelp.attr('mx-help');\r\n\r\n\t\tif (isSlider) {\r\n\t\t\tcontent = slider.attr('mx-help');\r\n\t\t}\r\n\r\n\t\tthis.viewHelpService.showHelpPopup(content, calledFromSidePanel);\r\n\t}\r\n}\r\n","import { EventCodes } from '../../../../../App/model/event-codes';\r\n\r\nangular.module('mx.SolutionBuilderAgent').service('mx.SolutionBuilderAgent.FavouritesService', FavouritesService);\r\nFavouritesService.$inject = [\r\n\t'$q',\r\n\t'mx.internationalization',\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.LeftSidebarService',\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n\t'mx.SolutionBuilderAgent.WidgetManager',\r\n\t'mx.shell.AppsService',\r\n\t'mx.shell.SidePanelService',\r\n\t'mx.SolutionBuilderAgent.EntityService',\r\n\t'mx.shell.NavigationService',\r\n];\r\n\r\nexport function FavouritesService(\r\n\t$q,\r\n\ti18n,\r\n\teventService,\r\n\tleftSidebarService,\r\n\tpersonalizationService,\r\n\twidgetManager,\r\n\tappsService,\r\n\tsidePanelService,\r\n\tentityService,\r\n\tnavigationService\r\n) {\r\n\tvar self = this;\r\n\tvar initialized = false;\r\n\tvar favouriteViews = [];\r\n\tvar favouriteNavigations = [];\r\n\r\n\tself.init = init;\r\n\tself.toggleViewFavourite = toggleViewFavourite;\r\n\tself.openFavouriteView = openFavouriteView;\r\n\tself.isFavouriteEnabled = isFavouriteEnabled;\r\n\tself.toggleNavigationFavourite = toggleNavigationFavourite;\r\n\tself.filterNavigations = filterNavigations;\r\n\r\n\treturn self;\r\n\r\n\tfunction init() {\r\n\t\tappsService.getCurrentApplication().then(function (app) {\r\n\t\t\tself.enabled = !app.simpleNavigation && app.showFavourites;\r\n\r\n\t\t\tif (self.enabled && !initialized) {\r\n\t\t\t\tinitService();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction initService() {\r\n\t\tinitialized = true;\r\n\r\n\t\tleftSidebarService.addPanel({\r\n\t\t\tname: 'favourites',\r\n\t\t\ticon: 'star',\r\n\t\t\ttitle: i18n.get('solutionBuilderAgent.components.mx-favourites-items-panel.favouritesViews'),\r\n\t\t\torder: 30,\r\n\t\t\tdisable: true,\r\n\t\t\tcontent: '',\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(self, 'favouriteViews', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn favouriteViews;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(self, 'favouriteNavigations', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn favouriteNavigations;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\teventService.subscribeGlobal(mx.SolutionBuilderAgent.Events.ObjectDataDeleted, function (e, data) {\r\n\t\t\tif (data && Array.isArray(data.affectedObjectIds)) {\r\n\t\t\t\tdata.affectedObjectIds.forEach(function (objectId) {\r\n\t\t\t\t\tvar object = { Id: objectId };\r\n\r\n\t\t\t\t\tif (objectIsFavourite(object)) {\r\n\t\t\t\t\t\tremoveViewFromFavourites(object);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\teventService.subscribeGlobal(mx.SolutionBuilderAgent.Events.ObjectDisplayNameChanged, function (e, params) {\r\n\t\t\tvar needSave = false;\r\n\t\t\tfavouriteViews.forEach(function (view) {\r\n\t\t\t\tif (view.id === params.objectId && view.type === params.entityType) {\r\n\t\t\t\t\tview.displayName = params.displayName;\r\n\t\t\t\t\tneedSave = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tif (needSave) {\r\n\t\t\t\tsaveFavouriteViews();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\teventService.subscribeGlobal(mx.SolutionBuilderAgent.Events.ViewDataLoaded, function (e, view) {\r\n\t\t\tif (view) {\r\n\t\t\t\tview.favourite = objectIsFavourite(sidePanelService.getObjectDetailsFromView(view));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\teventService.subscribeGlobal(mx.shell.EventCodes.ObjectRemovedByWizard, function (e, object) {\r\n\t\t\tif (objectIsFavourite(object)) {\r\n\t\t\t\tremoveViewFromFavourites(object);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\teventService.subscribeGlobal(mx.shell.EventCodes.NavigationReload, function () {\r\n\t\t\tinitNavigationItems();\r\n\t\t});\r\n\r\n\t\tinitFavouriteViews();\r\n\t\tinitNavigationItems();\r\n\t}\r\n\r\n\tasync function initFavouriteViews() {\r\n\t\tconst favouritesObjectDetails = await personalizationService.getFavouriteViews();\r\n\t\tconst views = await Promise.all(favouritesObjectDetails.map((objectDetails) => widgetManager.getPreviewView(objectDetails)));\r\n\t\tfavouriteViews.length = 0;\r\n\t\tviews.filter((view) => view && typeof view === 'object').forEach((view) => favouriteViews.push(view));\r\n\t\tcheckFavouritesPanelStatus();\r\n\t}\r\n\r\n\tfunction toggleViewFavourite(view) {\r\n\t\tvar favouriteObject = sidePanelService.getObjectDetailsFromView(view);\r\n\r\n\t\tif (objectIsFavourite(favouriteObject)) {\r\n\t\t\tremoveViewFromFavourites(favouriteObject);\r\n\t\t\tview.favourite = false;\r\n\t\t} else {\r\n\t\t\taddViewToFavourites(favouriteObject);\r\n\t\t\tview.favourite = true;\r\n\t\t}\r\n\t}\r\n\r\n\tasync function addViewToFavourites(objectDetails) {\r\n\t\tconst view = await widgetManager.getPreviewView(objectDetails);\r\n\r\n\t\tif (view) {\r\n\t\t\teventService.dispatchEvent(EventCodes.TrackViewTelemetry, {\r\n\t\t\t\teventName: 'Item added to Favorites',\r\n\t\t\t\tview,\r\n\t\t\t});\r\n\t\t\tfavouriteViews.push(view);\r\n\t\t\tcheckFavouritesPanelStatus();\r\n\t\t\tsaveFavouriteViews();\r\n\t\t}\r\n\t\treturn favouriteViews;\r\n\t}\r\n\r\n\tfunction removeViewFromFavourites(objectDetails) {\r\n\t\tfavouriteViews.some(function (fView, index) {\r\n\t\t\tif (fView.id === objectDetails.Id && (!objectDetails.EntityType || fView.type === objectDetails.EntityType)) {\r\n\t\t\t\tconst [removedView] = favouriteViews.splice(index, 1);\r\n\t\t\t\teventService.dispatchEvent(EventCodes.TrackViewTelemetry, {\r\n\t\t\t\t\teventName: 'Item removed from Favorites',\r\n\t\t\t\t\tview: removedView,\r\n\t\t\t\t});\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t});\r\n\t\tcheckFavouritesPanelStatus();\r\n\t\tsaveFavouriteViews();\r\n\t\treturn $q.when(favouriteViews);\r\n\t}\r\n\r\n\tfunction saveFavouriteViews() {\r\n\t\tpersonalizationService.saveFavouriteViews(favouriteViews.map(sidePanelService.getObjectDetailsFromView));\r\n\t}\r\n\r\n\tfunction objectIsFavourite(objectDetails) {\r\n\t\treturn favouriteViews.some(function (fView) {\r\n\t\t\treturn objectDetails.Id === fView.id && (!objectDetails.EntityType || objectDetails.EntityType === fView.type);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction initNavigationItems() {\r\n\t\tpersonalizationService.getFavouriteNavigations().then(function (favouriteNavigationIds) {\r\n\t\t\tnavigationService.get().then(function (navItems) {\r\n\t\t\t\tfavouriteNavigations = [];\r\n\t\t\t\tnavItems.forEach(function (item) {\r\n\t\t\t\t\tinitItem(item, favouriteNavigationIds);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (favouriteNavigationIds.length) {\r\n\t\t\t\t\tfavouriteNavigationIds.forEach(function (itemId) {\r\n\t\t\t\t\t\tnavigationService.getNavigationItem(itemId).then(function (item) {\r\n\t\t\t\t\t\t\tinitItem(item, favouriteNavigationIds);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tcheckFavouritesPanelStatus(favouriteNavigationIds);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction initItem(item, favouriteNavigationIds) {\r\n\t\tvar idx = favouriteNavigationIds.indexOf(item.id);\r\n\t\tif (idx >= 0) {\r\n\t\t\titem.favourite = true;\r\n\t\t\tfavouriteNavigations.push(item);\r\n\t\t\tfavouriteNavigationIds.splice(idx, 1);\r\n\t\t}\r\n\t\tif (item.children.length) {\r\n\t\t\titem.children.forEach(function (chItem) {\r\n\t\t\t\tinitItem(chItem, favouriteNavigationIds);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tsetNavigationShowInFavourite(item);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.FavouritesService#filterNavigations\r\n\t *\r\n\t * @description\r\n\t * applies value of filter in Favourites Items panel to current favourites Navigation Items set\r\n\t *\r\n\t * @param {string} filterText - value of search box in Favourites Items panel\r\n\t *\r\n\t * @returns {array} an array of Navigation Items which contains filterText in title.\r\n\t */\r\n\tfunction filterNavigations(filterText) {\r\n\t\tif (!filterText) {\r\n\t\t\tinitNavigationItems();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tfilterText = filterText.toLowerCase();\r\n\r\n\t\tfavouriteNavigations.forEach(function (item) {\r\n\t\t\titem.showInFavorite = item.title.toLowerCase().indexOf(filterText) >= 0;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.FavouritesService#toggleNavigationFavourite\r\n\t *\r\n\t * @description\r\n\t * toggles state of showing in favourite panel for Navigation Item\r\n\t *\r\n\t * @param {MxNavigationItem} favouriteItem - a Navigation Item for toggling state of showing\r\n\t */\r\n\tfunction toggleNavigationFavourite(favouriteItem) {\r\n\t\tif (favouriteItem.favourite) {\r\n\t\t\tvar index = favouriteNavigations.indexOf(favouriteItem);\r\n\t\t\tif (index >= 0) {\r\n\t\t\t\tfavouriteNavigations.splice(index, 1);\r\n\t\t\t\tfavouriteItem.favourite = false;\r\n\t\t\t\tsetNavigationShowInFavourite(favouriteItem);\r\n\r\n\t\t\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\t\t\teventName: 'Navigation item removed from Favorites',\r\n\t\t\t\t\tsender: favouriteItem.id,\r\n\t\t\t\t\tsenderTitle: favouriteItem.technicalName,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfavouriteNavigations.push(favouriteItem);\r\n\t\t\tfavouriteItem.favourite = true;\r\n\t\t\tsetNavigationShowInFavourite(favouriteItem);\r\n\r\n\t\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\t\teventName: 'Navigation item added to Favorites',\r\n\t\t\t\tsender: favouriteItem.id,\r\n\t\t\t\tsenderTitle: favouriteItem.technicalName,\r\n\t\t\t});\r\n\t\t}\r\n\t\tsaveFavouriteNavigations();\r\n\t\tcheckFavouritesPanelStatus();\r\n\t}\r\n\r\n\tfunction setNavigationShowInFavourite(item) {\r\n\t\titem.showInFavorite = item.favourite;\r\n\t\tif (item.children.length) {\r\n\t\t\titem.children.some(function (subItem) {\r\n\t\t\t\tif (subItem.showInFavorite) {\r\n\t\t\t\t\titem.showInFavorite = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (item.parent) {\r\n\t\t\tsetNavigationShowInFavourite(item.parent);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction saveFavouriteNavigations() {\r\n\t\tpersonalizationService.saveFavouriteNavigations(\r\n\t\t\tfavouriteNavigations.map(function (item) {\r\n\t\t\t\treturn item.id;\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tfunction checkFavouritesPanelStatus() {\r\n\t\tif (favouriteViews.length || favouriteNavigations.length) {\r\n\t\t\tleftSidebarService.enablePanel('favourites');\r\n\t\t} else {\r\n\t\t\tleftSidebarService.disablePanel('favourites');\r\n\t\t}\r\n\t}\r\n\r\n\tfunction openFavouriteView(view) {\r\n\t\teventService.dispatchEvent(EventCodes.TrackViewTelemetry, {\r\n\t\t\teventName: 'Favorites item opened',\r\n\t\t\tview,\r\n\t\t});\r\n\r\n\t\tvar objDetails = sidePanelService.getObjectDetailsFromView(view);\r\n\t\tvar typeName = (objDetails.EntityType || '').toLowerCase();\r\n\r\n\t\tif (typeName === 'spsactivitytypeticket' || typeName === 'spsactivitytypeincident' || typeName === 'spsactivitytypeservicerequest') {\r\n\t\t\tentityService.getObjectTypeName(objDetails.Id).then(function (typeName) {\r\n\t\t\t\tif (typeName) {\r\n\t\t\t\t\tobjDetails.EntityType = typeName;\r\n\t\t\t\t}\r\n\t\t\t\tinternalOpenFavouriteView(view, objDetails);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tinternalOpenFavouriteView(view, objDetails);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction internalOpenFavouriteView(view, objDetails) {\r\n\t\twidgetManager.getPreviewView(objDetails).then(function (newView) {\r\n\t\t\t/* check if type of the object hasn't been changed. Ex.: ticket onto incident. If type was changed -> set new view */\r\n\t\t\tif (!newView || view.type === newView.type) {\r\n\t\t\t\tsidePanelService.addView(view).catch(mx.logCatch);\r\n\t\t\t} else {\r\n\t\t\t\tvar favIndex = favouriteViews.indexOf(view);\r\n\t\t\t\tif (favIndex >= 0 && newView) {\r\n\t\t\t\t\tfavouriteViews.splice(favIndex, 1, newView);\r\n\t\t\t\t}\r\n\t\t\t\tif (newView) {\r\n\t\t\t\t\tsidePanelService.addView(newView).catch(mx.logCatch);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tsidePanelService.handleItemSelectionOnMobile();\r\n\t\t});\r\n\t}\r\n\r\n\tfunction isFavouriteEnabled(view, navigationItem) {\r\n\t\treturn (\r\n\t\t\tself.enabled &&\r\n\t\t\t(navigationItem ||\r\n\t\t\t\t(view &&\r\n\t\t\t\t\tsidePanelService.getObjectDetailsFromView(view).Id &&\r\n\t\t\t\t\t(view.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.Preview || view.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.Edit)))\r\n\t\t);\r\n\t}\r\n}\r\n","import { EventCodes } from '../../../../../App/model/event-codes';\r\n\r\nangular.module('mx.SolutionBuilderAgent').service('mx.SolutionBuilderAgent.RecentService', RecentService);\r\nRecentService.$inject = [\r\n\t'mx.internationalization',\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.LeftSidebarService',\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n\t'mx.SolutionBuilderAgent.WidgetManager',\r\n\t'mx.shell.NavigationManager',\r\n\t'mx.shell.AppsService',\r\n\t'mx.shell.SidePanelService',\r\n\t'mx.shell.SideLayout',\r\n];\r\n\r\nexport function RecentService(i18n, eventService, leftSidebarService, personalizationService, widgetManager, navigationManager, appsService, sidePanelService, sideLayoutService) {\r\n\tconst self = this;\r\n\tvar initialized = false;\r\n\r\n\tvar recentWithoutInProgressViews = [],\r\n\t\trecentViews = [],\r\n\t\tisActivatedManually = false;\r\n\r\n\tvar MAX_RECENT_SIZE = 20;\r\n\r\n\tself.init = init;\r\n\tself.addToRecent = addToRecent;\r\n\tself.openRecentView = openRecentView;\r\n\tself.clearRecent = clearRecent;\r\n\r\n\treturn self;\r\n\r\n\tfunction init() {\r\n\t\tappsService.getCurrentApplication().then(function (app) {\r\n\t\t\tself.enabled = !app.simpleNavigation && app.showRecent;\r\n\r\n\t\t\tif (self.enabled && !initialized) {\r\n\t\t\t\tinitService();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction initService() {\r\n\t\tinitialized = true;\r\n\r\n\t\tleftSidebarService.addPanel({\r\n\t\t\tname: 'recent',\r\n\t\t\ticon: 'history',\r\n\t\t\ttitle: i18n.get('solutionBuilderAgent.components.mx-recent-items-panel.recentItems'),\r\n\t\t\torder: 20,\r\n\t\t\tdisable: true,\r\n\t\t\tcontent: '',\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(self, 'recentWithoutInProgressViews', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn recentWithoutInProgressViews;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\teventService.subscribeGlobal(mx.shell.EventCodes.SidePanelInProgressViewsChanged, function () {\r\n\t\t\tupdateRecentAndOpenedViewList();\r\n\t\t});\r\n\r\n\t\teventService.subscribeGlobal(mx.SolutionBuilderAgent.Events.ViewDataLoaded, function (e, view) {\r\n\t\t\taddToRecent(view);\r\n\t\t});\r\n\r\n\t\teventService.subscribeGlobal(mx.shell.EventCodes.LeftSidebarTabChanged, (e, { isTabChangedByUserManually, panelName }) => {\r\n\t\t\tisActivatedManually = isTabChangedByUserManually && panelName === 'recent';\r\n\t\t});\r\n\r\n\t\teventService.subscribeGlobal(mx.SolutionBuilderAgent.Events.ObjectDataDeleted, function (e, data) {\r\n\t\t\tif (data && Array.isArray(data.affectedObjectIds)) {\r\n\t\t\t\tdata.affectedObjectIds.forEach(function (objectId) {\r\n\t\t\t\t\tvar object = { Id: objectId };\r\n\t\t\t\t\tremoveFromRecent(object);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\teventService.subscribeGlobal(mx.SolutionBuilderAgent.Events.ObjectDisplayNameChanged, function (e, params) {\r\n\t\t\tvar needSave = false;\r\n\t\t\trecentViews.forEach(function (view) {\r\n\t\t\t\tif (view.id === params.objectId && view.type === params.entityType) {\r\n\t\t\t\t\tview.displayName = params.displayName;\r\n\t\t\t\t\tneedSave = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tif (needSave) {\r\n\t\t\t\tsaveRecentViews();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\teventService.subscribeGlobal(mx.shell.EventCodes.ObjectRemovedByWizard, function (e, object) {\r\n\t\t\tremoveFromRecent(object);\r\n\t\t});\r\n\r\n\t\tinitRecentViews();\r\n\t}\r\n\r\n\tasync function initRecentViews() {\r\n\t\tconst recentObjectDetails = await personalizationService.getRecentViews();\r\n\t\trecentViews.length = 0;\r\n\r\n\t\tconst views = await Promise.all(recentObjectDetails.map((objectDetails) => widgetManager.getPreviewView(objectDetails)));\r\n\r\n\t\tviews\r\n\t\t\t.filter((view) => view && typeof view === 'object')\r\n\t\t\t.forEach((view, index) => {\r\n\t\t\t\tconst duplicate = recentViews.some((rView) => !view || (view.id === rView.id && view.type === rView.type));\r\n\t\t\t\tif (!duplicate) {\r\n\t\t\t\t\tview.openingTime = views.length - index;\r\n\t\t\t\t\trecentViews.push(view);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\tupdateRecentAndOpenedViewList();\r\n\t}\r\n\r\n\tasync function addToRecent(view) {\r\n\t\tview.openingTime = view.openingTime || Date.now();\r\n\r\n\t\tif (view.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.Edit || view.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.Preview) {\r\n\t\t\tconst initialObjectDetails = sidePanelService.getObjectDetailsFromView(view);\r\n\r\n\t\t\trecentViews.some(function (rView, index) {\r\n\t\t\t\tif (rView.context._id === view.context._id /* && rView.type === view.type*/) {\r\n\t\t\t\t\trecentViews.splice(index, 1);\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (view.finishDefer) {\r\n\t\t\t\trecentViews.unshift(view);\r\n\t\t\t\tview.finishDefer.promise.catch(mx.logCatch).finally(async function () {\r\n\t\t\t\t\tconst newObjectDetails = sidePanelService.getObjectDetailsFromView(view);\r\n\t\t\t\t\tconst newView = await widgetManager.getPreviewView(newObjectDetails);\r\n\r\n\t\t\t\t\tconst index = recentViews.indexOf(view);\r\n\t\t\t\t\tif (index < 0) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tnewView.openingTime = view.openingTime;\r\n\t\t\t\t\tnewView.context._displayName = view.context._displayName;\r\n\t\t\t\t\trecentViews[index] = newView;\r\n\r\n\t\t\t\t\tif (JSON.stringify(initialObjectDetails) !== JSON.stringify(newObjectDetails)) {\r\n\t\t\t\t\t\tsaveRecentViews();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tupdateRecentAndOpenedViewList();\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconst recentView = await widgetManager.getPreviewView(initialObjectDetails);\r\n\t\t\t\trecentView.openingTime = view.openingTime;\r\n\t\t\t\trecentViews.unshift(recentView);\r\n\t\t\t}\r\n\r\n\t\t\tif (recentViews.length > MAX_RECENT_SIZE) {\r\n\t\t\t\trecentViews.splice(recentViews.length - 1, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsaveRecentViews();\r\n\t\tupdateRecentAndOpenedViewList();\r\n\t\treturn recentViews;\r\n\t}\r\n\r\n\tfunction removeFromRecent(object) {\r\n\t\trecentViews\r\n\t\t\t.filter(function (rView) {\r\n\t\t\t\treturn rView.id === object.Id && (!object.EntityType || rView.type === object.EntityType);\r\n\t\t\t})\r\n\t\t\t.forEach(function (removeView) {\r\n\t\t\t\trecentViews.splice(recentViews.indexOf(removeView), 1);\r\n\t\t\t});\r\n\r\n\t\tsaveRecentViews();\r\n\t\tupdateRecentAndOpenedViewList();\r\n\t}\r\n\r\n\tfunction saveRecentViews() {\r\n\t\tpersonalizationService.saveRecentViews(recentViews.map(sidePanelService.getObjectDetailsFromView));\r\n\t}\r\n\r\n\tasync function openRecentView(view) {\r\n\t\teventService.dispatchEvent(EventCodes.TrackViewTelemetry, {\r\n\t\t\teventName: 'Recent item opened',\r\n\t\t\tview,\r\n\t\t});\r\n\r\n\t\tisActivatedManually = true;\r\n\t\tif (sidePanelService.isViewOpened(view)) {\r\n\t\t\tsidePanelService.addView(view).catch(mx.logCatch);\r\n\t\t} else {\r\n\t\t\tconst objDetails = sidePanelService.getObjectDetailsFromView(view);\r\n\t\t\tconst newView = await widgetManager.getPreviewView(objDetails);\r\n\t\t\tif (newView) {\r\n\t\t\t\tnewView.openingTime = view.openingTime;\r\n\t\t\t\tsidePanelService.addView(newView).catch(mx.logCatch);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsidePanelService.handleItemSelectionOnMobile();\r\n\t}\r\n\r\n\tfunction clearRecent() {\r\n\t\trecentViews.length = 0;\r\n\t\tsaveRecentViews();\r\n\t\tupdateRecentAndOpenedViewList();\r\n\t}\r\n\r\n\tfunction checkRecentPanelStatus() {\r\n\t\tif (recentWithoutInProgressViews.length || sidePanelService.inProgressViews.length) {\r\n\t\t\tleftSidebarService.enablePanel('recent');\r\n\t\t\tif (sidePanelService.currentView?.tabs?.length > 1 || sidePanelService.currentView?.locals?.wizard?.allWizardSteps?.length > 1) {\r\n\t\t\t\tnavigationManager.collapsedMode = false;\r\n\t\t\t\tleftSidebarService.showPanelByName('recent');\r\n\t\t\t} else if (!isActivatedManually && !sideLayoutService.fullScreenMode && leftSidebarService.getCurrentPanelName() === 'recent') {\r\n\t\t\t\tleftSidebarService.showPanelByName('navigation');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tleftSidebarService.disablePanel('recent');\r\n\t\t}\r\n\t}\r\n\r\n\tfunction updateRecentAndOpenedViewList() {\r\n\t\trecentWithoutInProgressViews = recentViews\r\n\t\t\t.filter(function (view) {\r\n\t\t\t\treturn !sidePanelService.isViewInProgress(view);\r\n\t\t\t})\r\n\t\t\t.sort(function (viewA, viewB) {\r\n\t\t\t\treturn viewA.openingTime < viewB.openingTime ? 1 : viewA.openingTime === viewB.openingTime ? 0 : -1;\r\n\t\t\t});\r\n\r\n\t\tcheckRecentPanelStatus();\r\n\r\n\t\treturn recentWithoutInProgressViews;\r\n\t}\r\n}\r\n","import { EventCodes } from '../../../../../App/model/event-codes';\r\n\r\n(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxViewLink', {\r\n\t\tbindings: {\r\n\t\t\tactive: '<',\r\n\t\t\tview: '<',\r\n\t\t\tshowDetails: '<',\r\n\t\t\tonClick: '<',\r\n\t\t\tonTabChanged: '&',\r\n\t\t},\r\n\t\tcontroller: MxViewLink,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-left-side-panel/mx-view-link/mx-view-link.html',\r\n\t});\r\n\r\n\tMxViewLink.$inject = ['$scope', 'mx.shell.EventService', 'mx.app.ColorService', 'mx.app.ThemeService'];\r\n\r\n\tfunction MxViewLink($scope, eventService, colorService, themeService) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tif (!vm.view) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tsetBorderColor();\r\n\r\n\t\t\tif (vm.view.isWizard) {\r\n\t\t\t\tObject.defineProperty(vm, 'tabs', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t(vm.view.locals.wizard &&\r\n\t\t\t\t\t\t\t\t(vm.view.locals.wizard.allWizardSteps || []).sort(function (step1, step2) {\r\n\t\t\t\t\t\t\t\t\treturn step1.orderNum - step2.orderNum < 0 ? -1 : step1.orderNum === step2.orderNum ? 0 : 1;\r\n\t\t\t\t\t\t\t\t})) ||\r\n\t\t\t\t\t\t\t[]\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\r\n\t\t\t\tObject.defineProperty(vm, 'currentTab', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn vm.tabs[vm.view.locals.wizard.currentStep];\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tvm.onTabClick = function (tab) {\r\n\t\t\t\t\teventService.dispatchEvent(EventCodes.TrackViewTelemetry, {\r\n\t\t\t\t\t\teventName: 'Dialog tab switched',\r\n\t\t\t\t\t\tview: vm.view,\r\n\t\t\t\t\t\tpropsModifier: (props) => ({\r\n\t\t\t\t\t\t\t...props,\r\n\t\t\t\t\t\t\tsender: `${props.sender}_${tab.Id}`,\r\n\t\t\t\t\t\t\tsenderTitle: `${props.senderTitle}_${tab.Key}`,\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tvm.view.selectedTab = tab;\r\n\t\t\t\t\tvm.onTabChanged({ tab: tab });\r\n\t\t\t\t};\r\n\t\t\t\tvm.isClickable = true;\r\n\r\n\t\t\t\tObject.defineProperty(vm, 'tabs', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn vm.view.tabs;\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\r\n\t\t\t\tObject.defineProperty(vm, 'currentTab', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn vm.view.selectedTab;\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\r\n\t\t\t\tObject.defineProperty(vm, 'edited', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn vm.view.opened && vm.view.dialogType !== mx.SolutionBuilderAgent.ContentWidgetDialogAction.Preview;\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\teventService.subscribeTo(mx.shell.EventCodes.ThemeChanged, setBorderColor, $scope);\r\n\r\n\t\tasync function setBorderColor() {\r\n\t\t\tlet viewColor = vm.view.headerColor;\r\n\t\t\tconst theme = await themeService.getCurrentTheme();\r\n\t\t\tvm.borderColor = mx.isEnhancedColorContrastMode ? colorService.enhanceColorContrast(viewColor, theme['body-bg-color'], 3.3) : viewColor;\r\n\t\t}\r\n\r\n\t\treturn vm;\r\n\t}\r\n})();\r\n","import * as angular from 'angular';\r\n\r\nexport class BaseSideBarWidget {\r\n\tpublic visible = true;\r\n\tpublic order = 1;\r\n\tpublic content = 'DEFAULT WIDGET TEMPLATE';\r\n\r\n\tconstructor(options: { order?: number; content?: string } = {}) {\r\n\t\tthis.order = options.order || this.order;\r\n\t\tthis.content = options.content || this.content;\r\n\t}\r\n}\r\n\r\nexport class SideBarWidgetsFactory {\r\n\tpublic createNavigationWidget(order?: number) {\r\n\t\treturn new BaseSideBarWidget({\r\n\t\t\torder,\r\n\t\t\tcontent: '',\r\n\t\t});\r\n\t}\r\n}\r\n\r\nangular.module('mx.SolutionBuilderAgent').service('mx.SolutionBuilderAgent.SideBarWidgetsFactory', SideBarWidgetsFactory);\r\n","import * as angular from 'angular';\r\nimport type { BaseSideBarWidget } from './mx-widgets-factory';\r\nimport type { SideBarWidgetsFactory } from './mx-widgets-factory';\r\nimport type { MxShellLeftSidebarService } from '../../../../Pandora/components/mx-shell-left-sidebar/mx-shell-left-sidebar-service';\r\nimport type { MxApplicationService } from '../../../../../App/services/mx-application-service';\r\n\r\nexport class MxShellWidgetsPanelService {\r\n\tstatic $inject = ['mx.SolutionBuilderAgent.SideBarWidgetsFactory', 'mx.shell.LeftSidebarService', 'mx.shell.AppsService'];\r\n\r\n\tpublic readonly widgets: BaseSideBarWidget[] = [];\r\n\tpublic navigationWidget?: BaseSideBarWidget;\r\n\r\n\tprivate _visible = false;\r\n\tpublic get visible() {\r\n\t\treturn this._visible;\r\n\t}\r\n\r\n\tprivate _enabled = false;\r\n\tpublic get enabled() {\r\n\t\treturn this._enabled;\r\n\t}\r\n\r\n\tprivate _initialized = false;\r\n\tpublic get initialized() {\r\n\t\treturn this._initialized;\r\n\t}\r\n\r\n\tconstructor(\r\n\t\tprivate readonly sideBarWidgetsFactory: SideBarWidgetsFactory,\r\n\t\tprivate readonly leftSidebarService: MxShellLeftSidebarService,\r\n\t\tprivate readonly appsService: MxApplicationService\r\n\t) {}\r\n\r\n\tpublic async init() {\r\n\t\tconst app = await this.appsService.getCurrentApplication();\r\n\t\tthis._enabled = Boolean(app.simpleNavigation);\r\n\r\n\t\tif (this.enabled && !this.initialized) {\r\n\t\t\tthis.initService();\r\n\t\t\tthis._initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate initService() {\r\n\t\tthis.leftSidebarService.addPanel({\r\n\t\t\tname: 'widgets',\r\n\t\t\ticon: 'list',\r\n\t\t\ttitle: '', //i18n.get('solutionBuilderAgent.common.widgets'),\r\n\t\t\torder: 10,\r\n\t\t\tdisable: true,\r\n\t\t\tcontent: '',\r\n\t\t});\r\n\r\n\t\tthis.addWidgetByType('navigation');\r\n\t}\r\n\r\n\tpublic addWidget(widget: BaseSideBarWidget) {\r\n\t\tthis.widgets.push(widget);\r\n\r\n\t\tthis.widgets.sort((widgetA, widgetB) => widgetA.order - widgetB.order);\r\n\r\n\t\tthis.checkVisibility();\r\n\t}\r\n\r\n\tpublic addWidgetByType(widgetType: string, order?: number) {\r\n\t\tswitch (widgetType) {\r\n\t\t\tcase 'navigation':\r\n\t\t\t\tthis.navigationWidget = this.sideBarWidgetsFactory.createNavigationWidget(order);\r\n\t\t\t\tthis.addWidget(this.navigationWidget as BaseSideBarWidget);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic showWidget(widget: BaseSideBarWidget) {\r\n\t\twidget.visible = true;\r\n\t\tthis.checkVisibility();\r\n\t}\r\n\r\n\tpublic hideWidget(widget: BaseSideBarWidget) {\r\n\t\twidget.visible = false;\r\n\t\tthis.checkVisibility();\r\n\t}\r\n\r\n\tprivate checkVisibility() {\r\n\t\tthis._visible = !this.widgets.every((widget) => !widget.visible);\r\n\t\tif (this.visible) {\r\n\t\t\tthis.leftSidebarService.enablePanel('widgets');\r\n\t\t} else {\r\n\t\t\tthis.leftSidebarService.disablePanel('widgets');\r\n\t\t}\r\n\t}\r\n}\r\n\r\nangular.module('mx.SolutionBuilderAgent').service('mx.SolutionBuilderAgent.WidgetsPanelService', MxShellWidgetsPanelService);\r\n","import { module, IController, IAugmentedJQuery, IScope, ITimeoutService, IOnChangesObject } from 'angular';\r\nimport { I18n } from '../../../../i18n/mx-internationalization';\r\nimport template from './mx-load-file.html';\r\nimport { SourceLoadingStatus } from '../../model/enumerations';\r\n\r\nexport class MxLoadFileCtrl implements IController {\r\n\tpublic contentType?: 'stream' | 'base64' | 'text';\r\n\tpublic value?: File | string | ArrayBuffer | null;\r\n\tpublic label?: string;\r\n\tpublic fileNameOut?: string;\r\n\tpublic filesFilter?: string;\r\n\tpublic sourceState?: number;\r\n\tpublic required?: boolean;\r\n\r\n\tprivate showLoading = false;\r\n\tprivate fileName?: string;\r\n\r\n\tpublic static $inject = ['$element', '$scope', '$timeout', 'mx.internationalization'];\r\n\tconstructor(readonly $element: IAugmentedJQuery, readonly $scope: IScope, readonly $timeout: ITimeoutService, readonly i18n: I18n) {}\r\n\r\n\tpublic $onInit() {\r\n\t\tthis.fileName = this.i18n.get('solutionBuilderAgent.components.mx-load-file.chooseFile');\r\n\t\tthis.showLoading = false;\r\n\t}\r\n\r\n\tpublic $postLink() {\r\n\t\tconst container = this.$element.find('input');\r\n\t\tcontainer[0].addEventListener<'change'>('change', (evt) => this.onChange(evt), false);\r\n\t}\r\n\r\n\tpublic $onChanges(changes: IOnChangesObject) {\r\n\t\tif (changes.sourceState) {\r\n\t\t\tif (changes.sourceState.currentValue === SourceLoadingStatus.LOADED || changes.sourceState.currentValue === SourceLoadingStatus.REJECTED) {\r\n\t\t\t\tthis.$timeout(() => (this.showLoading = false), 400);\r\n\t\t\t} else if (changes.sourceState.currentValue === SourceLoadingStatus.LOADING) {\r\n\t\t\t\tthis.showLoading = true;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate onChange(evt: Event) {\r\n\t\tconst files = (evt.target as HTMLInputElement).files;\r\n\t\tconst reader = new FileReader();\r\n\r\n\t\tif (files && files.length > 0) {\r\n\t\t\tthis.fileName = this.fileNameOut = files[0].name;\r\n\r\n\t\t\tif (this.contentType === 'stream') {\r\n\t\t\t\tthis.$scope.$evalAsync(() => {\r\n\t\t\t\t\tthis.value = files[0];\r\n\t\t\t\t});\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\treader.onloadend = () => {\r\n\t\t\t\tif (reader.error === null) {\r\n\t\t\t\t\tconst result = reader.result;\r\n\t\t\t\t\tthis.$scope.$evalAsync(() => {\r\n\t\t\t\t\t\tthis.value = this.contentType === 'base64' ? (result as string).split('base64,')[1] : result;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tif (this.contentType === 'text') {\r\n\t\t\t\treader.readAsText(files[0]);\r\n\t\t\t} else if (this.contentType === 'base64') {\r\n\t\t\t\treader.readAsDataURL(files[0]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport const MxLoadFileComponent = {\r\n\tbindings: {\r\n\t\tvalue: '=?',\r\n\t\tlabel: '@',\r\n\t\tfileNameOut: '=?fileName',\r\n\t\tfilesFilter: '@',\r\n\t\tcontentType: '@',\r\n\t\tsourceState: '<',\r\n\t\trequired: '=?ngRequired',\r\n\t},\r\n\tcontroller: MxLoadFileCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate,\r\n};\r\n\r\nmodule('mx.SolutionBuilderAgent').component('mxLoadFile', MxLoadFileComponent);\r\n","// Module\nvar code = \"
\\r\\n\\t\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\tfile_upload\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n
\\r\\n\";\n// Exports\nexport default code;","'use strict';\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxObjectJournal', {\r\n\trequire: {\r\n\t\tmxFormCtrl: '?^mxForm',\r\n\t\tparentViewController: '?^^mxView',\r\n\t},\r\n\tbindings: {\r\n\t\tobjectId: '@',\r\n\t\tentity: '@',\r\n\t\titemsPerPage: '= 3) {\r\n\t\t\t\tconst details = {\r\n\t\t\t\t\tEntityType: $event.target.classList[2],\r\n\t\t\t\t\tId: $event.target.classList[1],\r\n\t\t\t\t\tDisplayString: $event.target.innerText,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (mx.components.Utils.isGuid(details.Id)) {\r\n\t\t\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.ForceOpenObjectDetails, details);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tasync function getJournalData(start, count) {\r\n\t\tconst allowedInPortal = !vm.setVisibleInPortal;\r\n\r\n\t\ttry {\r\n\t\t\tconst regex = /\"\\/SPS\\/Forms\\/(AttachmentDownload\\.aspx|AttachmentHandler\\.ashx)?[^\"]*FileID=([^&]+)[^\"]*\"/g;\r\n\t\t\tconst data = (await journalService.get(vm.objectId, allowedInPortal, start, count, '{2}')) || [];\r\n\t\t\tconst files = (await attachmentService.getFilesForObject(vm.objectId)) || [];\r\n\t\t\tconst processedData = await Promise.all(\r\n\t\t\t\tdata.map(async function (item) {\r\n\t\t\t\t\tasync function replaceUrls(text) {\r\n\t\t\t\t\t\tconst matches = Array.from(text.matchAll(regex));\r\n\t\t\t\t\t\tconst replacements = await Promise.all(\r\n\t\t\t\t\t\t\tmatches.map(async ([fileUrlMatch, , fileId]) => {\r\n\t\t\t\t\t\t\t\tconst fileInfo = files.find((file) => file.id === fileId);\r\n\t\t\t\t\t\t\t\tconst fileUrl = fileInfo\r\n\t\t\t\t\t\t\t\t\t? await attachmentService.getFileUrl({\r\n\t\t\t\t\t\t\t\t\t\t\tid: fileId,\r\n\t\t\t\t\t\t\t\t\t\t\tproviderId: fileInfo.providerId,\r\n\t\t\t\t\t\t\t\t\t\t\tsendContentThroughServer: fileInfo.sendContentThroughServer,\r\n\t\t\t\t\t\t\t\t\t })\r\n\t\t\t\t\t\t\t\t\t: `api/fileStorage/${fileId}`;\r\n\t\t\t\t\t\t\t\treturn { fileUrlMatch, fileUrl };\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tlet itemText = text;\r\n\r\n\t\t\t\t\t\treplacements.forEach(({ fileUrlMatch, fileUrl }) => {\r\n\t\t\t\t\t\t\titemText = itemText.replace(fileUrlMatch, `\"${attachmentService.formatFileUrl(fileUrl)}\"`);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\titemText = itemText.replace(\r\n\t\t\t\t\t\t\t'attachment 0 && journalTextboxContainer.length > 0) {\r\n\t\t\t\tjournalTextboxContainer.empty();\r\n\t\t\t\t$(journalTextboxForMoving).appendTo(journalTextboxContainer);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nmxObjectJournalTemplate.$inject = ['mx.internationalization', '$attrs'];\r\n\r\nfunction mxObjectJournalTemplate(i18n, $attrs) {\r\n\tconst supplement = [];\r\n\r\n\tif ($attrs.setVisibleInPortal && $attrs.setVisibleInPortal === 'true' && $attrs.hideVisibleInPortal !== 'true') {\r\n\t\tconst title = i18n.get('solutionBuilderAgent.components.mx-object-journal.visibleInPortal');\r\n\r\n\t\tsupplement.push({\r\n\t\t\tkey: 'visibleInPortal',\r\n\t\t\ttitle: title,\r\n\t\t});\r\n\t}\r\n\tconst showCheckboxesAttr = supplement.length > 0 ? ' show-checkboxes=\"::' + JSON.stringify(supplement).replace(/\"/g, '"') + '\" ' : '';\r\n\r\n\treturn (\r\n\t\t' ' +\r\n\t\t''\r\n\t);\r\n}\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxLocalizationEditorForm', {\r\n\t\tbindings: {\r\n\t\t\tlocalizedValue: '=',\r\n\t\t\tsupportedLanguages: '<',\r\n\t\t\terrors: '=?',\r\n\t\t\ttitle: '@?',\r\n\t\t\tprepareProperty: '=?',\r\n\t\t\tsaveLocalizationDirectly: '@',\r\n\t\t\trichTextMode: '=',\r\n\t\t\trichTextModeOptions: '=?',\r\n\t\t\tactiveMode: '@',\r\n\t\t\tcustomEditor: '= 0) {\r\n\t\t\t\tvar baseLangTranslation = property.translations.splice(baseLcidTranslationIndex, 1);\r\n\t\t\t\tif (baseLangTranslation.length && baseLangTranslation[0].value !== property.value) {\r\n\t\t\t\t\tproperty.value = baseLangTranslation[0].value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn property;\r\n\t\t}\r\n\r\n\t\tfunction _isEmpty(value) {\r\n\t\t\treturn (\r\n\t\t\t\t$('

' + (value || '') + '

')\r\n\t\t\t\t\t.text()\r\n\t\t\t\t\t.trim() === ''\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxObjectImage', {\r\n\t\trequire: { mxFormCtrl: '?^mxForm' },\r\n\t\tbindings: {\r\n\t\t\tobjectId: '=?',\r\n\t\t\tobjectIds: '=?',\r\n\t\t\tentity: '@',\r\n\t\t\tngModel: '@',\r\n\t\t\tlazyMode: '=?',\r\n\t\t\treadOnly: '=?',\r\n\t\t\tfiles: '=?',\r\n\t\t\tgetSelectedObjects: '=?',\r\n\t\t\tenableSelection: '@',\r\n\t\t\tskipInitialLoad: '=?',\r\n\t\t\twidth: '@?',\r\n\t\t\theight: '@?',\r\n\t\t\tmaxWidth: '@?',\r\n\t\t\tmaxHeight: '@?',\r\n\t\t\tsrc: '=?',\r\n\t\t\tdefault: '@?',\r\n\t\t\tonAttachmentDelete: '&',\r\n\t\t},\r\n\t\tcontroller: MxObjectImageCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-object-image/mx-object-image.html',\r\n\t});\r\n\r\n\tMxObjectImageCtrl.$inject = [\r\n\t\t'$q',\r\n\t\t'$scope',\r\n\t\t'$element',\r\n\t\t'mx.shell.HostUrlHelper',\r\n\t\t'mx.sb.Attachment.MxAttachmentService',\r\n\t\t'mx.internationalization',\r\n\t\t'mx.shell.NotificationService',\r\n\t];\r\n\r\n\tfunction MxObjectImageCtrl($q, $scope, $element, hostHelper, attachmentService, i18n, notificationService) {\r\n\t\tconst vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.files = [];\r\n\t\t\tvm.bindAttribute = vm.ngModel;\r\n\t\t\tvm.formatUrl = formatUrl;\r\n\t\t\tvm.onDelete = onDelete;\r\n\t\t\tvm.uploadFile = uploadFile;\r\n\t\t\tvm.waithandler = $q.defer();\r\n\t\t\tvm.ignoreFileLimitations = true;\r\n\t\t\tvm.onGetFileUrl = onGetFileUrl;\r\n\r\n\t\t\tinitProviderSettings().then(() => {\r\n\t\t\t\tconst loadPromise = vm.skipInitialLoad === true || vm.objectId === 'new' ? Promise.resolve([]) : loadFiles(vm.objectId);\r\n\t\t\t\tloadPromise.then(function (files) {\r\n\t\t\t\t\tvm.files = (files || []).filter((file) => vm.src?.includes(file.id));\r\n\t\t\t\t\tif (!vm.files.length && vm.src) {\r\n\t\t\t\t\t\tvm.files.push(getVirtualFileFromSrc(vm.src));\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tfunction getVirtualFileFromSrc(src) {\r\n\t\t\tlet srcTmp = src.replace(/\"/g, '');\r\n\t\t\tlet fileName = '';\r\n\r\n\t\t\tconst isBase64 = src.includes('data:image');\r\n\r\n\t\t\tif (!isBase64) {\r\n\t\t\t\tfileName = srcTmp.substring(srcTmp.lastIndexOf('/') + 1);\r\n\t\t\t\tsrcTmp = hostHelper.getFullImageUrl(srcTmp);\r\n\t\t\t}\r\n\r\n\t\t\tconst img = {\r\n\t\t\t\tname: fileName,\r\n\t\t\t\turl: srcTmp,\r\n\t\t\t\tsize: null,\r\n\t\t\t\tthumbnail: null,\r\n\t\t\t\tuploadedOn: null,\r\n\t\t\t\tisVirtual: true,\r\n\t\t\t\tuploaded: true,\r\n\t\t\t};\r\n\t\t\treturn !isBase64 && mx.components.Utils.isGuid(fileName)\r\n\t\t\t\t? Object.assign(img, {\r\n\t\t\t\t\t\tid: fileName,\r\n\t\t\t\t\t\tproviderId: vm.storageInfo.providerId,\r\n\t\t\t\t })\r\n\t\t\t\t: img;\r\n\t\t}\r\n\r\n\t\tvm.$postLink = function () {\r\n\t\t\tif ((vm.objectId === undefined || vm.objectId === '') && vm.mxFormCtrl) {\r\n\t\t\t\tvm.objectId = vm.mxFormCtrl.objectId;\r\n\t\t\t}\r\n\r\n\t\t\tif (!vm.objectIds) {\r\n\t\t\t\tvm.objectIds = [];\r\n\t\t\t}\r\n\r\n\t\t\tif (vm.objectId !== undefined && vm.objectId !== '') {\r\n\t\t\t\tif (vm.objectIds.length === 0) {\r\n\t\t\t\t\tvm.objectIds.push(vm.objectId);\r\n\t\t\t\t}\r\n\t\t\t\tvm.waithandler.resolve();\r\n\t\t\t} else {\r\n\t\t\t\tvm.waithandler.reject();\r\n\t\t\t}\r\n\r\n\t\t\t$element[0].addEventListener('drop', onDrop, true);\r\n\r\n\t\t\t$scope.$on('$destroy', function cleanUp() {\r\n\t\t\t\t$element[0].removeEventListener('drop', onDrop);\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tvm.getSelectedObjects = function () {\r\n\t\t\treturn vm.files\r\n\t\t\t\t.filter(function (file) {\r\n\t\t\t\t\treturn file.selected;\r\n\t\t\t\t})\r\n\t\t\t\t.map(function (file) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tId: file.id,\r\n\t\t\t\t\t\tDisplayString: file.name,\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\r\n\t\tasync function uploadFile(file) {\r\n\t\t\tconst attachmentInfo = Object.assign(file, {\r\n\t\t\t\tid: mx.components.Utils.guid(),\r\n\t\t\t\tobjectId: vm.objectId,\r\n\t\t\t\tproviderId: vm.storageInfo.providerId,\r\n\t\t\t\tstorageId: vm.storageInfo.id,\r\n\t\t\t\ttypeId: vm.storageInfo.typeId,\r\n\t\t\t\tisPublic: vm.storageInfo.isPublic,\r\n\t\t\t\tbindAttribute: vm.bindAttribute,\r\n\t\t\t});\r\n\t\t\ttry {\r\n\t\t\t\tawait attachmentService.uploadFile(attachmentInfo);\r\n\t\t\t\tvm.src = `api/filestorage/${attachmentInfo.id}`;\r\n\t\t\t} catch (e) {\r\n\t\t\t\tconsole.error(e.message);\r\n\t\t\t\tnotificationService.error(i18n.getFormatted('components.mx-attachments.upload_file_error', file.name));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tasync function loadFiles(objectId) {\r\n\t\t\treturn await attachmentService.getFiles({\r\n\t\t\t\tobjectIds: objectId && [objectId],\r\n\t\t\t\tbindAttribute: vm.bindAttribute,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tasync function onGetFileUrl(file) {\r\n\t\t\treturn await attachmentService.getFileUrl(file);\r\n\t\t}\r\n\r\n\t\tfunction formatUrl(url) {\r\n\t\t\tconst isBase64 = url.includes('data:image');\r\n\t\t\treturn isBase64 ? url : attachmentService.formatFileUrl(url);\r\n\t\t}\r\n\r\n\t\tasync function onDelete(file) {\r\n\t\t\tif (!file.isVirtual) {\r\n\t\t\t\tawait attachmentService.deleteFiles([file]);\r\n\t\t\t}\r\n\t\t\tvm.src = null;\r\n\t\t\tconst index = vm.files.indexOf(file);\r\n\t\t\tif (index > -1) {\r\n\t\t\t\tvm.files.splice(index, 1);\r\n\t\t\t}\r\n\t\t\tvm.onAttachmentDelete({ file });\r\n\t\t}\r\n\r\n\t\tfunction onDrop(e) {\r\n\t\t\tif (!e.dataTransfer.files[0].type.match(/image.*/)) {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (vm.files.length) {\r\n\t\t\t\tvm.onDelete(vm.files[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tasync function initProviderSettings() {\r\n\t\t\tvm.storageInfo = await attachmentService.getStorageInfo(vm.entity);\r\n\t\t}\r\n\t}\r\n})();\r\n","'use strict';\r\nimport EntityClassRequest from '../../model/entity-class-request';\r\nimport { Relation } from '../../model/data-model/data-model-base-objects';\r\n\r\nMxMultiObjectRelationPickerCtrl.$inject = [\r\n\t'$scope',\r\n\t'$q',\r\n\t'$element',\r\n\t'$timeout',\r\n\t'mx.SolutionBuilderAgent.EntityService',\r\n\t'mx.internationalization',\r\n\t'mx.SolutionBuilderAgent.DialogOpenerService',\r\n\t'mx.SolutionBuilderAgent.mxColumnDefinitionService',\r\n\t'mx.SolutionBuilderAgent.ExternalServiceManager',\r\n\t'mx.shell.KeyboardNavigationService',\r\n\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n\t'$attrs',\r\n];\r\nexport default function MxMultiObjectRelationPickerCtrl(\r\n\t$scope,\r\n\t$q,\r\n\t$element,\r\n\t$timeout,\r\n\tmxEntityService,\r\n\ti18n,\r\n\tdialogOpener,\r\n\tcolumnDefinition,\r\n\texternalServiceManager,\r\n\tkeyboardNavigationService,\r\n\tcontentWidgetService,\r\n\t$attrs\r\n) {\r\n\tvar vm = this;\r\n\tvar _intModel;\r\n\tvar _updatedValues = { addedRelations: [], removedRelations: [] };\r\n\tvar initialized;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvm.test = 'NOT LOADED';\r\n\t\tvm.selectedItems = [];\r\n\t\tvm.originalModel = [];\r\n\r\n\t\t_intModel = null;\r\n\t\tObject.defineProperty(vm, '_intModel', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn _intModel;\r\n\t\t\t},\r\n\t\t\tset: function (value) {\r\n\t\t\t\t_intModel = value;\r\n\t\t\t\tvm.selectedIds = value;\r\n\t\t\t\tsetInitModel();\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tmx.SolutionBuilderAgent.ObjectPickerCtrl.call(\r\n\t\t\tvm,\r\n\t\t\t$scope,\r\n\t\t\t$q,\r\n\t\t\t$element,\r\n\t\t\t$timeout,\r\n\t\t\tmxEntityService,\r\n\t\t\ti18n,\r\n\t\t\tdialogOpener,\r\n\t\t\tcolumnDefinition,\r\n\t\t\texternalServiceManager,\r\n\t\t\tkeyboardNavigationService,\r\n\t\t\tcontentWidgetService,\r\n\t\t\t$attrs\r\n\t\t);\r\n\r\n\t\tvm.isMultipleSelection = true;\r\n\t\tvm.reverseRelationIsSet = true;\r\n\t\tif (vm.model instanceof Relation) {\r\n\t\t\tupdateRelationConfig(vm.model);\r\n\t\t}\r\n\r\n\t\t//init the base class\r\n\t\tvm.$onInit();\r\n\r\n\t\t// Redefine default method\r\n\t\tvm.setAdditionalOutputs = function () {};\r\n\r\n\t\tinitialized = true;\r\n\r\n\t\tloadRelationsItems(vm, mxEntityService);\r\n\t};\r\n\r\n\tfunction updateRelationConfig(relation) {\r\n\t\tvar updated = relation !== vm._relation;\r\n\t\tvm._relation = relation;\r\n\t\tvm.relationName = relation.relationsConfig.attributeTo;\r\n\t\tvm.entityClassName = relation.relationsConfig.referenceTo;\r\n\r\n\t\treturn updated;\r\n\t}\r\n\r\n\tfunction setInitModel() {\r\n\t\tvar added = [],\r\n\t\t\tremoved = [];\r\n\r\n\t\tif (vm.originalModel.length === 0) {\r\n\t\t\tadded = _intModel;\r\n\t\t} else if (!_intModel) {\r\n\t\t\tremoved = vm.originalModel;\r\n\t\t} else if (_intModel) {\r\n\t\t\t_intModel.forEach(function (id) {\r\n\t\t\t\tif (vm.originalModel.indexOf(id) < 0) {\r\n\t\t\t\t\tadded.push(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvm.originalModel.forEach(function (id) {\r\n\t\t\t\tif (_intModel.indexOf(id) < 0) {\r\n\t\t\t\t\tremoved.push(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t_updatedValues.addedRelations = added || [];\r\n\t\t_updatedValues.removedRelations = removed || [];\r\n\t\tif (vm.model instanceof Relation) {\r\n\t\t\tconst updated = replaceElements(vm.model.removedRelations, _updatedValues.removedRelations);\r\n\t\t\tif (replaceElements(vm.model.addedRelations, _updatedValues.addedRelations) || updated) {\r\n\t\t\t\tloadRelationsItems(vm, mxEntityService);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hasEqualItems(array1, array2) {\r\n\t\treturn (\r\n\t\t\tarray1.length === array2.length &&\r\n\t\t\tarray1.every(function (value) {\r\n\t\t\t\treturn array2.indexOf(value) >= 0;\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\t$scope.$watch(\r\n\t\t'vm.model',\r\n\t\tfunction () {\r\n\t\t\tif (!initialized || !(vm.model instanceof Relation)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar updated = updateRelationConfig(vm.model);\r\n\t\t\tupdated = replaceElements(_updatedValues.removedRelations, vm.model.removedRelations) || updated;\r\n\t\t\tif (replaceElements(_updatedValues.addedRelations, vm.model.addedRelations) || updated) {\r\n\t\t\t\tloadRelationsItems(vm, mxEntityService);\r\n\t\t\t}\r\n\t\t},\r\n\t\ttrue\r\n\t);\r\n\r\n\tfunction replaceElements(array, replacementItems) {\r\n\t\tif (!hasEqualItems(array, replacementItems)) {\r\n\t\t\t[].splice.apply(array, [0, array.length].concat(replacementItems));\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\tvm.getModel = function () {\r\n\t\treturn _intModel;\r\n\t};\r\n\r\n\tfunction loadAddedItemsDescriptor() {\r\n\t\tif (vm.model instanceof Relation) {\r\n\t\t\treturn $q.all(\r\n\t\t\t\tvm.model.addedRelations.map(function (id) {\r\n\t\t\t\t\treturn vm._getFragmentDescriptorsInBatch(vm.model.relationsConfig.referenceTo, id, undefined, undefined, undefined, undefined, undefined, vm.columnDefinition);\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn $q.when([]);\r\n\t}\r\n\r\n\tfunction loadObjectItemsDescriptor() {\r\n\t\tif (vm.model instanceof Relation && vm.model.fragmentId) {\r\n\t\t\tvar requestData = new EntityClassRequest(vm.model.relationsConfig.referenceFrom, undefined, undefined, vm.columnDefinition);\r\n\t\t\tvar extraData = {};\r\n\r\n\t\t\trequestData.allowedTypes = vm.allowedTypes;\r\n\t\t\trequestData.parent = vm.parentExpression;\r\n\t\t\trequestData.relationName = vm.model.relationsConfig.attributeFrom;\r\n\t\t\trequestData.displayExpression = vm.displayExpression;\r\n\t\t\trequestData.fragmentId = vm.model.fragmentId;\r\n\t\t\treturn mxEntityService.getFragmentDescriptors(requestData, null, extraData);\r\n\t\t}\r\n\t\treturn $q.when([]);\r\n\t}\r\n\r\n\tfunction loadRelationsItems(vm) {\r\n\t\t// Load items by relation\r\n\t\treturn $q.all([loadObjectItemsDescriptor(), loadAddedItemsDescriptor()]).then(function (result) {\r\n\t\t\tvar objectItems = result[0],\r\n\t\t\t\tallItems = objectItems.concat(result[1]);\r\n\t\t\tvm.selectedItems = allItems.filter(function (item) {\r\n\t\t\t\treturn !vm.model.removedRelations || vm.model.removedRelations.indexOf(item.Id) < 0;\r\n\t\t\t});\r\n\t\t\tvm.originalModel = objectItems.map(function (item) {\r\n\t\t\t\treturn item.Id;\r\n\t\t\t});\r\n\t\t\tvar newIds = vm.selectedItems.map(function (item) {\r\n\t\t\t\treturn item.Id;\r\n\t\t\t});\r\n\t\t\tif (!mx.components.Utils.arraysEqual(newIds, vm._intModel)) {\r\n\t\t\t\tvm._intModel = newIds;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nangular.module('mx.SolutionBuilderAgent').directive('mxMultiObjectRelationPicker', [\r\n\tfunction mxMultiObjectRelationPickerDirective() {\r\n\t\tvar directive = mx.SolutionBuilderAgent.ObjectPicker.getDirectiveDescriptor(\r\n\t\t\tMxMultiObjectRelationPickerCtrl,\r\n\t\t\t'mx-multi-picker',\r\n\t\t\t' ng-model=\"vm._intModel\" data-selected-items=\"vm.selectedItems\" '\r\n\t\t);\r\n\r\n\t\tangular.extend(directive.bindToController, mx.SolutionBuilderAgent.ObjectPicker.commonObjectPickerProperties);\r\n\t\tdelete directive.bindToController.entityClassName;\r\n\t\tdirective.bindToController.selectedItems = '=?';\r\n\t\tdirective.bindToController.selectedIds = '=?';\r\n\t\treturn directive;\r\n\t},\r\n]);\r\n","import EntityClassRequest from '../../model/entity-class-request';\r\nimport { initFilterExpression } from '../../model/filterExpressionUtils';\r\n\r\nconst parentDisplayAttributeName = 'ParentDisplayString';\r\n\r\nMxObjectPickerCtrl.$inject = [\r\n\t'$scope',\r\n\t'$q',\r\n\t'$element',\r\n\t'$timeout',\r\n\t'mx.SolutionBuilderAgent.EntityService',\r\n\t'mx.internationalization',\r\n\t'mx.SolutionBuilderAgent.DialogOpenerService',\r\n\t'mx.SolutionBuilderAgent.mxColumnDefinitionService',\r\n\t'mx.SolutionBuilderAgent.ExternalServiceManager',\r\n\t'mx.shell.KeyboardNavigationService',\r\n\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n\t'$attrs',\r\n];\r\n\r\nfunction MxObjectPickerCtrl(\r\n\t$scope,\r\n\t$q,\r\n\t$element,\r\n\t$timeout,\r\n\tmxEntityService,\r\n\ti18n,\r\n\tdialogOpener,\r\n\tcolumnDefinition,\r\n\texternalServiceManager,\r\n\tkeyboardNavigationService,\r\n\tcontentWidgetService,\r\n\t$attrs\r\n) {\r\n\tconst vm = this;\r\n\r\n\tlet filter;\r\n\tlet resetFilter;\r\n\r\n\tlet _resetFilterActive = false;\r\n\tlet _loadItemsCount = 6;\r\n\tlet _pickerCtrl = null;\r\n\tlet useObjectId;\r\n\tlet widgetId;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tuseObjectId = vm.useObjectId && vm.useObjectId.toLowerCase() === 'true';\r\n\t\t_pickerCtrl = null;\r\n\t\twidgetId = contentWidgetService.getWidgetIdForControl(this, $scope);\r\n\t\tvm.loadItems = loadItems;\r\n\t\tvm.notFoundClick = notFoundClick;\r\n\t\tvm.navigateSelectedItem = navigateSelectedItem;\r\n\t\tif (vm.noBrowseLookup !== 'true') {\r\n\t\t\tvm.browseLookup = browseLookup;\r\n\t\t}\r\n\t\tvm.getModel = function () {\r\n\t\t\treturn vm.model;\r\n\t\t};\r\n\r\n\t\tregisterHotkeys($scope, $element, vm, keyboardNavigationService, i18n);\r\n\r\n\t\tif (vm.parentExpression) {\r\n\t\t\tvm.itemDetailsField = parentDisplayAttributeName;\r\n\t\t}\r\n\r\n\t\t// Checks model on an unsuitable value (e.g. Guid.Empty) that can be set on initialization, or later through a service.\r\n\t\tvar _isModelWithEmptyValue = function () {\r\n\t\t\tif (vm.model !== null) {\r\n\t\t\t\tvar guidEmpty = mx.components.Utils.guidEmpty();\r\n\r\n\t\t\t\tif (vm.model === guidEmpty) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t};\r\n\r\n\t\tif (_isModelWithEmptyValue()) {\r\n\t\t\tvm.model = null;\r\n\t\t}\r\n\r\n\t\tvm.setAdditionalOutputs = function (item) {\r\n\t\t\tvm.objectId = item ? item['Sys-ObjectId'] || item.ObjectId : null;\r\n\t\t\tvm.displayString = item ? item.DisplayString : null;\r\n\t\t};\r\n\r\n\t\tvm.onChange = function (onChangeData) {\r\n\t\t\tvm.setAdditionalOutputs(vm.selectedItem, onChangeData);\r\n\t\t\tif (_isModelWithEmptyValue()) {\r\n\t\t\t\tvm.model = null;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst initFilter = (propertyName) => {\r\n\t\t\treturn initFilterExpression({\r\n\t\t\t\tpropertyName,\r\n\t\t\t\tcontrolMxAtId: vm.mxAtId,\r\n\t\t\t\t$scope,\r\n\t\t\t\t$attrs,\r\n\t\t\t\t$element,\r\n\t\t\t\tcontroller: vm,\r\n\t\t\t\tonChanged: onFilterChanged,\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tfilter = initFilter('filter-expression');\r\n\t\tresetFilter = initFilter('reset-filter-expression');\r\n\r\n\t\tvm.notFoundDescriptor = null;\r\n\r\n\t\tif (resetFilterIsAllowed(vm.allowResetFilter)) {\r\n\t\t\tvm.notFoundDescriptor = {\r\n\t\t\t\tbuttonClick: vm.notFoundClick,\r\n\t\t\t\tbuttonText: i18n.get('solutionBuilderAgent.components.mx-object-picker.showAll'),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tvm.loadMoreClick = loadMoreClick;\r\n\t\tvm.loadMoreConfig = {\r\n\t\t\tonClick: vm.loadMoreClick,\r\n\t\t\ttitle: i18n.get('shell.common.showMore'),\r\n\t\t};\r\n\r\n\t\tvm.internalOnBlur = function ($event) {\r\n\t\t\tif (typeof vm.onBlur === 'function') {\r\n\t\t\t\tvm.onBlur($event);\r\n\t\t\t}\r\n\r\n\t\t\t_loadItemsCount = 6;\r\n\t\t};\r\n\t};\r\n\r\n\tfunction onFilterChanged() {\r\n\t\tif (_pickerCtrl) {\r\n\t\t\t_pickerCtrl.resetItemsCache();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction resetFilterIsAllowed(resetFilterString) {\r\n\t\treturn resetFilterString && resetFilterString.toLowerCase() === 'true';\r\n\t}\r\n\r\n\tvm._getFragmentDescriptorsInBatch = function (entityClassName, id, parentExpression, useObjectId, rootElement, includeRoot, displayExpression, dataQueryName) {\r\n\t\treturn mxEntityService.getFragmentDescriptorsInBatch(\r\n\t\t\tentityClassName,\r\n\t\t\tid,\r\n\t\t\tparentExpression,\r\n\t\t\tuseObjectId,\r\n\t\t\trootElement,\r\n\t\t\tincludeRoot,\r\n\t\t\twidgetId,\r\n\t\t\tdisplayExpression || vm.displayExpression,\r\n\t\t\tdataQueryName\r\n\t\t);\r\n\t};\r\n\r\n\tfunction navigateSelectedItem(item) {\r\n\t\tdialogOpener.openPreview(item, undefined, undefined, vm.parentViewController && vm.parentViewController.mxView);\r\n\t}\r\n\r\n\tasync function openLookupDialog(selectedItems) {\r\n\t\tconst parentView = vm.parentViewController && vm.parentViewController.mxView;\r\n\t\t// OuterContext is necessary for PBI 164616 (prefilling in CoRu).\r\n\t\tconst presetFields =\r\n\t\t\tparentView && parentView.locals && parentView.locals.dataModel\r\n\t\t\t\t? {\r\n\t\t\t\t\t\tContext: {\r\n\t\t\t\t\t\t\tOuterContext: parentView.locals.dataModel.Context,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t }\r\n\t\t\t\t: undefined;\r\n\r\n\t\tconst items = await dialogOpener.selectObjects(\r\n\t\t\tvm.entityClassName,\r\n\t\t\tvm.label,\r\n\t\t\tselectedItems,\r\n\t\t\tfilter,\r\n\t\t\tvm.columnDefinition,\r\n\t\t\tvm.isMultipleSelection,\r\n\t\t\tfalse,\r\n\t\t\tvm.allowedTypes,\r\n\t\t\tparentView,\r\n\t\t\tresetFilterIsAllowed(vm.allowResetFilter),\r\n\t\t\tresetFilter,\r\n\t\t\tfalse,\r\n\t\t\tpresetFields\r\n\t\t);\r\n\t\tif (useObjectId) {\r\n\t\t\titems.forEach((item) => (item.Id = item._id));\r\n\t\t}\r\n\r\n\t\treturn await updateDisplayExpression(items);\r\n\t}\r\n\r\n\tasync function browseLookup(selectedItems) {\r\n\t\tif (!vm.entityClassName && !vm.columnDefinition) {\r\n\t\t\treturn selectedItems;\r\n\t\t}\r\n\t\tselectedItems = Array.isArray(selectedItems) ? selectedItems : selectedItems === null || typeof selectedItems === 'undefined' ? [] : [selectedItems];\r\n\r\n\t\tif (vm.isMultipleSelection && vm.relationName && !vm.reverseRelationIsSet) {\r\n\t\t\tconst extraData = {};\r\n\t\t\tconst requestData = new EntityClassRequest(vm.entityClassName, null, 1, vm.columnDefinition);\r\n\t\t\trequestData.relationName = vm.relationName;\r\n\r\n\t\t\tawait mxEntityService.getFragmentDescriptors(requestData, null, extraData);\r\n\t\t\tvm.entityClassName = extraData.EntityClass;\r\n\t\t\tvm.reverseRelationIsSet = true;\r\n\t\t}\r\n\r\n\t\treturn await openLookupDialog(selectedItems);\r\n\t}\r\n\r\n\tfunction getItemDetails(pickerModel, item) {\r\n\t\t$timeout(function () {\r\n\t\t\tif (vm.mxForm && vm.mxForm.displayStrings && !vm.displayExpression && !vm.isMultipleSelection) {\r\n\t\t\t\tvar result = vm.mxForm.displayStrings.filter(function (displayStringInfo) {\r\n\t\t\t\t\treturn item.Id === displayStringInfo.Id;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (result.length === 1) {\r\n\t\t\t\t\tangular.extend(item, result[0]);\r\n\t\t\t\t\tsetNewSelectedItem(item);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (item.Id) {\r\n\t\t\t\tif (vm.entityClassName) {\r\n\t\t\t\t\tif (externalServiceManager.isService(vm.entityClassName)) {\r\n\t\t\t\t\t\texternalServiceManager.getObjectInfo(vm.entityClassName, item.Id).then(function (res) {\r\n\t\t\t\t\t\t\titem.DisplayString = res.DisplayString;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvm._getFragmentDescriptorsInBatch(\r\n\t\t\t\t\t\t\tvm.entityClassName,\r\n\t\t\t\t\t\t\titem.Id,\r\n\t\t\t\t\t\t\tvm.parentExpression,\r\n\t\t\t\t\t\t\tuseObjectId,\r\n\t\t\t\t\t\t\tundefined,\r\n\t\t\t\t\t\t\tundefined,\r\n\t\t\t\t\t\t\tvm.displayExpression,\r\n\t\t\t\t\t\t\tvm.columnDefinition\r\n\t\t\t\t\t\t).then(updateItem);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (vm.columnDefinition) {\r\n\t\t\t\t\tcolumnDefinition.getGridDefinitionByName(vm.columnDefinition).then(function (columnDef) {\r\n\t\t\t\t\t\texternalServiceManager.getObjectInfo('service_' + columnDef.Service, item.Id).then(function (res) {\r\n\t\t\t\t\t\t\titem.DisplayString = res.DisplayString;\r\n\t\t\t\t\t\t\tsetNewSelectedItem(item);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tfunction setNewSelectedItem(_item) {\r\n\t\t\tpickerModel.selectedItem = angular.copy(_item);\r\n\t\t\tvm.setAdditionalOutputs(_item);\r\n\t\t}\r\n\r\n\t\tfunction updateItem(data) {\r\n\t\t\tif (pickerModel.selectedItem) {\r\n\t\t\t\tsetNewSelectedItem(data);\r\n\t\t\t} else {\r\n\t\t\t\tangular.extend(item, data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction notFoundClick(returnInitial) {\r\n\t\t_resetFilterActive = !returnInitial;\r\n\t}\r\n\r\n\tfunction loadMoreClick() {\r\n\t\t_loadItemsCount += 5;\r\n\t}\r\n\r\n\tfunction getClassNameByColumnDefinition() {\r\n\t\treturn columnDefinition\r\n\t\t\t.getGridDefinitionByName(vm.columnDefinition)\r\n\t\t\t.then(function (columnDef) {\r\n\t\t\t\tvar entityClassName = vm.entityClassName;\r\n\r\n\t\t\t\tif (columnDef.ServiceInfo) {\r\n\t\t\t\t\tentityClassName = 'service_' + columnDef.Service;\r\n\t\t\t\t} else if (!entityClassName) {\r\n\t\t\t\t\tentityClassName = columnDef.SchemaClassName;\r\n\t\t\t\t}\r\n\t\t\t\treturn entityClassName;\r\n\t\t\t})\r\n\t\t\t.catch(function () {\r\n\t\t\t\treturn vm.entityClassName;\r\n\t\t\t});\r\n\t}\r\n\r\n\tfunction updateDisplayExpression(items) {\r\n\t\tif (!vm.displayExpression) {\r\n\t\t\treturn $q.when(items);\r\n\t\t}\r\n\t\treturn getEntityClassName().then(function (entityClassName) {\r\n\t\t\tif (externalServiceManager.isService(entityClassName)) {\r\n\t\t\t\treturn items;\r\n\t\t\t}\r\n\r\n\t\t\treturn $q.all(\r\n\t\t\t\titems.map((item) => {\r\n\t\t\t\t\treturn vm\r\n\t\t\t\t\t\t._getFragmentDescriptorsInBatch(\r\n\t\t\t\t\t\t\tvm.entityClassName,\r\n\t\t\t\t\t\t\titem.Id,\r\n\t\t\t\t\t\t\tvm.parentExpression,\r\n\t\t\t\t\t\t\tuseObjectId,\r\n\t\t\t\t\t\t\tundefined,\r\n\t\t\t\t\t\t\tundefined,\r\n\t\t\t\t\t\t\tvm.displayExpression,\r\n\t\t\t\t\t\t\tvm.columnDefinition\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.then(function (data) {\r\n\t\t\t\t\t\t\titem.DisplayString = data.DisplayString;\r\n\t\t\t\t\t\t\titem._displayName = data.DisplayString;\r\n\t\t\t\t\t\t\treturn item;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getEntityClassName() {\r\n\t\treturn vm.columnDefinition ? getClassNameByColumnDefinition() : $q.when(vm.entityClassName);\r\n\t}\r\n\r\n\tfunction loadItems(searchText, pickerCtrl, items, extraParams) {\r\n\t\tif (items) {\r\n\t\t\titems.forEach(function (itm) {\r\n\t\t\t\tgetItemDetails(pickerCtrl, itm);\r\n\t\t\t});\r\n\r\n\t\t\treturn $q.when(items);\r\n\t\t}\r\n\r\n\t\t_pickerCtrl = pickerCtrl;\r\n\r\n\t\treturn getEntityClassName().then(function (entityClassName) {\r\n\t\t\tif (!entityClassName) {\r\n\t\t\t\treturn $q.when([]);\r\n\t\t\t}\r\n\r\n\t\t\tconst activeFilter = _resetFilterActive ? resetFilter : filter;\r\n\t\t\tconst requestData = new EntityClassRequest(entityClassName, activeFilter, _loadItemsCount, vm.columnDefinition);\r\n\r\n\t\t\t// const filterExpression = skipFilter ? '' : filter.expression;\r\n\r\n\t\t\trequestData.notStrictAutocomplete = true;\r\n\t\t\trequestData.parent = vm.parentExpression;\r\n\t\t\trequestData.rootElement = vm.rootElement;\r\n\t\t\trequestData.includeRoot = vm.includeRoot;\r\n\t\t\trequestData.allowedTypes = vm.allowedTypes;\r\n\t\t\trequestData.displayExpression = vm.displayExpression;\r\n\t\t\tlet extraData = null;\r\n\r\n\t\t\tif (vm.objectId !== 'new') {\r\n\t\t\t\trequestData.objectId = vm.objectId;\r\n\t\t\t} else if (vm.relationName && !vm.reverseRelationIsSet) {\r\n\t\t\t\trequestData.relationName = vm.relationName;\r\n\t\t\t\textraData = {};\r\n\t\t\t}\r\n\r\n\t\t\trequestData.useObjectId = vm.useObjectId;\r\n\t\t\trequestData.displayString = vm.displayString;\r\n\r\n\t\t\tif (Array.isArray(vm.selectedIds)) {\r\n\t\t\t\trequestData.exclude = vm.selectedIds.join(',');\r\n\t\t\t}\r\n\r\n\t\t\t$.extend(requestData, extraParams);\r\n\r\n\t\t\treturn mxEntityService.getFragmentDescriptors(requestData, searchText, extraData).then(function (data) {\r\n\t\t\t\tif (extraData !== null) {\r\n\t\t\t\t\tvm.entityClassName = extraData.EntityClass;\r\n\t\t\t\t\tvm.reverseRelationIsSet = true;\r\n\t\t\t\t}\r\n\t\t\t\tconst all = data.length < _loadItemsCount;\r\n\t\t\t\t// return {\r\n\t\t\t\t// \titems: {}\r\n\t\t\t\t// };\r\n\t\t\t\treturn {\r\n\t\t\t\t\titems: all ? data : data.slice(0, _loadItemsCount - 1),\r\n\t\t\t\t\tsearchText: searchText,\r\n\t\t\t\t\tall: all,\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n}\r\n\r\nfunction getDirectiveDescriptor(ctrl, tagName, extraProps) {\r\n\tvar directive = new mx.components.FormControlBase(ctrl, null);\r\n\r\n\textraProps = extraProps || ' ng-model=\"vm.model\" ';\r\n\tdirective.template = '<' + tagName + extraProps + commonObjectPickerTemplate + '>';\r\n\r\n\tdirective.require = {\r\n\t\tmxForm: '?^mxForm',\r\n\t\tparentViewController: '?^^mxView',\r\n\t};\r\n\tdirective.link = function (scope) {\r\n\t\tvar vm = scope.vm;\r\n\t\tvm.tagName = tagName;\r\n\t};\r\n\treturn directive;\r\n}\r\n\r\nvar commonObjectPickerProperties = {\r\n\tentityClassName: '@',\r\n\t// filterExpression: '<',\r\n\tngRequired: '=?',\r\n\tdisabled: '=?',\r\n\trequired: '=?require',\r\n\tdropdownHtmlClass: '@',\r\n\tallowResetFilter: '@',\r\n\tcolumnDefinition: '@',\r\n\tparentExpression: '@',\r\n\tselectedItem: '=?',\r\n\tallowedTypes: '@',\r\n\tuseObjectId: '@',\r\n\tnoBrowseLookup: '@',\r\n\tremovable: '<',\r\n\tonBlur: '<',\r\n\tnoLabel: '<',\r\n\tdisplayExpression: '@',\r\n\thideIcon: '\r\n */\r\nangular.module('mx.SolutionBuilderAgent').directive('mxObjectPicker', function mxObjectPickerDirective() {\r\n\tvar directive = getDirectiveDescriptor(MxObjectPickerCtrl, 'mx-picker');\r\n\r\n\tangular.extend(directive.bindToController, commonObjectPickerProperties);\r\n\tdirective.bindToController.objectId = '=?';\r\n\tdirective.bindToController.displayString = '=?';\r\n\r\n\treturn directive;\r\n});\r\n\r\nfunction registerHotkeys(scope, element, pickerCtrl, keyboardNavigationService, i18n) {\r\n\tvar hintsActive, isComboPressed;\r\n\r\n\tif (!pickerCtrl.browseLookup) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (!keyboardNavigationService.getKeyOptions('alt+o')) {\r\n\t\tkeyboardNavigationService.registerKey({\r\n\t\t\tscope: scope,\r\n\t\t\tkey: 'alt+o',\r\n\t\t\tdescription: i18n.get('solutionBuilderAgent.components.mx-object-picker.lookup'),\r\n\t\t\tcallback: angular.noop,\r\n\t\t});\r\n\t}\r\n\r\n\telement.on('keyup keydown focusout', handleEvent);\r\n\r\n\tscope.$on('$destroy', function cleanUp() {\r\n\t\telement.off();\r\n\t});\r\n\r\n\tfunction handleEvent(ev) {\r\n\t\tvar type = ev.type;\r\n\r\n\t\tswitch (type) {\r\n\t\t\tcase 'keydown':\r\n\t\t\t\thandleKeyDown(ev);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'keyup':\r\n\t\t\t\thintsActive = false;\r\n\t\t\t\telement.find('.autocomplete-search').attr('hint-key', null);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'focusout':\r\n\t\t\t\tisComboPressed = false;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction handleKeyDown(ev) {\r\n\t\tif (!ev.altKey || isComboPressed) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar browseBtn = element.find('.autocomplete-search:visible');\r\n\r\n\t\tif (!hintsActive) {\r\n\t\t\tbrowseBtn.attr('hint-key', 'o');\r\n\t\t\thintsActive = true;\r\n\t\t}\r\n\r\n\t\tif (ev.key === 'o') {\r\n\t\t\tif (isComboPressed) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tisComboPressed = true;\r\n\t\t\tbrowseBtn.click();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nmx.SolutionBuilderAgent.ObjectPickerCtrl = MxObjectPickerCtrl;\r\nmx.SolutionBuilderAgent.ObjectPicker = {\r\n\tgetDirectiveDescriptor: getDirectiveDescriptor,\r\n\tcommonObjectPickerProperties: commonObjectPickerProperties,\r\n};\r\n","import template from './mx-query-filter-toolbar.component.html';\r\nimport { EventCodes } from '../../../../App/model/event-codes';\r\n\r\nexport class MxQueryFilterToolbarController {\r\n\tstatic $inject = ['$scope', 'mx.shell.SearchProviderService', 'mx.SolutionBuilderAgent.SearchQueryService', 'mx.shell.EventService', '$element'];\r\n\r\n\tsearchQueryService;\r\n\tsearchService;\r\n\t$element;\r\n\tdebouncedCheckMoreBtnVisibility;\r\n\tuiToken;\r\n\tfilters = [];\r\n\tviewParameters;\r\n\r\n\tconstructor($scope, searchService, searchQueryService, eventService, $element) {\r\n\t\tthis.searchQueryService = searchQueryService;\r\n\t\tthis.searchService = searchService;\r\n\t\tthis.eventService = eventService;\r\n\t\tthis.$element = $element;\r\n\r\n\t\tthis.debouncedCheckMoreBtnVisibility = $.debounce(100, () => {\r\n\t\t\t$scope.$evalAsync(() => {\r\n\t\t\t\tif (this.containerEl.is(':visible')) {\r\n\t\t\t\t\tthis.showMoreButton = this.containerEl.height() > 35;\r\n\t\t\t\t\tthis.morePanelTopOffset = this.containerEl.position().top + 35;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.showMorePanel = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\teventService.subscribeTo(mx.shell.EventCodes.LayoutChanged, this.debouncedCheckMoreBtnVisibility, $scope);\r\n\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.shell.EventCodes.Search,\r\n\t\t\t(event, so) => {\r\n\t\t\t\tif (so.uiToken !== this.uiToken) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tconst filters = so?.filters || [];\r\n\t\t\t\tthis.queries.forEach((query) => {\r\n\t\t\t\t\tquery.__active = filters.indexOf(query.id) >= 0;\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\t}\r\n\r\n\t$onInit() {\r\n\t\tconst context = this.searchService.currentContext();\r\n\r\n\t\tthis.searchQueryService.getQueries(context).then((queries) => {\r\n\t\t\tthis.queries = (queries || []).filter((query) => !query.showInNavigation);\r\n\r\n\t\t\tthis.debouncedCheckMoreBtnVisibility();\r\n\t\t});\r\n\t}\r\n\r\n\ttoggleQueryFilter(query) {\r\n\t\tquery.__active = !query.__active;\r\n\t\tif (query.__active) {\r\n\t\t\tthis.trackTelemetry(query);\r\n\t\t}\r\n\t\tthis.runQuery();\r\n\t}\r\n\r\n\ttrackTelemetry(query) {\r\n\t\tthis.eventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\teventName: 'Search filter applied from grid',\r\n\t\t\tsender: `${this.viewParameters.id}_${query.id}`,\r\n\t\t\tsenderTitle: `${this.viewParameters.name}_${query.title}`,\r\n\t\t\tcontextTypeId: this.viewParameters.entities.map((entity) => entity.id),\r\n\t\t\tcontextTypeTitle: this.viewParameters.entities.map((entity) => entity.name),\r\n\t\t});\r\n\t}\r\n\r\n\tclearFilters() {\r\n\t\tthis.queries.forEach((query) => {\r\n\t\t\tquery.__active = false;\r\n\t\t});\r\n\t\tthis.runQuery();\r\n\t}\r\n\r\n\trunQuery() {\r\n\t\tconst currentSearch = this.searchService.currentSearch();\r\n\r\n\t\tconst currentBaseFilter = this.searchService.getBaseQueryId();\r\n\r\n\t\tcurrentSearch.filters = this.queries.filter((query) => query.__active).map((query) => query.id);\r\n\r\n\t\tif (currentBaseFilter && currentSearch.filters.indexOf(currentBaseFilter) < 0) {\r\n\t\t\tcurrentSearch.filters.push(currentBaseFilter);\r\n\t\t}\r\n\r\n\t\tthis.searchService.runSearch();\r\n\t}\r\n\r\n\t$postLink() {\r\n\t\tthis.containerEl = this.$element.find('.mx-query-filter-toolbar-container');\r\n\t}\r\n}\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxQueryFilterToolbar', {\r\n\tbindings: {\r\n\t\tuiToken: '@',\r\n\t\tviewParameters: '<',\r\n\t},\r\n\tcontroller: MxQueryFilterToolbarController,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n});\r\n","import template from './mx-quick-link.html';\r\nimport { EventCodes } from '../../../../App/model/event-codes';\r\n\r\n/**\r\n * @ngdoc component\r\n * @name mx.agent:mxQuickLink\r\n * @module mx.agent\r\n * @description Displays quick link for quick starts\r\n * @param {string} label@ - Optional. Label of the control.\r\n * @param {string} entityType@ - Entity type\r\n * @param {string} linkType@ - enumeration: 'new', 'preview', 'list'\r\n * @param {string} objectId@ - id of the object for object details\r\n */\r\nangular.module('mx.SolutionBuilderAgent').component('mxQuickLink', {\r\n\tbindings: {\r\n\t\ttitle: '@',\r\n\t\ttitleNeutral: '@',\r\n\t\ticon: '@',\r\n\t\tentityType: '@',\r\n\t\tobjectId: '@',\r\n\t\tentityClassName: '@',\r\n\t\tentityId: '@',\r\n\t\teditObject: '@',\r\n\t\tpreviewObject: '@',\r\n\t\treadonlyObject: ' {\r\n\t\t\t\t\tif (!$(event.target).is('a[href],[ng-click]')) {\r\n\t\t\t\t\t\t$element.find('.mx-quick-link-button').click();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\tvm.$onChanges = function (changes) {\r\n\t\tif (changes.icon) {\r\n\t\t\tvar icon = changes.icon.currentValue;\r\n\t\t\tif (icon) {\r\n\t\t\t\tvm.iconType = icon.indexOf('/') === -1 ? 'icon' : 'image';\r\n\r\n\t\t\t\tif (vm.iconType === 'icon' && icon.indexOf(':') > -1) {\r\n\t\t\t\t\tvm.iconType = 'svg_icon';\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tvm.iconType = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (linkType === 'object') {\r\n\t\t\tif (changes.entityType) {\r\n\t\t\t\tcheckDialogRules();\r\n\t\t\t}\r\n\r\n\t\t\tif (changes.entityClassName || changes.entityId) {\r\n\t\t\t\tif (vm.entityClassName && vm.entityId) {\r\n\t\t\t\t\tinitDialogWithClassNameAndId();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tvm.onClick = async function (event) {\r\n\t\tif (event && event.stopPropagation) {\r\n\t\t\tevent.stopPropagation();\r\n\t\t}\r\n\r\n\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\teventName: 'Quick link clicked',\r\n\t\t\tsenderTitle: vm.titleNeutral,\r\n\t\t});\r\n\r\n\t\tlet cancelled = false;\r\n\t\tif (vm.confirmationMessage) {\r\n\t\t\ttry {\r\n\t\t\t\tawait notificationService.confirm(\r\n\t\t\t\t\tvm.title,\r\n\t\t\t\t\tvm.confirmationMessage,\r\n\t\t\t\t\ti18n.get('solutionBuilderAgent.common.ok_btn'),\r\n\t\t\t\t\ti18n.get('solutionBuilderAgent.common.cancel_btn')\r\n\t\t\t\t);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tcancelled = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (cancelled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvm.assignBefore();\r\n\t\ttry {\r\n\t\t\tif (typeof vm.mainAction === 'function') {\r\n\t\t\t\tawait vm.mainAction();\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tmx.logCatch(e);\r\n\t\t}\r\n\t\tafterSubmit();\r\n\t};\r\n\r\n\tfunction afterSubmit() {\r\n\t\tvar currentView = sidePanelService.getSidePanelView(vm.parentViewController && vm.parentViewController.mxView);\r\n\r\n\t\tif (vm.disableOnActionSubmit) {\r\n\t\t\tvm.disabled = true;\r\n\t\t}\r\n\r\n\t\tif (vm.reloadOnActionSubmit) {\r\n\t\t\tif (currentView) {\r\n\t\t\t\tsidePanelService.refreshView(currentView);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (vm.reloadDatasetOnSubmit) {\r\n\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.SearchPageDataChanged, { instantRefresh: true });\r\n\t\t}\r\n\r\n\t\tif (vm.notificationOnSubmit) {\r\n\t\t\tnotificationService.info(vm.notificationOnSubmit);\r\n\t\t}\r\n\r\n\t\tif (vm.closeOnSubmit) {\r\n\t\t\tif (currentView) {\r\n\t\t\t\tsidePanelService.closeView(currentView);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction initAssignButton() {\r\n\t\tvm.hasRules = true;\r\n\t\tvm.mainAction = function () {\r\n\t\t\tvm.assignDestination = vm.assignSource;\r\n\t\t};\r\n\t\t//onClick is set from XSLT transformation in ControlDescriptor\r\n\t}\r\n\r\n\tfunction initLandingPageButton() {\r\n\t\tvm.hasRules = true;\r\n\t\tvm.mainAction = function () {\r\n\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.ReloadLandingPage, vm.landingPage);\r\n\t\t};\r\n\t}\r\n\r\n\tfunction initDatasetViewButton() {\r\n\t\tconst currentApp = appsService.getCurrentApplication();\r\n\t\tconst appString = currentApp.name;\r\n\t\tvm.hasRules = Boolean(vm.datasetView);\r\n\r\n\t\tvm.mainAction = async function () {\r\n\t\t\tawait $state.go(\r\n\t\t\t\t'customDataSet',\r\n\t\t\t\t{\r\n\t\t\t\t\tappString: appString,\r\n\t\t\t\t\tcontentWidgetId: vm.datasetView,\r\n\t\t\t\t\tfilterId: vm.filter,\r\n\t\t\t\t\tfilterType: vm.filter ? 'filter' : 'nofilter',\r\n\t\t\t\t\tviewType: !isNaN(vm.viewType) ? Number(vm.viewType) : null,\r\n\t\t\t\t},\r\n\t\t\t\t{ location: false }\r\n\t\t\t);\r\n\r\n\t\t\tnavigationService.setExtraItem(vm.title);\r\n\t\t};\r\n\t}\r\n\r\n\tasync function initCallServiceButton() {\r\n\t\tconst dataModel = await vm.mxServiceContext?.$dataModelPromise;\r\n\t\tif (!dataModel || !dataModel.Context) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t$scope.$watch('vm.sourceState', function () {\r\n\t\t\tif (sourceStateIs(mx.SolutionBuilderAgent.SourceLoadingStatus.LOADED) || sourceStateIs(mx.SolutionBuilderAgent.SourceLoadingStatus.REJECTED)) {\r\n\t\t\t\t$timeout(function () {\r\n\t\t\t\t\tvm.state = vm.loadingState.Default;\r\n\t\t\t\t}, 400);\r\n\t\t\t} else if (sourceStateIs(mx.SolutionBuilderAgent.SourceLoadingStatus.LOADING)) {\r\n\t\t\t\tvm.state = vm.loadingState.Loading;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvm.hasRules = true;\r\n\r\n\t\tvm.mainAction = async function () {\r\n\t\t\tif (vm.state !== vm.loadingState.Loading) {\r\n\t\t\t\tawait dataModelService.reloadSourceByPath(vm.source, dataModel, dataModel.Context.WidgetId);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tasync function initNavigation() {\r\n\t\tif (!vm.navigationItem) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet navigationItem, extraFilter;\r\n\r\n\t\tif (vm.filter) {\r\n\t\t\tnavigationItem = await navigationService.getNavigationItem(vm.filter);\r\n\t\t}\r\n\r\n\t\tif (!navigationItem || navigationItem.parameters.navigationId !== vm.navigationItem) {\r\n\t\t\tnavigationItem = await navigationService.getNavigationItem(vm.navigationItem);\r\n\t\t}\r\n\r\n\t\tif (navigationItem) {\r\n\t\t\tvm.hasRules = true;\r\n\r\n\t\t\tif (vm.filter && navigationItem.dataQuery && navigationItem.contentWidgetId) {\r\n\t\t\t\tif (navigationItem.parameters.filterId !== vm.filter) {\r\n\t\t\t\t\textraFilter = (await searchQueryService.getFilters(navigationItem.dataQuery, navigationItem.contentWidgetId)).find((filter) => filter.Id === vm.filter);\r\n\t\t\t\t\tif (!extraFilter) {\r\n\t\t\t\t\t\tnotificationService.error('wrong extra filter');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvm.mainAction = async function () {\r\n\t\t\t\tawait routingService.go(\r\n\t\t\t\t\tnavigationItem.route,\r\n\t\t\t\t\tObject.assign({}, navigationItem.parameters, {\r\n\t\t\t\t\t\textraFilter: extraFilter?.Id,\r\n\t\t\t\t\t\tviewType: vm.viewType && Number(vm.viewType),\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tawait initExternalAppNavigation();\r\n\t\t}\r\n\t}\r\n\r\n\tasync function initExternalAppNavigation() {\r\n\t\t/* check if navigation item from other application */\r\n\t\tconst navigationItem = await navigationItemsLoaderService.loadNavigationItem(vm.navigationItem);\r\n\t\tif (!navigationItem) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvm.hasRules = true;\r\n\r\n\t\tconst appString = (appsService.getApplications().find((app) => app.value === navigationItem.Application) || {}).name;\r\n\r\n\t\tvm.mainAction = function () {\r\n\t\t\tredirectToNavLink(navigationItem, appString);\r\n\t\t};\r\n\t}\r\n\tfunction redirectToNavLink(navigationItem, appString) {\r\n\t\tswitch (navigationItem.ImplementationType) {\r\n\t\t\tcase mx.SolutionBuilderAgent.NavigationItemImplementation.LandingPage:\r\n\t\t\t\t$window.open(`${mxConfig.settings.basePath}app-${appString}/landing-page/${navigationItem.Id}`, '_blank');\r\n\t\t\t\tbreak;\r\n\t\t\tcase mx.SolutionBuilderAgent.NavigationItemImplementation.Default:\r\n\t\t\t\tif (navigationItem.Children?.length > 0) {\r\n\t\t\t\t\tredirectToNavLink(navigationItem.Children[0], appString);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$window.open(`${mxConfig.settings.basePath}app-${appString}/search-page/${navigationItem.Id}${vm.filter ? `/filter/${vm.filter}` : '/nofilter/'}`, '_blank');\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\t$window.open(`${mxConfig.settings.basePath}app-${appString}/search-page/${navigationItem.Id}${vm.filter ? `/filter/${vm.filter}` : '/nofilter/'}`, '_blank');\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction checkDialogRules() {\r\n\t\tvar promise;\r\n\r\n\t\tif (!vm.objectId) {\r\n\t\t\tvm.dialogType = mx.SolutionBuilderAgent.ContentWidgetDialogAction.New;\r\n\t\t\tpromise = widgetManager.getNewDialogs(vm.entityType);\r\n\t\t} else if (vm.editObject === 'true') {\r\n\t\t\tvm.dialogType = mx.SolutionBuilderAgent.ContentWidgetDialogAction.Edit;\r\n\t\t\tpromise = widgetManager.getEditDialogs(vm.entityType);\r\n\t\t} else if (vm.previewObject === 'true') {\r\n\t\t\tpromise = widgetManager.getPreviewsOrDialogs(vm.entityType).then(function (views) {\r\n\t\t\t\tif (Array.isArray(views) && views.length) {\r\n\t\t\t\t\tif (views.some(widgetManager.isPreview)) {\r\n\t\t\t\t\t\tvm.dialogType = mx.SolutionBuilderAgent.ContentWidgetDialogAction.Preview;\r\n\t\t\t\t\t} else if (views.some(widgetManager.isNewDialog)) {\r\n\t\t\t\t\t\tvm.dialogType = mx.SolutionBuilderAgent.ContentWidgetDialogAction.Edit;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn views;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tvm.dialogType = mx.SolutionBuilderAgent.ContentWidgetDialogAction.Preview;\r\n\t\t\tpromise = widgetManager.getViewsForPreview(vm.entityType).then(function (res) {\r\n\t\t\t\treturn res.views;\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn promise.then(function (views) {\r\n\t\t\tvm.hasRules = views && views.length;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction initDialogWithClassNameAndId() {\r\n\t\tvm.entityType = vm.objectId = undefined;\r\n\t\tmxEntityService.getFragmentDescriptorsInBatch(vm.entityClassName, vm.entityId).then(function (objDetails) {\r\n\t\t\tvm.entityType = (objDetails || {}).EntityType;\r\n\t\t\tvm.objectId = (objDetails || {}).ObjectId;\r\n\t\t\tcheckDialogRules();\r\n\t\t});\r\n\t}\r\n\r\n\tfunction initDialogButton() {\r\n\t\tif (vm.entityClassName && vm.entityId) {\r\n\t\t\tinitDialogWithClassNameAndId();\r\n\t\t} else {\r\n\t\t\tcheckDialogRules();\r\n\t\t}\r\n\r\n\t\tvm.mainAction = async function () {\r\n\t\t\tif (!vm.entityType) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tswitch (vm.dialogType) {\r\n\t\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetDialogAction.New:\r\n\t\t\t\t\tawait dialogOpener.openNewDialog(\r\n\t\t\t\t\t\tvm.entityType,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\ttrue,\r\n\t\t\t\t\t\tundefined,\r\n\t\t\t\t\t\tvm.parentViewController && vm.parentViewController.mxView,\r\n\t\t\t\t\t\tundefined,\r\n\t\t\t\t\t\tvm.outerContext\r\n\t\t\t\t\t).newEntityCreatedPromise;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetDialogAction.Edit:\r\n\t\t\t\t\tvar context = {\r\n\t\t\t\t\t\t_id: vm.objectId,\r\n\t\t\t\t\t\t_type: vm.entityType,\r\n\t\t\t\t\t};\r\n\t\t\t\t\tawait dialogOpener.openEditDialog(context, vm.fullscreen === 'true', undefined, vm.parentViewController && vm.parentViewController.mxView, {\r\n\t\t\t\t\t\touterContext: vm.outerContext,\r\n\t\t\t\t\t\thideActions: Boolean(vm.viewHideActions),\r\n\t\t\t\t\t\tisSingleView: Boolean(vm.isSingleView),\r\n\t\t\t\t\t\treadOnly: vm.readonlyObject,\r\n\t\t\t\t\t}).finishDialogInteractionPromise;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetDialogAction.Preview:\r\n\t\t\t\t\tawait dialogOpener.openPreview(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tEntityType: vm.entityType,\r\n\t\t\t\t\t\t\tId: vm.objectId,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\touterContext: vm.outerContext,\r\n\t\t\t\t\t\t\thideActions: Boolean(vm.viewHideActions),\r\n\t\t\t\t\t\t\tisSingleView: Boolean(vm.isSingleView),\r\n\t\t\t\t\t\t\treadOnly: vm.readonlyObject,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tundefined,\r\n\t\t\t\t\t\tvm.parentViewController && vm.parentViewController.mxView\r\n\t\t\t\t\t);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tfunction initExternal() {\r\n\t\tvm.hasRules = true;\r\n\r\n\t\tvm.mainAction = function () {\r\n\t\t\twindow.open(vm.externalLink, '_blank');\r\n\t\t};\r\n\t}\r\n\r\n\tasync function initAction() {\r\n\t\tconst actions = await actionManagerService.getAllActions();\r\n\t\tif (!Array.isArray(actions)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst action = actions.find((action) => action.id === vm.action);\r\n\r\n\t\tif (!action) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvm.hasRules = true;\r\n\r\n\t\tvm.mainAction = async function () {\r\n\t\t\tconst context = Array.isArray(vm.actionContext) ? vm.actionContext : typeof vm.actionContext === 'undefined' ? undefined : [vm.actionContext];\r\n\t\t\tawait actionExecutorService.execute(action, context, vm.parentViewController && vm.parentViewController.mxView);\r\n\t\t};\r\n\t}\r\n\r\n\tfunction sourceStateIs(value) {\r\n\t\treturn Number(vm.sourceState) === value;\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nMxRichTextBoxCtrl.$inject = [\r\n\t'$scope',\r\n\t'$element',\r\n\t'$timeout',\r\n\t'$mdUtil',\r\n\t'$ocLazyLoad',\r\n\t'mx.components.LazyLoadCfg',\r\n\t'mx.SolutionBuilderAgent.Http',\r\n\t'mx.components.TinymceUtils',\r\n\t'mx.shell.EventService',\r\n\t'mx.sb.Attachment.MxAttachmentService',\r\n\t'mx.app.DeviceService',\r\n\t'mx.shell.Config',\r\n];\r\nexport default function MxRichTextBoxCtrl(\r\n\t$scope,\r\n\t$element,\r\n\t$timeout,\r\n\t$mdUtil,\r\n\t$ocLazyLoad,\r\n\tlazyLoadCfg,\r\n\thttp,\r\n\tmxTinymceUtils,\r\n\teventService,\r\n\tattachmentService,\r\n\tdeviceService,\r\n\tmxConfig\r\n) {\r\n\tvar vm = this;\r\n\tvar editorInstance,\r\n\t\tfixedToolbarContainer,\r\n\t\tuseAdvancedMode,\r\n\t\tisMobile,\r\n\t\tisToolbarBottomMode = false;\r\n\r\n\tconst anticache = `?anticache=${mxConfig.settings.productVersion}`;\r\n\r\n\tdocument.execCommand('defaultParagraphSeparator', false, 'p');\r\n\r\n\tlet isFullscreen = false;\r\n\tvm.toggleFullscreen = toggleFullscreen;\r\n\r\n\tif (!$ocLazyLoad.isLoaded('ui.tinymce')) {\r\n\t\t$ocLazyLoad.setModuleConfig({\r\n\t\t\tname: 'ui.tinymce',\r\n\t\t\tserie: true,\r\n\t\t\tfiles: [\r\n\t\t\t\t`${lazyLoadCfg.componentsDir}tinymce/tinymce.js${anticache}`,\r\n\t\t\t\t`${lazyLoadCfg.componentsDir}angular-ui-tinymce/src/tinymce.js${anticache}`,\r\n\t\t\t\t`${lazyLoadCfg.componentsDir}tinymce/themes/silver/theme.js${anticache}`,\r\n\t\t\t],\r\n\t\t});\r\n\t\tvm.showLoader = true;\r\n\t\teventService.subscribeTo(\r\n\t\t\t'ocLazyLoad.moduleLoaded',\r\n\t\t\t(event, module) => {\r\n\t\t\t\tif (module === 'ui.tinymce') {\r\n\t\t\t\t\tvm.showLoader = false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\t}\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvm.fullscreenContainer = $mdUtil.getClosest($element[0], (node) => {\r\n\t\t\treturn (\r\n\t\t\t\t(node.classList && node.classList.contains('mx-wizard--page-content')) || (node.tagName && (node.tagName === 'MX-DIALOG-CONTAINER' || node.tagName === 'NG-FORM'))\r\n\t\t\t);\r\n\t\t});\r\n\t\tvm.textContainer = $element[0];\r\n\t\tvm.realParentContainer = $element[0].parentNode;\r\n\r\n\t\t/* tablet-landscape */\r\n\t\tisMobile = deviceService.screenMobile();\r\n\r\n\t\tuseAdvancedMode = isMobile ? false : vm.advancedMode ? vm.advancedMode.toLowerCase() !== 'false' : true;\r\n\r\n\t\tconst defalutHeight = useAdvancedMode ? 200 : 115;\r\n\t\tconst heightInt = parseInt(vm.height, 10) || defalutHeight;\r\n\t\tvm._heightPx = heightInt + 'px';\r\n\r\n\t\tif (useAdvancedMode || isMobile) {\r\n\t\t\tfixedToolbarContainer = addId($element.find('.mx-rich-text-box--toolbar-top'));\r\n\t\t} else {\r\n\t\t\tfixedToolbarContainer = addId($element.find('.mx-tinymce-container'));\r\n\t\t\tisToolbarBottomMode = true;\r\n\t\t\t$element.addClass('mx-rich-text-box-toolbar-bottom-mode');\r\n\t\t}\r\n\r\n\t\t// Postpone a little bit so `vm._readOnly` and `vm._disabled` properties became initialized. Otherwise `vm.isActivated` always will be true.\r\n\t\t$scope.$evalAsync(() => {\r\n\t\t\tupdateIsActivated();\r\n\t\t});\r\n\r\n\t\tvm.tinymceOptions = {\r\n\t\t\tfixed_toolbar_container: fixedToolbarContainer,\r\n\t\t\tinline: true,\r\n\t\t\tmenubar: false,\r\n\t\t\tstatusbar: false,\r\n\t\t\tcontextmenu: false,\r\n\t\t\ttoolbar_persist: true,\r\n\t\t\ttoolbar_mode: 'floating',\r\n\t\t\tskin: 'tinymce-5',\r\n\t\t\tplugins: (useAdvancedMode ? ['link image media table advlist lists'] : 'link image media') + (vm.allowCodeEditor ? ' code' : ''),\r\n\t\t\t/* enables pasting images from clipboard */\r\n\t\t\tpaste_data_images: !isMobile,\r\n\t\t\t/* prevents auto upload for images */\r\n\t\t\tautomatic_uploads: false,\r\n\t\t\tbrowser_spellcheck: true,\r\n\t\t\tfile_picker_types: 'image',\r\n\t\t\t// image picker that convert image to base64 and insert it to content\r\n\t\t\tfile_picker_callback: function (cb) {\r\n\t\t\t\tvar inputClass = 'mx-rich-text-box--input-upload';\r\n\t\t\t\tvar input = document.getElementsByClassName(inputClass)[0];\r\n\t\t\t\tif (!input) {\r\n\t\t\t\t\tinput = document.createElement('input');\r\n\t\t\t\t\tinput.setAttribute('type', 'file');\r\n\t\t\t\t\tinput.setAttribute('accept', 'image/*');\r\n\t\t\t\t\tinput.style.display = 'none';\r\n\t\t\t\t\tinput.className = inputClass;\r\n\t\t\t\t\tdocument.body.appendChild(input);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// `onchange` event should be redefined each time\r\n\t\t\t\tinput.onchange = function () {\r\n\t\t\t\t\tvar file = this.files[0];\r\n\r\n\t\t\t\t\tvar classFilereader = new FileReader();\r\n\t\t\t\t\tclassFilereader.onload = function (base64) {\r\n\t\t\t\t\t\tvar imgData = base64.target.result;\r\n\t\t\t\t\t\tcb(imgData, { title: file.name });\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tclassFilereader.readAsDataURL(file);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tinput.click();\r\n\t\t\t},\r\n\r\n\t\t\ttoolbar:\r\n\t\t\t\t(useAdvancedMode\r\n\t\t\t\t\t? 'bold italic underline | fontsize forecolor backcolor removeformat | styles | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | table link image media | fullscreen'\r\n\t\t\t\t\t: 'bold italic underline | bullist | link image media | fullscreen') + (vm.allowCodeEditor ? ' code' : ''),\r\n\t\t\tcustom_colors: false,\r\n\r\n\t\t\tfont_size_formats: '7pt 8pt 9pt 10pt 11pt 12pt 13pt 14pt 15pt 16pt 18pt 20pt 22pt 24pt 26pt 28pt 30pt 36pt 48pt 72pt',\r\n\r\n\t\t\t// Docs: https://www.tiny.cloud/docs/configure/url-handling/\r\n\t\t\trelative_urls: false,\r\n\t\t\tremove_script_host: false,\r\n\t\t\tconvert_urls: true,\r\n\t\t\tcache_suffix: anticache,\r\n\r\n\t\t\tauto_focus: _defineBoolValue(vm.setFocus),\r\n\r\n\t\t\tsetup: function (editor) {\r\n\t\t\t\teditor.settings = editor.settings || {};\r\n\r\n\t\t\t\t// Trick to fix cutting of dropdowns/dialogs in inline mode\r\n\t\t\t\teditor.on('PostRender', function () {\r\n\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\tconst uiContainer = document.querySelector('.tox.tox-tinymce-aux');\r\n\t\t\t\t\t\tif (uiContainer) {\r\n\t\t\t\t\t\t\tdocument.body.appendChild(uiContainer);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 1000);\r\n\t\t\t\t});\r\n\r\n\t\t\t\teditor.on('init', function () {\r\n\t\t\t\t\teditorInstance = editor;\r\n\r\n\t\t\t\t\t_handleDisabledMode(editor, vm._disabled);\r\n\t\t\t\t\t_handleReadonlyMode(editor, vm._readOnly);\r\n\r\n\t\t\t\t\tvar defaultFont = (vm._options || {}).defaultFont || {};\r\n\r\n\t\t\t\t\tvar tags = ' ,p,ul,ol,pre,table,blockquote'\r\n\t\t\t\t\t\t.split(',')\r\n\t\t\t\t\t\t.map(function (tag) {\r\n\t\t\t\t\t\t\treturn '.mce-content-body ' + tag + ', .mx-rich-text-box-fake ' + tag;\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.join(',');\r\n\t\t\t\t\tvar fontStyles = `font-size: ${defaultFont.size || 'inherit'};\r\n\t\t\t\t\t\t\t\t\t\t\tfont-family: ${defaultFont.family || 'inherit'};\r\n\t\t\t\t\t\t\t\t\t\t\tline-height: ${defaultFont.lineHeight || 'inherit'};`;\r\n\r\n\t\t\t\t\tvar rteStylesId = 'rte-font-styles';\r\n\t\t\t\t\tif (!$('#' + rteStylesId).length) {\r\n\t\t\t\t\t\tvar defaultStyles = ``;\r\n\t\t\t\t\t\t$(this.getDoc().head).append(defaultStyles);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// All links should be opened in the new tab (Task:71035).\r\n\t\t\t\t\tthis.parser.addAttributeFilter('src,href', function (nodes) {\r\n\t\t\t\t\t\tvar i = nodes.length,\r\n\t\t\t\t\t\t\tnode,\r\n\t\t\t\t\t\t\tattrName = 'target';\r\n\t\t\t\t\t\twhile (i--) {\r\n\t\t\t\t\t\t\tnode = nodes[i];\r\n\t\t\t\t\t\t\tvar hrefAttr = node.attr('href');\r\n\t\t\t\t\t\t\t/** if link is local it should be openned on the same page. It is necessary for Table Of Content **/\r\n\t\t\t\t\t\t\tif (hrefAttr && hrefAttr[0] === '#') {\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tnode.attr(attrName, '_blank');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.parser.addAttributeFilter('allowfullscreen', function () {\r\n\t\t\t\t\t\t/** add parameter \"media\" to iframe with video for disabling sanitizing video on server **/\r\n\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\tvar mediaSpans = editor.getElement().querySelectorAll('[data-mce-p-allowfullscreen]');\r\n\t\t\t\t\t\t\tmediaSpans.forEach(function (span) {\r\n\t\t\t\t\t\t\t\tspan.setAttribute('data-mce-p-media', 'true');\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tconst containerEl = $element.find('> md-input-container--mx-theme');\r\n\t\t\t\t\teditor.on('focus', function (e) {\r\n\t\t\t\t\t\t$element.find('.mx-rich-text-box--toolbar-top').show();\r\n\r\n\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\tvm.onFocus({ event: e, editor: editor });\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tcontainerEl.addClass('md-input-focused');\r\n\t\t\t\t\t});\r\n\t\t\t\t\teditor.on('blur', function (e) {\r\n\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\tvm.model = editor.getContent();\r\n\t\t\t\t\t\t\tvm.onBlur({ event: e, editor: editor });\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tcontainerEl.removeClass('md-input-focused');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tmxTinymceUtils.extendMissingI18n(editor);\r\n\r\n\t\t\t\t\tvm.setHintHandlers($element.find('.mce-content-body'));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (vm.fullscreenContainer) {\r\n\t\t\t\t\teditor.ui.registry.addButton('fullscreen', {\r\n\t\t\t\t\t\ttooltip: 'Fullscreen',\r\n\t\t\t\t\t\tshortcut: 'Ctrl+Shift+F',\r\n\t\t\t\t\t\ticon: 'fullscreen',\r\n\t\t\t\t\t\tonAction: function () {\r\n\t\t\t\t\t\t\ttoggleFullscreen();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\teditor.on('keypress', function (event) {\r\n\t\t\t\t\tif (this.getBody().getAttribute('contenteditable') === 'false') {\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\teditor.on('keydown', function (event) {\r\n\t\t\t\t\tif (event.keyCode === 13) {\r\n\t\t\t\t\t\tsetTimeout(() => fixCaretVisibility(editor));\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// This code fixes sizes for previously-wrongly-saved images, which caused whis bug https://matrix42.visualstudio.com/BPM/_workitems/edit/202195\r\n\t\t\t\t// Additional reason of this problem is that angular-$sanitazer remove `style` attribute for all tags including \r\n\t\t\t\t// It will not effect new images.\r\n\t\t\t\teditor.on('ObjectResizeStart', function (e) {\r\n\t\t\t\t\tif (e.target.nodeName === 'IMG') {\r\n\t\t\t\t\t\tvar jqEl = $(e.target);\r\n\t\t\t\t\t\tif (jqEl.attr('style')) {\r\n\t\t\t\t\t\t\tjqEl.css('height', '');\r\n\t\t\t\t\t\t\tjqEl.attr('data-mce-style', jqEl.attr('style'));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (typeof vm.externalSetup === 'function') {\r\n\t\t\t\t\tvm.externalSetup(editor);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\t// Posibility to select images from pre-set list of images from server\r\n\t\tvar mxLoadingCssClass = 'mx-loading-bg';\r\n\t\tif (vm.mxForm && vm.mxForm.objectId && vm.mxForm.entityName) {\r\n\t\t\tvm.tinymceOptions.image_list = function (success) {\r\n\t\t\t\tvar loadingIndicatorContainer = $element.find('.mx-rich-text-box-real');\r\n\t\t\t\tloadingIndicatorContainer.addClass(mxLoadingCssClass);\r\n\r\n\t\t\t\tattachmentService.getFiles({ objectIds: vm.mxForm.objectId && [vm.mxForm.objectId] }).then(function (files) {\r\n\t\t\t\t\tvar imgExtensions = /(\\.jpg|\\.jpeg|\\.jpe|\\.png|\\.gif|\\.bmp|\\.tif|\\.tiff)$/i;\r\n\t\t\t\t\tvar attachedImgsArr = files\r\n\t\t\t\t\t\t.filter(function (file) {\r\n\t\t\t\t\t\t\treturn imgExtensions.test(file.name);\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.map(function (img) {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\ttitle: img.name,\r\n\t\t\t\t\t\t\t\tvalue: http.formatUrl(`api/fileStorage/${img.id}`),\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\tsuccess(attachedImgsArr);\r\n\t\t\t\t\tloadingIndicatorContainer.removeClass(mxLoadingCssClass);\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tangular.extend(vm.tinymceOptions, mxTinymceUtils.getMceI18nOptions());\r\n\r\n\t\tvar originalSetupFn = vm.tinymceOptions.setup;\r\n\t\tvar incommingSetup = vm._options && vm._options.setup;\r\n\t\tangular.extend(vm.tinymceOptions, vm._options || {});\r\n\t\tvm.tinymceOptions.setup = function (editor) {\r\n\t\t\toriginalSetupFn(editor);\r\n\t\t\tif (incommingSetup) {\r\n\t\t\t\tincommingSetup(editor);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tObject.defineProperty(vm, '_ignoreReadonly', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn !!vm.ignoreReadonly;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tmx.components.FormControlControllerBase.call(vm, $timeout);\r\n\t};\r\n\r\n\t$scope.$watch('vm._disabled', function (newValue) {\r\n\t\t_handleDisabledMode(editorInstance, newValue);\r\n\t});\r\n\r\n\t$scope.$watch('vm._readOnly', function (newValue) {\r\n\t\t_handleReadonlyMode(editorInstance, newValue);\r\n\t});\r\n\r\n\tvm.$onChanges = (changes) => {\r\n\t\tif (changes.isFullscreenModeEnabled) {\r\n\t\t\ttoggleFullscreen(changes.isFullscreenModeEnabled.currentValue);\r\n\t\t}\r\n\t};\r\n\r\n\t$scope.$on('$destroy', () => {\r\n\t\ttoggleFullscreen(false);\r\n\t});\r\n\r\n\treturn vm;\r\n\r\n\tfunction fixCaretVisibility(editor) {\r\n\t\tconst editorBody = $(editor.bodyElement);\r\n\t\tconst editorBodyHeight = editorBody.height();\r\n\t\tconst activeNode = $(editor.selection.getNode());\r\n\t\tconst activeNodeTopShift = activeNode.position().top + activeNode.height();\r\n\t\tif (editorBodyHeight < activeNodeTopShift) {\r\n\t\t\teditorBody[0].scrollBy(0, activeNodeTopShift - editorBodyHeight + 10);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction toggleFullscreen(isFullscreenParam) {\r\n\t\tif (vm.fullscreenContainer && (typeof isFullscreenParam === 'undefined' || (typeof isFullscreenParam === 'boolean' && isFullscreenParam !== isFullscreen))) {\r\n\t\t\tisFullscreen = !isFullscreen;\r\n\t\t\tif (isFullscreen) {\r\n\t\t\t\tvm.fullscreenContainer.appendChild(vm.textContainer);\r\n\t\t\t\tvm.textContainer.classList.add('fullscreen');\r\n\t\t\t} else {\r\n\t\t\t\tvm.realParentContainer.appendChild(vm.textContainer);\r\n\t\t\t\tvm.textContainer.classList.remove('fullscreen');\r\n\t\t\t}\r\n\t\t\tvm.onFullscreenToggle({ isFullscreenModeEnabled: isFullscreen, realParentContainer: vm.realParentContainer, fullscreenContainer: vm.fullscreenContainer });\r\n\r\n\t\t\t// refresh Toolbar, so overflowed buttons have correct possiton\r\n\t\t\twindow.dispatchEvent(new Event('resize'));\r\n\t\t}\r\n\t}\r\n\r\n\t// used to properly position tinymce toolbar (in inline mode)\r\n\tfunction addId(el) {\r\n\t\tvar id = Math.random() * 10e16;\r\n\t\tel.attr('data-editor-id', id);\r\n\t\treturn '[data-editor-id=\"' + id + '\"]';\r\n\t}\r\n\r\n\tfunction _defineBoolValue(value) {\r\n\t\treturn typeof value === 'boolean' ? value : typeof value === 'string' ? value.toLowerCase() !== 'false' : !!value;\r\n\t}\r\n\r\n\tfunction updateIsActivated() {\r\n\t\tvm.isActivated = vm.isActivated || (!vm._disabled && !vm._readOnly) || vm._ignoreReadonly;\r\n\t}\r\n\r\n\tfunction _handleDisabledMode(editor, value) {\r\n\t\tvar boolValue = _defineBoolValue(value && !vm._ignoreReadonly);\r\n\t\tif (editor) {\r\n\t\t\teditor.mode.set(boolValue ? 'readonly' : 'design');\r\n\t\t\t$($element).attr('disabled', boolValue);\r\n\t\t}\r\n\t\tupdateIsActivated();\r\n\t}\r\n\r\n\tfunction _handleReadonlyMode(editor, value) {\r\n\t\tvar boolValue = _defineBoolValue(value && !vm._ignoreReadonly);\r\n\t\tif (editor) {\r\n\t\t\teditor.mode.set(boolValue ? 'readonly' : 'design');\r\n\t\t\t$($element).attr('readonly', boolValue);\r\n\t\t}\r\n\t\tupdateIsActivated();\r\n\t}\r\n}\r\n","import template from './mx-search-query-builder.component.html';\r\nimport { EventCodes } from '../../../../App/model/event-codes';\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxSearchQueryBuilder', {\r\n\tbindings: {\r\n\t\tquery: '=',\r\n\t\tcontext: '=',\r\n\t\tparent: '=',\r\n\t\tshowInNavigation: '=',\r\n\t\tcloseFn: '&',\r\n\t},\r\n\tcontroller: MxSearchQueryBuilderCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n});\r\n\r\nMxSearchQueryBuilderCtrl.$inject = [\r\n\t'mx.SolutionBuilderAgent.SearchQueryService',\r\n\t'mx.SolutionBuilderAgent.SearchQueryGroup',\r\n\t'mx.shell.NotificationService',\r\n\t'mx.shell.EventService',\r\n\t'mx.internationalization',\r\n\t'mx.shell.ActionManagerService',\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n];\r\n\r\nfunction MxSearchQueryBuilderCtrl(searchQueryService, SearchQueryGroup, notificationService, eventService, i18n, actionManagerService, personalizationService) {\r\n\tconst vm = this;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvm.ctx = {};\r\n\t\tvm.actions = [];\r\n\t\tvm.canEdit = vm.query.canEdit;\r\n\r\n\t\t_fillActions();\r\n\r\n\t\tif (vm.query.objectId && vm.query.dataQuery) {\r\n\t\t\tvm.ctx._type = 'PDRDataQueryFilterType';\r\n\t\t\tvm.ctx._id = vm.query.objectId;\r\n\r\n\t\t\tactionManagerService\r\n\t\t\t\t.getActions(\r\n\t\t\t\t\tnew mx.shell.ActionsContext(['PDRDataQueryFilterType'], [], mx.shell.ActionUiZone.SidePanel),\r\n\t\t\t\t\t[mx.shell.ActionContextType.Single, mx.shell.ActionContextType.Multiple],\r\n\t\t\t\t\t[vm.ctx]\r\n\t\t\t\t)\r\n\t\t\t\t.then(function (actions) {\r\n\t\t\t\t\tif (Array.isArray(actions)) {\r\n\t\t\t\t\t\tvm.actions = vm.actions.concat(actions.filter((action) => !action.dialogTypes && !action.isService && action.name !== 'Deleteobjects'));\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (vm.showInNavigation) {\r\n\t\t\tvm.query.showInNavigation = true;\r\n\t\t}\r\n\r\n\t\tvm.query.parent = vm.query.parent || (vm.parent ? vm.parent.id : undefined);\r\n\t\tcollapseAll();\r\n\r\n\t\tinitIsDefault();\r\n\t};\r\n\r\n\tvm.openParent = () => {\r\n\t\tsearchQueryService.editFilter(vm.parent);\r\n\t};\r\n\r\n\tvm.saveClick = (event, andClose) => {\r\n\t\tif (!vm.canEdit) {\r\n\t\t\tif (andClose) {\r\n\t\t\t\tvm.closeFn();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (validateQueryBuilder()) {\r\n\t\t\tclearInvalidConditions(vm.query.group);\r\n\r\n\t\t\tif (vm.query.id) {\r\n\t\t\t\tsearchQueryService.saveSearchQuery(vm.query, vm.context).then(() => {\r\n\t\t\t\t\tonSearchQuerySaved(andClose);\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tsearchQueryService.addSearchQuery(vm.query, vm.context).then((id) => {\r\n\t\t\t\t\tvm.query.id = id;\r\n\t\t\t\t\tnotificationService.success(i18n.get('solutionBuilderAgent.components.mx-search-query-builder.searchQueryAdded'));\r\n\t\t\t\t\tsaveAsDefaultFilter();\r\n\t\t\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.SearchQueryAdded, id);\r\n\r\n\t\t\t\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\t\t\t\teventName: `Search Filter created`,\r\n\t\t\t\t\t\tsender: vm.context?.navigationItem?.id,\r\n\t\t\t\t\t\tsenderTitle: vm.context?.navigationItem?.technicalName,\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (andClose) {\r\n\t\t\t\t\t\tvm.closeFn();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tfunction collapseAll() {\r\n\t\tif (vm.query.group.conditions) {\r\n\t\t\tvm.query.group.conditions.forEach((c) => {\r\n\t\t\t\tc.__expanded = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (vm.query.group.groups) {\r\n\t\t\tvm.query.group.groups.forEach((g) => {\r\n\t\t\t\tg.conditions.forEach((c) => {\r\n\t\t\t\t\tc.__expanded = false;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction onSearchQuerySaved(andClose) {\r\n\t\tnotificationService.success(i18n.get('solutionBuilderAgent.components.mx-search-query-builder.searchQuerySaved'));\r\n\t\tsaveAsDefaultFilter();\r\n\t\tif (andClose) {\r\n\t\t\tvm.closeFn();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction saveAsDefaultFilter() {\r\n\t\tif (!vm.query.navigationItem || !vm.query.showInNavigation) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (vm.isDefault) {\r\n\t\t\tpersonalizationService.setDefaultFilterForNavItem(vm.query.navigationItem, vm.query.id);\r\n\t\t} else {\r\n\t\t\tpersonalizationService.getDefaultFilterForNavItem(vm.query.navigationItem).then((queryId) => {\r\n\t\t\t\tif (queryId === vm.query.id) {\r\n\t\t\t\t\tpersonalizationService.setDefaultFilterForNavItem(vm.query.navigationItem);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction initIsDefault() {\r\n\t\tif (!vm.query.navigationItem || !vm.query.showInNavigation) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tpersonalizationService.getDefaultFilterForNavItem(vm.query.navigationItem).then((queryId) => {\r\n\t\t\tvm.isDefault = queryId === vm.query.id;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction validateQueryBuilder() {\r\n\t\tconst queryBuilderValid = vm.query && vm.query.title.length > 0 && searchQueryService.validateGroup(vm.query.group);\r\n\r\n\t\tif (!queryBuilderValid) {\r\n\t\t\tnotificationService.confirm(\r\n\t\t\t\ti18n.get('solutionBuilderAgent.components.mx-search-query-builder.invalidConditions'),\r\n\t\t\t\ti18n.get('solutionBuilderAgent.components.mx-search-query-builder.defineConditionsMsg'),\r\n\t\t\t\ti18n.get('shell.common.ok')\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn queryBuilderValid;\r\n\t}\r\n\r\n\tfunction _fillActions() {\r\n\t\tif (vm.query.dataQuery && vm.canEdit) {\r\n\t\t\tconst deleteAction = new mx.shell.Action('delete_filter', i18n.get('solutionBuilderAgent.components.mx-search-query-builder.delete'), 'delete');\r\n\r\n\t\t\tdeleteAction.controller = function () {\r\n\t\t\t\treturn {\r\n\t\t\t\t\texecute: function () {\r\n\t\t\t\t\t\tsearchQueryService.deleteFilter(vm.query).then((succeded) => {\r\n\t\t\t\t\t\t\tif (succeded) {\r\n\t\t\t\t\t\t\t\tvm.closeFn();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t};\r\n\r\n\t\t\tvm.actions.push(deleteAction);\r\n\r\n\t\t\tconst addChildAction = new mx.shell.Action('add_child_filter', i18n.get('solutionBuilderAgent.components.mx-search-query-builder.addChild'), 'device_hub');\r\n\r\n\t\t\taddChildAction.controller = function () {\r\n\t\t\t\treturn {\r\n\t\t\t\t\texecute: function () {\r\n\t\t\t\t\t\tsearchQueryService.addChildFilter(vm.query);\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t};\r\n\r\n\t\t\tvm.actions.push(addChildAction);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction clearInvalidConditions(group) {\r\n\t\tif (group.conditions) {\r\n\t\t\t_.remove(group.conditions, (c) => !c.__valid);\r\n\t\t}\r\n\r\n\t\t(group.groups || []).forEach((group) => {\r\n\t\t\tclearInvalidConditions(group);\r\n\t\t});\r\n\t}\r\n}\r\n","import { GroupType } from '../../model/enumerations';\r\nimport template from './mx-search-state.component.html';\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxSearchState', {\r\n\tbindings: {\r\n\t\tuiToken: '@',\r\n\t\tpreprocessors: '<',\r\n\t},\r\n\tcontroller: MxSearchStateCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n});\r\n\r\nMxSearchStateCtrl.$inject = [\r\n\t'mx.shell.EventService',\r\n\t'$scope',\r\n\t'$timeout',\r\n\t'mx.shell.SearchProviderService',\r\n\t'mx.SolutionBuilderAgent.SearchQueryService',\r\n\t'mx.shell.RoutingService',\r\n\t'$location',\r\n\t'mx.internationalization',\r\n];\r\n\r\nfunction MxSearchStateCtrl(eventService, $scope, $timeout, searchService, searchQueryService, routingService, $location, i18n) {\r\n\tconst vm = this;\r\n\tvm.i18n = i18n.get('solutionBuilderAgent.components.mx-search-state');\r\n\r\n\tconst quickFilterCondition = {\r\n\t\tactive: false,\r\n\t\ttype: 'quick-filter',\r\n\t\ttooltip: '',\r\n\t\ttitle: i18n.get('solutionBuilderAgent.components.mx-search-query-builder.quickFilter') + ':',\r\n\t\tonReset: function () {\r\n\t\t\tvm.preprocessors.quickFilterPreprocessor.resetFilters();\r\n\t\t},\r\n\t};\r\n\r\n\tconst keywordCondition = {\r\n\t\ttooltip: '',\r\n\t\ttype: 'keyword-filter',\r\n\t\ttitle: i18n.get('solutionBuilderAgent.components.mx-advanced-search.keyword') + ':',\r\n\t\tonReset: function () {\r\n\t\t\tsearchService.resetKeywordSearch(vm.uiToken);\r\n\t\t},\r\n\t};\r\n\r\n\tconst gridCondition = {\r\n\t\ttooltip: '',\r\n\t\ttitle: i18n.get('solutionBuilderAgent.components.mx-search-state.grid') + ':',\r\n\t\tonReset: function () {\r\n\t\t\tsearchService.resetGridSearch(vm.uiToken);\r\n\t\t},\r\n\t};\r\n\r\n\tconst advancedCondition = {\r\n\t\ttooltip: '',\r\n\t\ttitle: i18n.get('solutionBuilderAgent.components.mx-advanced-search.advancedSearch') + ':',\r\n\t\tshortValue: i18n.get('solutionBuilderAgent.components.mx-search-state.complexCondition'),\r\n\t\tonReset: function () {\r\n\t\t\tsearchService.resetAdvancedSearch();\r\n\t\t},\r\n\t};\r\n\r\n\tconst customFormCondition = {\r\n\t\ttooltip: '',\r\n\t\ttitle: i18n.get('solutionBuilderAgent.components.common.configurationForm') + ':',\r\n\t\tonReset: function () {\r\n\t\t\tsearchService.resetCustomFormSearch(vm.uiToken);\r\n\t\t},\r\n\t};\r\n\r\n\tvm.conditions = [quickFilterCondition, keywordCondition, gridCondition, advancedCondition, customFormCondition];\r\n\r\n\tvm.onReset = onReset;\r\n\tvm.searchForm = null;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tinit();\r\n\t};\r\n\r\n\teventService.subscribeTo(mx.shell.EventCodes.Search, init, $scope);\r\n\tconst andTitle = ' ' + i18n.get('solutionBuilderAgent.components.mx-search-query-condition.operatorAND') + ' ';\r\n\r\n\t$scope.$watch('vm.preprocessors.quickFilterPreprocessor.color', (newVal) => {\r\n\t\tif (newVal) {\r\n\t\t\tconst quickFilters = vm.preprocessors.quickFilterPreprocessor.getFilters();\r\n\t\t\tquickFilterCondition.active = true;\r\n\t\t\tquickFilterCondition.tooltip = '';\r\n\t\t\tObject.keys(quickFilters).forEach((filter) => {\r\n\t\t\t\tif (quickFilters[filter].active) {\r\n\t\t\t\t\tquickFilterCondition.tooltip += (quickFilterCondition.tooltip ? andTitle : '') + '\"' + quickFilters[filter].title + '\"';\r\n\t\t\t\t}\r\n\t\t\t\tquickFilterCondition[filter] = quickFilters[filter].active;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tquickFilterCondition.active = false;\r\n\t\t}\r\n\r\n\t\tvm.isVisible = isVisible();\r\n\t});\r\n\r\n\treturn vm;\r\n\r\n\tfunction isVisible() {\r\n\t\tconst wasVisible = vm.isVisible;\r\n\t\tconst isVisible = vm.conditions.some((condition) => condition.active);\r\n\t\tif (wasVisible !== isVisible) {\r\n\t\t\t$timeout(() => {\r\n\t\t\t\teventService.dispatchEvent(mx.shell.EventCodes.LayoutChanged, 'mxSearchStateVisibility', isVisible);\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn isVisible;\r\n\t}\r\n\r\n\tfunction init() {\r\n\t\tconst gLevel = 0;\r\n\t\tconst params = searchService.currentSearch();\r\n\t\tconst context = searchService.currentContext();\r\n\r\n\t\tif (params && params.context === context) {\r\n\t\t\tkeywordCondition.active = gridCondition.active = advancedCondition.active = customFormCondition.active = false;\r\n\r\n\t\t\tif (params.keyword) {\r\n\t\t\t\tkeywordCondition.active = true;\r\n\t\t\t\tkeywordCondition.tooltip = i18n.getFormatted('solutionBuilderAgent.components.mx-search-state.keywordIs', params.keyword);\r\n\t\t\t\tkeywordCondition.shortValue = params.keyword;\r\n\t\t\t}\r\n\r\n\t\t\tconst removeHtmlTags = (text) => text.replace(/<(?:.|\\n)*?>/gm, '');\r\n\r\n\t\t\tconst gridConditions = params.searchForm.getGroup(GroupType.GridSearch)?.conditions;\r\n\t\t\tif (Array.isArray(gridConditions) && gridConditions.length) {\r\n\t\t\t\tgridCondition.active = true;\r\n\t\t\t\tgridCondition.tooltip = removeHtmlTags(getStringConditions(params.searchForm, gridConditions));\r\n\t\t\t\tgridCondition.shortValue =\r\n\t\t\t\t\tgridConditions.length === 1\r\n\t\t\t\t\t\t? '\"' + ((gridConditions[0].__property || {}).Title || gridConditions[0].property) + '\"'\r\n\t\t\t\t\t\t: i18n.getFormatted('solutionBuilderAgent.components.mx-search-state.numColumns', gridConditions.length);\r\n\t\t\t}\r\n\r\n\t\t\tconst queryBuilderGroup = params.searchForm.getGroup(GroupType.QueryBuilder);\r\n\t\t\tconst advancedConditions = queryBuilderGroup?.conditions;\r\n\t\t\tif (Array.isArray(advancedConditions) && advancedConditions.length) {\r\n\t\t\t\tlet advancedConditionsString = getStringGroup(queryBuilderGroup, gLevel);\r\n\t\t\t\tif (advancedConditionsString.indexOf('AND ') === 0) {\r\n\t\t\t\t\tadvancedConditionsString = advancedConditionsString.substring(4);\r\n\t\t\t\t}\r\n\t\t\t\tadvancedConditionsString = removeHtmlTags(advancedConditionsString);\r\n\t\t\t\tadvancedCondition.active = true;\r\n\t\t\t\tadvancedCondition.tooltip = advancedConditionsString;\r\n\t\t\t}\r\n\r\n\t\t\tconst formConditions = params.searchForm.customFormConditions;\r\n\t\t\tif (Array.isArray(formConditions) && formConditions.length) {\r\n\t\t\t\tlet formConditionsString = '';\r\n\t\t\t\tformConditions.forEach((cond) => {\r\n\t\t\t\t\tif (Boolean(cond.title) && Boolean(cond.value)) {\r\n\t\t\t\t\t\tformConditionsString += `${formConditionsString.length ? ' AND ' : ''}${cond.title} \"${cond.value}\"`;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tcustomFormCondition.active = true;\r\n\t\t\t\tcustomFormCondition.tooltip = formConditionsString;\r\n\t\t\t\tcustomFormCondition.shortValue =\r\n\t\t\t\t\tformConditions.length === 1\r\n\t\t\t\t\t\t? `${formConditions[0].title} \"${formConditions[0].value}\"`\r\n\t\t\t\t\t\t: i18n.getFormatted('solutionBuilderAgent.components.mx-search-state.numFields', formConditions.length);\r\n\t\t\t}\r\n\t\t\tvm.isVisible = isVisible();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction onReset() {\r\n\t\tsearchService.resetSearch(vm.uiToken);\r\n\t\tif (vm.preprocessors.quickFilterPreprocessor) {\r\n\t\t\tvm.preprocessors.quickFilterPreprocessor.resetFilters();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getStringConditions(root, conditions) {\r\n\t\tlet cLevel = 0;\r\n\t\tlet query = '';\r\n\r\n\t\tconditions.forEach(function (condition) {\r\n\t\t\tconst operatorTitle = cLevel > 0 ? i18n.get('solutionBuilderAgent.components.mx-search-query-condition.operator' + root.logicalOperatorTitle) + ' ' : '';\r\n\r\n\t\t\tconst conditionTitle = condition.type === 'Expression' ? 'Expression' : condition.__property.Title || condition.__property.Name;\r\n\t\t\tconst value = searchQueryService.getConditionString(condition);\r\n\r\n\t\t\tif (value) {\r\n\t\t\t\tquery += operatorTitle + conditionTitle + ' ' + searchQueryService.getConditionString(condition);\r\n\t\t\t}\r\n\t\t\tcLevel++;\r\n\t\t});\r\n\t\treturn query;\r\n\t}\r\n\r\n\tfunction getStringGroup(group, groupLevel) {\r\n\t\tlet query = groupLevel > 0 ? i18n.get('solutionBuilderAgent.components.mx-search-query-group.operator' + group.logicalOperatorTitle) + ' ' : '';\r\n\t\tif (group.conditions) {\r\n\t\t\tquery += getStringConditions(group, group.conditions);\r\n\t\t}\r\n\t\tif (group.groups) {\r\n\t\t\tlet level = 1;\r\n\r\n\t\t\tgroup.groups.forEach((itGroup) => {\r\n\t\t\t\tquery += getStringGroup(itGroup, level);\r\n\t\t\t\tlevel++;\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn query;\r\n\t}\r\n}\r\n","'use strict';\r\nimport template from './mx-side-panel-ui-actions.html';\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxSidePanelUiActions', {\r\n\tbindings: {\r\n\t\tuiActions: '<',\r\n\t\tview: '<',\r\n\t},\r\n\tcontroller: MxSidePanelUiActionsCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n});\r\n\r\nMxSidePanelUiActionsCtrl.$inject = [\r\n\t'$scope',\r\n\t'mx.SolutionBuilderAgent.WidgetManager',\r\n\t'mx.shell.SidePanelService',\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n\t'mx.SolutionBuilderAgent.DialogOpenerService',\r\n];\r\n\r\nfunction MxSidePanelUiActionsCtrl($scope, widgetManager, sidePanelService, personalizationService, dialogOpener) {\r\n\tconst vm = this;\r\n\tvm.alternativeViews = [];\r\n\r\n\tvm.$onChanges = (changes) => {\r\n\t\tif (changes.view) {\r\n\t\t\tupdateAlternativeViews(changes.view.currentValue);\r\n\t\t}\r\n\t};\r\n\r\n\tvm.handleClick = handleClick;\r\n\tvm.selectAlternativeView = selectAlternativeView;\r\n\r\n\tfunction handleClick(selectedUiAction) {\r\n\t\tselectedUiAction.handler.call(vm.view);\r\n\t}\r\n\r\n\tfunction selectAlternativeView(selectedView) {\r\n\t\tvm.alternativeViews.forEach((view) => (view.isChecked = selectedView === view));\r\n\t\topenAlternativeView(selectedView);\r\n\t}\r\n\r\n\tasync function updateAlternativeViews(view) {\r\n\t\tvm.alternativeViews = [];\r\n\r\n\t\tif (!view) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst views = await widgetManager.getAlternativeViews(vm.view);\r\n\t\tif (views.length < 2) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvm.alternativeViews = views.map((view) => ({\r\n\t\t\tid: view.Id,\r\n\t\t\tlabel: view.Name,\r\n\t\t\tname: view.Name,\r\n\t\t\tisChecked: vm.view.widgetId === view.Id,\r\n\t\t\tpurpose: view.Purpose || 0,\r\n\t\t}));\r\n\r\n\t\t$scope.$evalAsync();\r\n\t}\r\n\r\n\tfunction openAlternativeView(view) {\r\n\t\tswitch (vm.view.dialogType) {\r\n\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetDialogAction.Preview:\r\n\t\t\t\tsidePanelService.closeView(vm.view);\r\n\t\t\t\tpersonalizationService.saveDefaultPreviewId(vm.view.context._type, view.id);\r\n\t\t\t\tdialogOpener.openPreview(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t_id: vm.view.context._id,\r\n\t\t\t\t\t\t_type: vm.view.context._type,\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{ widgetId: view.id }\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetDialogAction.New:\r\n\t\t\t\tsidePanelService.closeView(vm.view);\r\n\t\t\t\tpersonalizationService.saveDefaultNewDialogId(vm.view.context._type, view.id);\r\n\t\t\t\tif (view.purpose === mx.SolutionBuilderAgent.ContentWidgetDialogPurpose.CreateAndEdit) {\r\n\t\t\t\t\tpersonalizationService.saveDefaultEditDialogId(vm.view.context._type, view.id);\r\n\t\t\t\t}\r\n\t\t\t\tdialogOpener.openNewDialog(vm.view.context._type, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, view.id);\r\n\t\t\t\tbreak;\r\n\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetDialogAction.Edit:\r\n\t\t\t\tsidePanelService.closeView(vm.view);\r\n\t\t\t\tpersonalizationService.saveDefaultEditDialogId(vm.view.context._type, view.id);\r\n\t\t\t\tif (view.purpose === mx.SolutionBuilderAgent.ContentWidgetDialogPurpose.CreateAndEdit) {\r\n\t\t\t\t\tpersonalizationService.saveDefaultNewDialogId(vm.view.context._type, view.id);\r\n\t\t\t\t}\r\n\t\t\t\tdialogOpener.openEditDialog(vm.view.context, undefined, undefined, undefined, { widgetId: view.id });\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n","// Module\nvar code = \"
\\r\\n\\r\\n\\t
\\r\\n\\t\\t{{query.fullTitle}}\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\tmore_horiz\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\t
\\r\\n\\t\\t

{{:: 'solutionBuilderAgent.components.mx-query-filter-toolbar.title' | mxi18n}}

\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t{{query.fullTitle}}\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t
\\r\\n\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","'use strict';\r\nimport MxRichTextBoxCtrl from './mx-rich-text-box';\r\nimport template from './mx-rich-text-box.html';\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name mx.agent:mxRichTextBox\r\n * @module mx.agent\r\n * @restrict 'E'\r\n * @scope {}\r\n * @description Rich text box (WYSIWYG editor).\r\n * @param {string} ng-model= - editing model as html.\r\n * @param {boolean} advancedMode@ - (default: `true`) there are 2 modes: \"simple\" and \"advanced\".\r\n * For mobile-device it uses \"simple\" mode always, no metter the value.\r\n * If \"advancedMode\" set as `true` then for wide-screens will be used \"advanced\" mode.\r\n * If \"advancedMode\" set as `false` then for wide-screens will be used \"simple\" mode.\r\n * @param {boolean} allowCodeEditor@ - allow to enable toolbar which opens code editor dialog\r\n * @param {callback} on-focus& - fires of focus.\r\n * @param {callback} on-blur& - fires of blur.\r\n * @param {boolean} set-focus@ - if `true` then the focus will be set automatically.\r\n * @param {object} editor-options - sets additional editor options.\r\n * @param {function} external-setup - additional setup for tinyMce. Will be executed after standard Setup\r\n * @usage \r\n */\r\n\r\nangular.module('mx.SolutionBuilderAgent').directive('mxRichTextBox', function mxRichTextBoxDirective() {\r\n\tvar directive = new mx.components.FormControlBase(MxRichTextBoxCtrl, null, template);\r\n\r\n\tangular.extend(directive.bindToController, {\r\n\t\ttoolbar: '=',\r\n\t\tadvancedMode: '@',\r\n\t\tallowCodeEditor: '@',\r\n\t\tonBlur: '&',\r\n\t\tonFocus: '&',\r\n\t\tsetFocus: '@',\r\n\t\t_options: '=?editorOptions',\r\n\t\texternalSetup: '=?',\r\n\t\tignoreReadonly: '=?',\r\n\t\tisFullscreenModeEnabled: '\\r\\n\\t\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{ vm.isFullscreenModeEnabled ? 'fullscreen_exit' : 'fullscreen'}}\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t
{{::vm.hintPlainText}}
\\r\\n\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n\";\n// Exports\nexport default code;","(function () {\r\n\t'use strict';\r\n\r\n\tMxSchemaPickerCtrl.$inject = ['mx.SolutionBuilderAgent.SchemaService', '$scope', '$attrs', '$q'];\r\n\r\n\tfunction MxSchemaPickerCtrl(schemaService, $scope, $attrs, $q) {\r\n\t\tvar vm = this;\r\n\t\tvar _filter, _selectedObjectsExpected;\r\n\t\tvar servicePromise;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.group = null;\r\n\t\t\t_filter = vm.filter;\r\n\r\n\t\t\tvm.itemsFilter =\r\n\t\t\t\tvm.itemsFilter ||\r\n\t\t\t\tfunction (items) {\r\n\t\t\t\t\treturn items;\r\n\t\t\t\t};\r\n\r\n\t\t\t_selectedObjectsExpected = $attrs.selectedObjects && $attrs.selectedObjects.length > 0;\r\n\r\n\t\t\tif (_selectedObjectsExpected || ($attrs.selectedObject && $attrs.selectedObject.length > 0)) {\r\n\t\t\t\t$scope.$watch('vm.model', function () {\r\n\t\t\t\t\tsetSelectedSchemaItems();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tObject.defineProperty(vm, 'filter', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn _filter;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (value) {\r\n\t\t\t\t\t_filter = value;\r\n\r\n\t\t\t\t\treloadItems();\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tservicePromise =\r\n\t\t\t\t(vm.mxServiceContext && vm.mxServiceContext.$servicePromise) ||\r\n\t\t\t\t$q.when({\r\n\t\t\t\t\tisService: false,\r\n\t\t\t\t});\r\n\t\t};\r\n\r\n\t\tfunction setSelectedSchemaItems() {\r\n\t\t\tif (vm.model) {\r\n\t\t\t\tvar selectedItems = Array.isArray(vm.model)\r\n\t\t\t\t\t? vm.model\r\n\t\t\t\t\t: vm.model.split(',').map(function (item) {\r\n\t\t\t\t\t\t\treturn (item || '').trim();\r\n\t\t\t\t\t });\r\n\r\n\t\t\t\tvar getItems = vm.type === 'type' ? schemaService.getTypes() : schemaService.getClasses();\r\n\r\n\t\t\t\tgetItems.then(function (items) {\r\n\t\t\t\t\tvar objects = $.extend(\r\n\t\t\t\t\t\ttrue,\r\n\t\t\t\t\t\t[],\r\n\t\t\t\t\t\titems.filter(function (item) {\r\n\t\t\t\t\t\t\treturn selectedItems.indexOf(vm.valueIsId ? item.Id : item.InternalName) > -1;\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tif (_selectedObjectsExpected) {\r\n\t\t\t\t\t\tvm.selectedObjects = objects;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvm.selectedObject = objects.length > 0 ? objects[0] : null;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else if (_selectedObjectsExpected) {\r\n\t\t\t\tvm.selectedObjects = [];\r\n\t\t\t} else {\r\n\t\t\t\tvm.selectedObject = null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tasync function reloadItems() {\r\n\t\t\tconst items = await vm.loadItems();\r\n\t\t\t$scope.$evalAsync(() => {\r\n\t\t\t\tvm.items = items;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tasync function loadCIs() {\r\n\t\t\treturn schemaService.getTypeItems(vm.valueIsId, vm.filter);\r\n\t\t}\r\n\r\n\t\tasync function loadDDs() {\r\n\t\t\tconst service = await servicePromise;\r\n\t\t\tlet items = await schemaService.getClassItems(vm.valueIsId, vm.filter, vm.classType || -1);\r\n\t\t\tif (service.isService && (!vm.classType || vm.classType === -1 /*no filter*/ || vm.classType === 4) /*pickup*/) {\r\n\t\t\t\titems = items.concat(service.EnumTypes);\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t}\r\n\r\n\t\tasync function loadSchemaData() {\r\n\t\t\tlet loadPromise = (vm.type === 'type' ? loadCIs() : loadDDs()).then((items) => (loadPromise !== vm.lastLoadPromise ? vm.lastLoadPromise : items));\r\n\r\n\t\t\tvm.lastLoadPromise = loadPromise;\r\n\t\t\treturn loadPromise;\r\n\t\t}\r\n\r\n\t\tvm.loadItems = async function () {\r\n\t\t\tlet items = await loadSchemaData();\r\n\t\t\titems = vm.itemsFilter(items);\r\n\t\t\treturn items;\r\n\t\t};\r\n\t}\r\n\r\n\tvar commonObjectPickerProperties = {\r\n\t\ttype: '@',\r\n\t\trequired: '=?require',\r\n\t\tngRequired: '=?',\r\n\t\tfilter: '=?',\r\n\t\titemsFilter: '=?',\r\n\t\tclassType: '=?',\r\n\t\tvalueIsId: '=',\r\n\t};\r\n\r\n\tvar commonObjectPickerTemplate =\r\n\t\t'data-name=\"{{vm.name}}\" ' +\r\n\t\t'data-label=\"{{vm.label}}\" ' +\r\n\t\t'data-hint=\"{{vm.hint}}\" ' +\r\n\t\t'ng-model=\"vm.model\" ' +\r\n\t\t'data-load-items=\"vm.loadItems\" ' +\r\n\t\t'data-item-title-field=\"DisplayName\" ' +\r\n\t\t'data-item-id-field=\"Name\" ' +\r\n\t\t'ng-required=\"(vm.required || vm.ngRequired) && !vm.disabled && !vm.readOnly\" ' +\r\n\t\t'data-disabled=\"vm.disabled\" ' +\r\n\t\t'read-only=\"vm.readOnly\" ' +\r\n\t\t'custom-validation=\"vm.customValidation\" ';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').directive('mxSchemaPicker', function mxSchemaPickerDirective() {\r\n\t\tvar directive = new mx.components.FormControlBase(MxSchemaPickerCtrl, null);\r\n\r\n\t\tdirective.template = '';\r\n\r\n\t\tangular.extend(directive.bindToController, commonObjectPickerProperties);\r\n\t\tdirective.bindToController.selectedObject = '=';\r\n\t\tdirective.require.mxServiceContext = '?^mxServiceContext';\r\n\r\n\t\tdelete directive.link;\r\n\r\n\t\treturn directive;\r\n\t});\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').directive('mxMultiSchemaPicker', function mxMultiSchemaPickerDirective() {\r\n\t\tvar directive = new mx.components.FormControlBase(MxSchemaPickerCtrl, null);\r\n\r\n\t\tdirective.template = '';\r\n\r\n\t\tangular.extend(directive.bindToController, commonObjectPickerProperties);\r\n\t\tdirective.bindToController.selectedObjects = '=?';\r\n\t\tdirective.require.mxServiceContext = '?^mxServiceContext';\r\n\r\n\t\tdelete directive.link;\r\n\r\n\t\treturn directive;\r\n\t});\r\n})();\r\n","// Module\nvar code = \"\\r\\n\\t
\\r\\n\\r\\n\\t\\t

\\r\\n\\t\\t\\t{{vm.query.title || ('solutionBuilderAgent.components.mx-search-query-builder.buildSearchQuery' | mxi18n)}}\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{'solutionBuilderAgent.components.mx-search-query-builder.subitemOf' | mxi18n}}\\r\\n\\t\\t\\t\\t{{vm.parent.title}}\\r\\n\\t\\t\\t\\r\\n\\t\\t

\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tclear\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t{{'shell.common.cancel' | mxi18n}}\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tdone\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t{{'shell.common.save' | mxi18n}}\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tdone_all\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t{{'shell.common.done' | mxi18n}}\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t 0\\\" actions=\\\"vm.actions\\\" context=\\\"vm.ctx\\\">\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t{{'solutionBuilderAgent.components.mx-search-query-builder.parentFilterAreApplied' | mxi18n}}
\\r\\n\\t\\t\\t\\t( {{vm.parent.fullTitle}} / )\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","import template from './mx-search-query-group.directive.html';\r\nimport { GroupType } from '../../model/enumerations';\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name mx.SolutionBuilderAgent:mxSearchQueryGroup\r\n * @module mx.SolutionBuilderAgent\r\n * @restrict 'E'\r\n * @scope {}\r\n * @requires mx.components.Recursion\r\n * @requires mx.shell.EventService\r\n * @requires {@ref mx.shell.SearchProviderService mx.shell.SearchProviderService}\r\n * @description\r\n * A group of search conditions. Used to group query conditions on {@ref mx.shell:mxSearchQueryBuilder form} that allows to create or update complex search queries\r\n * @param {mx.SolutionBuilderAgent.SearchQueryGroup} group= - {@ref mx.shell.SearchQueryGroup Search query conditions group model}\r\n * @param {mx.SolutionBuilderAgent.SearchQueryGroup} parent= - Parent search query conditions group\r\n * @param {mx.shell.SearchContext} context= - Reference to a {@ref mx.shell.SearchContext search context model}\r\n * related to search query being selected for update\r\n * @usage \r\n */\r\nangular.module('mx.SolutionBuilderAgent').directive('mxSearchQueryGroup', [\r\n\t'mx.components.Recursion',\r\n\t'mx.shell.SidebarService',\r\n\t'mx.app.DeviceService',\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.UserProfileService',\r\n\t'mx.shell.SearchProviderService',\r\n\t'mx.SolutionBuilderAgent.SearchQueryService',\r\n\t'mx.SolutionBuilderAgent.mxColumnDefinitionService',\r\n\tfunction mxSearchQueryGroupDirective(recursion, sidebarService, deviceService, eventService, userProfileService, searchService, searchQueryService, columnDefinitionService) {\r\n\t\tMxSearchQueryGroupCtrl.$inject = ['$scope', '$q', 'mx.internationalization'];\r\n\r\n\t\tfunction MxSearchQueryGroupCtrl($scope, $q, i18n) {\r\n\t\t\tconst vm = this;\r\n\t\t\tlet propertiesPromise;\r\n\t\t\tvm.$onInit = function () {\r\n\t\t\t\tvm.operatorTitle = operatorTitle;\r\n\t\t\t\tvm.filter = { Title: '' };\r\n\t\t\t\tvm.level = Number(vm.level || 1);\r\n\t\t\t\tvm.checkConditions = () => searchQueryService.validateGroup(vm.group);\r\n\r\n\t\t\t\tvm.allowSave = vm.showSaveBtn?.toLowerCase() === 'true';\r\n\t\t\t\tvm.showTestQueryBtn = vm.showTestQueryBtn?.toLowerCase() === 'true';\r\n\r\n\t\t\t\tvm.logicalOperators = mx.shell.SearchQueryLogicalOperator;\r\n\t\t\t\tvm.toggleLogicalOperator = toggleLogicalOperator;\r\n\t\t\t\tvm.toggleParentLogicalOperator = toggleParentLogicalOperator;\r\n\t\t\t\tvm.groupHeaderClick = groupHeaderClick;\r\n\t\t\t\tvm.addGroup = addGroup;\r\n\t\t\t\tvm.deleteGroup = deleteGroup;\r\n\t\t\t\tvm.addConditionClick = addConditionClick;\r\n\t\t\t\tvm.addCondition = addCondition;\r\n\t\t\t\tvm.addExpressionCondition = addExpressionCondition;\r\n\t\t\t\tvm.editInQueryBuilder = editInQueryBuilder;\r\n\t\t\t\tvm.testQuery = run;\r\n\t\t\t\tvm.getHintDenyingSave = getHintDenyingSave;\r\n\t\t\t\tvm.allowExpressions = false;\r\n\r\n\t\t\t\tpropertiesPromise = (\r\n\t\t\t\t\t!vm.context.datasource ? $q.when({ Columns: [] }) : columnDefinitionService.getGridDefinitionById(vm.context.datasource, vm.context.widgetId)\r\n\t\t\t\t).then((data) => {\r\n\t\t\t\t\tvm.dataQuery = data;\r\n\t\t\t\t\tvm.context.className = data.SchemaClassName;\r\n\t\t\t\t\tconst columns = data.Columns.filter((column) => column.IsAvailableInSearch).sort((a, b) => a.Title.localeCompare(b.Title));\r\n\t\t\t\t\tif (vm.context.className) {\r\n\t\t\t\t\t\treturn userProfileService.isCustomizationMode().then((result) => {\r\n\t\t\t\t\t\t\tvm.allowExpressions = result;\r\n\t\t\t\t\t\t\treturn columns;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn columns;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst event = eventService.subscribeTo(mx.SolutionBuilderAgent.Events.SearchGroupToggleExpanded, toggleGroupExpanded, $scope);\r\n\r\n\t\t\t\t$scope.$on('$destroy', function () {\r\n\t\t\t\t\tevent();\r\n\t\t\t\t});\r\n\t\t\t};\r\n\r\n\t\t\tfunction addConditionClick() {\r\n\t\t\t\tif (!vm.conditionProperties) {\r\n\t\t\t\t\tpropertiesPromise.then(function (properties) {\r\n\t\t\t\t\t\tvm.conditionProperties = properties || [];\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction toggleOperator(operator) {\r\n\t\t\t\tif (operator === mx.SolutionBuilderAgent.SearchQueryLogicalOperator.AND) {\r\n\t\t\t\t\treturn mx.SolutionBuilderAgent.SearchQueryLogicalOperator.OR;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn mx.SolutionBuilderAgent.SearchQueryLogicalOperator.AND;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction toggleLogicalOperator(event) {\r\n\t\t\t\tif (event) {\r\n\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.group.logicalOperator = toggleOperator(vm.group.logicalOperator);\r\n\t\t\t}\r\n\r\n\t\t\tfunction toggleParentLogicalOperator(event) {\r\n\t\t\t\tif (event) {\r\n\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.parent.logicalOperator = toggleOperator(vm.parent.logicalOperator);\r\n\t\t\t}\r\n\r\n\t\t\tfunction groupHeaderClick(event) {\r\n\t\t\t\tif (event) {\r\n\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (vm.readOnly) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst expanded = vm.group.conditions.length ? vm.group.conditions[0].__expanded : false;\r\n\r\n\t\t\t\tif (vm.level === 1) {\r\n\t\t\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.SearchGroupToggleExpanded, expanded);\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttoggleGroupExpanded(null, expanded);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction toggleGroupExpanded(event, expanded) {\r\n\t\t\t\tvm.group.conditions.forEach(function (c) {\r\n\t\t\t\t\tc.__expanded = !expanded;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfunction addCondition(event, property, group) {\r\n\t\t\t\tsearchQueryService.createConditionByColumn(property.Name, vm.dataQuery).then((condition) => {\r\n\t\t\t\t\tif (condition) {\r\n\t\t\t\t\t\tgroup.conditions.push(condition);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfunction addExpressionCondition(event, group) {\r\n\t\t\t\tsearchQueryService.createExpressionCondition().then((condition) => {\r\n\t\t\t\t\tgroup.conditions.push(condition);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfunction operatorTitle(id) {\r\n\t\t\t\tswitch (id) {\r\n\t\t\t\t\tcase vm.logicalOperators.AND:\r\n\t\t\t\t\t\treturn i18n.get('solutionBuilderAgent.components.mx-search-query-group.operatorAND');\r\n\t\t\t\t\tcase vm.logicalOperators.OR:\r\n\t\t\t\t\t\treturn i18n.get('solutionBuilderAgent.components.mx-search-query-group.operatorOR');\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\treturn '';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction addGroup(event) {\r\n\t\t\t\tif (event) {\r\n\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t}\r\n\t\t\t\tvm.group.addGroup(searchQueryService.createQueryGroup());\r\n\t\t\t}\r\n\r\n\t\t\tfunction deleteGroup(event) {\r\n\t\t\t\tif (event) {\r\n\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t}\r\n\t\t\t\tif (vm.parent) {\r\n\t\t\t\t\tvm.parent.removeGroup(vm.group);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction run(event) {\r\n\t\t\t\tif (event) {\r\n\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (deviceService.screenMobile()) {\r\n\t\t\t\t\tsidebarService.close();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsearchService.currentSearch().searchForm.setGroup(vm.group, GroupType.QueryBuilder);\r\n\r\n\t\t\t\tsearchService.runSearch();\r\n\t\t\t}\r\n\r\n\t\t\tfunction editInQueryBuilder(event) {\r\n\t\t\t\tif (event) {\r\n\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (vm.allowSave) {\r\n\t\t\t\t\tconst query = searchQueryService.createQuery({\r\n\t\t\t\t\t\tGroup: vm.group.toJSON(),\r\n\t\t\t\t\t\tParent: vm.context.navigationItem?.originFilterReference?.Id,\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tsearchQueryService.initQueryByContext(query, vm.context).then(() => {\r\n\t\t\t\t\t\tsearchQueryService.openFilterDialog(query, vm.context);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction getHintDenyingSave() {\r\n\t\t\t\tlet currentNavItem = vm.context.navigationItem;\r\n\t\t\t\tlet currentNavPath = '';\r\n\t\t\t\tlet allowedNavPath = '';\r\n\t\t\t\tlet allowedNavPathFound = false;\r\n\t\t\t\tdo {\r\n\t\t\t\t\tcurrentNavPath = currentNavItem.title + ' / ' + currentNavPath;\r\n\t\t\t\t\tif (allowedNavPathFound || !currentNavItem.originFilterReference || currentNavItem.originFilterReference.CanEdit) {\r\n\t\t\t\t\t\tallowedNavPath = currentNavItem.title + ' / ' + allowedNavPath;\r\n\t\t\t\t\t\tallowedNavPathFound = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcurrentNavItem = currentNavItem.parent;\r\n\t\t\t\t} while (currentNavItem);\r\n\t\t\t\treturn (i18n.get('solutionBuilderAgent.components.mx-search-query-group.noRightsToSaveForNonAdmin') || '')\r\n\t\t\t\t\t.replace('{current_nav_path}', currentNavPath)\r\n\t\t\t\t\t.replace('{allowed_nav_path}', allowedNavPath);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\trestrict: 'E',\r\n\t\t\tscope: {},\r\n\t\t\tbindToController: {\r\n\t\t\t\tgroup: '=',\r\n\t\t\t\tparent: '=',\r\n\t\t\t\tcontext: '=',\r\n\t\t\t\tlevel: '@',\r\n\t\t\t\tshowSaveBtn: '@',\r\n\t\t\t\tshowTestQueryBtn: '@',\r\n\t\t\t\treadOnly: '\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t{{'solutionBuilderAgent.components.mx-search-query-group.operator' + vm.parent.logicalOperatorTitle | mxi18n}}\\r\\n\\t\\t\\r\\n\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tadd_box\\r\\n\\t\\t\\t\\t{{:: 'solutionBuilderAgent.components.mx-search-query-group.addCondition' | mxi18n}}\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t
5\\\">\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t{{'solutionBuilderAgent.components.mx-search-query-group.expression' | mxi18n}}\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t{{:: property.Title}}\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\tlibrary_add\\r\\n\\t\\t\\t{{'solutionBuilderAgent.components.mx-search-query-group.group' | mxi18n}}\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\tsave\\r\\n\\t\\t\\t{{'solutionBuilderAgent.components.mx-search-query-group.Save' | mxi18n}}\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\tplay_circle_outline\\r\\n\\t\\t\\t{{'solutionBuilderAgent.components.mx-search-query-builder.testQuery' | mxi18n }}\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t 1 && !vm.readOnly\\\" class=\\\"mx-search-header--btn mx-search-group--remove-btn\\\" mx-at-id=\\\"remove-condition-group-btn\\\" title=\\\"{{'solutionBuilderAgent.components.mx-search-query-group.removeGroup' | mxi18n}}\\\">\\r\\n\\t\\t\\tclear\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t{{'solutionBuilderAgent.components.mx-search-query-group.addSomeConditions' | mxi18n }}\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t{{ ::vm.i18n.filteredBy }}:\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t
{{ ::condition.title }}
\\r\\n\\r\\n\\t\\t
{{ condition.shortValue }}
\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","import { EventCodes } from '../../../../App/model/event-codes';\r\n\r\n(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('mx.SolutionBuilderAgent').component('mxSidePanelTabHeader', {\r\n\t\tbindings: {\r\n\t\t\tview: '<',\r\n\t\t},\r\n\t\tcontroller: MxSidePanelTabHeaderCtrl,\r\n\t\tcontrollerAs: 'vm',\r\n\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-side-panel/mx-side-panel-tab-header.html',\r\n\t});\r\n\r\n\tMxSidePanelTabHeaderCtrl.$inject = [\r\n\t\t'$scope',\r\n\t\t'mx.shell.SideLayout',\r\n\t\t'mx.shell.SidePanelService',\r\n\t\t'mx.shell.SidePanelActionsService',\r\n\t\t'mx.SolutionBuilderAgent.FavouritesService',\r\n\t\t'mx.SolutionBuilderAgent.ViewHelpService',\r\n\t\t'mx.shell.EventService',\r\n\t];\r\n\r\n\tfunction MxSidePanelTabHeaderCtrl($scope, sideLayoutService, sidePanelService, sidePanelActionsService, favouritesService, viewHelpService, eventService) {\r\n\t\tvar vm = this;\r\n\t\tvar currentView;\r\n\r\n\t\tvm.currentUIActions = [];\r\n\r\n\t\tvm.sideLayoutService = sideLayoutService;\r\n\t\tvm.sidePanelService = sidePanelService;\r\n\t\tvm.sidePanelActionsService = sidePanelActionsService;\r\n\t\tvm.favouritesService = favouritesService;\r\n\t\tvm.viewHelpService = viewHelpService;\r\n\r\n\t\tObject.defineProperty(vm, 'view', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn currentView;\r\n\t\t\t},\r\n\t\t\tset: function (newView) {\r\n\t\t\t\tcurrentView = newView;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t$scope.$watch(\r\n\t\t\t'vm.view.uiActionGroup',\r\n\t\t\tfunction (uiActionGroup) {\r\n\t\t\t\tif (uiActionGroup) {\r\n\t\t\t\t\treloadUIActions(currentView ? currentView && currentView.uiActionGroup : 'selection', currentView);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\ttrue\r\n\t\t);\r\n\r\n\t\tvm.onCloseClick = onCloseClick;\r\n\r\n\t\treturn vm;\r\n\r\n\t\tfunction reloadUIActions(uiActionGroup, view) {\r\n\t\t\tvm.currentUIActions = vm.sidePanelActionsService.getUIActions(uiActionGroup, view);\r\n\t\t}\r\n\r\n\t\tfunction onCloseClick() {\r\n\t\t\teventService.dispatchEvent(EventCodes.TrackViewTelemetry, { eventName: '{viewName} closed', view: vm.view });\r\n\t\t\tvm.sidePanelService.closeCurrentView();\r\n\t\t}\r\n\t}\r\n})();\r\n","// Module\nvar code = \"\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\tmore_vert\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t{{:: 'shell.mx-side-panel.alternativeViews' | mxi18n}}\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcheck\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{{view.label}}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n\\r\\n\";\n// Exports\nexport default code;","import template from './mx-styles-editor.component.html';\r\n\r\nexport class MxStylesEditorController {\r\n\tstatic $inject = ['$scope', '$ocLazyLoad', 'mx.internationalization'];\r\n\tconstructor($scope, $ocLazyLoad, i18n) {\r\n\t\tthis.id = 'id-' + Math.random().toFixed(20).substr(2);\r\n\t\tthis.items = [];\r\n\t\tthis.i18n = i18n;\r\n\r\n\t\tPromise.all([\r\n\t\t\timport(/* webpackChunkName: \"ui.ace\" */ 'ace-builds/src-min-noconflict/ace.js'),\r\n\t\t\timport(/* webpackChunkName: \"ui.ace\" */ 'ace-builds/src-min-noconflict/snippets/scss.js'),\r\n\t\t\timport(/* webpackChunkName: \"ui.ace\" */ 'ace-builds/src-min-noconflict/mode-scss.js'),\r\n\t\t\timport(/* webpackChunkName: \"ui.ace\" */ 'ace-builds/src-min-noconflict/ext-language_tools.js'),\r\n\t\t\timport(/* webpackChunkName: \"ui.ace\" */ 'angular-ui-ace/src/ui-ace.js'),\r\n\t\t]).then(() => {\r\n\t\t\t$ocLazyLoad.inject('ui.ace');\r\n\t\t\t$scope.$evalAsync(() => {\r\n\t\t\t\tthis.lazyLoaded = true;\r\n\r\n\t\t\t\tthis.editorOptions = {\r\n\t\t\t\t\tfontSize: 16,\r\n\t\t\t\t\tmode: 'scss',\r\n\t\t\t\t\tworkerPath: 'workers',\r\n\t\t\t\t\tadvanced: {\r\n\t\t\t\t\t\tenableSnippets: true,\r\n\t\t\t\t\t\tenableBasicAutocompletion: true,\r\n\t\t\t\t\t\tenableLiveAutocompletion: true,\r\n\t\t\t\t\t\tminLines: 5,\r\n\t\t\t\t\t\tshowLineNumbers: false,\r\n\t\t\t\t\t\tshowPrintMargin: false,\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t$scope.$watch('vm.mxStyles', (styles) => {\r\n\t\t\tif (styles !== this.internalStyles) {\r\n\t\t\t\tthis.setItems(this.formatElements, styles);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t$onChanges(changes) {\r\n\t\tif (changes.formatElements) {\r\n\t\t\tthis.setItems(changes.formatElements.currentValue, this.internalStyles);\r\n\t\t}\r\n\r\n\t\tif (changes.bodyStyles || changes.contentStyles) {\r\n\t\t\tthis.updateCss();\r\n\t\t}\r\n\t}\r\n\r\n\tsetItems(formatElementsStr = '', stylesStr = '') {\r\n\t\tthis.internalStyles = stylesStr;\r\n\t\tthis.styles = [];\r\n\t\tlet formatElements = [];\r\n\t\ttry {\r\n\t\t\tthis.styles = JSON.parse(stylesStr) || [];\r\n\t\t} catch (e) {\r\n\t\t\t// console.error(e);\r\n\t\t}\r\n\t\ttry {\r\n\t\t\tformatElements = JSON.parse(formatElementsStr) || [];\r\n\t\t} catch (e) {\r\n\t\t\t// console.error(e);\r\n\t\t}\r\n\t\tthis.items = formatElements.map((element) => ({\r\n\t\t\ttitle: formatElements.length > 1 ? this.i18n.get(element.Title) || element.Title : element.Title,\r\n\t\t\tselector: element.Selector,\r\n\t\t\tcss: this.styles.find(({ Selector }) => element.Selector === Selector)?.Css || '',\r\n\t\t}));\r\n\r\n\t\tthis.updateCss();\r\n\t}\r\n\r\n\tupdateOutput() {\r\n\t\tthis.mxStyles = this.internalStyles = JSON.stringify(\r\n\t\t\tthis.items.map(({ selector, css }) => ({\r\n\t\t\t\tSelector: selector,\r\n\t\t\t\tCss: css,\r\n\t\t\t}))\r\n\t\t);\r\n\t\tthis.updateCss();\r\n\t}\r\n\r\n\tupdateCss() {\r\n\t\tlet bodyCss = '',\r\n\t\t\tcontentCss = '';\r\n\t\ttry {\r\n\t\t\tbodyCss = JSON.parse(this.bodyStyles)[0].Css || '';\r\n\t\t} catch (e) {\r\n\t\t\tbodyCss = '';\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tcontentCss = JSON.parse(this.contentStyles)[0].Css || '';\r\n\t\t} catch (e) {\r\n\t\t\tcontentCss = '';\r\n\t\t}\r\n\r\n\t\tthis.bodyCss = `#${this.id} .mx-style-editor--preview__body { ${bodyCss} } `;\r\n\t\tthis.contentCss = `#${this.id} .mx-style-editor--preview__content { ${contentCss} } `;\r\n\r\n\t\tthis.css =\r\n\t\t\tthis.bodyCss +\r\n\t\t\tthis.contentCss +\r\n\t\t\tthis.items.reduce((accum, { title, selector, css }) => accum + (css ? `#${this.id} ${selector === 'root' ? title : selector} { ${css} } ` : ''), '');\r\n\t}\r\n}\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxStylesEditor', {\r\n\tcontroller: MxStylesEditorController,\r\n\tcontrollerAs: 'vm',\r\n\tbindings: {\r\n\t\tformatElements: '<', //serialized Array<{Selector, Title}>\r\n\t\tmxStyles: '=', //serialized Array<{Selector, Css}>\r\n\t\tpreviewHtml: '<',\r\n\t\tcontentStyles: '<',\r\n\t\tbodyStyles: '<',\r\n\t\tshowOnlyPreview: '<',\r\n\t},\r\n\ttemplate: template,\r\n});\r\n","// Module\nvar code = \"
\\r\\n\\t
Control does not have format elements
\\r\\n\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","'use strict';\r\n\r\nfunction DataModel() {\r\n\tObject.defineProperty(this, 'sources', {\r\n\t\twritable: true,\r\n\t\tvalue: [],\r\n\t});\r\n\tObject.defineProperty(this, 'multiCurrencies', {\r\n\t\twritable: true,\r\n\t\tvalue: false,\r\n\t});\r\n}\r\n\r\nDataModel.prototype.find = function (path) {\r\n\tvar property = null;\r\n\r\n\tthis.sources.some(function (source) {\r\n\t\tif (path.indexOf(source.path) === 0) {\r\n\t\t\tproperty = source.find(path);\r\n\t\t\tif (property) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t} else if (source.path === path) {\r\n\t\t\tproperty = source;\r\n\t\t\treturn true;\r\n\t\t}\r\n\t});\r\n\treturn property;\r\n};\r\n\r\nDataModel.prototype.addSources = function (sources) {\r\n\tsources = sources || [];\r\n\tvar _this = this;\r\n\r\n\tsources.forEach(function (source) {\r\n\t\tif (source instanceof DataModelSource) {\r\n\t\t\t_this.sources.push(source);\r\n\t\t}\r\n\t});\r\n};\r\n\r\nDataModel.prototype.updateSource = function (source) {\r\n\tvar index = -1;\r\n\tif (source instanceof DataModelSource) {\r\n\t\tthis.sources.some(function (s, i) {\r\n\t\t\tif (s.id === source.id) {\r\n\t\t\t\tindex = i;\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (index > -1) {\r\n\t\t\tthis.sources[index] = source;\r\n\t\t} else {\r\n\t\t\tthis.sources.push(source);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction DataModelSource(options, request, response, forRuntime, specialOptions) {\r\n\toptions = options || {};\r\n\tspecialOptions = specialOptions || {};\r\n\r\n\tif (!(options instanceof mx.SolutionBuilderAgent.DataModelSourceDescriptor)) {\r\n\t\toptions = new mx.SolutionBuilderAgent.DataModelSourceDescriptor(options);\r\n\t}\r\n\r\n\tif (!options.Path) {\r\n\t\tthrow new Error('No path');\r\n\t}\r\n\r\n\tObject.defineProperty(this, 'FilterExpression', {\r\n\t\twritable: true,\r\n\t\tvalue: options.FilterExpression || null,\r\n\t});\r\n\tObject.defineProperty(this, 'allowUnsafeFilter', {\r\n\t\twritable: true,\r\n\t\tvalue: options.AllowUnsafeFilter || false,\r\n\t});\r\n\r\n\tObject.defineProperty(this, 'id', {\r\n\t\twritable: true,\r\n\t\tvalue: options.Id || '',\r\n\t});\r\n\tObject.defineProperty(this, 'name', {\r\n\t\twritable: true,\r\n\t\tvalue: options.Name || '',\r\n\t});\r\n\tObject.defineProperty(this, 'path', {\r\n\t\twritable: true,\r\n\t\tvalue: options.Path,\r\n\t});\r\n\tObject.defineProperty(this, 'items', {\r\n\t\twritable: true,\r\n\t\tvalue: options.Items || [],\r\n\t});\r\n\tObject.defineProperty(this, 'type', {\r\n\t\twritable: true,\r\n\t\tvalue: options.Type || '',\r\n\t});\r\n\r\n\tif (!forRuntime) {\r\n\t\tObject.defineProperty(this, 'direction', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: options.Direction,\r\n\t\t});\r\n\t}\r\n\r\n\tif (options.OperationId || options.WorkflowId) {\r\n\t\tObject.defineProperty(this, 'host', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: options.BaseUrl,\r\n\t\t});\r\n\t\tObject.defineProperty(this, 'service', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: options.Service || '',\r\n\t\t});\r\n\t\tObject.defineProperty(this, 'serviceId', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: options.ServiceId || '',\r\n\t\t});\r\n\t\tObject.defineProperty(this, 'operation', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: options.Operation || '',\r\n\t\t});\r\n\t\tObject.defineProperty(this, 'operationId', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: options.OperationId || '',\r\n\t\t});\r\n\t\tObject.defineProperty(this, 'relativePath', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: options.RelativePath || '',\r\n\t\t});\r\n\t} else if (options.EntityName || specialOptions.entityName) {\r\n\t\tObject.defineProperty(this, 'entityName', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: options.EntityName || specialOptions.entityName || '',\r\n\t\t});\r\n\t} else if (options.DataDefinition) {\r\n\t\tObject.defineProperty(this, 'dataDefinition', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: options.DataDefinition || '',\r\n\t\t});\r\n\t\tObject.defineProperty(this, 'filter', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: options.Filter || '',\r\n\t\t});\r\n\t} else if (options.DataQueryId) {\r\n\t\tObject.defineProperty(this, 'dataQueryId', {\r\n\t\t\twritable: true,\r\n\t\t\tvalue: options.DataQueryId || '',\r\n\t\t});\r\n\t}\r\n\r\n\tObject.defineProperty(this, 'httpMethod', {\r\n\t\twritable: true,\r\n\t\tvalue: mx.shell.HttpMethod.find(options.HttpMethod),\r\n\t});\r\n\tObject.defineProperty(this, 'reloadable', {\r\n\t\twritable: true,\r\n\t\tvalue: options.Reloadable === true,\r\n\t});\r\n\tObject.defineProperty(this, 'refreshInterval', {\r\n\t\twritable: true,\r\n\t\tvalue: options.RefreshInterval,\r\n\t});\r\n\tObject.defineProperty(this, 'rewriteResponse', {\r\n\t\twritable: true,\r\n\t\tvalue: options.RewriteResponse === true,\r\n\t});\r\n\tObject.defineProperty(this, 'loadOnInit', {\r\n\t\twritable: true,\r\n\t\tvalue: options.LoadOnInit === true,\r\n\t});\r\n\r\n\tObject.defineProperty(this, 'onSaving', {\r\n\t\twritable: true,\r\n\t\tvalue: options.OnSaving === true,\r\n\t});\r\n\tObject.defineProperty(this, 'onSaved', {\r\n\t\twritable: true,\r\n\t\tvalue: options.OnSaved === true,\r\n\t});\r\n\tObject.defineProperty(this, 'downloadSource', {\r\n\t\twritable: true,\r\n\t\tvalue: options.Download === true,\r\n\t});\r\n\r\n\tObject.defineProperty(this, 'hiddenFields', {\r\n\t\twritable: true,\r\n\t\tvalue: {},\r\n\t});\r\n\tObject.defineProperty(this, 'isArray', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.IsArray || options.isArray || false,\r\n\t});\r\n\tObject.defineProperty(this, 'bodyParameter', {\r\n\t\twritable: true,\r\n\t\tvalue: [],\r\n\t});\r\n\tObject.defineProperty(this, 'forRuntime', {\r\n\t\twritable: true,\r\n\t\tvalue: forRuntime === true,\r\n\t});\r\n\r\n\tif (response && response.ContractDescriptor) {\r\n\t\tObject.defineProperty(this, 'multiCurrencies', {\r\n\t\t\twritable: false,\r\n\t\t\tvalue: response.ContractDescriptor.MultiCurrencies || false,\r\n\t\t});\r\n\t}\r\n\tObject.defineProperty(this, '__options', {\r\n\t\twritable: false,\r\n\t\tenumerable: false,\r\n\t\tvalue: options,\r\n\t});\r\n\r\n\tthis.init(request, response);\r\n}\r\n\r\nDataModelSource.prototype.init = function (request, response) {\r\n\t// REQUEST\r\n\tvar contractType = getContractType(request && request.ContractDescriptor);\r\n\r\n\tif (contractType) {\r\n\t\tthis.addPropertiesFromType('RequestContract', request.UsedTypes, mx.SolutionBuilderAgent.DataModelPropertyDirection.IN);\r\n\t}\r\n\t// RESPONSE\r\n\tif (response) {\r\n\t\tcontractType = getContractType(response && response.ContractDescriptor);\r\n\t\tif (contractType) {\r\n\t\t\tthis.addPropertiesFromType(contractType, response.UsedTypes, this.direction || mx.SolutionBuilderAgent.DataModelPropertyDirection.OUT);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getContractType(contract) {\r\n\t\tvar type = null;\r\n\r\n\t\tif (contract) {\r\n\t\t\tif (typeof contract === 'string') {\r\n\t\t\t\ttype = contract;\r\n\t\t\t} else if (contract.Type) {\r\n\t\t\t\ttype = contract.Type || null;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn type;\r\n\t}\r\n};\r\n\r\nvar sysPropertyDescriptions;\r\n\r\nObject.defineProperty(DataModelSource.prototype, 'sysPropertyDescriptions', {\r\n\tenumerable: false,\r\n\tget: function () {\r\n\t\tif (!sysPropertyDescriptions) {\r\n\t\t\tvar i18n = mx.shell.Injector.get('mx.internationalization');\r\n\r\n\t\t\tvar getDescriptionLocalization = function (key) {\r\n\t\t\t\treturn i18n.get('solutionBuilderAgent.services.dataModel.' + key);\r\n\t\t\t};\r\n\r\n\t\t\tsysPropertyDescriptions = {\r\n\t\t\t\tsourceStateDescription: getDescriptionLocalization('sourceStateDescription'),\r\n\t\t\t\torderByDescription: getDescriptionLocalization('orderByDescription'),\r\n\t\t\t\tpageSizeDescription: getDescriptionLocalization('pageSizeDescription'),\r\n\t\t\t\tpageNumberDescription: getDescriptionLocalization('pageNumberDescription'),\r\n\t\t\t\ttotalCountDescription: getDescriptionLocalization('totalCountDescription'),\r\n\t\t\t\tfilterDescription: getDescriptionLocalization('filterDescription'),\r\n\t\t\t\tinactiveDescription: getDescriptionLocalization('inactiveDescription'),\r\n\t\t\t\tfragmentIdDescription: getDescriptionLocalization('fragmentIdDescription'),\r\n\t\t\t\tshared: getDescriptionLocalization('shared'),\r\n\t\t\t\touterContext: getDescriptionLocalization('outerContextDescription'),\r\n\t\t\t\tnavigationId: getDescriptionLocalization('navigationIdDescription'),\r\n\t\t\t\tfilterId: getDescriptionLocalization('filterIdDescription'),\r\n\t\t\t\tapplicationNameDescription: getDescriptionLocalization('applicationNameDescription'),\r\n\t\t\t\tcurrentUserDescription: getDescriptionLocalization('currentUserDescription'),\r\n\t\t\t\tavailableOnly: getDescriptionLocalization('availableOnly'),\r\n\t\t\t\tactionNameDescription: getDescriptionLocalization('actionNameDescription'),\r\n\t\t\t\tactionIdDescription: getDescriptionLocalization('actionIdDescription'),\r\n\t\t\t\tactionObjectDescription: getDescriptionLocalization('actionObjectDescription'),\r\n\t\t\t\tactionObjectIdDescription: getDescriptionLocalization('actionObjectIdDescription'),\r\n\t\t\t\tactionObjectTypeDescription: getDescriptionLocalization('actionObjectTypeDescription'),\r\n\t\t\t\tactionObjectDisplayNameDescription: getDescriptionLocalization('actionObjectDisplayNameDescription'),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn sysPropertyDescriptions;\r\n\t},\r\n});\r\n\r\nvar defaultExpression = 'return $value;';\r\n\r\nfunction MxDataModelItemBase() {}\r\n\r\nMxDataModelItemBase.prototype.find = function (path, createPathIfNotExist) {\r\n\tif (this.path === path) {\r\n\t\treturn this;\r\n\t} else if (this.items) {\r\n\t\tvar property = null;\r\n\r\n\t\tthis.items.some(function (childItem) {\r\n\t\t\tif (property !== null) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tproperty = childItem.find(path);\r\n\t\t});\r\n\r\n\t\tif (!property && createPathIfNotExist && path.indexOf(this.path + '.') === 0) {\r\n\t\t\tvar paths = path.split('.');\r\n\t\t\tvar partPath = paths[0];\r\n\t\t\tvar parent = this;\r\n\t\t\tfor (var i = 1; i < paths.length; i++) {\r\n\t\t\t\tvar currentPart = paths[i];\r\n\t\t\t\tpartPath = partPath + '.' + currentPart;\r\n\r\n\t\t\t\tvar parentPath = this.find(partPath);\r\n\t\t\t\tif (!parentPath) {\r\n\t\t\t\t\tparent = parent.addProperty(currentPart, {}, { Extended: true }, mx.SolutionBuilderAgent.DataModelPropertyDirection.NONE);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tproperty = parent;\r\n\t\t}\r\n\t\treturn property;\r\n\t}\r\n};\r\n\r\nMxDataModelItemBase.prototype.addProperty = function (propertyName, options, usedTypes, direction) {\r\n\tObject.defineProperty(options, 'ForRuntime', {\r\n\t\tenumerable: false,\r\n\t\tvalue: this.forRuntime,\r\n\t});\r\n\r\n\tpreparePropertyType(options);\r\n\tif (options.isODataQueryOptions) {\r\n\t\tpropertyName = '$options';\r\n\t}\r\n\r\n\tif (typeof direction === 'undefined') {\r\n\t\tdirection = typeof this.direction !== 'undefined' ? this.direction : mx.SolutionBuilderAgent.DataModelPropertyDirection.NONE;\r\n\t}\r\n\r\n\toptions.Name = propertyName;\r\n\toptions.Title = options.Title || propertyName;\r\n\r\n\toptions.Path = this.path + '.' + propertyName;\r\n\toptions.ParentPath = this.path;\r\n\toptions.Direction = direction;\r\n\r\n\tif (this.entityName) {\r\n\t\toptions.EntityName = this.entityName;\r\n\t}\r\n\tif (this.dataDefinition) {\r\n\t\toptions.DataDefinition = this.dataDefinition;\r\n\t}\r\n\r\n\tvar existedProp = null;\r\n\tvar property;\r\n\r\n\tif (\r\n\t\t!this.items.some(function (itm) {\r\n\t\t\tif (itm.path === options.Path) {\r\n\t\t\t\texistedProp = itm;\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t})\r\n\t) {\r\n\t\tproperty = new mx.SolutionBuilderAgent.DataModelProperty(options);\r\n\t\tif (usedTypes && this.type !== property.type) {\r\n\t\t\tproperty.addPropertiesFromType(property.type, usedTypes);\r\n\t\t}\r\n\r\n\t\tthis.items.push(property);\r\n\t\tvar simpleTypes = angular.copy(mx.SolutionBuilderAgent.DataModelTypes);\r\n\r\n\t\tdelete simpleTypes.MultipleObjectReference;\r\n\t\tdelete simpleTypes.Fragment;\r\n\t\tif (property.isArray && simpleTypes.hasOwnProperty(property.type)) {\r\n\t\t\tvar arrayItemOptions = { Title: property.title };\r\n\r\n\t\t\tif (property.type === simpleTypes.ObjectReference && property.referenceTo) {\r\n\t\t\t\tarrayItemOptions.ReferenceTo = property.referenceTo;\r\n\t\t\t}\r\n\t\t\tproperty.addSimpleProperty(\r\n\t\t\t\tmx.SolutionBuilderAgent.DataModelSystemProperty.Item,\r\n\t\t\t\tproperty.type,\r\n\t\t\t\tmx.SolutionBuilderAgent.DataModelPropertyDirection.NONE,\r\n\t\t\t\tarrayItemOptions\r\n\t\t\t);\r\n\t\t}\r\n\t} else if (existedProp && !options.ForRuntime) {\r\n\t\texistedProp.expression = options.Expression || defaultExpression;\r\n\t\texistedProp.parameters = options.Parameters;\r\n\t\texistedProp.editMode = options.EditMode;\r\n\t\texistedProp.overridden = true;\r\n\t}\r\n\r\n\tthis.bodyParameter = this.bodyParameter || [];\r\n\tif (options.Source === mx.SolutionBuilderAgent.SourceParameterType.FromBody) {\r\n\t\tthis.bodyParameter.push(propertyName);\r\n\t}\r\n\r\n\treturn property || existedProp;\r\n\r\n\tfunction preparePropertyType(propertyOptions) {\r\n\t\tvar type = propertyOptions.Type;\r\n\t\tvar defType = mx.SolutionBuilderAgent.DataModelTypes.ObjectType.name;\r\n\r\n\t\tif (typeof type === 'string' && type.indexOf('ODataQueryOptions') !== -1) {\r\n\t\t\tpropertyOptions.isODataQueryOptions = true;\r\n\t\t\ttype = mx.SolutionBuilderAgent.DataModelTypes.StringType.name;\r\n\t\t} else if (Array.isArray(type) || propertyOptions.isArray) {\r\n\t\t\tpropertyOptions.isArray = true;\r\n\t\t} else if (typeof type === 'string' && type.lastIndexOf('[]') === type.length - 2) {\r\n\t\t\tpropertyOptions.isArray = true;\r\n\t\t} else if (Number.isInteger(type)) {\r\n\t\t\tvar typeObj = _.find(mx.SolutionBuilderAgent.DataModelTypes, { id: type });\r\n\t\t\tif (typeObj) {\r\n\t\t\t\ttype = typeObj.name;\r\n\t\t\t} else {\r\n\t\t\t\ttype = defType;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (Array.isArray(type)) {\r\n\t\t\ttype = type.length ? type[0] || defType : defType;\r\n\t\t} else if (typeof type === 'object' && type && type.name) {\r\n\t\t\ttype = type.name;\r\n\t\t}\r\n\r\n\t\tif (type) {\r\n\t\t\tpropertyOptions.Type = type;\r\n\t\t} else {\r\n\t\t\tpropertyOptions.Type = defType;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nMxDataModelItemBase.prototype.addSimpleProperty = function (name, type, direction, options) {\r\n\toptions = options || {};\r\n\toptions.Type = type;\r\n\treturn this.addProperty(name, options, {}, direction);\r\n};\r\n\r\nMxDataModelItemBase.prototype.addBoolean = function (name, options) {\r\n\toptions = options || {};\r\n\treturn this.addSimpleProperty(name, mx.SolutionBuilderAgent.DataModelTypes.BoolType.name, options.Direction, options);\r\n};\r\n\r\nMxDataModelItemBase.prototype.addInt = function (name, options) {\r\n\toptions = options || {};\r\n\treturn this.addSimpleProperty(name, mx.SolutionBuilderAgent.DataModelTypes.IntType.name, options.Direction, options);\r\n};\r\n\r\nMxDataModelItemBase.prototype.addGuid = function (name, options) {\r\n\toptions = options || {};\r\n\treturn this.addSimpleProperty(name, mx.SolutionBuilderAgent.DataModelTypes.GuidType.name, options.Direction, options);\r\n};\r\n\r\nMxDataModelItemBase.prototype.addObjectReference = function (name, referenceTo, options) {\r\n\toptions = options || {};\r\n\toptions.ReferenceTo = referenceTo || options.ReferenceTo;\r\n\treturn this.addSimpleProperty(name, mx.SolutionBuilderAgent.DataModelTypes.ObjectReference.name, options.Direction, options);\r\n};\r\n\r\nMxDataModelItemBase.prototype.addString = function (name, options) {\r\n\toptions = options || {};\r\n\treturn this.addSimpleProperty(name, mx.SolutionBuilderAgent.DataModelTypes.StringType, options.Direction, options);\r\n};\r\n\r\nMxDataModelItemBase.prototype.addPropertiesFromType = function (type, usedTypes, direction) {\r\n\tvar self = this;\r\n\r\n\tif (type && Array.isArray(type) && type.length) {\r\n\t\ttype = type[0] || mx.SolutionBuilderAgent.DataModelTypes.ObjectType.name;\r\n\t\tself.isArray = true;\r\n\t}\r\n\r\n\tself.type = type;\r\n\r\n\tif (type && usedTypes.hasOwnProperty(type)) {\r\n\t\tvar typeDescriptor = usedTypes[type];\r\n\r\n\t\tif (typeDescriptor) {\r\n\t\t\tself.isArray = self.isArray || typeDescriptor.IsArray === true;\r\n\r\n\t\t\t_.forOwn(typeDescriptor.Descriptor, function (propertyDescriptor, propertyName) {\r\n\t\t\t\tvar prop = self.addProperty(propertyName, propertyDescriptor, usedTypes, direction);\r\n\r\n\t\t\t\tprop.parentIsArray = self.isArray;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nDataModelSource.prototype.addSourceState = function () {\r\n\treturn this.addProperty(\r\n\t\tmx.SolutionBuilderAgent.DataModelSystemProperty.SourceState,\r\n\t\t{\r\n\t\t\tType: mx.SolutionBuilderAgent.DataModelTypes.IntType.name,\r\n\t\t\tDescription: this.sysPropertyDescriptions.sourceStateDescription,\r\n\t\t},\r\n\t\t{},\r\n\t\tmx.SolutionBuilderAgent.DataModelPropertyDirection.NONE\r\n\t);\r\n};\r\n\r\nDataModelSource.prototype.addOrderBy = function (options) {\r\n\treturn this.addProperty(\r\n\t\tmx.SolutionBuilderAgent.DataModelSystemProperty.OrderBy,\r\n\t\tangular.merge(options || {}, {\r\n\t\t\tType: mx.SolutionBuilderAgent.DataModelTypes.StringType.name,\r\n\t\t\tDescription: this.sysPropertyDescriptions.orderByDescription,\r\n\t\t}),\r\n\t\t{},\r\n\t\tmx.SolutionBuilderAgent.DataModelPropertyDirection.IN\r\n\t);\r\n};\r\n\r\nDataModelSource.prototype.addPagingData = function () {\r\n\tvar sysProperties = mx.SolutionBuilderAgent.DataModelSystemProperty;\r\n\tvar direction = mx.SolutionBuilderAgent.DataModelPropertyDirection;\r\n\r\n\tthis.addProperty(\r\n\t\tsysProperties.PageSize,\r\n\t\t{\r\n\t\t\tType: mx.SolutionBuilderAgent.DataModelTypes.IntType.name,\r\n\t\t\tDescription: this.sysPropertyDescriptions.pageSizeDescription,\r\n\t\t},\r\n\t\t{},\r\n\t\tdirection.IN\r\n\t);\r\n\r\n\tthis.addProperty(\r\n\t\tsysProperties.PageNumber,\r\n\t\t{\r\n\t\t\tType: mx.SolutionBuilderAgent.DataModelTypes.IntType.name,\r\n\t\t\tDescription: this.sysPropertyDescriptions.pageNumberDescription,\r\n\t\t},\r\n\t\t{},\r\n\t\tdirection.IN\r\n\t);\r\n\r\n\tthis.addProperty(\r\n\t\tsysProperties.TotalCount,\r\n\t\t{\r\n\t\t\tType: mx.SolutionBuilderAgent.DataModelTypes.IntType.name,\r\n\t\t\tDescription: this.sysPropertyDescriptions.totalCountDescription,\r\n\t\t},\r\n\t\t{},\r\n\t\tdirection.OUT\r\n\t);\r\n};\r\n\r\nDataModelSource.prototype.addFilter = function (options) {\r\n\treturn this.addProperty(\r\n\t\tmx.SolutionBuilderAgent.DataModelSystemProperty.Filter,\r\n\t\tangular.merge(options || {}, {\r\n\t\t\tType: mx.SolutionBuilderAgent.DataModelTypes.StringType.name,\r\n\t\t\tDescription: this.sysPropertyDescriptions.filterDescription,\r\n\t\t}),\r\n\t\t{},\r\n\t\tmx.SolutionBuilderAgent.DataModelPropertyDirection.IN\r\n\t);\r\n};\r\n\r\nDataModelSource.prototype.addInactive = function () {\r\n\treturn this.addProperty(\r\n\t\tmx.SolutionBuilderAgent.DataModelSystemProperty.Inactive,\r\n\t\t{\r\n\t\t\tType: mx.SolutionBuilderAgent.DataModelTypes.BoolType.name,\r\n\t\t\tDescription: this.sysPropertyDescriptions.inactiveDescription,\r\n\t\t},\r\n\t\t{},\r\n\t\tmx.SolutionBuilderAgent.DataModelPropertyDirection.NONE\r\n\t);\r\n};\r\n\r\nDataModelSource.prototype.addOuterContext = function () {\r\n\treturn this.addProperty(\r\n\t\tmx.SolutionBuilderAgent.DataModelSystemProperty.OuterContext,\r\n\t\t{\r\n\t\t\tType: mx.SolutionBuilderAgent.DataModelTypes.ObjectType.name,\r\n\t\t\tDescription: this.sysPropertyDescriptions.outerContext,\r\n\t\t},\r\n\t\t{},\r\n\t\tmx.SolutionBuilderAgent.DataModelPropertyDirection.NONE\r\n\t);\r\n};\r\n\r\nDataModelSource.prototype.addSharedContext = function () {\r\n\treturn this.addProperty(\r\n\t\tmx.SolutionBuilderAgent.DataModelSystemProperty.Shared,\r\n\t\t{\r\n\t\t\tType: mx.SolutionBuilderAgent.DataModelTypes.ObjectType.name,\r\n\t\t\tDescription: this.sysPropertyDescriptions.shared,\r\n\t\t},\r\n\t\t{},\r\n\t\tmx.SolutionBuilderAgent.DataModelPropertyDirection.NONE\r\n\t);\r\n};\r\n\r\nDataModelSource.prototype.addNavigationId = function () {\r\n\treturn this.addObjectReference('NavigationId', 'PDRNavigationItemClassBase', { Description: this.sysPropertyDescriptions.navigationId });\r\n};\r\n\r\nDataModelSource.prototype.addFilterId = function () {\r\n\treturn this.addObjectReference('FilterId', 'PDRDataQueryClassFilter', { Description: this.sysPropertyDescriptions.filterId });\r\n};\r\n\r\nDataModelSource.prototype.addApplicationName = function () {\r\n\treturn this.addString('ApplicationName', { Description: this.sysPropertyDescriptions.applicationNameDescription });\r\n};\r\n\r\nDataModelSource.prototype.addCurrentUser = function () {\r\n\treturn this.addObjectReference('CurrentUser', 'SPSUserClassBase', { Description: this.sysPropertyDescriptions.currentUserDescription });\r\n};\r\n\r\nDataModelSource.prototype.addActionName = function (availableMessage) {\r\n\treturn this.addString('ActionName', { Description: this.sysPropertyDescriptions.actionNameDescription + availableMessage || '' });\r\n};\r\n\r\nDataModelSource.prototype.addActionId = function (availableMessage) {\r\n\treturn this.addObjectReference('ActionId', 'PDRActionClassBase', { Description: this.sysPropertyDescriptions.actionIdDescription + availableMessage || '' });\r\n};\r\n\r\nDataModelSource.prototype.addActionContextObject = function (availableMessage) {\r\n\tavailableMessage = availableMessage || '';\r\n\tvar object = this.addSimpleProperty('Object', 'Action Context Object', mx.SolutionBuilderAgent.DataModelPropertyDirection.NONE, {\r\n\t\tDescription: this.sysPropertyDescriptions.actionObjectDescription + availableMessage,\r\n\t});\r\n\tobject.addGuid('Id', { Description: this.sysPropertyDescriptions.actionObjectIdDescription + availableMessage });\r\n\tobject.addString('Type', { Description: this.sysPropertyDescriptions.actionObjectTypeDescription + availableMessage });\r\n\tobject.addString('DisplayName', { Description: this.sysPropertyDescriptions.actionObjectDisplayNameDescription + availableMessage });\r\n\treturn object;\r\n};\r\n\r\nDataModelSource.prototype.addActionContext = function (isDialog, isWizard) {\r\n\tvar availableMessage = isDialog ? ' ' + this.sysPropertyDescriptions.availableOnly : '';\r\n\tthis.addActionName(availableMessage);\r\n\tif (isWizard) {\r\n\t\tthis.addActionId(availableMessage);\r\n\t}\r\n\tthis.addActionContextObject(availableMessage);\r\n};\r\n\r\nfunction DataModelProperty(options) {\r\n\tvar that = this;\r\n\r\n\toptions = options || {};\r\n\r\n\tvar id;\r\n\r\n\tif (options.referenceKey) {\r\n\t\tid = options.referenceKey;\r\n\t} else {\r\n\t\tvar resKey = options.resourceKey || '';\r\n\r\n\t\tif (resKey) {\r\n\t\t\tvar expr = /\\[([\\w-]+)]/gi;\r\n\t\t\tvar match = expr.exec(resKey);\r\n\r\n\t\t\tid = match !== null ? match[1] : options.id || mx.components.Utils.guid();\r\n\t\t} else {\r\n\t\t\tid = options.id || mx.components.Utils.guid();\r\n\t\t}\r\n\t}\r\n\r\n\tObject.defineProperty(that, 'id', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: id,\r\n\t});\r\n\r\n\tObject.defineProperty(that, 'name', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.Name || options.name || '',\r\n\t});\r\n\r\n\tObject.defineProperty(that, 'referenceName', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.ReferenceName || options.referenceName || '',\r\n\t});\r\n\r\n\tObject.defineProperty(that, 'path', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.Path || options.path || that.name,\r\n\t});\r\n\r\n\tObject.defineProperty(that, 'type', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.Type || options.type || null,\r\n\t});\r\n\r\n\tObject.defineProperty(that, 'items', {\r\n\t\twritable: true,\r\n\t\tenumerable: false,\r\n\t\tvalue: options.items || options.items || [],\r\n\t});\r\n\r\n\tObject.defineProperty(that, 'parentPath', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.ParentPath || options.parentPath,\r\n\t});\r\n\r\n\tObject.defineProperty(that, 'parentItem', {\r\n\t\twritable: true,\r\n\t\tenumerable: false,\r\n\t\tvalue: options.ParentItem,\r\n\t});\r\n\r\n\tObject.defineProperty(that, 'isArray', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.IsArray || options.isArray,\r\n\t});\r\n\r\n\tObject.defineProperty(that, 'sourceParameterType', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.sourceParameterType || mx.SolutionBuilderAgent.SourceParameterType.Unknown,\r\n\t});\r\n\r\n\tObject.defineProperty(that, 'direction', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.Direction || options.direction || mx.SolutionBuilderAgent.DataModelPropertyDirection.NONE,\r\n\t});\r\n\r\n\tif (!options.ForRuntime) {\r\n\t\tif (options.EntityName) {\r\n\t\t\tObject.defineProperty(this, 'entityName', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tvalue: options.EntityName || '',\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (options.DataDefinition) {\r\n\t\t\tObject.defineProperty(this, 'dataDefinition', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tvalue: options.DataDefinition || '',\r\n\t\t\t});\r\n\t\t\tObject.defineProperty(this, 'filter', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tvalue: options.Filter || '',\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tObject.defineProperty(that, '__type', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: mx.SolutionBuilderAgent.TemplatePropertyValueTypes.model.id,\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'resourceKey', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: options.ResourceKey || options.resourceKey,\r\n\t\t});\r\n\r\n\t\tvar expression = typeof options.Expression !== 'undefined' || typeof options.expression !== 'undefined' ? options.Expression || options.expression : defaultExpression;\r\n\r\n\t\tObject.defineProperty(that, 'expression', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: expression,\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'typeTitle', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: that.type && typeof that.type === 'string' ? that.type.replace('Type', '') : null,\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'referenceTo', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.ReferenceTo || options.referenceTo,\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'displayName', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: options.Title || options.Name,\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'description', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: options.Documentation || options.Description || options.description || '',\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'parameters', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: options.Parameters || options.parameters || [],\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'editMode', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: options.EditMode || options.editMode || 0,\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'parentIsArray', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: options.ParentIsArray || options.parentIsArray || false,\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'required', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.Required || options.required,\r\n\t\t});\r\n\t\tObject.defineProperty(that, 'maxLength', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.MaxLength || options.maxLength,\r\n\t\t});\r\n\t\tObject.defineProperty(that, 'extended', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.Extended || options.extended,\r\n\t\t});\r\n\t\tObject.defineProperty(that, 'added', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.Added || options.added,\r\n\t\t});\r\n\r\n\t\tif (that.referenceTo) {\r\n\t\t\tObject.defineProperty(that, 'relationsConfig', {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: new mx.SolutionBuilderAgent.RelationsConfig(options),\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\nangular.extend(DataModelSource.prototype, MxDataModelItemBase.prototype);\r\nangular.extend(DataModelProperty.prototype, MxDataModelItemBase.prototype);\r\n\r\nDataModelProperty.prototype.toString = function (shortMode) {\r\n\treturn '[' + (shortMode ? this.displayName : this.path) + ']';\r\n};\r\n\r\nDataModelProperty.prototype.toJSON = function () {\r\n\treturn {\r\n\t\t__type: mx.SolutionBuilderAgent.TemplatePropertyValueTypes.model.id,\r\n\t\tpath: this.path,\r\n\t};\r\n};\r\n\r\nexport { DataModel, DataModelSource, DataModelProperty };\r\n","// Module\nvar code = \"\\r\\n\\r\\n\\t
\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n
\";\n// Exports\nexport default code;","'use strict';\r\n\r\nEditFormCtrl.$inject = ['$q', '$element', 'mx.SolutionBuilderAgent.mxLocalizationModeHelper'];\r\nexport default function EditFormCtrl($q, $element, localizationModeHelper) {\r\n\tconst vm = this;\r\n\r\n\tvm.save = function () {\r\n\t\tvm.finishDefer.resolve(vm.item);\r\n\t};\r\n\r\n\tvm.cancel = function () {\r\n\t\tvm.finishDefer.reject(mx.noLogCatchMessage('Item editing was canceled'));\r\n\t};\r\n\r\n\tvm.$onInit = function () {\r\n\t\t// Localization mode\r\n\t\tif (vm.__localizationModeEnabled) {\r\n\t\t\t// vm.localizationData\r\n\r\n\t\t\tlocalizationModeHelper.enableMode($element);\r\n\r\n\t\t\tconst localizableModels = vm.localizationData.fields.map((field) => 'item.' + field);\r\n\t\t\tlocalizationModeHelper.applyStylesForControls($element, localizableModels, '.mx-multi-fragment-grid-item-edit-form');\r\n\r\n\t\t\t// Handle events\r\n\t\t\t$(localizationModeHelper.dialogSelector)[0].addEventListener(\r\n\t\t\t\t'click',\r\n\t\t\t\tfunction (event) {\r\n\t\t\t\t\t_handleLocalizationDialogAppearance(\r\n\t\t\t\t\t\tevent,\r\n\t\t\t\t\t\t_handleLocalizationDialogResult,\r\n\t\t\t\t\t\tlocalizableModels,\r\n\t\t\t\t\t\tvm.item,\r\n\t\t\t\t\t\tvm.item.__resultCI || $.extend({}, vm.localizationData)\r\n\t\t\t\t\t);\r\n\t\t\t\t},\r\n\t\t\t\ttrue\r\n\t\t\t);\r\n\t\t}\r\n\t};\r\n\r\n\tfunction _handleLocalizationDialogAppearance(event, dialogSavedCallback, localizableModels, item, sourceCI) {\r\n\t\tconst controlElm = localizationModeHelper.preventUsualControlHandler(event, localizableModels);\r\n\t\tif (controlElm) {\r\n\t\t\tconst modelInfo = localizationModeHelper.getModelInfoFromElement(controlElm);\r\n\t\t\tlocalizationModeHelper.openLocalizationDialog(controlElm, sourceCI[modelInfo.fieldKey], sourceCI, item[modelInfo.fieldKey]).then(function (params) {\r\n\t\t\t\tdialogSavedCallback(params.localizedField, item, modelInfo.fieldKey, params.currentLang);\r\n\t\t\t}, angular.noop);\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfunction _handleLocalizationDialogResult(localizedField, item, fieldKey, currentLang) {\r\n\t\titem.__resultCI = item.__resultCI || { 'Sys-Owner': item.ID };\r\n\t\titem.__resultCI = localizationModeHelper.applyTranslations(localizedField, fieldKey, item.__resultCI);\r\n\t\titem[fieldKey] = localizationModeHelper.getValueWithFallback(localizedField, currentLang);\r\n\t}\r\n}\r\n","'use strict';\r\nimport template from '../../layouts/edit-form/edit-form.html';\r\nimport EditFormCtrl from '../../layouts/edit-form/edit-form';\r\n\r\nMxMultiFragmentTreeviewCtrl.$inject = [\r\n\t'$scope',\r\n\t'$q',\r\n\t'mx.shell.DetailsView',\r\n\t'mx.internationalization',\r\n\t'mx.shell.SidePanelService',\r\n\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n\t'mx.shell.NotificationService',\r\n];\r\nexport default function MxMultiFragmentTreeviewCtrl($scope, $q, DetailsView, i18n, sidePanelService, contentWidgetService, notificationService) {\r\n\tvar vm = this;\r\n\tvar addProxyFunc;\r\n\tvm.$onInit = function () {\r\n\t\tvm.parentField = vm.parentField || 'Parent';\r\n\t\tvm.idField = vm.idField || 'ID';\r\n\t\tvm.editInForm = vm.editInForm === 'true';\r\n\t\tvm._showAdd = true;\r\n\t\tvm._showEdit = vm.editInForm;\r\n\t\tvm._showDelete = true;\r\n\t\taddProxyFunc = vm.editInForm ? loadForm : initItem;\r\n\t\tinitScope();\r\n\t};\r\n\r\n\tvm.add = function (item) {\r\n\t\tif (vm.newEntity) {\r\n\t\t\taddProxyFunc(true, item);\r\n\t\t} else {\r\n\t\t\tcontentWidgetService.getNewFragment(vm.className).then(\r\n\t\t\t\tfunction (entity) {\r\n\t\t\t\t\tvm.newEntity = entity;\r\n\t\t\t\t\tvm.newEntity.ID = null;\r\n\t\t\t\t\taddProxyFunc(true, item);\r\n\t\t\t\t},\r\n\t\t\t\tfunction () {}\r\n\t\t\t);\r\n\t\t}\r\n\t};\r\n\r\n\tvm.delete = function (item) {\r\n\t\tnotificationService\r\n\t\t\t.confirm(\r\n\t\t\t\ti18n.get('solutionBuilderAgent.components.mx-search-query-builder.delete'),\r\n\t\t\t\ti18n.get('solutionBuilderAgent.components.mx-search-query-builder.confirmDelete'),\r\n\t\t\t\ti18n.get('solutionBuilderAgent.actions.operation-action.yes'),\r\n\t\t\t\ti18n.get('solutionBuilderAgent.actions.operation-action.no')\r\n\t\t\t)\r\n\t\t\t.then(function () {\r\n\t\t\t\tmx.components.Treeview.DeleteItem(vm, item);\r\n\t\t\t});\r\n\t};\r\n\r\n\tvm.edit = function () {\r\n\t\tloadForm(false);\r\n\t};\r\n\r\n\tfunction initItem(p, item) {\r\n\t\taddItem(createItem(item || null));\r\n\t}\r\n\r\n\tfunction createItem(item) {\r\n\t\tvar currentItem = angular.copy(vm.newEntity);\r\n\t\tcurrentItem[vm.idField] = mx.components.Utils.guid();\r\n\r\n\t\tif (item) {\r\n\t\t\tcurrentItem[vm.parentField] = item[vm.idField];\r\n\t\t}\r\n\r\n\t\treturn currentItem;\r\n\t}\r\n\r\n\tfunction loadForm(isAddingNew, item) {\r\n\t\tvar objectForCancel;\r\n\t\tvar currentItem;\r\n\t\tif (isAddingNew) {\r\n\t\t\tcurrentItem = createItem(item);\r\n\t\t} else {\r\n\t\t\tcurrentItem = vm.selectedItem;\r\n\t\t\tobjectForCancel = angular.copy(currentItem);\r\n\t\t}\r\n\r\n\t\tvar dialogName = 'Treeview Editor';\r\n\t\tvar formView = new DetailsView({\r\n\t\t\tid: isAddingNew ? 'add-new-item' : 'edit-item' + currentItem[vm.idField],\r\n\r\n\t\t\tname: dialogName,\r\n\t\t\tdisplayName: dialogName,\r\n\t\t\tcontroller: EditFormCtrl,\r\n\t\t\tlocals: {\r\n\t\t\t\titem: currentItem,\r\n\t\t\t\ttemplateId: vm.templateFormId,\r\n\t\t\t\tdataModel: $scope[vm.parentControllerAs].dataModel, //vm.mxForm ? vm.mxForm.entity : null,\r\n\r\n\t\t\t\tcancelLabel: i18n.get('solutionBuilderAgent.common.cancel_btn'),\r\n\t\t\t\tsaveLabel: 'OK',\r\n\t\t\t},\r\n\t\t\ttemplate: template,\r\n\t\t});\r\n\r\n\t\tsidePanelService\r\n\t\t\t.addView(formView, vm.parentViewController && vm.parentViewController.mxView)\r\n\t\t\t.then(updateEntity, cancel)\r\n\t\t\t.catch(mx.logCatch);\r\n\r\n\t\tfunction updateEntity() {\r\n\t\t\tif (isAddingNew) {\r\n\t\t\t\taddItem(currentItem);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction cancel() {\r\n\t\t\tif (objectForCancel) {\r\n\t\t\t\tmx.SolutionBuilderAgent.ExtendDeep(currentItem, objectForCancel);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction addItem(item) {\r\n\t\tvm.items = (vm.items || []).concat([item]);\r\n\t\tvm.selectedItem = item;\r\n\t}\r\n\r\n\tfunction initScope() {\r\n\t\tif (vm.parentControllerAs) {\r\n\t\t\t$scope[vm.parentControllerAs] = $scope.$parent[vm.parentControllerAs];\r\n\t\t} else {\r\n\t\t\t$scope.dataModel = $scope.$parent;\r\n\t\t}\r\n\t}\r\n\r\n\treturn vm;\r\n}\r\n\r\nfunction MxMultiFragmentTreeview() {\r\n\tvar directive = new mx.components.Treeview();\r\n\r\n\tdirective.controller = MxMultiFragmentTreeviewCtrl;\r\n\r\n\tangular.extend(directive.bindToController, {\r\n\t\ttemplateFormId: '@',\r\n\t\tclassName: '@',\r\n\t\titems: '=?',\r\n\t\teditInForm: '@',\r\n\t});\r\n\r\n\tangular.extend(directive.require, {\r\n\t\tparentViewController: '?^^mxView',\r\n\t});\r\n\r\n\tdirective.templateUrl = 'workspaces/SolutionBuilderAgent/components/mx-treeview/mx-multi-fragment-treeview.html';\r\n\r\n\treturn directive;\r\n}\r\n\r\nangular.module('mx.SolutionBuilderAgent').directive('mxMultiFragmentTreeview', MxMultiFragmentTreeview);\r\n","export class MxUiManagerController {\r\n\tstatic $inject = ['mx.shell.SearchProviderService', 'mx.shell.ContextService'];\r\n\r\n\tsearchService;\r\n\tcontextService;\r\n\r\n\tconstructor(searchService, contextService) {\r\n\t\tthis.searchService = searchService;\r\n\t\tthis.contextService = contextService;\r\n\t}\r\n\r\n\t$onInit() {\r\n\t\tconst currentSearch = this.searchService.currentSearch();\r\n\t\tthis.datasetViewData = (this.contextService.val('SolutionBuilderAgent.DataSetView.Data') || []).map((item) => ({\r\n\t\t\tObjectId: item['Sys-ObjectId'],\r\n\t\t\tTypeName: item['Sys-Entity'],\r\n\t\t}));\r\n\t\tthis.datasetViewId = currentSearch.dataQueryList.parameters.id;\r\n\t\tthis.keyword = currentSearch.keyword;\r\n\r\n\t\tconst quickFilter = (currentSearch.dataQueryList.quickFilterPreprocessor && currentSearch.dataQueryList.quickFilterPreprocessor.filters) || [];\r\n\t\tthis.filters = currentSearch.filters && currentSearch.filters[0] ? currentSearch.filters.concat(quickFilter) : quickFilter;\r\n\r\n\t\tif (currentSearch.dataQueryList.sortingPreprocessor) {\r\n\t\t\tthis.orderBy = currentSearch.dataQueryList.sortingPreprocessor.build();\r\n\t\t\tif (this.orderBy) {\r\n\t\t\t\tthis.orderBy = this.orderBy.replace('orderBy=', '');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (currentSearch.dataQueryList.structurePreprocessor) {\r\n\t\t\tthis.structureNodeId = currentSearch.dataQueryList.structurePreprocessor.getNodeId();\r\n\t\t}\r\n\r\n\t\tthis.selectedColumns = currentSearch.dataQueryList.columns\r\n\t\t\t.filter((column) => column.visible)\r\n\t\t\t.map((column) => column.Name)\r\n\t\t\t.join(',');\r\n\r\n\t\tthis.selectedViewType = currentSearch.dataQueryList.type;\r\n\t}\r\n}\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxUiManager', {\r\n\ttemplate: '',\r\n\tcontroller: MxUiManagerController,\r\n\tcontrollerAs: 'vm',\r\n\tbindings: {\r\n\t\tdatasetViewId: '=?',\r\n\t\tdatasetViewData: '=?',\r\n\t\torderBy: '=?',\r\n\t\tkeyword: '=?',\r\n\t\tfilters: '=?',\r\n\t\tstructureNodeId: '=?',\r\n\t\tselectedColumns: '=?',\r\n\t\tselectedViewType: '=?',\r\n\t},\r\n});\r\n","'use strict';\r\n\r\nimport View from '../../../Pandora/model/view';\r\n\r\nexport class GroupingPanelService {\r\n\tstatic $inject = ['mx.shell.EventService', 'mx.shell.ExtraPanelManager'];\r\n\r\n\tconstructor(eventService, extraPanelManager) {\r\n\t\tthis.eventService = eventService;\r\n\t\tthis.extraPanelManager = extraPanelManager;\r\n\t}\r\n\r\n\topen(groupingPreprocessor) {\r\n\t\tif (this._currentGroupingPreprocessor !== groupingPreprocessor) {\r\n\t\t\tthis._groupingView = null;\r\n\t\t}\r\n\r\n\t\tthis._groupingView =\r\n\t\t\tthis._groupingView ||\r\n\t\t\tnew View({\r\n\t\t\t\tid: 'view-group-by',\r\n\t\t\t\tlocals: {\r\n\t\t\t\t\tgroupingPreprocessor: groupingPreprocessor,\r\n\t\t\t\t},\r\n\t\t\t\tcontroller: 'mx.SolutionBuilderAgent.ViewGroupByController',\r\n\t\t\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-view-group-by/mx-view-group-by.html',\r\n\t\t\t});\r\n\r\n\t\tthis._currentGroupingPreprocessor = groupingPreprocessor;\r\n\r\n\t\tif (this.extraPanelManager.view !== this._groupingView) {\r\n\t\t\tthis.extraPanelManager.open(this._groupingView);\r\n\t\t}\r\n\t}\r\n\r\n\tclose() {\r\n\t\tif (this.extraPanelManager.view === this._groupingView && this.extraPanelManager.visible) {\r\n\t\t\tthis.extraPanelManager.close();\r\n\t\t}\r\n\t\tthis._groupingView = null;\r\n\t\tthis._currentGroupingPreprocessor = null;\r\n\t}\r\n\r\n\tisActive() {\r\n\t\treturn this._groupingView && this.extraPanelManager.view === this._groupingView;\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nMxViewGroupByCtrl.$inject = ['$scope', 'mx.internationalization'];\r\n\r\nexport function MxViewGroupByCtrl($scope, i18n) {\r\n\tthis.i18n = i18n;\r\n\r\n\tthis.disableGroupingForColumn = async (column) => {\r\n\t\tawait this.groupingPreprocessor.disableGroupingForColumn(column);\r\n\t\t$scope.$evalAsync();\r\n\t};\r\n}\r\n","'use strict';\r\n\r\nimport template from './mx-dependency-visualizer.html';\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxDependencyVisualizer', {\r\n\tbindings: { dependencyTree: '<', onNodeClick: '&' },\r\n\trequire: {\r\n\t\tparentViewController: '?^^mxView',\r\n\t},\r\n\tcontroller: MxDependencyVisualizerCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n});\r\n\r\nMxDependencyVisualizerCtrl.$inject = ['$scope', '$element', '$q', '$mdIcon', 'mx.internationalization', 'VisDataSet', 'mx.app.ThemeService'];\r\n\r\nfunction MxDependencyVisualizerCtrl($scope, $element, $q, $mdIcon, i18n, VisDataSet, themeService) {\r\n\tconst vm = this;\r\n\tlet images = {};\r\n\tlet currentObject = null;\r\n\r\n\tvm.i18n = i18n.get('solutionBuilderAgent.components.mx-dependency-visualizer');\r\n\r\n\tvm.graphOptions = {\r\n\t\tedges: {\r\n\t\t\tarrows: { to: true },\r\n\t\t\tsmooth: true,\r\n\t\t},\r\n\t\theight: '100%',\r\n\t\tinteraction: { hover: true },\r\n\t\tlayout: { randomSeed: 1 },\r\n\t\tnodes: {\r\n\t\t\tsize: 80,\r\n\t\t\tshapeProperties: {\r\n\t\t\t\t//disabled interpolation of caching images because algorithm of coordinates has a bug (size of getting rectangle can be bigger than size of canvas in drawImage function) and IE has a problem with it\r\n\t\t\t\tinterpolation: false,\r\n\t\t\t},\r\n\t\t},\r\n\t\tphysics: {\r\n\t\t\tmaxVelocity: 0,\r\n\t\t\tminVelocity: 0.01,\r\n\t\t\trepulsion: {\r\n\t\t\t\tcentralGravity: 0,\r\n\t\t\t\tnodeDistance: 120,\r\n\t\t\t\tspringConstant: 0,\r\n\t\t\t},\r\n\t\t\tsolver: 'repulsion',\r\n\t\t},\r\n\t\twidth: '100%',\r\n\t};\r\n\r\n\tvm.graphEvents = {\r\n\t\tblurNode: function () {\r\n\t\t\t$element.find('canvas')[0].style.cursor = 'default';\r\n\t\t},\r\n\t\tclick: function (params) {\r\n\t\t\tvar nodeId = params.nodes[0];\r\n\r\n\t\t\tif (typeof nodeId !== 'undefined') {\r\n\t\t\t\tonNodeClick(getNode(nodeId));\r\n\t\t\t}\r\n\t\t},\r\n\t\thoverNode: function () {\r\n\t\t\t$element.find('canvas')[0].style.cursor = 'pointer';\r\n\t\t},\r\n\t};\r\n\r\n\tvm.$onChanges = function (changes) {\r\n\t\tif (changes.dependencyTree) {\r\n\t\t\tinitTree(changes.dependencyTree.currentValue);\r\n\t\t}\r\n\t};\r\n\r\n\tfunction initTree(tree) {\r\n\t\tif (typeof tree !== 'object' || !Array.isArray(tree.Objects) || !Array.isArray(tree.Dependencies) || tree.Objects.length === 0) {\r\n\t\t\tvm.graphLoaded = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tonNodeClick(tree.Objects[0]);\r\n\r\n\t\tgetImages(tree.Objects).then(function () {\r\n\t\t\tvar nodes = new VisDataSet(\r\n\t\t\t\ttree.Objects.map(function (object) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tid: object.ObjectID,\r\n\t\t\t\t\t\timage: createNode(object),\r\n\t\t\t\t\t\tshape: 'image',\r\n\t\t\t\t\t\ttitle: object.Name,\r\n\t\t\t\t\t};\r\n\t\t\t\t})\r\n\t\t\t);\r\n\r\n\t\t\tvar edges = new VisDataSet(\r\n\t\t\t\ttree.Dependencies.map(function (dependency) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tfrom: dependency.Parent,\r\n\t\t\t\t\t\tlabel: dependency.Info,\r\n\t\t\t\t\t\tto: dependency.Child,\r\n\t\t\t\t\t};\r\n\t\t\t\t})\r\n\t\t\t);\r\n\r\n\t\t\tvm.graphData = {\r\n\t\t\t\tedges: edges,\r\n\t\t\t\tnodes: nodes,\r\n\t\t\t};\r\n\r\n\t\t\tvm.graphLoaded = true;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getImages(nodes) {\r\n\t\tvar promises = [];\r\n\r\n\t\tvar defaultMaterialIcons = [];\r\n\t\tvar setIcons = [];\r\n\r\n\t\tnodes.forEach(function (node) {\r\n\t\t\tif (node.MainIcon && !images[node.ObjectID]) {\r\n\t\t\t\tif (node.MainIcon.indexOf(':') === -1) {\r\n\t\t\t\t\tdefaultMaterialIcons.push(node);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsetIcons.push(node);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (defaultMaterialIcons.length > 0) {\r\n\t\t\tpromises.push(\r\n\t\t\t\tgetMaterialIcons().then(function (icons) {\r\n\t\t\t\t\tdefaultMaterialIcons.forEach(function (node) {\r\n\t\t\t\t\t\ticons.some(function (icon) {\r\n\t\t\t\t\t\t\tif (icon.name === node.MainIcon) {\r\n\t\t\t\t\t\t\t\timages[node.ObjectID] = icon.src;\r\n\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tsetIcons.forEach(function (node) {\r\n\t\t\tif (node.MainIcon && !images[node.ObjectID]) {\r\n\t\t\t\tpromises.push(loadIconBase64(node.ObjectID, node.MainIcon));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn $q.all(promises);\r\n\t}\r\n\r\n\tfunction loadIconBase64(objectId, iconName) {\r\n\t\tvar defer = $q.defer();\r\n\r\n\t\t$mdIcon(iconName)\r\n\t\t\t.then(function (iconEl) {\r\n\t\t\t\timages[objectId] =\r\n\t\t\t\t\t'';\r\n\t\t\t\tdefer.resolve();\r\n\t\t\t})\r\n\t\t\t.catch(function () {\r\n\t\t\t\tdefer.resolve();\r\n\t\t\t});\r\n\r\n\t\treturn defer.promise;\r\n\t}\r\n\r\n\tasync function getMaterialIcons() {\r\n\t\tif (!vm.materialIcons) {\r\n\t\t\tconst svgFont = await themeService.loadSvgIconsFont();\r\n\t\t\tconst div = document.createElement('div');\r\n\r\n\t\t\tdiv.innerHTML = svgFont;\r\n\t\t\tconst glyphs = div.querySelectorAll('glyph');\r\n\r\n\t\t\tvm.materialIcons = Array.prototype.slice.call(glyphs).map(function (glyph) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tname: glyph.attributes['glyph-name'].value,\r\n\t\t\t\t\tsrc: convertSVGGlyphToPath(glyph),\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn vm.materialIcons;\r\n\t}\r\n\r\n\tfunction convertSVGGlyphToPath(glyph) {\r\n\t\tvar html = glyph.outerHTML;\r\n\t\tif (!glyph.outerHTML) {\r\n\t\t\tvar temp = document.createElement('div');\r\n\t\t\tvar tempNode = glyph.cloneNode(true);\r\n\t\t\ttemp.appendChild(tempNode);\r\n\t\t\thtml = temp.innerHTML;\r\n\t\t}\r\n\t\tvar glyphBody = html.split('')[0];\r\n\r\n\t\treturn '';\r\n\t}\r\n\r\n\tfunction onNodeClick(object) {\r\n\t\tif (!currentObject || currentObject.ObjectID !== object.ObjectID) {\r\n\t\t\t$scope.$evalAsync(function () {\r\n\t\t\t\tvm.onNodeClick({ object: object });\r\n\t\t\t});\r\n\t\t\tcurrentObject = object;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getNode(id) {\r\n\t\tvar node;\r\n\t\tvm.dependencyTree.Objects.some(function (object) {\r\n\t\t\tif (object.ObjectID === id) {\r\n\t\t\t\tnode = angular.copy(object);\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn node;\r\n\t}\r\n\r\n\tfunction createNode(node, clicked) {\r\n\t\tnode = node || {};\r\n\t\tvar backgroundColor = clicked ? '#a2b975' : '#ffffff';\r\n\t\tvar image = images[node.ObjectID];\r\n\t\tvar height = 208; // Image ? 200 : 100;\r\n\t\tvar rectangleY = 100;\r\n\t\tvar fontFamily = \"'Open Sans', sans-serif\";\r\n\t\tvar fontSize = 16;\r\n\r\n\t\tvar name = '';\r\n\t\tvar nameLinesEncode = mx.components.Utils.htmlEncode(node.Name);\r\n\t\tvar nameLines = convertTextToMultiLine(nameLinesEncode);\r\n\t\tvar lineHeight = 16;\r\n\r\n\t\tnameLines.forEach(function (line, index) {\r\n\t\t\tname +=\r\n\t\t\t\t'' +\r\n\t\t\t\tline +\r\n\t\t\t\t'';\r\n\t\t});\r\n\r\n\t\tvar nameHeight = (nameLines.length - 1) * lineHeight;\r\n\r\n\t\theight += nameHeight;\r\n\t\trectangleY += nameHeight;\r\n\r\n\t\tvar svg =\r\n\t\t\t'' +\r\n\t\t\t'' +\r\n\t\t\t'' +\r\n\t\t\t(image ? image : '') +\r\n\t\t\t'' +\r\n\t\t\t'' +\r\n\t\t\tname +\r\n\t\t\t'' +\r\n\t\t\t'' +\r\n\t\t\t'' +\r\n\t\t\t(node.State || 'Unknown') +\r\n\t\t\t'' +\r\n\t\t\t'' +\r\n\t\t\tvm.i18n.committed +\r\n\t\t\t': ' +\r\n\t\t\t(node.Agreed || 0).toFixed(2) +\r\n\t\t\t'%' +\r\n\t\t\t'' +\r\n\t\t\tvm.i18n.actual +\r\n\t\t\t': ' +\r\n\t\t\t(node.Actual || 0).toFixed(2) +\r\n\t\t\t'%' +\r\n\t\t\t'' +\r\n\t\t\t'' +\r\n\t\t\t'';\r\n\r\n\t\treturn 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg);\r\n\t}\r\n\r\n\tfunction convertTextToMultiLine(text) {\r\n\t\tvar maxLength = 22;\r\n\t\tvar words = text.split(' ');\r\n\t\tvar lines = [];\r\n\r\n\t\tlines.push('');\r\n\r\n\t\twords.forEach(function (word) {\r\n\t\t\tif (lines[lines.length - 1].length + word.length < maxLength) {\r\n\t\t\t\tlines[lines.length - 1] += ' ' + word;\r\n\t\t\t} else {\r\n\t\t\t\tlines.push(word);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn lines;\r\n\t}\r\n}\r\n","'use strict';\r\nimport './mx-dependency-visualizer.js';\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxDependencyVisualizerLazy', {\r\n\tbindings: { dependencyTree: '<', currentObject: '=?' },\r\n\tcontroller: MxDependencyVisualizerLazyCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate:\r\n\t\t'
',\r\n});\r\n\r\nMxDependencyVisualizerLazyCtrl.$inject = ['$ocLazyLoad', 'mx.components.LazyLoadCfg', 'mx.shell.Config'];\r\nfunction MxDependencyVisualizerLazyCtrl($ocLazyLoad, lazyLoadCfg, mxConfig) {\r\n\tconst anticache = `?anticache=${mxConfig.settings.productVersion}`;\r\n\r\n\t$ocLazyLoad.setModuleConfig({\r\n\t\tname: 'ngVis',\r\n\t\tserie: true,\r\n\t\tfiles: [\r\n\t\t\t`${lazyLoadCfg.componentsDir}vis/dist/vis.min.css${anticache}`,\r\n\t\t\t`${lazyLoadCfg.componentsDir}vis/dist/vis.min.js${anticache}`,\r\n\t\t\t`${lazyLoadCfg.componentsDir}angular-visjs/angular-vis.js${anticache}`,\r\n\t\t],\r\n\t});\r\n}\r\n","'use strict';\r\n\r\nimport { GroupingPanelService } from './grouping-panel.service';\r\nimport { MxViewGroupByCtrl } from './mx-view-group-by';\r\n\r\nangular\r\n\t.module('mx.SolutionBuilderAgent')\r\n\t.service('mx.SolutionBuilderAgent.GroupingPanelService', GroupingPanelService)\r\n\t.controller('mx.SolutionBuilderAgent.ViewGroupByController', MxViewGroupByCtrl);\r\n","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","import { EventCodes } from '../../../../App/model/event-codes';\r\n\r\nangular.module('mx.SolutionBuilderAgent').controller('mx.SolutionBuilderAgent.ContextSelectionViewController', [\r\n\t'mx.shell.SidePanelService',\r\n\t'mx.shell.ContextService',\r\n\t'mx.shell.SidePanelActionsService',\r\n\t'mx.shell.DetailsView',\r\n\t'mx.internationalization',\r\n\t'mx.shell.EventService',\r\n\t'mx.SolutionBuilderAgent.DialogOpenerService',\r\n\t'mx.SolutionBuilderAgent.SchemaService',\r\n\t'mx.shell.NavigationService',\r\n\t'$scope',\r\n\tfunction contextSelectionViewController(\r\n\t\tsidePanelService,\r\n\t\tcontextService,\r\n\t\tsidePanelActionsService,\r\n\t\tDetailsView,\r\n\t\ti18n,\r\n\t\teventService,\r\n\t\tdialogOpener,\r\n\t\tschemaService,\r\n\t\tnavigationService,\r\n\t\t$scope\r\n\t) {\r\n\t\tconst vm = this;\r\n\t\tvm.mxSidePanel = sidePanelService;\r\n\t\tvm.mxContextService = contextService;\r\n\t\tvm.mxSidePanelActions = sidePanelActionsService;\r\n\t\tvm.maxItemsToShow = 50;\r\n\t\tvm.entityClassName = null;\r\n\t\tvm.objectsLinkLabel = null;\r\n\r\n\t\tvm.openViewFromSelection = openViewFromSelection;\r\n\t\tvm.selectionListChange = selectionListChange;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tinit();\r\n\t\t};\r\n\r\n\t\tasync function init() {\r\n\t\t\tconst setViewTitle = (count) => (vm.view.displayName = `${count} ${i18n.get('shell.mx-search.items_selected')}`);\r\n\t\t\tconst selectionCount = contextService.selectedObjects.length;\r\n\r\n\t\t\tsetViewTitle(selectionCount);\r\n\r\n\t\t\tif (selectionCount > 0) {\r\n\t\t\t\tif (contextService.selectedObjects[0]._type.startsWith('service_')) {\r\n\t\t\t\t\tvm.isService = true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst typeInfo = await schemaService.getType(contextService.selectedObjects[0]._type);\r\n\t\t\t\t\tif (typeInfo) {\r\n\t\t\t\t\t\tvm.entityClassName = typeInfo.MainClassName;\r\n\t\t\t\t\t\tvm.objectsLinkLabel = contextService.actionsContext.types.length > 1 ? navigationService.currentItem.title : typeInfo.DisplayName;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvm.isMultiFragment = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\teventService.subscribeTo(mx.shell.EventCodes.ObjectSelectionChanged, (eventObj, selectedObjects) => setViewTitle(selectedObjects.length), $scope);\r\n\t\t}\r\n\r\n\t\tasync function openViewFromSelection(item) {\r\n\t\t\tconst view = await dialogOpener.openPreview(item, undefined, undefined, vm.view);\r\n\t\t\tif (view) {\r\n\t\t\t\teventService.dispatchEvent(EventCodes.TrackViewTelemetry, { eventName: `Selection view: item clicked`, view });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction selectionListChange() {\r\n\t\t\tcontextService.selectedObjects = contextService.selectedObjects.filter(function (object) {\r\n\t\t\t\treturn object.__isSelected;\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n]);\r\n","'use strict';\r\nimport DetailsView from '../../../Pandora/model/details-view';\r\nimport EditFormCtrl from './edit-form';\r\nimport template from './edit-form.html';\r\n\r\n/**\r\n * @ngdoc Class\r\n * @name EditFormView\r\n *\r\n * @description\r\n * View of edit-form tab\r\n *\r\n * @param {Object} options - attributes of view\r\n *\r\n */\r\nexport default class EditFormView extends DetailsView {\r\n\tconstructor(i18n, options) {\r\n\t\tconst headerTitle = i18n.get(options.isAddingNew ? 'solutionBuilderAgent.common.add_new' : 'solutionBuilderAgent.common.edit');\r\n\r\n\t\toptions = angular.extend({}, options, {\r\n\t\t\tcontroller: EditFormCtrl,\r\n\t\t\ttemplate: template,\r\n\t\t\tid: 'edit-form-' + Date.now(),\r\n\t\t\theaderTitle: headerTitle,\r\n\t\t\tdisplayName: options.displayName || '',\r\n\t\t\tname: options.displayName || '',\r\n\t\t\tkeepAsOpened: true,\r\n\t\t});\r\n\t\tsuper(options);\r\n\t}\r\n}\r\n","'use strict';\r\n\r\n/**\r\n * @ngdoc Class\r\n * @name mx.SolutionBuilderAgent.EditFormViewLocals\r\n *\r\n * @description\r\n * Input attributes for controller of EditFormView\r\n *\r\n * @param {Object} options - display name of the edit-form view\r\n *\r\n */\r\nexport default class EditFormViewLocals {\r\n\tconstructor(options) {\r\n\t\tObject.defineProperties(this, {\r\n\t\t\tobjectId: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.objectId,\r\n\t\t\t},\r\n\t\t\titem: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.item,\r\n\t\t\t},\r\n\t\t\tmxServiceContext: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.mxServiceContext,\r\n\t\t\t},\r\n\t\t\ttemplateId: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.templateId,\r\n\t\t\t},\r\n\t\t\tdataModel: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.dataModel,\r\n\t\t\t},\r\n\t\t\tcancelLabel: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.cancelLabel || 'cancel',\r\n\t\t\t},\r\n\t\t\tsaveLabel: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.saveLabel || 'save',\r\n\t\t\t},\r\n\t\t\t__localizationModeEnabled: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.__localizationModeEnabled,\r\n\t\t\t},\r\n\t\t\tlocalizationData: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.localizationData,\r\n\t\t\t},\r\n\t\t\treadOnly: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.readOnly,\r\n\t\t\t},\r\n\t\t\tdisabled: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.disabled,\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n}\r\n","'use strict';\r\nimport EditFormView from './EditFormView';\r\nimport EditFormViewLocals from './EditFormViewLocals';\r\n\r\nexport default class EditFormTabService {\r\n\tconstructor(sidePanelService, i18n) {\r\n\t\tthis.i18n = i18n;\r\n\t\tthis.sidePanelService = sidePanelService;\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.EditFormTabService#open\r\n\t *\r\n\t * @description\r\n\t * Open a `Edit Form tab` dialog with specific template.\r\n\t *\r\n\t * @param {object} options - options for selection grid, convert to MultiSelectionTabOptions\r\n\t * @param {DetailsView} parentView - view from which MultiSelectionTab was opened\r\n\t *\r\n\t * @returns {Promise} - promise, which will be resolved with selected item that user selected on this Dialog.\r\n\t *\r\n\t */\r\n\topen(options, parentView) {\r\n\t\toptions.cancelLabel = this.i18n.get('solutionBuilderAgent.common.cancel_btn');\r\n\t\toptions.saveLabel = this.i18n.get('solutionBuilderAgent.common.ok_btn');\r\n\r\n\t\tvar locals = new EditFormViewLocals(options);\r\n\t\tvar view = new EditFormView(this.i18n, {\r\n\t\t\tisAddingNew: options.isAddingNew,\r\n\t\t\tdisplayName: locals.title,\r\n\t\t\tlocals: locals,\r\n\t\t});\r\n\r\n\t\treturn this.sidePanelService.addView(view, parentView, true);\r\n\t}\r\n}\r\nEditFormTabService.$inject = ['mx.shell.SidePanelService', 'mx.internationalization'];\r\n","'use strict';\r\n\r\nimport { SystemStorageType } from '../../../../App/model/system-storage-types';\r\n\r\nangular.module('mx.SolutionBuilderAgent').controller('mx.SolutionBuilderAgent.GlobalSearchController', MxGlobalSearchCtrl);\r\n\r\nMxGlobalSearchCtrl.$inject = [\r\n\t'$q',\r\n\t'$timeout',\r\n\t'$scope',\r\n\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n\t'mx.SolutionBuilderAgent.mxColumnDefinitionService',\r\n\t'mx.SolutionBuilderAgent.ExternalServiceManager',\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n\t'mx.shell.UserProfileService',\r\n\t'mx.shell.DataStorage',\r\n\t'mx.internationalization',\r\n\t'mx.shell.SearchProviderService',\r\n\t'mx.shell.NavigationService',\r\n\t'mx.SolutionBuilderAgent.DataQueryService',\r\n\t'mx.SolutionBuilderAgent.DataModelService',\r\n\t'mx.shell.ObjectMapper',\r\n\t'mx.shell.ContextService',\r\n\t'mx.shell.Config',\r\n\t'mx.shell.EventService',\r\n];\r\n\r\nfunction MxGlobalSearchCtrl(\r\n\t$q,\r\n\t$timeout,\r\n\t$scope,\r\n\tcontentWidgetService,\r\n\tcolumnDefinitionService,\r\n\texternalServiceManager,\r\n\tpersonalizationService,\r\n\tuserProfileService,\r\n\tdataStorage,\r\n\ti18n,\r\n\tsearchService,\r\n\tnavigationService,\r\n\tdataQueryService,\r\n\tdataModelService,\r\n\tobjectMapper,\r\n\tcontextService,\r\n\tconfigService,\r\n\teventService\r\n) {\r\n\tconst vm = this;\r\n\r\n\tvm.i18n = i18n.get('solutionBuilderAgent.common');\r\n\tvm.loading = true;\r\n\r\n\tvm.uiToken = 'uiToken:search-page-content';\r\n\tcontextService.val('globalUiToken', vm.uiToken);\r\n\r\n\tconst storage = dataStorage.getStorage(SystemStorageType.LocalStorage);\r\n\tconst freeDataSourceDefer = $q.defer();\r\n\r\n\tinit();\r\n\r\n\t$scope.$on('$destroy', function () {\r\n\t\tfreeDataSourceDefer.resolve(true);\r\n\t});\r\n\r\n\tasync function init() {\r\n\t\tconst contextPromise = searchService.getCurrentGlobalSearchParameters();\r\n\t\tconst userProfilePromise = userProfileService.get();\r\n\t\tconst pageSizePromise = personalizationService.getPageSize();\r\n\r\n\t\tconst [globalSearchParameters, userProfile, personalizedPageSize] = await $q.all([contextPromise, userProfilePromise, pageSizePromise]);\r\n\r\n\t\t$timeout(async function () {\r\n\t\t\tif (globalSearchParameters.navigationId) {\r\n\t\t\t\tconst nav = await navigationService.getNavigationItem(globalSearchParameters.navigationId);\r\n\t\t\t\tnavigationService.setActiveStatus(navigationService.currentItem, false);\r\n\t\t\t\tnavigationService.setActiveStatus(nav, true);\r\n\t\t\t} else {\r\n\t\t\t\tnavigationService.setExtraItem(vm.i18n.search);\r\n\t\t\t}\r\n\t\t}, 400);\r\n\r\n\t\tconst pageSize = parseInt(personalizedPageSize || (configService.get('dataSource') || {}).pageSize, 10) || 20;\r\n\t\tconst selectedContexts = globalSearchParameters.contexts.filter((context) => context.selected);\r\n\t\tconst contexts = selectedContexts.length > 0 ? selectedContexts : globalSearchParameters.contexts;\r\n\r\n\t\tconst _makeItemForQueryInfo = makeItemForQueryInfo(userProfile);\r\n\r\n\t\tlet queries = contexts.map(mapContextToQuery).filter((item) => item.dataQueryId && item.widgetId);\r\n\r\n\t\tconst data = await dataQueryService.getGlobalSearchData({\r\n\t\t\tkeyword: globalSearchParameters.keyword,\r\n\t\t\tobjectsForSearch: queries.map(_makeItemForQueryInfo),\r\n\t\t\tpageSize: pageSize,\r\n\t\t});\r\n\t\tlet results = data\r\n\t\t\t.filter((item) => item.Count)\r\n\t\t\t.map((result) => {\r\n\t\t\t\tconst resultFilterId = result.Filters[0] || '';\r\n\t\t\t\tconst resultStructureId = result.StructureNodeId || '';\r\n\r\n\t\t\t\tconst query = queries.find(\r\n\t\t\t\t\t({ widgetId, filterId = '', filterType }) =>\r\n\t\t\t\t\t\twidgetId === result.WidgetId &&\r\n\t\t\t\t\t\t(filterType === 'nofilter' || (filterType === 'filter' && filterId === resultFilterId) || (filterType === 'structure' && filterId === resultStructureId))\r\n\t\t\t\t);\r\n\r\n\t\t\t\tif (query) {\r\n\t\t\t\t\tresult.title = query.title;\r\n\t\t\t\t\tresult.name = query.name;\r\n\t\t\t\t\tresult.navigationId = query.navigationId;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.error(`GlobalSearch: result from server (DataQueryId: ${result.DataQueryId}, WidgetId: ${result.WidgetId}) cannot be find in queries`);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresult.DataQuery = columnDefinitionService.initDataQuery(result.DataQuery);\r\n\r\n\t\t\t\tresult.viewParameters = {\r\n\t\t\t\t\tuiToken: vm.uiToken,\r\n\t\t\t\t\tdataQuery: result.DataQuery,\r\n\t\t\t\t\tdata: result.Data && result.Data.map(objectMapper.mapItem),\r\n\t\t\t\t\ttotalCount: result.Count,\r\n\t\t\t\t\tdataQueryId: result.DataQueryId,\r\n\t\t\t\t\tid: result.WidgetId,\r\n\t\t\t\t\tentities: Array.isArray(result.ContentWidgetList.Entities) ? result.ContentWidgetList.Entities.map((entity) => entity.Name) : null,\r\n\t\t\t\t\tpageSize: pageSize,\r\n\t\t\t\t\tstructureNodeId: result.StructureNodeId,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tresult.searchOptions = {\r\n\t\t\t\t\tcontext: angular.copy(searchService.getGlobalSearchContext()),\r\n\t\t\t\t\tkeyword: globalSearchParameters.keyword,\r\n\t\t\t\t\tuiToken: vm.uiToken,\r\n\t\t\t\t\tfilters: result.Filters,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tmakeTemplateLoader(result);\r\n\r\n\t\t\t\treturn result;\r\n\t\t\t});\r\n\r\n\t\tvm.results = results.sort((a, b) => b.Count - a.Count);\r\n\r\n\t\tawait loadServiceBasedDataSets(globalSearchParameters.keyword);\r\n\r\n\t\tvm.selectedIndex = 0;\r\n\t\t$scope.$watch('vm.selectedIndex', (index) => {\r\n\t\t\tchangeTabContext(index);\r\n\t\t});\r\n\t\t$timeout(() => {\r\n\t\t\tvm.loading = false;\r\n\t\t}, 50);\r\n\t}\r\n\r\n\tasync function loadServiceBasedDataSets(keyword) {\r\n\t\tconst services = vm.results.filter((result) => result.Count === -1);\r\n\t\tif (services.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst currentSearch = searchService.currentSearch();\r\n\t\tcurrentSearch.keyword = keyword;\r\n\t\tawait services.map((service) => service.load());\r\n\r\n\t\tawait new Promise((resolve) => {\r\n\t\t\tconst unsubscribe = eventService.subscribeTo(\r\n\t\t\t\tmx.SolutionBuilderAgent.Events.SearchPageReloaded,\r\n\t\t\t\tfunction () {\r\n\t\t\t\t\t$scope.$evalAsync(async () => {\r\n\t\t\t\t\t\tconst loaded = services.every((dataSet) => dataSet.viewParameters?.dataQueryList.loading === false);\r\n\r\n\t\t\t\t\t\tif (loaded) {\r\n\t\t\t\t\t\t\tunsubscribe();\r\n\t\t\t\t\t\t\tservices.forEach((service) => (service.Count = service.preprocessors?.pagingPreprocessor?.count));\r\n\t\t\t\t\t\t\tvm.results = vm.results.filter((a) => a.Count > 0).sort((a, b) => b.Count - a.Count);\r\n\t\t\t\t\t\t\t//timeout to reorder tabs in ui tabs component and to avoid double change of selectedIndex\r\n\t\t\t\t\t\t\tsetTimeout(resolve, 200);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t$scope\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\tasync function changeTabContext(tabIndex) {\r\n\t\tif (!isFinite(tabIndex) || !vm.results) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst newContext = vm.results[tabIndex];\r\n\r\n\t\tif (newContext === vm.currentContext) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (vm.currentContext) {\r\n\t\t\tvm.currentContext.selectedObjects = contextService.selectedObjects;\r\n\t\t}\r\n\r\n\t\tvm.currentContext = newContext;\r\n\t\tcontextService.selectedObjects = vm.currentContext.selectedObjects || [];\r\n\r\n\t\tsearchService.currentSearch(vm.currentContext.searchOptions);\r\n\t\teventService.dispatchEvent(mx.shell.EventCodes.LayoutChanged);\r\n\r\n\t\tif (!vm.currentContext.templateLoaded) {\r\n\t\t\tawait vm.currentContext.load();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction makeTemplateLoader(result) {\r\n\t\tresult.load = function () {\r\n\t\t\tconst widgetList = result.ContentWidgetList;\r\n\r\n\t\t\treturn $q\r\n\t\t\t\t.when(null, function () {\r\n\t\t\t\t\treturn widgetList.Template\r\n\t\t\t\t\t\t? widgetList.Template\r\n\t\t\t\t\t\t: contentWidgetService.getHtml(result.WidgetId).then(function (t) {\r\n\t\t\t\t\t\t\t\treturn t.Template;\r\n\t\t\t\t\t\t });\r\n\t\t\t\t})\r\n\t\t\t\t.then(function (template) {\r\n\t\t\t\t\tconst view =\r\n\t\t\t\t\t\t(widgetList.ListViewEnabled || widgetList.TileViewEnabled) &&\r\n\t\t\t\t\t\ttemplate.Views.filter(function (view) {\r\n\t\t\t\t\t\t\treturn view.Type === widgetList.DefaultView;\r\n\t\t\t\t\t\t})[0];\r\n\r\n\t\t\t\t\tresult.view = view ? view : mx.SolutionBuilderAgent.ContentWidgetViewType.Grid;\r\n\r\n\t\t\t\t\tconst dataModelExtensions = template.DataModelExtensions;\r\n\t\t\t\t\tconst dataModelOptions = dataModelExtensions\r\n\t\t\t\t\t\t? JSON.parse(dataModelExtensions)\r\n\t\t\t\t\t\t: {\r\n\t\t\t\t\t\t\t\tSources: [],\r\n\t\t\t\t\t\t\t\tProperties: [],\r\n\t\t\t\t\t\t };\r\n\t\t\t\t\tdataModelOptions.dataQueryId = result.DataQueryId;\r\n\t\t\t\t\tdataModelOptions.widgetId = result.WidgetId;\r\n\t\t\t\t\tconst staticData = {\r\n\t\t\t\t\t\tContext: {\r\n\t\t\t\t\t\t\tWidgetId: result.WidgetId,\r\n\t\t\t\t\t\t\tNavigationId: result.navigationId,\r\n\t\t\t\t\t\t\tIsGlobalSearch: true,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\t\t\t\t\tresult.viewParameters.dataModelOptions = dataModelExtensions;\r\n\t\t\t\t\treturn dataModelService.loadDataModel(dataModelOptions, staticData, undefined, freeDataSourceDefer.promise);\r\n\t\t\t\t\t//\r\n\t\t\t\t})\r\n\t\t\t\t.then(function (dataModel) {\r\n\t\t\t\t\tresult.viewParameters.dataModel = dataModel;\r\n\t\t\t\t\tresult.templateLoaded = true;\r\n\t\t\t\t});\r\n\t\t};\r\n\t}\r\n\r\n\tfunction makeItemForQueryInfo(userProfile) {\r\n\t\treturn function (item) {\r\n\t\t\tlet sorting;\r\n\t\t\tconst sortingConfig = storage.getAsObject('ds_sort_' + item.dataQueryId);\r\n\t\t\tif (sortingConfig && sortingConfig.field) {\r\n\t\t\t\tsorting = sortingConfig.field + ' ' + sortingConfig.direction;\r\n\t\t\t} else {\r\n\t\t\t\tconst p = personalizationService.getGridPersonalizationStorageKeyByProfile(item.widgetId, userProfile);\r\n\t\t\t\tconst config = storage.getAsObject(p);\r\n\t\t\t\t_.forIn(config, function (value, key) {\r\n\t\t\t\t\tif (value.Sorting && key) {\r\n\t\t\t\t\t\tsorting = key + ' ' + (value.Sorting === 1 ? 'asc' : 'desc');\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tdataQueryId: item.dataQueryId,\r\n\t\t\t\twidgetId: item.widgetId,\r\n\t\t\t\tfilters: item.filterType === 'filter' && item.filterId ? [item.filterId] : [],\r\n\t\t\t\tstructureNodeId: (item.filterType === 'structure' && item.filterId) || '',\r\n\t\t\t\torderBy: sorting,\r\n\t\t\t};\r\n\t\t};\r\n\t}\r\n\r\n\tfunction mapContextToQuery(context) {\r\n\t\treturn {\r\n\t\t\tdataQueryId: context.datasource,\r\n\t\t\twidgetId: context.navigationItem.contentWidgetId,\r\n\t\t\tnavigationId: context.parameters.navigationId,\r\n\t\t\ttitle: context.title,\r\n\t\t\tname: context.name,\r\n\t\t\tfilterId: context.parameters.filterId,\r\n\t\t\tfilterType: context.parameters.filterType,\r\n\t\t};\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nangular\r\n\t.module('mx.SolutionBuilderAgent')\r\n\t.controller('mx.SolutionBuilderAgent.ImageSelectionViewController', ['mx.SolutionBuilderAgent.Http', '$q', '$scope', 'mx.internationalization', MxImageSelectionView]);\r\n\r\nfunction MxImageSelectionView(http, $q, $scope, $i18n) {\r\n\tconst vm = this;\r\n\tlet typing = 0;\r\n\r\n\tvm.i18n = $i18n.get('solutionBuilderAgent.layouts.image-selection-tab');\r\n\tvm.i18nCommon = $i18n.get('solutionBuilderAgent.common');\r\n\r\n\tvm.loading = true;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvm.selectedImage = vm.selectedImage || '';\r\n\t\tvm.seletedImageSize = '';\r\n\t\tvm.attachment = '';\r\n\t\tvm.initialImage = vm.selectedImage;\r\n\r\n\t\tvm.iconsLibrary = [];\r\n\r\n\t\tconst loadDefers = [];\r\n\r\n\t\tif (vm.modeIcon) {\r\n\t\t\tloadDefers.push(initLibraryView());\r\n\t\t}\r\n\r\n\t\tif (vm.modeImage) {\r\n\t\t\tloadDefers.push(initFolderView());\r\n\t\t}\r\n\t\tif (vm.modeAttach) {\r\n\t\t\tloadDefers.push(initAttachmentView());\r\n\t\t}\r\n\r\n\t\t$q.all(loadDefers).then(function () {\r\n\t\t\t$scope.$evalAsync(function () {\r\n\t\t\t\tselectPickerView();\r\n\t\t\t\tvm.loading = false;\r\n\t\t\t});\r\n\t\t});\r\n\t};\r\n\r\n\t// Folder tab methods\r\n\tvm.selectFolder = selectFolder;\r\n\tvm.goToParent = goToParent;\r\n\tvm.goToPath = goToPath;\r\n\tvm.goToRoot = goToRoot;\r\n\r\n\tvm.preview = function (event, value, size) {\r\n\t\tvm.selectedImage = value;\r\n\t\tvm.seletedImageSize = size;\r\n\t};\r\n\r\n\tvm.select = function () {\r\n\t\tif (vm.attachment && vm.selectedImage !== vm.attachment) {\r\n\t\t\t// ??????\r\n\t\t\thttp.remove(vm.attachment);\r\n\t\t}\r\n\t\tvm.finishDefer.resolve({\r\n\t\t\tstatus: 'OK',\r\n\t\t\tselectedImage: vm.selectedImage,\r\n\t\t});\r\n\t};\r\n\r\n\tvm.cancel = function () {\r\n\t\tvm.finishDefer.resolve({\r\n\t\t\tstatus: 'CANCEL',\r\n\t\t\tselectedImage: vm.initialImage,\r\n\t\t});\r\n\t};\r\n\r\n\treturn vm;\r\n\r\n\tfunction initFolderView() {\r\n\t\treturn getFolders()\r\n\t\t\t.then(function (res) {\r\n\t\t\t\tvm.rootFolder = mapData(res);\r\n\t\t\t\tif (vm.baseFolder) {\r\n\t\t\t\t\tconst found = findPath(vm.baseFolder);\r\n\t\t\t\t\tvm.rootFolder = found || vm.rootFolder;\r\n\t\t\t\t}\r\n\t\t\t\tvm.selectedFolder = vm.rootFolder;\r\n\t\t\t\tsetFoldersPathView(vm.selectedFolder.path);\r\n\t\t\t\tvm.imageModeLoaded = true;\r\n\t\t\t})\r\n\t\t\t.then(function () {\r\n\t\t\t\tloadFiles(vm.rootFolder.path);\r\n\t\t\t});\r\n\t}\r\n\r\n\tasync function getFolders() {\r\n\t\tif (vm.serverBasePath) {\r\n\t\t\tif (isBasePathAllowed()) {\r\n\t\t\t\treturn http.get(`api/resources/imageFolders?path=${vm.serverBasePath}`);\r\n\t\t\t}\r\n\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\treturn http.get('api/resources/imageFolders');\r\n\t}\r\n\r\n\tfunction initLibraryView() {\r\n\t\t$scope.$watch('vm.searchLibraryText', function (text) {\r\n\t\t\tif (!vm.iconsLibrary) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tsearchLibrary(text);\r\n\t\t});\r\n\t\treturn initLibrary();\r\n\t}\r\n\r\n\tfunction initAttachmentView() {\r\n\t\tvm.attachment = vm.selectedImage.toLowerCase().includes('api/filestorage') ? vm.selectedImage : '';\r\n\t\t$scope.$watch('vm.attachment', function (newVal, oldVal) {\r\n\t\t\tif (oldVal !== vm.selectedImage && !newVal) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvm.selectedImage = vm.attachment;\r\n\t\t});\r\n\t\tvm.attachModeLoaded = true;\r\n\t\treturn $q.when(true);\r\n\t}\r\n\r\n\tfunction selectPickerView() {\r\n\t\tconst modeAttachOnly = vm.modeAttach && !vm.modeImage && !vm.modeIcon;\r\n\t\tconst modeImageOnly = !vm.modeAttach && vm.modeImage && !vm.modeIcon;\r\n\t\tconst modeIconOnly = !vm.modeAttach && !vm.modeImage && vm.modeIcon;\r\n\r\n\t\tconst valueImage = vm.selectedImage.indexOf('/') > -1 || vm.selectedImage.split('.').length > 1;\r\n\t\tconst valueAttach = vm.selectedImage.toLowerCase().includes('api/filestorage');\r\n\t\tconst tabs = [\r\n\t\t\t{\r\n\t\t\t\tactive: vm.modeImage,\r\n\t\t\t\tbyValue: valueImage,\r\n\t\t\t\tmode: 'image',\r\n\t\t\t\tonly: modeImageOnly,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tactive: vm.modeIcon,\r\n\t\t\t\tbyValue: !valueImage && !valueAttach,\r\n\t\t\t\tmode: 'icon',\r\n\t\t\t\tonly: modeIconOnly,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tactive: vm.modeAttach,\r\n\t\t\t\tbyValue: valueAttach,\r\n\t\t\t\tmode: 'attach',\r\n\t\t\t\tonly: modeAttachOnly,\r\n\t\t\t},\r\n\t\t];\r\n\r\n\t\t_.filter(tabs, 'active').forEach(function (tab, i) {\r\n\t\t\ttab.index = i;\r\n\t\t\tif (tab.only || tab.byValue) {\r\n\t\t\t\tvm.selectedTabIndex = i;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvm.tabs = {};\r\n\t\tvm.tabs.image = tabs[0];\r\n\t\tvm.tabs.icon = tabs[1];\r\n\t\tvm.tabs.attach = tabs[2];\r\n\t}\r\n\r\n\tfunction initLibrary() {\r\n\t\tvm.iconsLibrary = mx.components.Icons.map(function (cat) {\r\n\t\t\tcat.icons.forEach(function (icon) {\r\n\t\t\t\ticon.visible = true;\r\n\t\t\t});\r\n\t\t\treturn {\r\n\t\t\t\tname: cat.name,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\ticons: cat.icons.map(function (icon) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tvisible: true,\r\n\t\t\t\t\t\ticon: icon,\r\n\t\t\t\t\t};\r\n\t\t\t\t}),\r\n\t\t\t};\r\n\t\t});\r\n\t\tvm.iconModeLoaded = true;\r\n\r\n\t\treturn $q.when(vm.iconsLibrary);\r\n\t}\r\n\r\n\tfunction searchLibrary(inputText) {\r\n\t\tlet text = inputText;\r\n\t\ttyping++;\r\n\t\tconst i = typing;\r\n\r\n\t\tsetTimeout(function () {\r\n\t\t\tif (i === typing) {\r\n\t\t\t\ttyping = 0;\r\n\r\n\t\t\t\tlet found = false;\r\n\t\t\t\ttext = (text || '').toLowerCase();\r\n\r\n\t\t\t\tvm.iconsLibrary.forEach(function (category) {\r\n\t\t\t\t\tlet catVisible = false;\r\n\t\t\t\t\tcategory.icons.forEach(function (item) {\r\n\t\t\t\t\t\titem.visible = item.icon.name.indexOf(text) !== -1 || item.icon.id.indexOf(text) !== -1;\r\n\t\t\t\t\t\tcatVisible = catVisible || item.visible;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tcategory.visible = catVisible;\r\n\t\t\t\t\tfound = found || category.visible;\r\n\t\t\t\t});\r\n\t\t\t\tvm.itemsFound = found;\r\n\t\t\t\t$scope.$apply();\r\n\t\t\t}\r\n\t\t}, 200);\r\n\t}\r\n\r\n\tfunction selectFolder(event, folder) {\r\n\t\tif (event && event.stopPropagation) {\r\n\t\t\tevent.stopPropagation();\r\n\t\t}\r\n\r\n\t\tif (vm.selectedFolder.path !== folder.path) {\r\n\t\t\tvm.selectedFolder = folder;\r\n\r\n\t\t\tconst path = vm.selectedFolder.path;\r\n\t\t\tsetFoldersPathView(path);\r\n\t\t\tif (vm.selectedFolder.files === null) {\r\n\t\t\t\tvm.folderLoading = true;\r\n\t\t\t\tloadFiles(path);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tasync function loadFiles(path) {\r\n\t\tlet imagesEndpoint = 'api/resources/images';\r\n\t\tlet imagesPath = path || '';\r\n\t\tlet queryParams = [];\r\n\t\tconst serverBasePath = (vm.serverBasePath || '').replaceAll('\\\\', '/');\r\n\r\n\t\tif (vm.modeImage && serverBasePath) {\r\n\t\t\tif (!isBasePathAllowed()) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tqueryParams.push(`path=${serverBasePath}`);\r\n\t\t}\r\n\r\n\t\tif (path) {\r\n\t\t\tqueryParams.push(`folder=${path}\\\\`);\r\n\t\t}\r\n\r\n\t\tif (queryParams.length > 0) {\r\n\t\t\timagesEndpoint += `?${queryParams.join('&')}`;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst res = await http.get(imagesEndpoint);\r\n\t\t\tconst files = mapFiles(res, imagesPath, serverBasePath);\r\n\r\n\t\t\tvm.selectedFolder.files = files;\r\n\t\t} catch (err) {\r\n\t\t\tconsole.error(err);\r\n\t\t\tvm.folderError = err;\r\n\t\t} finally {\r\n\t\t\tvm.folderLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction isBasePathAllowed() {\r\n\t\tconst allowedBasePaths = ['/sps/', '/wm/', '\\\\sps\\\\', '\\\\wm\\\\'];\r\n\r\n\t\tif (allowedBasePaths.some((x) => vm.serverBasePath.toLowerCase().startsWith(x)) && !vm.serverBasePath.includes('..')) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfunction findPath(path) {\r\n\t\tif (path === '' || path === '/') {\r\n\t\t\treturn vm.rootFolder;\r\n\t\t}\r\n\r\n\t\treturn findFolder(vm.rootFolder.folders, path);\r\n\t}\r\n\r\n\tfunction goToPath(event, path) {\r\n\t\tif (vm.selectedFolder.path !== path) {\r\n\t\t\tconst found = findPath(path);\r\n\t\t\tif (found) {\r\n\t\t\t\tselectFolder(event, found);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setFoldersPathView(path) {\r\n\t\tconst newFolderPath = [vm.rootFolder];\r\n\r\n\t\tif (path !== '' && path !== '/') {\r\n\t\t\tconst parts = path.split('/');\r\n\t\t\tif (parts.length > 0) {\r\n\t\t\t\tlet currPath = '';\r\n\t\t\t\tparts.forEach(function (pathPart) {\r\n\t\t\t\t\tcurrPath += currPath ? '/' + pathPart : pathPart;\r\n\t\t\t\t\tnewFolderPath.push(findPath(currPath));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\t$scope.$evalAsync(function () {\r\n\t\t\tvm.folderPath = newFolderPath;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction goToParent(event, folder) {\r\n\t\tif (folder.parentPath === '') {\r\n\t\t\tgoToRoot(event);\r\n\t\t}\r\n\t\tgoToPath(event, folder.parentPath);\r\n\t}\r\n\r\n\tfunction findFolder(folders, pathToFind) {\r\n\t\tlet found = _.find(folders, { path: pathToFind });\r\n\t\tif (!found) {\r\n\t\t\tfolders.some(function (fdr) {\r\n\t\t\t\tfound = findFolder(fdr.folders, pathToFind);\r\n\t\t\t\treturn typeof found !== 'undefined';\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn found;\r\n\t}\r\n\r\n\tfunction goToRoot(event) {\r\n\t\tif (event && event.stopPropagation) {\r\n\t\t\tevent.stopPropagation();\r\n\t\t}\r\n\t\tvm.selectedFolder = vm.rootFolder;\r\n\t}\r\n\r\n\tfunction mapData(res) {\r\n\t\treturn {\r\n\t\t\tfolders: (res || []).map(function (folder) {\r\n\t\t\t\treturn mapFolder(folder, '');\r\n\t\t\t}),\r\n\t\t\tname: vm.i18n.rootFolder,\r\n\t\t\tpath: '',\r\n\t\t};\r\n\t}\r\n\r\n\tfunction mapFolder(folder, parentPath) {\r\n\t\tconst path = (parentPath ? parentPath + '/' : '') + folder.Name;\r\n\t\treturn {\r\n\t\t\tfiles: null,\r\n\t\t\tfolders: (folder.SubFolders || []).map(function (sf) {\r\n\t\t\t\treturn mapFolder(sf, path);\r\n\t\t\t}),\r\n\t\t\tname: folder.Name || '',\r\n\t\t\tparentPath: parentPath,\r\n\t\t\tpath: path,\r\n\t\t};\r\n\t}\r\n\r\n\tfunction mapFiles(res, path, relativePath) {\r\n\t\treturn (res || []).map(function (file) {\r\n\t\t\tlet filePath = `${path}/${file.Name}`;\r\n\r\n\t\t\tif (filePath.indexOf('/') === 0) {\r\n\t\t\t\tfilePath = filePath.substr(1);\r\n\t\t\t}\r\n\r\n\t\t\tif (relativePath) {\r\n\t\t\t\tif (!relativePath.endsWith('/')) {\r\n\t\t\t\t\trelativePath = `${relativePath}/`;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!relativePath.startsWith('/')) {\r\n\t\t\t\t\trelativePath = `/${relativePath}`;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilePath = `${relativePath}${filePath}`;\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tname: file.Name,\r\n\t\t\t\tpath: filePath,\r\n\t\t\t\tsize: file.Size,\r\n\t\t\t};\r\n\t\t});\r\n\t}\r\n}\r\n","import { EventCodes } from '../../../../App/model/event-codes';\r\n\r\nangular.module('mx.SolutionBuilderAgent').controller('mx.SolutionBuilderAgent.WizardController', [\r\n\t'$scope',\r\n\t'$element',\r\n\t'mx.internationalization',\r\n\t'mx.shell.EventService',\r\n\t'mx.SolutionBuilderAgent.WizardService',\r\n\t'mx.SolutionBuilderAgent.ConcurrencyTrackingService',\r\n\t'mx.shell.NotificationService',\r\n\t'mx.shell.SidePanelService',\r\n\t'mx.SolutionBuilderAgent.DialogOpenerService',\r\n\t'mx.SolutionBuilderAgent.SchemaService',\r\n\t'mx.shell.ActionManagerService',\r\n\tfunction wizardController(\r\n\t\t$scope,\r\n\t\t$element,\r\n\t\ti18n,\r\n\t\teventService,\r\n\t\twizardService,\r\n\t\tconcurrencyTrackingService,\r\n\t\tnotificationService,\r\n\t\tsidePanelService,\r\n\t\tdialogOpenerService,\r\n\t\tschemaService,\r\n\t\tactionManagerService\r\n\t) {\r\n\t\tconst vm = this;\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tif (!vm.wizard.pages) {\r\n\t\t\t\tthrow new Error(i18n.get('solutionBuilderAgent.errors.no_wizard_pages_designed'));\r\n\t\t\t}\r\n\r\n\t\t\tvm.dataModel.Context.ObjectIds.forEach(function (id) {\r\n\t\t\t\tvm.wizard.id += ':' + id;\r\n\t\t\t});\r\n\r\n\t\t\tvm.subscriptions = [];\r\n\r\n\t\t\tif (!vm.dataModel.ServiceOperation && !vm.dataModel.DataDefinition && vm.wizard.wizardMode === mx.SolutionBuilderAgent.WizardMode.Edit) {\r\n\t\t\t\tvm.wizard.wrapView = vm.view;\r\n\t\t\t\tvm.subscriptions.push(subscribeConcurrency());\r\n\r\n\t\t\t\tconst eventSidePanelViewClosed = eventService.subscribeTo(\r\n\t\t\t\t\tmx.shell.EventCodes.SidePanelViewClosed,\r\n\t\t\t\t\tfunction (eventObj, view) {\r\n\t\t\t\t\t\tif (view === vm.view) {\r\n\t\t\t\t\t\t\tunsubscribeFromEvents();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t$scope\r\n\t\t\t\t);\r\n\t\t\t\tvm.subscriptions.push(eventSidePanelViewClosed);\r\n\r\n\t\t\t\tvm.subscriptions.push(\r\n\t\t\t\t\teventService.subscribeTo(\r\n\t\t\t\t\t\tmx.shell.EventCodes.WizardClose,\r\n\t\t\t\t\t\tfunction (e, { wizard, canceled }) {\r\n\t\t\t\t\t\t\tif (vm.wizard === wizard) {\r\n\t\t\t\t\t\t\t\ttrackTelemetry(canceled ? `{viewName} cancelled` : '{viewName} executed');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t$scope\r\n\t\t\t\t\t)\r\n\t\t\t\t);\r\n\r\n\t\t\t\t$element.on('$destroy', function () {\r\n\t\t\t\t\tunsubscribeFromEvents();\r\n\t\t\t\t\t$scope.$destroy();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (vm.view.ShowAsWizard !== true) {\r\n\t\t\t\t// regular wizard (not dialog)\r\n\t\t\t\tactionManagerService.getActionById(vm.view.actionId).then(function (action) {\r\n\t\t\t\t\tconst actionTitle = action ? action.title : vm.wizard.name;\r\n\t\t\t\t\tvm.view.displayName = vm.wizard.contextDescription\r\n\t\t\t\t\t\t? i18n.getFormatted('shell.wizard.headerTemplate', actionTitle, vm.wizard.contextDescription)\r\n\t\t\t\t\t\t: i18n.getFormatted('shell.wizard.emptyHeaderTemplate', actionTitle);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tinitWizardContextDescriptionHandlers();\r\n\r\n\t\t\tconst objectDataDeleted = eventService.subscribeTo(\r\n\t\t\t\tmx.SolutionBuilderAgent.Events.ObjectDataDeleted,\r\n\t\t\t\tfunction (eventObj, data) {\r\n\t\t\t\t\tif (data && Array.isArray(data.affectedObjectIds)) {\r\n\t\t\t\t\t\tconst objectId = vm.objectId.toLowerCase();\r\n\t\t\t\t\t\tconst closeCurrentView = data.affectedObjectIds.some((value) => objectId === value.toLowerCase());\r\n\r\n\t\t\t\t\t\tif (closeCurrentView) {\r\n\t\t\t\t\t\t\tcloseWizard(vm.view, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t$scope\r\n\t\t\t);\r\n\t\t\tvm.subscriptions.push(objectDataDeleted);\r\n\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.ViewDataLoaded, vm.view);\r\n\t\t};\r\n\r\n\t\treturn vm;\r\n\r\n\t\tfunction trackTelemetry(eventName) {\r\n\t\t\teventService.dispatchEvent(EventCodes.TrackViewTelemetry, { eventName: eventName, view: vm.view });\r\n\t\t}\r\n\r\n\t\tfunction initWizardContextDescriptionHandlers() {\r\n\t\t\tif (vm.wizard.wizardMode === mx.SolutionBuilderAgent.WizardMode.Default && vm.dataModel.Context.ObjectIds.length > 0) {\r\n\t\t\t\tconst singleObject = vm.dataModel.Context.ObjectIds.length === 1;\r\n\t\t\t\tif (singleObject) {\r\n\t\t\t\t\tvm.wizard.displayContextFn = function () {\r\n\t\t\t\t\t\tconst objectDetails = {\r\n\t\t\t\t\t\t\tEntityType: vm.dataModel.Context.Object.Type,\r\n\t\t\t\t\t\t\tObjectId: vm.dataModel.Context.Object._id,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tdialogOpenerService.openPreview(objectDetails, undefined, undefined, vm.view);\r\n\t\t\t\t\t};\r\n\t\t\t\t} else {\r\n\t\t\t\t\tschemaService.getType(vm.dataModel.Context.Object.Type).then(function (objectDetails) {\r\n\t\t\t\t\t\tvm.wizard.displayContextFn = function () {\r\n\t\t\t\t\t\t\tdialogOpenerService\r\n\t\t\t\t\t\t\t\t.openObjectsListPreview(\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tentityClassName: objectDetails.MainClassName,\r\n\t\t\t\t\t\t\t\t\t\tlabel: objectDetails.DisplayName,\r\n\t\t\t\t\t\t\t\t\t\tselectedItemIds: vm.dataModel.Context.ObjectIds,\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tvm.view\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t.catch(mx.logCatch);\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction getDisplayName() {\r\n\t\t\treturn vm.wizard.wrapView.name;\r\n\t\t}\r\n\r\n\t\tfunction subscribeConcurrency() {\r\n\t\t\treturn concurrencyTrackingService.subscribe(vm.wizard.context.objectId, {\r\n\t\t\t\tchange: function (objectId, userId, username) {\r\n\t\t\t\t\tconst entity = vm.dataModel[vm.dataModel.entityName];\r\n\t\t\t\t\twizardService.showObjectChangedNotification(username, entity, vm.dataModel.entityName, vm.widgetId, entity.$$initialEntity, vm.wizard);\r\n\t\t\t\t},\r\n\t\t\t\tdelete: function (objectId, userId, username) {\r\n\t\t\t\t\twizardService.showObjectDeletedNotification(username, vm.wizard);\r\n\t\t\t\t},\r\n\t\t\t\tsubscribe: function (userName) {\r\n\t\t\t\t\tnotificationService.info(\r\n\t\t\t\t\t\ti18n.getFormatted(\r\n\t\t\t\t\t\t\t'solutionBuilderAgent.layouts.dialog.dialog-content.concurrencySubscribed',\r\n\t\t\t\t\t\t\tuserName || i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyUnknownUser'),\r\n\t\t\t\t\t\t\tgetDisplayName() || i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyConfirmDefaultItemName')\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t);\r\n\t\t\t\t},\r\n\t\t\t\tunsubscribe: function (userName) {\r\n\t\t\t\t\tnotificationService.info(\r\n\t\t\t\t\t\ti18n.getFormatted(\r\n\t\t\t\t\t\t\t'solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyUnsubscribed',\r\n\t\t\t\t\t\t\tuserName || i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyUnknownUser'),\r\n\t\t\t\t\t\t\tgetDisplayName() || i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyConfirmDefaultItemName')\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t);\r\n\t\t\t\t},\r\n\t\t\t\texist: function (userNames) {\r\n\t\t\t\t\tconst msg =\r\n\t\t\t\t\t\tuserNames.length === 1\r\n\t\t\t\t\t\t\t? i18n.getFormatted(\r\n\t\t\t\t\t\t\t\t\t'solutionBuilderAgent.layouts.dialog.dialog-content.concurrencySubscriptionExist',\r\n\t\t\t\t\t\t\t\t\tuserNames[0] || i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyUnknownUser'),\r\n\t\t\t\t\t\t\t\t\tgetDisplayName() || i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyConfirmDefaultItemName')\r\n\t\t\t\t\t\t\t )\r\n\t\t\t\t\t\t\t: i18n.getFormatted(\r\n\t\t\t\t\t\t\t\t\t'solutionBuilderAgent.layouts.dialog.dialog-content.concurrencySubscriptionsExist',\r\n\t\t\t\t\t\t\t\t\tuserNames.length,\r\n\t\t\t\t\t\t\t\t\tgetDisplayName() || i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyConfirmDefaultItemName')\r\n\t\t\t\t\t\t\t );\r\n\r\n\t\t\t\t\tnotificationService.info(msg);\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction unsubscribeFromEvents() {\r\n\t\t\tvm.subscriptions.forEach(function (unsubscribe) {\r\n\t\t\t\tif (unsubscribe) {\r\n\t\t\t\t\tunsubscribe();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tvm.subscriptions = [];\r\n\t\t}\r\n\r\n\t\tfunction closeWizard(view) {\r\n\t\t\tif (view) {\r\n\t\t\t\tunsubscribeFromEvents();\r\n\t\t\t\tsidePanelService.closeView(view);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n]);\r\n","'use strict';\r\nimport { DataModelPropertyDirection } from './enumerations';\r\n\r\nfunction DataModelDescriptor(options) {\r\n\toptions = options || {};\r\n\tvar that = this;\r\n\r\n\tif (!Array.isArray(options.Sources)) {\r\n\t\tthrow modelError('`options.Sources` must be Array type');\r\n\t}\r\n\tif (!Array.isArray(options.Properties)) {\r\n\t\tthrow modelError('`options.Properties` must be Array type');\r\n\t}\r\n\t// If (!Array.isArray(options.ExtraProperties)) {\r\n\t//\tThrow modelError('`options.ExtraProperties` must be Array type');\r\n\t// }\r\n\r\n\tvar sources =\r\n\t\t(options.Sources &&\r\n\t\t\toptions.Sources.map(function (source) {\r\n\t\t\t\treturn new DataModelSourceDescriptor(source);\r\n\t\t\t})) ||\r\n\t\t[];\r\n\r\n\tObject.defineProperty(that, 'Sources', {\r\n\t\tenumerable: true,\r\n\t\tget: function () {\r\n\t\t\treturn sources;\r\n\t\t},\r\n\t});\r\n\r\n\tvar properties =\r\n\t\t(options.Properties &&\r\n\t\t\toptions.Properties.map(function (property) {\r\n\t\t\t\treturn new DataModelPropertyDescriptor(property);\r\n\t\t\t})) ||\r\n\t\t[];\r\n\r\n\tObject.defineProperty(that, 'Properties', {\r\n\t\tenumerable: true,\r\n\t\tget: function () {\r\n\t\t\treturn properties;\r\n\t\t},\r\n\t\tset: function (value) {\r\n\t\t\tif (\r\n\t\t\t\tArray.isArray(value) &&\r\n\t\t\t\t!value.some(function (valueItem) {\r\n\t\t\t\t\treturn !(valueItem instanceof DataModelPropertyDescriptor);\r\n\t\t\t\t})\r\n\t\t\t) {\r\n\t\t\t\tproperties = value;\r\n\t\t\t} else {\r\n\t\t\t\tthrow new Error('Can not set value to `DataModelDescriptor.Properties` - array of `DataModelPropertyDescriptor` objects expected');\r\n\t\t\t}\r\n\t\t},\r\n\t});\r\n\r\n\tvar extraProperties =\r\n\t\t(options.ExtraProperties &&\r\n\t\t\toptions.ExtraProperties.map(function (property) {\r\n\t\t\t\treturn new DataModelPropertyDescriptor(property);\r\n\t\t\t})) ||\r\n\t\t[];\r\n\r\n\tObject.defineProperty(that, 'ExtraProperties', {\r\n\t\tenumerable: true,\r\n\t\tget: function () {\r\n\t\t\treturn extraProperties;\r\n\t\t},\r\n\t});\r\n}\r\n\r\nDataModelDescriptor.prototype.addSources = function (sourceDescriptors) {\r\n\tvar model = this;\r\n\r\n\tif (Array.isArray(sourceDescriptors)) {\r\n\t\tsourceDescriptors.forEach(function (source) {\r\n\t\t\tif (source instanceof DataModelSourceDescriptor) {\r\n\t\t\t\tmodel.Sources.push(source);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n};\r\n\r\nDataModelDescriptor.prototype.removeSource = function (path) {\r\n\tvar model = this;\r\n\r\n\tif (path) {\r\n\t\tvar i = 0;\r\n\r\n\t\tif (\r\n\t\t\tmodel.Sources.some(function (s) {\r\n\t\t\t\tif (s.Path === path) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\ti++;\r\n\t\t\t})\r\n\t\t) {\r\n\t\t\tmodel.Sources.splice(i, 1);\r\n\t\t\tmodel.Properties = model.Properties.filter(function (prop) {\r\n\t\t\t\treturn prop.Path.indexOf(path + '.') !== 0;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction DataModelSourceDescriptor(options) {\r\n\tvar that = this;\r\n\r\n\toptions = options || {};\r\n\r\n\tObject.defineProperty(that, 'Id', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.Id || mx.components.Utils.guid(),\r\n\t});\r\n\r\n\tif (!options.Path) {\r\n\t\toptions.Path = options.Name;\r\n\t}\r\n\t// Mandatory properties\r\n\tvar requiredProperties = ['Name', 'Path'];\r\n\r\n\tvar notPassed = [];\r\n\r\n\trequiredProperties.forEach(function (propertyName) {\r\n\t\tif (!options.hasOwnProperty(propertyName) && !options[propertyName]) {\r\n\t\t\tnotPassed.push(propertyName);\r\n\t\t} else {\r\n\t\t\tObject.defineProperty(that, propertyName, {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options[propertyName],\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\tif (notPassed.length) {\r\n\t\tthrow sourceError('required options not passed: ' + notPassed.join(', '));\r\n\t}\r\n\r\n\tif (options.StaticSource !== true) {\r\n\t\t// Safe inittialization of EntityName, DataQueryId or OperationId - one of them must be presented\r\n\t\trequiredProperties = ['EntityName', 'DataQueryId', 'OperationId', 'DataDefinition', 'WorkflowId'];\r\n\t\tvar presented = requiredProperties.filter(function (propertyName) {\r\n\t\t\treturn options.hasOwnProperty(propertyName) && options[propertyName];\r\n\t\t});\r\n\r\n\t\tif (presented.length === 0) {\r\n\t\t\tthrow sourceError('one of these options must to be passed: ' + requiredProperties.join(', '));\r\n\t\t}\r\n\r\n\t\tif (presented.length > 1) {\r\n\t\t\tthrow sourceError('only one of these options need to be presented: ' + requiredProperties.join(', ') + '; but passed: ' + presented.join(', '));\r\n\t\t}\r\n\r\n\t\tif (options.EntityName) {\r\n\t\t\tObject.defineProperty(that, 'EntityName', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.EntityName,\r\n\t\t\t});\r\n\t\t} else if (options.DataDefinition) {\r\n\t\t\tObject.defineProperty(that, 'DataDefinition', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.DataDefinition,\r\n\t\t\t});\r\n\t\t\tObject.defineProperty(that, 'IsArray', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.IsArray,\r\n\t\t\t});\r\n\t\t\tObject.defineProperty(that, 'Filter', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.Filter,\r\n\t\t\t});\r\n\t\t\tObject.defineProperty(that, 'FilterExpression', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.FilterExpression,\r\n\t\t\t});\r\n\t\t\tObject.defineProperty(that, 'AllowUnsafeFilter', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.AllowUnsafeFilter,\r\n\t\t\t});\r\n\t\t\tObject.defineProperty(that, 'MultiCurrencies', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.MultiCurrencies,\r\n\t\t\t});\r\n\t\t} else if (options.DataQueryId) {\r\n\t\t\tObject.defineProperty(that, 'DataQueryId', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.DataQueryId,\r\n\t\t\t});\r\n\t\t\tObject.defineProperty(that, 'FilterExpression', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.FilterExpression,\r\n\t\t\t});\r\n\t\t\tObject.defineProperty(that, 'AllowUnsafeFilter', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.AllowUnsafeFilter,\r\n\t\t\t});\r\n\t\t} else if (options.OperationId || options.WorkflowId) {\r\n\t\t\tObject.defineProperty(that, 'OperationId', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.OperationId,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(that, 'WorkflowId', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.WorkflowId,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(that, 'RelativePath', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.RelativePath,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(that, 'RouteTemplate', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.RouteTemplate,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(that, 'ServiceType', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.ServiceType,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(that, 'BaseUrl', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.BaseUrl,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tObject.defineProperty(that, 'HttpMethod', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.HttpMethod || 1,\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'Direction', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.Direction || 0,\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'Reloadable', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.Reloadable === true,\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'RefreshInterval', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: Number(options.RefreshInterval),\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'RewriteResponse', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.RewriteResponse === true,\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'LoadOnInit', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.LoadOnInit === true,\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'OnSaving', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.OnSaving === true,\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'OnSaved', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.OnSaved === true,\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(that, 'Download', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.Download === true,\r\n\t\t});\r\n\t}\r\n}\r\n\r\nfunction DataModelPropertyDescriptor(options) {\r\n\tif (typeof options !== 'object' || options === null) {\r\n\t\tthrow propertyError('`options` argument is not passed or it is empty');\r\n\t}\r\n\tvar that = this;\r\n\r\n\tObject.defineProperty(that, 'Name', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.Name,\r\n\t});\r\n\r\n\tObject.defineProperty(that, 'Title', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.Title,\r\n\t});\r\n\r\n\tObject.defineProperty(that, 'ReferenceName', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.ReferenceName,\r\n\t});\r\n\tObject.defineProperty(that, 'SystemType', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.SystemType,\r\n\t});\r\n\tObject.defineProperty(that, 'Type', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.Type,\r\n\t});\r\n\tObject.defineProperty(that, 'IsArray', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.IsArray || options.isArray || false,\r\n\t});\r\n\tObject.defineProperty(that, 'Value', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.Value || '',\r\n\t});\r\n\tObject.defineProperty(that, 'Expression', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.Expression || '',\r\n\t});\r\n\tObject.defineProperty(that, 'Parameters', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.Parameters || [],\r\n\t});\r\n\tObject.defineProperty(that, 'Direction', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.Direction || DataModelPropertyDirection.NONE,\r\n\t});\r\n\tObject.defineProperty(that, 'ParentPath', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.ParentPath || '',\r\n\t});\r\n\tObject.defineProperty(that, 'ParentItem', {\r\n\t\twritable: true,\r\n\t\tenumerable: false, // not to store in server DB\r\n\t\tvalue: options.ParentItem,\r\n\t});\r\n\tObject.defineProperty(that, 'Path', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.Path || '',\r\n\t});\r\n\r\n\tObject.defineProperty(that, 'EditMode', {\r\n\t\twritable: true,\r\n\t\tenumerable: true,\r\n\t\tvalue: options.EditMode || 1,\r\n\t});\r\n}\r\n\r\nfunction mxDataModelError(msg) {\r\n\treturn new Error('Data Model Exception: ' + msg);\r\n}\r\n\r\nfunction mxDataModelErrorOnInit(type, msg) {\r\n\treturn mxDataModelError('can not initialize `' + type + '` - ' + msg);\r\n}\r\n\r\nvar modelError = mxDataModelErrorOnInit.bind(null, 'DataModelDescriptor');\r\nvar sourceError = mxDataModelErrorOnInit.bind(null, 'DataModelSourceDescriptor');\r\nvar propertyError = mxDataModelErrorOnInit.bind(null, 'DataModelPropertyDescriptor');\r\n\r\nexport { DataModelDescriptor, DataModelSourceDescriptor, DataModelPropertyDescriptor };\r\n","'use strict';\r\n\r\nimport { DataModel, DataModelSource, DataModelProperty } from './data-model';\r\nimport { DataModelArray, DataModelMultiFragmentArray, DataModelObject, Relation, RelationCardinality, RelationsConfig } from './data-model-base-objects';\r\nimport { DataModelPropertyDirection, DataModelSourceDirection, DataModelTypes } from './enumerations';\r\n\r\nimport { DataModelCalculatedProperty, DataModelCalculatedPropertiesInfo, DataModelSystemProperty } from './data-model-calculated-property';\r\nimport { DataModelDescriptor, DataModelPropertyDescriptor, DataModelSourceDescriptor } from './data-model-descriptor';\r\nimport DataModelProfiler from './data-model-profiler';\r\nimport DataModelHelper from './data-model-helper';\r\nimport ExtendDeep from './extend-deep';\r\n\r\nexport const exports = {\r\n\tDataModel,\r\n\tDataModelSource,\r\n\tDataModelProperty,\r\n\tDataModelArray,\r\n\tDataModelObject,\r\n\tDataModelMultiFragmentArray,\r\n\tRelationsConfig,\r\n\tRelation,\r\n\tRelationCardinality,\r\n\tDataModelPropertyDirection,\r\n\tDataModelSourceDirection,\r\n\tDataModelTypes,\r\n\tDataModelCalculatedProperty,\r\n\tDataModelCalculatedPropertiesInfo,\r\n\tDataModelSystemProperty,\r\n\tDataModelDescriptor,\r\n\tDataModelSourceDescriptor,\r\n\tDataModelPropertyDescriptor,\r\n\tDataModelProfiler,\r\n\tDataModelHelper,\r\n\tExtendDeep,\r\n};\r\n\r\nwindow.mx = window.mx || {};\r\nwindow.mx.SolutionBuilderAgent = window.mx.SolutionBuilderAgent || {};\r\nObject.keys(exports).forEach((key) => (window.mx.SolutionBuilderAgent[key] = exports[key]));\r\n","'use strict';\r\n\r\nexport default function extendDeep(dst) {\r\n\tangular.forEach(arguments, function (obj) {\r\n\t\tif (!!obj && obj !== dst) {\r\n\t\t\tangular.forEach(dst, function (value, key) {\r\n\t\t\t\tif (dst[key] && typeof dst[key] === 'object' && !Array.isArray(dst[key]) && !(dst[key] instanceof mx.SolutionBuilderAgent.Relation)) {\r\n\t\t\t\t\textendDeep(dst[key], obj[key]);\r\n\t\t\t\t} else if (dst[key] instanceof mx.SolutionBuilderAgent.Relation) {\r\n\t\t\t\t\tdst[key].addedRelations = obj[key].AddedRelations;\r\n\t\t\t\t\tdst[key].removedRelations = obj[key].RemovedRelations;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdst[key] = obj[key];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\treturn dst;\r\n}\r\n","'use strict';\r\n\r\n/**\r\n * @ngdoc type\r\n * @name mx.SolutionBuilderAgent.SearchQueryCondition\r\n * @module mx.SolutionBuilderAgent\r\n *\r\n * @description\r\n * An object containing search query condition information (Query condition model)\r\n * Constructor accepts conditionOptions as param like:\r\n * ```javascript\r\n var conditionOptions = {\r\n\tProperty: 'fieldName',\r\n\tValue: 'test',\r\n\tOperator: mx.sb.Agent.DataQuery.FilterOperatorsFactory.operators.Equals.value\r\n };\r\n\r\n var condition = new SearchQueryCondition(conditionOptions);\r\n * ```\r\n * @property {string} Property - Gets or sets condition property name. Default: ''\r\n * @property {string} Value - Gets or sets condition value. Default: ''\r\n * @property {int} Operator - Gets or sets condition operator.
Default: mx.sb.Agent.DataQuery.FilterOperatorsFactory.operators.Equals.value (1)\r\n * @property {string} OperatorTitle - Gets condition operator title. Title - is how operator displayed in pseudo-SQL query view\r\n * @property {string} OperatorLabel - Gets condition operator label. Label - is how operator displayed in query builder\r\n */\r\nangular.module('mx.SolutionBuilderAgent').factory('mx.SolutionBuilderAgent.SearchQueryCondition', searchQueryConditionFactory);\r\nsearchQueryConditionFactory.$inject = ['mx.sb.Agent.DataQuery.FilterOperatorsFactory', 'mx.utils'];\r\nexport default function searchQueryConditionFactory(filterOperatorsFactory, utils) {\r\n\tclass MxSearchQueryCondition {\r\n\t\tconstructor(conditionOptions) {\r\n\t\t\tconditionOptions = conditionOptions || {};\r\n\r\n\t\t\tObject.defineProperty(this, 'id', {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\twritable: true,\r\n\t\t\t\tvalue: conditionOptions.Id || utils.guid(),\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'property', {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\twritable: true,\r\n\t\t\t\tvalue: conditionOptions.Property || '',\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'value', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: conditionOptions.Value || [],\r\n\t\t\t});\r\n\t\t\tObject.defineProperty(this, 'type', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: conditionOptions.Type || '',\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'operator', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: Number(conditionOptions.Operator || filterOperatorsFactory.operators.Equals.value),\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'operatorTitle', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn filterOperatorsFactory.getOperatorByValue(this.operator).name;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'operatorLabel', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn filterOperatorsFactory.getOperatorByValue(this.operator).label;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'operatorTechnicalName', {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn filterOperatorsFactory.getOperatorByValue(this.operator).technicalName;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, '__valid', {\r\n\t\t\t\tvalue: false,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\twritable: true,\r\n\t\t\t});\r\n\t\t\tObject.defineProperty(this, '__property', {\r\n\t\t\t\tvalue: null,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\twritable: true,\r\n\t\t\t});\r\n\t\t\tObject.defineProperty(this, '__enumeration', {\r\n\t\t\t\tvalue: null,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\twritable: true,\r\n\t\t\t});\r\n\t\t\tObject.defineProperty(this, '__expanded', {\r\n\t\t\t\tvalue: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\twritable: true,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @ngdoc method\r\n\t\t * @name SearchQueryCondition#toSqlView\r\n\t\t *\r\n\t\t * @description\r\n\t\t * Extracts pseudo-SQL expression of condition\r\n\t\t *\r\n\t\t * @return {string} Condition pseudo-SQL presentation\r\n\t\t */\r\n\t\ttoSqlView() {\r\n\t\t\treturn this.type === 'Expression' ? this.value : '[' + this.property + '] ' + this.operatorTitle + ' \"' + this.value;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @ngdoc method\r\n\t\t * @name SearchQueryCondition#toJSON\r\n\t\t *\r\n\t\t * @description\r\n\t\t * Returns JSON serialised search query condition prepared for server side\r\n\t\t *\r\n\t\t * @return {object} returns an object that represents search query condition\r\n\t\t */\r\n\t\ttoJSON() {\r\n\t\t\tvar result = {\r\n\t\t\t\tProperty: this.property,\r\n\t\t\t\tOperator: this.operator,\r\n\t\t\t\tValue: Array.isArray(this.value) ? this.value : [this.value],\r\n\t\t\t};\r\n\r\n\t\t\tif (this.type === 'Expression') {\r\n\t\t\t\tresult.IsExpression = true;\r\n\t\t\t\tresult.Type = 'Expression';\r\n\t\t\t\tresult.Title = 'Expression';\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\t}\r\n\r\n\treturn MxSearchQueryCondition;\r\n}\r\n","import { GroupType } from '../enumerations';\r\n\r\n/**\r\n * @ngdoc type\r\n * @name mx.SolutionBuilderAgent.SearchQueryGroup\r\n * @module mx.shell\r\n *\r\n * @description\r\n * An object containing search query information (Search query model)\r\n * Constructor accepts groupOptions as param like:\r\n * ```javascript\r\n var groupOptions = {\r\n\tLogicalOperator: mx.SolutionBuilderAgent.SearchQueryLogicalOperator.OR\r\n };\r\n\r\n var group = new mx.SolutionBuilderAgent.SearchQueryGroup(groupOptions);\r\n * ```\r\n * @property {SearchQueryGroup[]} Groups - Gets or sets array of nested query group models. Default: []\r\n * @property {SearchQueryCondition[]} Conditions - Gets or sets group nested {@ref mx.SolutionBuilderAgent.SearchQueryCondition condition models}. Default: []\r\n * @property {SearchQueryLogicalOperator | int} LogicalOperator - Gets or sets group logical operator. Default: mx.SolutionBuilderAgent.SearchQueryLogicalOperator.AND (1)\r\n * @property {string} LogicalOperatorTitle - Gets group logical operator title\r\n */\r\nangular.module('mx.SolutionBuilderAgent').factory('mx.SolutionBuilderAgent.SearchQueryGroup', searchQueryGroupFactory);\r\nsearchQueryGroupFactory.$inject = ['mx.sb.Agent.DataQuery.FilterOperatorsFactory', 'mx.utils', 'mx.SolutionBuilderAgent.SearchQueryCondition'];\r\nexport default function searchQueryGroupFactory(filterOperatorsFactory, utils, SearchQueryCondition) {\r\n\tclass SearchQueryGroup {\r\n\t\tconstructor(groupOptions) {\r\n\t\t\tgroupOptions = groupOptions || {};\r\n\r\n\t\t\tthis.type = GroupType.Basic;\r\n\t\t\tconst groups = groupOptions.Groups ? groupOptions.Groups.map((g) => new SearchQueryGroup(g)) : [];\r\n\t\t\tconst conditions = groupOptions.Conditions ? groupOptions.Conditions.map((c) => new SearchQueryCondition(c)) : [];\r\n\r\n\t\t\tObject.defineProperty(this, 'id', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: groupOptions.Id || utils.guid(),\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'groups', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: groups,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'conditions', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: conditions,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'logicalOperator', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: Number(groupOptions.LogicalOperator || mx.SolutionBuilderAgent.SearchQueryLogicalOperator.AND),\r\n\t\t\t});\r\n\r\n\t\t\t// ToDo localize titles\r\n\t\t\tObject.defineProperty(this, 'logicalOperatorTitle', {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\tif (this.logicalOperator === mx.SolutionBuilderAgent.SearchQueryLogicalOperator.AND) {\r\n\t\t\t\t\t\treturn 'AND';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.logicalOperator === mx.SolutionBuilderAgent.SearchQueryLogicalOperator.OR) {\r\n\t\t\t\t\t\treturn 'OR';\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn '';\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @ngdoc method\r\n\t\t * @name SearchQueryGroup#addGroup\r\n\t\t *\r\n\t\t * @description\r\n\t\t * Adds new group as a child group of a current group.
\r\n\t\t * If group already exists no actions performed.\r\n\t\t *\r\n\t\t * @param {SearchQueryGroup} group - Child group model\r\n\t\t * @param {GroupType=Basic} type - Group type\r\n\t\t * @return {boolean} True if child group was added.
False if child group was not added as it already existed as a child\r\n\t\t */\r\n\t\taddGroup(group, type = GroupType.Basic) {\r\n\t\t\tif (!group) {\r\n\t\t\t\tthrow new Error('SearchQueryGroup: addGroup group is not provided');\r\n\t\t\t}\r\n\r\n\t\t\tif (!(group instanceof SearchQueryGroup)) {\r\n\t\t\t\tthrow new Error('SearchQueryGroup: parameter group has invalid type');\r\n\t\t\t}\r\n\r\n\t\t\tif (typeof type !== 'string') {\r\n\t\t\t\tthrow new Error('Wrong group type');\r\n\t\t\t}\r\n\r\n\t\t\tif (this.groups.indexOf(group) !== -1) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (type !== GroupType.Basic) {\r\n\t\t\t\tif (this.getGroup(type)) {\r\n\t\t\t\t\tthrow new Error(`Group with type=${type} already exists`);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tgroup.type = type;\r\n\t\t\tthis.groups.push(group);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tgetGroup(type) {\r\n\t\t\treturn type ? this.groups.find((group) => group.type === type) : null;\r\n\t\t}\r\n\r\n\t\tsetGroup(group, type) {\r\n\t\t\tconst previousGroup = this.getGroup(type);\r\n\t\t\tif (previousGroup) {\r\n\t\t\t\tthis.removeGroup(previousGroup);\r\n\t\t\t}\r\n\r\n\t\t\tthis.addGroup(group, type);\r\n\t\t\treturn group;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @ngdoc method\r\n\t\t * @name SearchQueryGroup#removeGroup\r\n\t\t *\r\n\t\t * @description\r\n\t\t * Removes group from current group's children.
\r\n\t\t * If specified child group does not exist - no actions performed.\r\n\t\t *\r\n\t\t * @param {SearchQueryGroup} group - Child group model\r\n\t\t * @return {boolean} True if child group was removed.
False if child group was not removed as it was not found among child groups\r\n\t\t */\r\n\t\tremoveGroup(group) {\r\n\t\t\tif (!group) {\r\n\t\t\t\tthrow new Error('SearchQueryGroup: removeGroup group is not provided');\r\n\t\t\t}\r\n\t\t\tconst index = this.groups.indexOf(group);\r\n\r\n\t\t\tif (index === -1) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tthis.groups.splice(index, 1);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @ngdoc method\r\n\t\t * @name SearchQueryGroup#addCondition\r\n\t\t *\r\n\t\t * @description\r\n\t\t * Adds new condition to current group.
\r\n\t\t * If condition exists within current group no actions performed.\r\n\t\t *\r\n\t\t * @param {SearchQueryCondition} condition - {@ref mx.SolutionBuilderAgent.SearchQueryCondition Search query condition model}\r\n\t\t * @return {boolean} True if condition was added.
False if condition was not added as it already exists in group\r\n\t\t */\r\n\t\taddCondition(condition) {\r\n\t\t\tif (!condition) {\r\n\t\t\t\tthrow new Error('SearchQueryGroup: addCondition condition is not provided');\r\n\t\t\t}\r\n\t\t\tif (this.conditions.indexOf(condition) !== -1) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tthis.conditions.push(condition);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @ngdoc method\r\n\t\t * @name SearchQueryGroup#removeCondition\r\n\t\t *\r\n\t\t * @description\r\n\t\t * Removes condition from current group.
\r\n\t\t * If condition does not exist within current group no actions performed.\r\n\t\t *\r\n\t\t * @param {guid} id - Search query condition id\r\n\t\t * @return {boolean} True if condition was removed.
False if condition was not removed as it was not in group\r\n\t\t */\r\n\t\tremoveCondition(id) {\r\n\t\t\tif (!id) {\r\n\t\t\t\tthrow new Error('SearchQueryGroup: removeCondition - id is not provided');\r\n\t\t\t}\r\n\t\t\t_.remove(this.conditions, (c) => c.id === id);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @ngdoc method\r\n\t\t * @name SearchQueryGroup#toSqlView\r\n\t\t *\r\n\t\t * @description\r\n\t\t * Converts own conditions and recursive nested groups conditions to pseudo-SQL string\r\n\t\t *\r\n\t\t * @param {int} shift - Indentation of a group block (used for building nested groups queries)\r\n\t\t * @return {string} Group pseudo-SQL presentation\r\n\t\t */\r\n\t\ttoSqlView(shift) {\r\n\t\t\tconst tab = ' ';\r\n\t\t\tconst lineBreak = '\\r\\n';\r\n\r\n\t\t\tshift = shift || 1;\r\n\r\n\t\t\tconst tabSpace = tab.repeat(shift);\r\n\r\n\t\t\tlet str = `${tabSpace}(${lineBreak}`;\r\n\r\n\t\t\tlet i = 0;\r\n\t\t\tthis.conditions.forEach((condition) => {\r\n\t\t\t\tif (i > 0) {\r\n\t\t\t\t\tstr += tabSpace + tab + tab + this.logicalOperatorTitle + ' ' + lineBreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstr += tabSpace + tab + condition.toSqlView() + '\"' + lineBreak;\r\n\t\t\t\ti++;\r\n\t\t\t});\r\n\r\n\t\t\tthis.groups.forEach((group) => {\r\n\t\t\t\tstr += tabSpace + tab + tab + this.LogicalOperatorTitle + ' ' + lineBreak;\r\n\t\t\t\tstr += group.toSqlView(shift + 1) + lineBreak;\r\n\t\t\t});\r\n\r\n\t\t\tstr += `${tabSpace})`;\r\n\r\n\t\t\treturn str;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @ngdoc method\r\n\t\t * @name SearchQueryCondition#toJSON\r\n\t\t *\r\n\t\t * @description\r\n\t\t * Returns JSON serialised search query condition prepared for server side\r\n\t\t *\r\n\t\t * @return {object} return object which represents search query condition\r\n\t\t */\r\n\t\ttoJSON() {\r\n\t\t\treturn {\r\n\t\t\t\tGroups: this.groups.map((g) => g.toJSON()),\r\n\t\t\t\tConditions: this.conditions.map((c) => c.toJSON()),\r\n\t\t\t\tLogicalOperator: this.logicalOperator,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @ngdoc method\r\n\t\t * @name SearchQueryCondition#clone\r\n\t\t *\r\n\t\t * @description\r\n\t\t * Makes clone of the group\r\n\t\t *\r\n\t\t * @return {SearchQueryGroup}\r\n\t\t */\r\n\t\tclone() {\r\n\t\t\tconst cloneGroup = new SearchQueryGroup();\r\n\r\n\t\t\tcloneGroup.logicalOperator = this.logicalOperator;\r\n\t\t\tcloneGroup.groups = this.groups.slice();\r\n\t\t\tcloneGroup.conditions = this.conditions.slice();\r\n\r\n\t\t\treturn cloneGroup;\r\n\t\t}\r\n\t}\r\n\r\n\treturn SearchQueryGroup;\r\n}\r\n","/**\r\n * @ngdoc type\r\n * @name mx.SolutionBuilderAgent.SearchQuery\r\n * @module mx.SolutionBuilderAgent\r\n *\r\n * @description\r\n * An object containing search query information (Search query model)\r\n * Constructor accepts options as params like:\r\n * ```javascript\r\n var options = {\r\n\tId: '4234511B-61D8-43A5-BC2F-2918F68ADD40',\r\n\tTitle: 'some title',\r\n\tDescription: 'some description',\r\n\tShowInNavigation: true,\r\n\tPublic: true,\r\n\tSystem: false,\r\n\tPosition: 1\r\n };\r\n\r\n var searchQuery = new SearchQuery(options);\r\n * ```\r\n * @property {string} id - Gets or sets search query id. Default: ''\r\n * @property {string} objectId - Gets or sets an id of an object that contains this search query. Default: ''\r\n * @property {string} parent - Gets or sets parent query id. Default: ''\r\n * @property {string} title - Gets or sets search query display name. Default: ''\r\n * @property {string} description - Gets or sets search query description. Default: ''\r\n * @property {bool} showInNavigation - Gets or sets whether search query should be displayed as a navigation item in navigation panel. Default: false\r\n * @property {bool} considerParentFilters - Gets or sets whether search query should include ancestors filter conditions. Default: false\r\n * @property {bool} public - Gets or sets if search query may be displayed to user\r\n * @property {bool} system - Gets or sets if search query is delivered \"out of the box\"\r\n * @property {int} position - Gets or sets search query display position. Default: 0\r\n * @property {mx.SolutionBuilderAgent.SearchQueryGroup} group - Gets or sets root {@ref mx.SolutionBuilderAgent.SearchQueryGroup group}. Default: null\r\n * @property {string} queryFilter - Gets serialized root {@ref mx.SolutionBuilderAgent.SearchQueryGroup group}\r\n */\r\nangular.module('mx.SolutionBuilderAgent').factory('mx.SolutionBuilderAgent.SearchQuery', searchQueryFactory);\r\nsearchQueryFactory.$inject = ['mx.SolutionBuilderAgent.SearchQueryGroup'];\r\nexport default function searchQueryFactory(SearchQueryGroup) {\r\n\tclass SearchQuery {\r\n\t\tconstructor(options) {\r\n\t\t\toptions = options || {};\r\n\t\t\tif (!options.Id) {\r\n\t\t\t\toptions.CanEdit = true;\r\n\t\t\t}\r\n\r\n\t\t\tObject.defineProperty(this, 'id', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.Id || '',\r\n\t\t\t});\r\n\t\t\tObject.defineProperty(this, 'objectId', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.ObjectId || '',\r\n\t\t\t});\r\n\t\t\tObject.defineProperty(this, 'title', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.Title || '',\r\n\t\t\t});\r\n\t\t\tObject.defineProperty(this, 'titleNeutral', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.TitleNeutral || '',\r\n\t\t\t});\r\n\t\t\tObject.defineProperty(this, 'parent', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.Parent || '',\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'description', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.Description || '',\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'showInNavigation', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.ShowInNavigation === true,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'considerParentFilters', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.ConsiderParentFilters === true,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'navigationItem', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.NavigationItem || '',\r\n\t\t\t});\r\n\t\t\tObject.defineProperty(this, 'dataQuery', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.DataQuery || '',\r\n\t\t\t});\r\n\t\t\tObject.defineProperty(this, 'datasetView', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.DatasetView || '',\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'widgetId', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.Widget || '',\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'system', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.System === true,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'position', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.Position || 0,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'quickFilter', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.QuickFilter || 0,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'canEdit', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: options.CanEdit || 0,\r\n\t\t\t});\r\n\r\n\t\t\tconst groupOptions = options.QueryFilter ? JSON.parse(options.QueryFilter) : options.Group || null;\r\n\r\n\t\t\tObject.defineProperty(this, 'group', {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tvalue: new SearchQueryGroup(groupOptions),\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'queryFilter', {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn JSON.stringify(this.group);\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, '__visible', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\twritable: true,\r\n\t\t\t\tvalue: true,\r\n\t\t\t});\r\n\t\t\tObject.defineProperty(this, '__attached', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\twritable: true,\r\n\t\t\t\tvalue: false,\r\n\t\t\t});\r\n\t\t\tObject.defineProperty(this, 'parentsChain', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tvalue: options.ParentsChain || [],\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, 'fullTitle', {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tvalue: this.parentsChain.reduce(function (previousValue, item) {\r\n\t\t\t\t\treturn item.Title + ' / ' + previousValue;\r\n\t\t\t\t}, this.title),\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @ngdoc method\r\n\t\t * @name SearchQuery#toSqlView\r\n\t\t *\r\n\t\t * @description\r\n\t\t * Extracts pseudo-SQL expression represented by a search query\r\n\t\t *\r\n\t\t * @return {string} Search query pseudo-SQL presentation\r\n\t\t */\r\n\t\ttoSqlView() {\r\n\t\t\tlet queryString;\r\n\r\n\t\t\tif (this.group) {\r\n\t\t\t\tqueryString = this.group.toSqlView();\r\n\t\t\t}\r\n\r\n\t\t\treturn queryString || '[empty query]';\r\n\t\t}\r\n\t}\r\n\r\n\treturn SearchQuery;\r\n}\r\n","'use strict';\r\n\r\n/**\r\n * @ngdoc service\r\n * @name mx.SolutionBuilderAgent.ActionCoRuService\r\n * @module mx.SolutionBuilderAgent\r\n *\r\n * @description\r\n * A service provides methods for provide action commit for execute related CoRus.\r\n * Since IIS limits http header size we have 2 approach for handle actions.\r\n * When action contains les then `COMMIT_BY_HEADER_COUNT_LIMIT` objects we handle action commit using mx-action header.\r\n * otherwise we call separate web method.\r\n */\r\nActionCoRuService.$inject = ['$q', 'mx.SolutionBuilderAgent.Http'];\r\n\r\nexport default function ActionCoRuService($q, http) {\r\n\tconst COMMIT_BY_HEADER_COUNT_LIMIT = 100;\r\n\r\n\treturn {\r\n\t\tgetActionContextHeader: getActionContextHeader,\r\n\t\tcommit: commit,\r\n\t};\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.ActionCoRuService#getActionContextHeader\r\n\t *\r\n\t * @description\r\n\t * Prepares mx-action header when action objects did not exceed the `COMMIT_BY_HEADER_COUNT_LIMIT`.\r\n\t * @param {Guid} actionId - action id.\r\n\t * @param {Guid[]} objectIds - array of object ids.\r\n\t */\r\n\tfunction getActionContextHeader(actionId, objectIds) {\r\n\t\tif (!actionId || !Array.isArray(objectIds) || !objectIds.length || objectIds.length > COMMIT_BY_HEADER_COUNT_LIMIT) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst headerParams = { 'mx-Action': JSON.stringify([actionId].concat(objectIds)) };\r\n\t\treturn { headers: headerParams };\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.ActionCoRuService#commit\r\n\t * @param {Guid} actionId - action id.\r\n\t * @param {Guid} cacheId cache id of checked objects.\r\n\t */\r\n\tasync function commit(actionId, cacheId) {\r\n\t\treturn actionId && cacheId && http.post(`api/actions/commit/${actionId}?cacheId=${cacheId}`);\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nexport default class ApiTokenService {\r\n\tstatic $inject = ['mx.SolutionBuilderAgent.Http', 'mx.SolutionBuilderAgent.DataService'];\r\n\r\n\tconstructor(httpService, dataService) {\r\n\t\tthis.httpService = httpService;\r\n\t\tthis.dataService = dataService;\r\n\t}\r\n\r\n\tasync generateAccessToken(apiTokenName = 'fe_token_service', httpHeaders = {}) {\r\n\t\tconst apiToken = await this._generateApiToken(apiTokenName);\r\n\t\tconst headers = Object.assign(\r\n\t\t\t{\r\n\t\t\t\tAuthorization: 'Bearer ' + apiToken,\r\n\t\t\t},\r\n\t\t\thttpHeaders\r\n\t\t);\r\n\t\tconst accessTokenRequest = await this.httpService.post(`api/sts/exchangeApiTokenToAccessToken`, {}, { headers });\r\n\t\tawait this._deleteApiToken(apiTokenName);\r\n\t\treturn accessTokenRequest.RawToken;\r\n\t}\r\n\r\n\tasync _generateApiToken(apiTokenName) {\r\n\t\tconst apiTokenResponse = await this.httpService.post(`api/apiToken/generateApiTokenForMe`, {\r\n\t\t\tName: apiTokenName,\r\n\t\t\tExpirationDays: 1,\r\n\t\t});\r\n\t\treturn apiTokenResponse.ApiToken;\r\n\t}\r\n\r\n\tasync _getApiTokenObjectId(apiTokenName) {\r\n\t\treturn (\r\n\t\t\tawait this.dataService.Fragments.getList('PLSTSApiTokenBase', {\r\n\t\t\t\tColumns: 'Name, Id',\r\n\t\t\t\tWhere: `Name = '${apiTokenName}'`,\r\n\t\t\t})\r\n\t\t)[0]?.Id;\r\n\t}\r\n\r\n\tasync _deleteApiToken(apiTokenName) {\r\n\t\tconst tokenObjectId = await this._getApiTokenObjectId(apiTokenName);\r\n\t\tawait this.dataService.Objects.delete('PLSTSApiTokenType', tokenObjectId);\r\n\t}\r\n}\r\n","'use strict';\r\n\r\n/**\r\n * @ngdoc service\r\n * @name mx.SolutionBuilderAgent.CacheService\r\n * @module mx.SolutionBuilderAgent\r\n *\r\n * @requires {@ref mx.SolutionBuilderAgent.Http mx.SolutionBuilderAgent.Http}\r\n *\r\n * @description\r\n * A service provides methods for managing caches.\r\n */\r\nCacheService.$inject = ['mx.SolutionBuilderAgent.Http'];\r\nexport default function CacheService(http) {\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.CacheService#resetServerCache\r\n\t *\r\n\t * @description\r\n\t * Resets cache on server.\r\n\t *\r\n\t * @param {object} options - Cache reset options. Contains a list of caches to reset.\r\n\t * E.g.\r\n\t * ```\r\n\t * {\r\n\t * enumeration: true,\r\n\t * navigation: true,\r\n\t * action: false,\r\n\t * widgets: ['809e2f3f-320a-e711-e882-60e327035d39', '809e2f3f-320a-e711-e882-60e327035d37']\r\n\t * }\r\n\t * ```\r\n\t * @returns {promise} resolved to void.\r\n\t */\r\n\tfunction resetServerCache(options) {\r\n\t\treturn http.post('api/DataObject/ResetCache', {\r\n\t\t\tResetNavigationCache: options.navigation === true,\r\n\t\t\tResetActionCache: options.action === true,\r\n\t\t\tResetEnumCache: options.enumeration === true,\r\n\t\t\tResetWidgetsCache: (typeof options.widgets === 'boolean' && options.widgets) || undefined,\r\n\t\t\tWidgetIds: (options.widgets && Array.isArray(options.widgets) && options.widgets) || [],\r\n\t\t});\r\n\t}\r\n\r\n\treturn {\r\n\t\tresetServerCache: resetServerCache,\r\n\t};\r\n}\r\n","'use strict';\r\n\r\nColumnDefinitionService.$inject = ['$q', 'mx.SolutionBuilderAgent.Http', 'mx.sb.Agent.DataQuery.DataQueryDefinition'];\r\nexport default function ColumnDefinitionService($q, http, DataQueryDefinition) {\r\n\tvar cache = { columns: {}, entityClassColumns: [] };\r\n\r\n\treturn {\r\n\t\tgetGridDefinitionById: getGridDefinitionById,\r\n\t\tgetGridDefinitionByName: getGridDefinitionByName,\r\n\t\tgetGridDefinitionByClassName: getGridDefinitionByClassName,\r\n\t\tinitDataQuery: initDataQuery,\r\n\t\tremoveFromCache: removeFromCache,\r\n\t\tloadColumnsForClass: loadColumnsForClass,\r\n\t};\r\n\r\n\tfunction getGridDefinitionByName(name) {\r\n\t\treturn _getDefinition(null, name);\r\n\t}\r\n\r\n\tfunction getGridDefinitionByClassName(className) {\r\n\t\treturn _getDefinition(null, null, className);\r\n\t}\r\n\r\n\tfunction getGridDefinitionById(dataQueryId, widgetId) {\r\n\t\treturn _getDefinition(dataQueryId, null, null, widgetId);\r\n\t}\r\n\r\n\tfunction removeFromCache(dataQueryId) {\r\n\t\t_.forOwn(cache.columns, function (val, key) {\r\n\t\t\tif (val.Id === dataQueryId) {\r\n\t\t\t\tcache.columns[key] = null;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction _getDefinition(id, name, entityClass, widgetId) {\r\n\t\tvar params = {};\r\n\t\tvar cacheKey = null;\r\n\r\n\t\tif (widgetId) {\r\n\t\t\tparams.widgetId = widgetId;\r\n\t\t\tparams.id = id;\r\n\t\t\tcacheKey = 'widgetId_' + widgetId.toLowerCase() + '_' + 'id_' + id.toLowerCase();\r\n\t\t} else {\r\n\t\t\tif (id) {\r\n\t\t\t\tparams.id = id;\r\n\t\t\t\tcacheKey = 'id_' + id.toLowerCase();\r\n\t\t\t} else if (name) {\r\n\t\t\t\tparams.name = name;\r\n\t\t\t\tcacheKey = 'name_' + name.toLowerCase();\r\n\t\t\t} else if (entityClass) {\r\n\t\t\t\tparams.entityClass = entityClass;\r\n\t\t\t\tcacheKey = 'class_' + entityClass.toLowerCase();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar promise;\r\n\t\tif (!cache.columns[cacheKey]) {\r\n\t\t\tpromise = http.get('api/DataQuery/columns', params, {}, true).then(function (dataQueryDef) {\r\n\t\t\t\tif (dataQueryDef.IsDefault && dataQueryDef.SchemaClassName) {\r\n\t\t\t\t\tcache.columns['class_' + dataQueryDef.SchemaClassName.toLowerCase()] = dataQueryDef;\r\n\t\t\t\t}\r\n\t\t\t\tcache.columns['name_' + dataQueryDef.Name.toLowerCase()] = dataQueryDef;\r\n\t\t\t\tcache.columns['id_' + dataQueryDef.Id.toLowerCase()] = dataQueryDef;\r\n\r\n\t\t\t\tif (widgetId) {\r\n\t\t\t\t\tcache.columns['widgetId_' + widgetId.toLowerCase() + '_' + 'id_' + dataQueryDef.Id.toLowerCase()] = dataQueryDef;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn dataQueryDef;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tpromise = $q.when(cache.columns[cacheKey]);\r\n\t\t}\r\n\r\n\t\treturn promise.then(initDataQuery);\r\n\t}\r\n\r\n\tfunction initDataQuery(dataQueryDef) {\r\n\t\treturn new DataQueryDefinition(dataQueryDef);\r\n\t}\r\n\r\n\tfunction loadColumnsForClass(className) {\r\n\t\tif (!cache.entityClassColumns[className]) {\r\n\t\t\tcache.entityClassColumns[className] = http.get('api/DataQuery/LoadColumns', { SchemaClassName: className });\r\n\t\t}\r\n\r\n\t\treturn cache.entityClassColumns[className];\r\n\t}\r\n}\r\n","'use strict';\r\n\r\n/**\r\n * @ngdoc service\r\n * @name mx.SolutionBuilderAgent.ConcurrencyTrackingService\r\n * @module mx.SolutionBuilderAgent\r\n *\r\n * @requires Hub\r\n * @requires mx.shell.Config\r\n * @requires mx.shell.UserProfileService\r\n *\r\n * @description\r\n * The service that provides the possibility to subscribe and unsubscribe to the WebSocket based server notification channel.\r\n */\r\nConcurrencyTrackingService.$inject = [\r\n\t'$q',\r\n\t'Hub',\r\n\t'mx.shell.Config',\r\n\t'mx.shell.UserProfileService',\r\n\t'mx.shell.View',\r\n\t'mx.internationalization',\r\n\t'mx.SolutionBuilderAgent.Http',\r\n\t'mx.shell.SidePanelService',\r\n\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n];\r\nexport default function ConcurrencyTrackingService($q, Hub, config, userProfileService, MxView, i18n, http, sidePanelService, contentWidgetService) {\r\n\tvar getConnectionInfo = function (callbacks) {\r\n\t\treturn {\r\n\t\t\t//transport: 'longPolling',\r\n\t\t\trootPath: (config.get('restHosts').solutionBuilder || config.get('restHosts').default) + '/signalR',\r\n\t\t\tuseSharedConnection: false,\r\n\t\t\tlisteners: {\r\n\t\t\t\tNotifyObjectChanged: callbacks.change || function () {},\r\n\t\t\t\tNotifyObjectDeleted: callbacks.delete || function () {},\r\n\t\t\t\tNotifySubscriptionAdded: callbacks.subscribe || function () {},\r\n\t\t\t\tNotifySubscriptionRemoved: callbacks.unsubscribe || function () {},\r\n\t\t\t\tNotifySubscriptionsExist: callbacks.exist || function () {},\r\n\t\t\t},\r\n\t\t\tmethods: ['Subscribe', 'Unsubscribe'],\r\n\t\t\tlogging: false,\r\n\t\t\tstateChanged:\r\n\t\t\t\tcallbacks.stateChanged ||\r\n\t\t\t\tfunction (state) {\r\n\t\t\t\t\tif (mx.__mx$concurrencyDebugOn) {\r\n\t\t\t\t\t\tswitch (state.newState) {\r\n\t\t\t\t\t\t\tcase $.signalR.connectionState.connecting:\r\n\t\t\t\t\t\t\t\tmx.console.log('connecting');\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase $.signalR.connectionState.connected:\r\n\t\t\t\t\t\t\t\tmx.console.log('connected');\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase $.signalR.connectionState.reconnecting:\r\n\t\t\t\t\t\t\t\tmx.console.log('reconnecting');\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase $.signalR.connectionState.disconnected:\r\n\t\t\t\t\t\t\t\tmx.console.log('disconnected');\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t};\r\n\t};\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.ConcurrencyTrackingService#subscribe\r\n\t *\r\n\t * @description\r\n\t * Subscribes to the notification channel.\r\n\t * The callbacks object should contain callback functions:\r\n\t * - change: the callback to be called when the target object is changed externally.\r\n\t * - subscribe: the callback to be called when another user subscribes to the notification channel.\r\n\t * - unsubscribe: the callback to be called when another user unsubscribes to the notification channel.\r\n\t * - exist: the callback to be called when other users are already subscribed to the notification channel.\r\n\t *\r\n\t * @param {object} objectId - The object identifier used to subscribe to notification channel.\r\n\t * @param {object} callbacks - The object containing callbacks.\r\n\t * @returns {function} - UnSubscribes and disconnects from the notification channel.\r\n\t */\r\n\tvar subscribe = function (objectId, callbacks) {\r\n\t\tvar trackingInfo = {};\r\n\t\tvar trackingPromise = userProfileService.get().then(function (userProfile) {\r\n\t\t\tvar connectionInfo = getConnectionInfo(callbacks);\r\n\t\t\ttrackingInfo.userId = userProfile.id;\r\n\t\t\ttrackingInfo.userName = userProfile.firstName ? userProfile.firstName + ' ' + userProfile.lastName : userProfile.lastName;\r\n\t\t\ttrackingInfo.objectId = objectId;\r\n\r\n\t\t\tvar errorHandler = function (error) {\r\n\t\t\t\ttrackingInfo.connected = false;\r\n\t\t\t\tif (callbacks.errorHandler) {\r\n\t\t\t\t\tcallbacks.errorHandler(error);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmx.console.error(error);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tconnectionInfo.errorHandler = errorHandler;\r\n\t\t\ttrackingInfo.hub = new Hub('ConcurrencyTrackingHub', connectionInfo);\r\n\r\n\t\t\treturn trackingInfo.hub.promise.then(\r\n\t\t\t\tfunction () {\r\n\t\t\t\t\treturn trackingInfo.hub.Subscribe(trackingInfo.objectId, trackingInfo.userId, trackingInfo.userName).then(function () {\r\n\t\t\t\t\t\ttrackingInfo.connected = true;\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\tfunction (error) {\r\n\t\t\t\t\terrorHandler(error);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\tvar unSubscribe = function () {\r\n\t\t\treturn trackingPromise.then(function () {\r\n\t\t\t\treturn trackingInfo.connected\r\n\t\t\t\t\t? trackingInfo.hub.Unsubscribe(trackingInfo.objectId, trackingInfo.userId, trackingInfo.userName).then(function () {\r\n\t\t\t\t\t\t\ttrackingInfo.connected = false;\r\n\t\t\t\t\t\t\ttrackingInfo.hub.disconnect();\r\n\t\t\t\t\t\t\treturn trackingInfo.connected;\r\n\t\t\t\t\t })\r\n\t\t\t\t\t: trackingInfo.connected;\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tunSubscribe.trackingInfo = trackingInfo;\r\n\t\treturn unSubscribe;\r\n\t};\r\n\r\n\tfunction getDataChanges(entityType, oldData, newData, fullCheck) {\r\n\t\tvar mergeInfo = {\r\n\t\t\toldData: oldData,\r\n\t\t\tnewData: newData,\r\n\t\t};\r\n\t\treturn http.post('api/WidgetDialog/getDataChanges?typeName=' + entityType + '&full=' + fullCheck, mergeInfo);\r\n\t}\r\n\r\n\tfunction applyDataChanges(widgetId, objectId, mergeEntities) {\r\n\t\tvar dataUri = 'api/WidgetDialog/ApplyDataChanges/' + widgetId + '/' + objectId;\r\n\t\treturn http.post(dataUri, mergeEntities);\r\n\t}\r\n\r\n\tfunction showObjectChangedNotification(userName, itemName, viewInfo) {\r\n\t\tuserName = userName || i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyConfirmDefaultUserName');\r\n\r\n\t\tvar promise = viewInfo.view.mergeDisabled ? $q.when([]) : getDataChanges(viewInfo.entityName, viewInfo.startEntityValue, viewInfo.finishEntityValue, !viewInfo.view.dirty);\r\n\r\n\t\treturn promise.then(function (mergeData) {\r\n\t\t\tif (!viewInfo.view.mergeDisabled && (!Array.isArray(mergeData) || mergeData.length === 0)) {\r\n\t\t\t\treturn { answer: 'no-changes' };\r\n\t\t\t}\r\n\t\t\tvar conflictMergeEntities = mergeData.filter(function (mergeEntity) {\r\n\t\t\t\treturn mergeEntity.IsConflict;\r\n\t\t\t});\r\n\r\n\t\t\tvar dialogConfig = getConfirmationDialogConfig(conflictMergeEntities.length > 0, itemName, userName, viewInfo.view.dirty, viewInfo.view.mergeDisabled);\r\n\r\n\t\t\treturn showMegeDialogs(dialogConfig, viewInfo, conflictMergeEntities, mergeData);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction showObjectDeletedNotification(userName, itemName, view) {\r\n\t\tuserName = userName || i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyConfirmDefaultUserName');\r\n\r\n\t\tvar dialogConfig = {\r\n\t\t\tid: 'ActionOnConcurrencyObjectDeleted',\r\n\t\t\ttitle: i18n.getFormatted('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyDeletedTitle', itemName),\r\n\t\t\tmessage: i18n.getFormatted('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyConfirmTextDeleted', itemName, userName),\r\n\t\t\tnotSaved: true,\r\n\t\t\tactions: [],\r\n\t\t};\r\n\r\n\t\tdialogConfig.actions.push({\r\n\t\t\tid: 'close',\r\n\t\t\ttitle: i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyConfirmClose'),\r\n\t\t});\r\n\r\n\t\tdialogConfig.actions.push({\r\n\t\t\tid: 'cancel',\r\n\t\t\ttitle: i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyConfirmDoNothing'),\r\n\t\t});\r\n\r\n\t\treturn sidePanelService.showConfirmationDialog(dialogConfig, view);\r\n\t}\r\n\r\n\tfunction showMegeDialogs(dialogConfig, viewInfo, conflictMergeEntities, mergeData) {\r\n\t\treturn sidePanelService\r\n\t\t\t.showConfirmationDialog(dialogConfig, viewInfo.view)\r\n\t\t\t.then(function (answer) {\r\n\t\t\t\tswitch (answer) {\r\n\t\t\t\t\tcase 'cancel':\r\n\t\t\t\t\t\treturn { answer: 'cancel' };\r\n\t\t\t\t\tcase 'reload':\r\n\t\t\t\t\t\treturn { answer: 'reload' };\r\n\t\t\t\t\tcase 'manual-merge':\r\n\t\t\t\t\t\treturn showManualMergeDialog(conflictMergeEntities, viewInfo.view);\r\n\t\t\t\t\tcase 'auto-merge':\r\n\t\t\t\t\tcase 'auto-merge-and-save':\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tanswer: 'merge',\r\n\t\t\t\t\t\t\tmergeEntities: mergeData,\r\n\t\t\t\t\t\t\tsave: answer === 'auto-merge-and-save',\r\n\t\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then(function (data) {\r\n\t\t\t\tif (data.answer === 'merge') {\r\n\t\t\t\t\treturn viewInfo.view.dirty\r\n\t\t\t\t\t\t? applyDataChanges(viewInfo.widgetId, viewInfo.objectId, mergeData).then(function (object) {\r\n\t\t\t\t\t\t\t\tdata.entity = object.Entity;\r\n\t\t\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t\t })\r\n\t\t\t\t\t\t: contentWidgetService.getDialogData(viewInfo.widgetId, viewInfo.objectId, viewInfo.view.context._archived).then(function (object) {\r\n\t\t\t\t\t\t\t\tdata.entity = object.entity;\r\n\t\t\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t\t });\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn data;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tfunction showManualMergeDialog(conflictMergeEntities, view) {\r\n\t\tvar def = $q.defer();\r\n\r\n\t\tvar mergeView = new MxView({\r\n\t\t\tid: 'view-concurrency-merge',\r\n\t\t\tlocals: {\r\n\t\t\t\tconflictMergeEntities: conflictMergeEntities,\r\n\t\t\t\tanswerPromise: def,\r\n\t\t\t},\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t\tcontroller: 'mx.SolutionBuilderAgent.ConcurrencyMergeController',\r\n\t\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/components/mx-concurrency-merge/mx-concurrency-merge.html',\r\n\t\t});\r\n\r\n\t\tsidePanelService.showPopupInTab(view, mergeView);\r\n\r\n\t\treturn def.promise.then(function (data) {\r\n\t\t\tsidePanelService.hidePopupInTab(view);\r\n\r\n\t\t\tswitch (data.answer) {\r\n\t\t\t\tcase 'cancel':\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tanswer: 'cancel',\r\n\t\t\t\t\t};\r\n\t\t\t\tcase 'merge':\r\n\t\t\t\tcase 'mergeAndSave':\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tanswer: 'merge',\r\n\t\t\t\t\t\tmergeEntities: data.mergeEntities,\r\n\t\t\t\t\t\tsave: data.answer === 'mergeAndSave',\r\n\t\t\t\t\t};\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getConfirmationDialogConfig(hasConflicts, itemName, userName, isDirty, mergeDisabled) {\r\n\t\tvar dialogConfig = {\r\n\t\t\tid: 'ActionOnConcurrencyObjectChanged',\r\n\t\t\ttitle: i18n.getFormatted('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyConfirmTitle', itemName),\r\n\t\t\tmessage: i18n.getFormatted('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyConfirmTextChanged', itemName, userName),\r\n\t\t\tnotSaved: true,\r\n\t\t\tactions: [],\r\n\t\t};\r\n\r\n\t\tif (!mergeDisabled) {\r\n\t\t\tif (hasConflicts) {\r\n\t\t\t\tdialogConfig.actions.push({\r\n\t\t\t\t\tid: 'manual-merge',\r\n\t\t\t\t\ttitle: i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyManualMerge'),\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tdialogConfig.actions.push({\r\n\t\t\t\t\tid: 'auto-merge',\r\n\t\t\t\t\ttitle: i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyAutoMerge'),\r\n\t\t\t\t});\r\n\t\t\t\tdialogConfig.actions.push({\r\n\t\t\t\t\tid: 'auto-merge-and-save',\r\n\t\t\t\t\ttitle: i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyAutoMergeAndSave'),\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isDirty || mergeDisabled) {\r\n\t\t\tdialogConfig.actions.push({\r\n\t\t\t\tid: 'reload',\r\n\t\t\t\ttitle: i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyConfirmCancelAndReload'),\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tdialogConfig.actions.push({\r\n\t\t\tid: 'cancel',\r\n\t\t\ttitle: i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyConfirmDoNothing'),\r\n\t\t});\r\n\r\n\t\treturn dialogConfig;\r\n\t}\r\n\r\n\tfunction isUpdateConflict(error) {\r\n\t\tif (error && error.data && error.data.ExceptionName) {\r\n\t\t\treturn error.data.ExceptionName.toLowerCase() === 'spsdataengineconcurrencyexception';\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfunction isDeleted(error) {\r\n\t\tif (error && error.data && error.data.ExceptionName) {\r\n\t\t\treturn error.data.ExceptionName.toLowerCase() === 'recordnotfoundexception';\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\treturn {\r\n\t\tapplyDataChanges: applyDataChanges,\r\n\t\tshowObjectChangedNotification: showObjectChangedNotification,\r\n\t\tshowObjectDeletedNotification: showObjectDeletedNotification,\r\n\t\tisUpdateConflict: isUpdateConflict,\r\n\t\tisDeleted: isDeleted,\r\n\t\tsubscribe: subscribe,\r\n\t};\r\n}\r\n","/**\r\n * @ngdoc service\r\n * @name mx.SolutionBuilderAgent.ContentWidgetService\r\n * @module mx.SolutionBuilderAgent\r\n *\r\n * @description\r\n * A service provides methods for retrieving data sources\r\n */\r\nContentWidgetService.$inject = [\r\n\t'$q',\r\n\t'$window',\r\n\t'mx.sb.Ownership.OwnershipService',\r\n\t'mx.SolutionBuilderAgent.Http',\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.ObjectMapper',\r\n\t'mx.shell.Config',\r\n\t'mx.internationalization',\r\n\t'mx.shell.NotificationService',\r\n\t'mx.shell.AppsService',\r\n\t'mx.shell.NavigationItemsLoaderService',\r\n\t'mx.SolutionBuilderAgent.DataModelService',\r\n\t'mx.SolutionBuilderAgent.designerOpener',\r\n];\r\n\r\nexport default function ContentWidgetService(\r\n\t$q,\r\n\t$window,\r\n\townershipService,\r\n\thttp,\r\n\teventService,\r\n\tobjectMapper,\r\n\tmxConfig,\r\n\ti18n,\r\n\tnotificationService,\r\n\tappsService,\r\n\tnavigationItemsLoaderService,\r\n\tdataModelService,\r\n\tdesignerOpener\r\n) {\r\n\tlet syncWidgetId;\r\n\tconst cache = { data: {} };\r\n\r\n\twindow.addEventListener(\r\n\t\t'storage',\r\n\t\tfunction (event) {\r\n\t\t\tif (event.key === 'WidgetToRefresh' && event.newValue === syncWidgetId) {\r\n\t\t\t\teventService.dispatchEvent('mx.SolutionBuilderAgent.SynchronizeWidget');\r\n\t\t\t}\r\n\t\t},\r\n\t\tfalse\r\n\t);\r\n\r\n\treturn {\r\n\t\tgetAllAppViewsUncached: getAllAppViewsUncached,\r\n\t\tgetViews: getViews,\r\n\t\tgetNewDialogData: getNewDialogData,\r\n\t\tgetNewFragment: getNewFragment,\r\n\t\tgetDialogData: getDialogData,\r\n\t\tupdateDialogData: updateDialogData,\r\n\t\tget: get,\r\n\t\tupdate: update,\r\n\t\tgetHtml: getHtml,\r\n\t\tpublishLayout: publishLayout,\r\n\t\twidgetSync: widgetSync,\r\n\t\tsetViewUrl: setViewUrl,\r\n\t\textendCorrespondingUrl: extendCorrespondingUrl,\r\n\t\tgetCorrespondingUrl: getCorrespondingUrl,\r\n\t\trevert: revertTemplate,\r\n\t\tgetAllViews: getAllViews,\r\n\t\tgetWidgetInfoById: getWidgetInfoById,\r\n\t\tgetDefaultViewType: getDefaultViewType,\r\n\t\tsetDefaultViewType: setDefaultViewType,\r\n\t\topenConfigurePreview: openConfigurePreview,\r\n\t\tcustomizeViewInDesigner: customizeViewInDesigner,\r\n\t\tisCustomizable: isCustomizable,\r\n\t\tgetWidgetIdForControl: getWidgetIdForControl,\r\n\t\tgetWidgetIdFromView: getWidgetIdFromView,\r\n\t\tcheckViewUnavailableReasons: checkViewUnavailableReasons,\r\n\t\tgetWidgetType: getWidgetType,\r\n\t};\r\n\r\n\tfunction getWidgetIdFromView(view) {\r\n\t\tif (!view) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tconst widgetType = getWidgetType(view);\r\n\t\tswitch (widgetType) {\r\n\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetType.Wizard:\r\n\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetType.Dialog:\r\n\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetType.ObjectDetails:\r\n\t\t\t\treturn view.locals && view.locals.widgetId;\r\n\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetType.LandingPage:\r\n\t\t\t\treturn view.widgetId;\r\n\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetType.List:\r\n\t\t\t\treturn view.id;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getConfigForView(view) {\r\n\t\tlet widgetType = getWidgetType(view);\r\n\t\tconst openDialogIfNoPreview = mxConfig.get('openDialogIfNoPreview');\r\n\t\tconst key = 'customizationPromise_' + widgetType + (openDialogIfNoPreview && view.type ? '_' + view.type : '');\r\n\r\n\t\tif (cache.data[key]) {\r\n\t\t\treturn cache.data[key];\r\n\t\t}\r\n\r\n\t\tcache.data[key] = $q.all([navigationItemsLoaderService.load(), openDialogIfNoPreview ? _countPreviews(view.type) : $q.when(undefined)]).then(function (args) {\r\n\t\t\tconst navigationItems = args[0];\r\n\t\t\tconst previewsAmount = args[1];\r\n\r\n\t\t\tif (!Array.isArray(navigationItems)) {\r\n\t\t\t\treturn $q.reject('navigation items is not loaded');\r\n\t\t\t}\r\n\r\n\t\t\tconst config = {\r\n\t\t\t\tapplicationId: 'f7e35986-46e1-e511-dd9b-74d02b9d869c', // Administration\r\n\t\t\t};\r\n\r\n\t\t\tif (openDialogIfNoPreview && widgetType === mx.SolutionBuilderAgent.ContentWidgetType.ObjectDetails && previewsAmount === 0) {\r\n\t\t\t\twidgetType = mx.SolutionBuilderAgent.ContentWidgetType.Dialog;\r\n\t\t\t}\r\n\r\n\t\t\tswitch (widgetType) {\r\n\t\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetType.Wizard:\r\n\t\t\t\t\tconfig.navigationId = '171eb056-4d68-e511-7882-bc5ff41a70c0';\r\n\t\t\t\t\tconfig.entityType = 'PDRContentWidgetTypeWizard';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetType.ObjectDetails:\r\n\t\t\t\t\tconfig.navigationId = '7004e6f8-98be-e511-82ba-00248cfe5192';\r\n\t\t\t\t\tconfig.entityType = 'PDRContentWidgetTypeObjectDetails';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetType.Dialog:\r\n\t\t\t\t\tconfig.navigationId = 'f637a7f8-6830-e511-14a9-00248cfe5192';\r\n\t\t\t\t\tconfig.entityType = 'PDRContentWidgetTypeDialog';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetType.LandingPage:\r\n\t\t\t\t\tconfig.navigationId = 'b63da3ae-9479-e611-db9b-847beb134555';\r\n\t\t\t\t\tconfig.entityType = 'PDRContentWidgetTypeLandingPage';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetType.List:\r\n\t\t\t\t\tconfig.navigationId = '476304e2-6830-e511-14a9-00248cfe5192';\r\n\t\t\t\t\tconfig.entityType = 'PDRContentWidgetTypeList';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetType.EmailTemplate:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tconst apps = appsService.getApplications();\r\n\t\t\tif (\r\n\t\t\t\t!apps.some(function (application) {\r\n\t\t\t\t\tif (application.value === config.applicationId) {\r\n\t\t\t\t\t\tconfig.applicationName = application.name;\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t) {\r\n\t\t\t\treturn $q.reject(mx.warnCatchMessage('User has no permissions for necessary application (or application is not found)'));\r\n\t\t\t}\r\n\r\n\t\t\treturn getViewsByType(config.entityType).then(function (views) {\r\n\t\t\t\tif (Array.isArray(views) && views.length > 0) {\r\n\t\t\t\t\tconst configViews = views\r\n\t\t\t\t\t\t.filter(function (viewOfType) {\r\n\t\t\t\t\t\t\treturn viewOfType.WidgetType === mx.SolutionBuilderAgent.ContentWidgetViewType.ObjectDetails && viewOfType.Enabled !== false;\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.sort(function (view1, view2) {\r\n\t\t\t\t\t\t\treturn (view2.Priority || 0) - (view1.Priority || 0);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (configViews.length === 0) {\r\n\t\t\t\t\t\treturn $q.reject('User has no permissions for necessary view (or view is not found)');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconfig.dialogId = configViews[0].Id;\r\n\r\n\t\t\t\t\treturn config;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t\treturn cache.data[key];\r\n\t}\r\n\r\n\tfunction _countPreviews(entityType) {\r\n\t\tif (!entityType) {\r\n\t\t\treturn $q.when(undefined);\r\n\t\t}\r\n\t\treturn getViews(entityType).then(function (views) {\r\n\t\t\treturn (views || []).filter(function (view) {\r\n\t\t\t\treturn view.WidgetType === mx.SolutionBuilderAgent.ContentWidgetType.ObjectDetails;\r\n\t\t\t}).length;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getWidgetType(view) {\r\n\t\tif (view.isWizard) {\r\n\t\t\tif (view.locals && view.locals.wizard) {\r\n\t\t\t\tif (view.locals.wizard.wizardMode !== mx.SolutionBuilderAgent.WizardMode.Default) {\r\n\t\t\t\t\treturn mx.SolutionBuilderAgent.ContentWidgetType.Dialog;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn mx.SolutionBuilderAgent.ContentWidgetType.Wizard;\r\n\t\t} else if (view.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.Preview) {\r\n\t\t\treturn mx.SolutionBuilderAgent.ContentWidgetType.ObjectDetails;\r\n\t\t} else if (view.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.Edit || view.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.New) {\r\n\t\t\treturn mx.SolutionBuilderAgent.ContentWidgetType.Dialog;\r\n\t\t} else if (view.isLandingPage) {\r\n\t\t\treturn mx.SolutionBuilderAgent.ContentWidgetType.LandingPage;\r\n\t\t} else if (view.isSearchPage) {\r\n\t\t\treturn mx.SolutionBuilderAgent.ContentWidgetType.List;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction isCustomizable(view) {\r\n\t\treturn getConfigForView(view).then(\r\n\t\t\tfunction () {\r\n\t\t\t\treturn true;\r\n\t\t\t},\r\n\t\t\tfunction () {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tasync function customizeViewInDesigner(view) {\r\n\t\tconst widgetId = getWidgetIdFromView(view);\r\n\t\tconst config = await getConfigForView(view);\r\n\t\tdesignerOpener.open(config.entityType, widgetId);\r\n\t}\r\n\r\n\tfunction openConfigurePreview(view) {\r\n\t\tlet configureUrl;\r\n\t\tconst basePath = mxConfig.settings.basePath;\r\n\r\n\t\treturn getConfigForView(view).then(\r\n\t\t\tfunction (config) {\r\n\t\t\t\tconst widgetId = getWidgetIdFromView(view);\r\n\t\t\t\tif (!widgetId) {\r\n\t\t\t\t\treturn $q.reject('WidgetID for view is not found');\r\n\t\t\t\t}\r\n\t\t\t\tconfigureUrl =\r\n\t\t\t\t\tbasePath +\r\n\t\t\t\t\t'app-' +\r\n\t\t\t\t\tconfig.applicationName +\r\n\t\t\t\t\t'/search-page/' +\r\n\t\t\t\t\tconfig.navigationId +\r\n\t\t\t\t\t'/nofilter/' +\r\n\t\t\t\t\t'?view-options=' +\r\n\t\t\t\t\tJSON.stringify({\r\n\t\t\t\t\t\tobjectId: widgetId,\r\n\t\t\t\t\t\tdialogId: config.dialogId,\r\n\t\t\t\t\t\tnavigationId: config.navigationId,\r\n\t\t\t\t\t\tarchived: '0',\r\n\t\t\t\t\t\ttype: config.entityType,\r\n\t\t\t\t\t\tviewType: 'preview',\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t$window.open(configureUrl, '_blank');\r\n\t\t\t},\r\n\t\t\tfunction (error) {\r\n\t\t\t\tnotificationService.error(i18n.get('solutionBuilderAgent.common.no-configure-URL-for-view'));\r\n\t\t\t\tmx.console.error(error);\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tfunction extendCorrespondingUrl(view, extraParams) {\r\n\t\tif (view.correspondingUrl) {\r\n\t\t\ttry {\r\n\t\t\t\tlet obj = JSON.parse(view.correspondingUrl.replace('view-options=', ''));\r\n\t\t\t\tif (typeof obj === 'object') {\r\n\t\t\t\t\tobj = angular.extend(obj, extraParams);\r\n\t\t\t\t\tview.correspondingUrl = 'view-options=' + JSON.stringify(obj);\r\n\t\t\t\t}\r\n\t\t\t} catch (err) {\r\n\t\t\t\tconsole.error('Error while trying to extend corresponding url: ' + err);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getCorrespondingUrl(view, dialogId, objectContext, fullScreen) {\r\n\t\tview = view || {};\r\n\t\tobjectContext = objectContext || {};\r\n\t\tconst isArchived = objectContext._archived ? '1' : '0';\r\n\t\tconst objectId = objectContext._id;\r\n\t\tconst type = objectContext._type;\r\n\r\n\t\tconst viewOptions = {\r\n\t\t\tobjectId: objectId,\r\n\t\t\tdialogId: dialogId,\r\n\t\t\tarchived: isArchived,\r\n\t\t\ttype: type,\r\n\t\t\tviewType: 'preview',\r\n\t\t\tfullScreen: fullScreen,\r\n\t\t};\r\n\r\n\t\tswitch (view.dialogType) {\r\n\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetDialogAction.Edit:\r\n\t\t\t\tviewOptions.viewType = 'edit';\r\n\t\t\t\tbreak;\r\n\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetDialogAction.New:\r\n\t\t\t\tviewOptions.viewType = 'new';\r\n\t\t\t\tdelete viewOptions.archived;\r\n\t\t\t\tdelete viewOptions.objectId;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif (view.isWizard && !view.ShowAsWizard) {\r\n\t\t\tangular.extend(viewOptions, {\r\n\t\t\t\tactionId: view.actionId,\r\n\t\t\t\tviewType: 'action',\r\n\t\t\t});\r\n\t\t\tdelete viewOptions.archived;\r\n\t\t\tdelete viewOptions.dialogId;\r\n\t\t}\r\n\r\n\t\treturn 'view-options=' + JSON.stringify(viewOptions);\r\n\t}\r\n\r\n\tfunction getPrintUrl(view, dialogId, objectContext) {\r\n\t\tif (view.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.Preview) {\r\n\t\t\tobjectContext = objectContext || {};\r\n\t\t\tconst isArchived = objectContext._archived ? '1' : '0';\r\n\t\t\tconst objectId = objectContext._id;\r\n\t\t\tconst type = objectContext._type;\r\n\r\n\t\t\tconst basePath = mxConfig.settings.basePath;\r\n\t\t\tconst urlParams = type + '/' + objectId + '/' + isArchived + '/' + (dialogId || '');\r\n\t\t\treturn basePath + 'print-details/1/' + urlParams;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setViewUrl(view, dialogId, objectContext) {\r\n\t\tview.correspondingUrl = getCorrespondingUrl(view, dialogId, objectContext);\r\n\t\tview.uiActionGroup.push('with-corresponding-url');\r\n\t\tview.printUrl = getPrintUrl(view, dialogId, objectContext);\r\n\t}\r\n\r\n\tfunction widgetSync(id) {\r\n\t\tsyncWidgetId = id;\r\n\t}\r\n\r\n\tfunction checkViewUnavailableReasons(objectTypeName, dialogType) {\r\n\t\treturn appsService.getCurrentApplication().then(function (currentApp) {\r\n\t\t\treturn checkViewsByAppAndType(currentApp.value, objectTypeName, dialogType).then(function (errorMessage) {\r\n\t\t\t\treturn errorMessage;\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getViewsByType(objectTypeName, forAllApps) {\r\n\t\treturn getAllViews(false, forAllApps).then(function (views) {\r\n\t\t\tconst filteredViews = views.filter(function (view) {\r\n\t\t\t\treturn view.Entity === objectTypeName;\r\n\t\t\t});\r\n\t\t\tif (filteredViews.length === 0) {\r\n\t\t\t\treturn $q.reject(mx.warnCatchMessage('User has no permissions for necessary application (or application is not found)'));\r\n\t\t\t}\r\n\t\t\treturn filteredViews;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getViewsByAppAndType(appCode, objectTypeName) {\r\n\t\treturn http.get('api/WidgetCommon/GetWidgets/' + objectTypeName + '/' + appCode);\r\n\t}\r\n\r\n\tfunction checkViewsByAppAndType(appCode, objectTypeName, dialogType) {\r\n\t\treturn http.get('api/WidgetCommon/CheckWidgets/' + objectTypeName + '/' + appCode + '/' + dialogType, {}, {}, true).then(function () {\r\n\t\t\treturn $q.reject('Dialog is not valid');\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getAllAppViewsUncached(typeName) {\r\n\t\tconst appCode = 'all';\r\n\r\n\t\tif (typeName) {\r\n\t\t\treturn getViewsByAppAndType(appCode, typeName);\r\n\t\t} else {\r\n\t\t\treturn getViewsByAppAndType(appCode);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getViews(objectTypeName, forAllApps) {\r\n\t\tconst key = 'getViews_' + objectTypeName + (forAllApps ? '_all' : '');\r\n\r\n\t\tif (!cache.data[key]) {\r\n\t\t\tcache.data[key] = getViewsByType(objectTypeName, forAllApps);\r\n\t\t}\r\n\t\treturn cache.data[key];\r\n\t}\r\n\r\n\tfunction getWidgetInfoById(id) {\r\n\t\tconst key = 'getAllViews_dictionary';\r\n\t\tlet widgetPromise = cache.data[key];\r\n\r\n\t\tif (!widgetPromise) {\r\n\t\t\tconst defer = $q.defer();\r\n\t\t\twidgetPromise = cache.data[key] = defer.promise;\r\n\t\t\tgetAllViews(false).then(function (views) {\r\n\t\t\t\tconst widgetDictionary = {};\r\n\t\t\t\tviews.forEach(function (widget) {\r\n\t\t\t\t\twidgetDictionary[widget.Id] = widget;\r\n\t\t\t\t});\r\n\t\t\t\tdefer.resolve(widgetDictionary);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn widgetPromise.then(function (widgetDictionary) {\r\n\t\t\tconst widgetInfo = widgetDictionary[id];\r\n\t\t\tif (widgetInfo) {\r\n\t\t\t\treturn widgetInfo;\r\n\t\t\t}\r\n\r\n\t\t\treturn http.get('api/WidgetCommon/' + id + '/html').then(function (widgetBase) {\r\n\t\t\t\tconst widgetInfo = {\r\n\t\t\t\t\tPriority: widgetBase.Priority,\r\n\t\t\t\t\tEntityIcon: widgetBase.EntityIcon,\r\n\t\t\t\t\tEntityColor: widgetBase.EntityColor,\r\n\t\t\t\t\tAddActionPosition: widgetBase.AddActionPosition,\r\n\t\t\t\t\tVisibilityCondition: widgetBase.VisibilityCondition,\r\n\t\t\t\t\tEntity: widgetBase.Entity,\r\n\t\t\t\t\tEntityDisplayName: widgetBase.EntityDisplayName,\r\n\t\t\t\t\tId: widgetBase.Id,\r\n\t\t\t\t\tName: widgetBase.Name,\r\n\t\t\t\t};\r\n\t\t\t\twidgetDictionary[id] = widgetInfo;\r\n\t\t\t\treturn widgetInfo;\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getAllViews(forceReload, forAllApps) {\r\n\t\tconst key = 'getAllViews' + (forAllApps ? '_allApps' : '');\r\n\t\tlet widgetInfos = cache.data[key];\r\n\r\n\t\tif (widgetInfos && !forceReload) {\r\n\t\t\treturn widgetInfos;\r\n\t\t}\r\n\r\n\t\twidgetInfos = getCurrentAppCode(forAllApps).then(function (appCode) {\r\n\t\t\treturn http.get('api/WidgetCommon/GetWidgets/' + appCode).then();\r\n\t\t});\r\n\r\n\t\tcache.data[key] = widgetInfos;\r\n\t\treturn widgetInfos;\r\n\t}\r\n\r\n\tfunction getCurrentAppCode(forAllApps) {\r\n\t\tconst allKey = 'all';\r\n\t\treturn forAllApps ? $q.when(allKey) : appsService.getCurrentApplication().then((app) => (app && (app.value || app.value === 0) ? app.value : allKey));\r\n\t}\r\n\r\n\tfunction getNewDialogData(widgetId, params, selectedObjects, context) {\r\n\t\tlet parameters = '';\r\n\r\n\t\tif (params) {\r\n\t\t\tparameters = params + '&selectedObjects=';\r\n\t\t\tif (Array.isArray(selectedObjects)) {\r\n\t\t\t\tfor (let i = 0; i < selectedObjects.length; i++) {\r\n\t\t\t\t\tif (i > 0) {\r\n\t\t\t\t\t\tparameters += ',';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tparameters += selectedObjects[i]._id;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tparameters = \"'\" + JSON.stringify(parameters) + \"'\";\r\n\r\n\t\treturn getAppHeaders(context).then(function (headers) {\r\n\t\t\theaders.headers['Content-Type'] = 'text/plain;charset=utf-8';\r\n\t\t\treturn http.post(`api/WidgetDialog/GetNewData/${widgetId}`, parameters, headers, {}, true).then(function (item) {\r\n\t\t\t\tif (!item) {\r\n\t\t\t\t\treturn $q.reject('no permission for data');\r\n\t\t\t\t}\r\n\t\t\t\t// TODO: refactor this\r\n\t\t\t\treturn {\r\n\t\t\t\t\tdisplayStrings: item.DisplayStrings,\r\n\t\t\t\t\tentity: objectMapper.mapItem(item.Entity),\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getNewFragment(fragmentName) {\r\n\t\treturn http.get(`api/WidgetDialog/GetNewFragment/${fragmentName}`);\r\n\t}\r\n\r\n\tasync function getDialogData(widgetId, objectId, archivedOnly, loadLocalization, context) {\r\n\t\tconst dataUri = `api/WidgetCommon/GetData/${widgetId}/${objectId}?archived=${!!archivedOnly}${loadLocalization ? '&loadLocalization=true' : ''}`;\r\n\r\n\t\tconst headers = await getAppHeaders(context);\r\n\t\tconst item = await http.get(dataUri, undefined, headers, true);\r\n\r\n\t\treturn {\r\n\t\t\tdisplayStrings: item.DisplayStrings,\r\n\t\t\tentity: objectMapper.mapItem(item.Entity),\r\n\t\t};\r\n\t}\r\n\r\n\tfunction updateDialogData(widgetId, object, context) {\r\n\t\tconst result = dataModelService.cleanFromEmptyOptionalDataDefinition(object);\r\n\t\tconst data = `'${JSON.stringify(result)}'`;\r\n\r\n\t\treturn getAppHeaders(context).then((headers) => http.post(`api/WidgetDialog/UpdateData/${widgetId}`, data, headers, {}, true));\r\n\t}\r\n\r\n\tfunction getAppHeaders(context) {\r\n\t\treturn getCurrentAppCode().then((app) => ({ headers: $.extend(true, { 'mx-application-id': app }, context) }));\r\n\t}\r\n\r\n\tfunction get(id) {\r\n\t\tconst key = `widget_${id}`;\r\n\t\tlet widget = cache.data[key];\r\n\r\n\t\tif (!widget) {\r\n\t\t\twidget = http.get(`api/widgetCommon/${id}`);\r\n\t\t\tcache.data[key] = widget;\r\n\t\t}\r\n\r\n\t\treturn widget;\r\n\t}\r\n\r\n\tfunction getDefaultViewType(widgetId) {\r\n\t\tconst res = localStorage.getItem(`mx.WidgetDefaultViewType.${widgetId}`);\r\n\r\n\t\treturn res !== null && !isNaN(res) ? Number(res) : res;\r\n\t}\r\n\r\n\tfunction setDefaultViewType(widgetId, defaultView) {\r\n\t\treturn localStorage.setItem('mx.WidgetDefaultViewType.' + widgetId, defaultView);\r\n\t}\r\n\r\n\tfunction publishLayout(template) {\r\n\t\tcache.data['widget_' + template.WidgetId] = null;\r\n\t\treturn postTemplate(template, 'Publish');\r\n\t}\r\n\r\n\tfunction update(template) {\r\n\t\tcache.data['widget_' + template.WidgetId] = null;\r\n\t\treturn postTemplate(template, 'Update');\r\n\t}\r\n\r\n\tasync function getHtml(id, isCreateDialogWidget) {\r\n\t\tconst htmlUrl = `api/widgetCommon/${id}/html`;\r\n\t\tconst widget = await http.get(htmlUrl, {}, {}, true);\r\n\t\tawait ownershipService.injectOwnershipContainer(widget, isCreateDialogWidget);\r\n\t\treturn widget;\r\n\t}\r\n\r\n\tfunction postTemplate(template, methodName, languageHeader) {\r\n\t\tif (!template || typeof template !== 'object') {\r\n\t\t\tthrow new Error(i18n.get('solutionBuilderAgent.errors.content_widget_service'));\r\n\t\t}\r\n\r\n\t\treturn http.post(`api/widgetTemplate/${methodName}`, template, languageHeader).then(function (data) {\r\n\t\t\tlocalStorage.removeItem('WidgetToRefresh');\r\n\t\t\tlocalStorage.setItem('WidgetToRefresh', template.id);\r\n\t\t\treturn data;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction revertTemplate(widgetId, revertToSystem) {\r\n\t\tif (!widgetId || widgetId === '00000000-0000-0000-0000-000000000000') {\r\n\t\t\tthrow new Error(i18n.get('solutionBuilderAgent.services.contentWidget.noWidgetId'));\r\n\t\t}\r\n\r\n\t\tconst url = revertToSystem ? 'api/WidgetTemplate/RevertToSystem/' : 'api/WidgetTemplate/Revert/';\r\n\r\n\t\treturn http.get(url + widgetId).then(function (data) {\r\n\t\t\tlocalStorage.removeItem('WidgetToRefresh');\r\n\t\t\tlocalStorage.setItem('WidgetToRefresh', widgetId);\r\n\t\t\treturn data;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getWidgetIdForControl(controller, scope) {\r\n\t\tif (!scope) {\r\n\t\t\tif (controller) {\r\n\t\t\t\t// scope is passed as only argument\r\n\t\t\t\tif ('$parent' in controller) {\r\n\t\t\t\t\tscope = controller;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontroller = 'vm' in scope ? scope.vm : null;\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst parentView = controller?.parentViewController?.mxView;\r\n\t\tlet widgetId;\r\n\r\n\t\tif (parentView && (widgetId = getWidgetIdFromView(parentView))) {\r\n\t\t\treturn widgetId;\r\n\t\t}\r\n\r\n\t\t// Fallback logic using scopes\r\n\t\tlet currentScope = scope;\r\n\r\n\t\twhile (currentScope && !widgetId) {\r\n\t\t\twidgetId = currentScope.vm ? getWidgetIdFromDataModel(currentScope.vm.dataModel) : null;\r\n\t\t\tcurrentScope = currentScope.$parent;\r\n\t\t}\r\n\r\n\t\treturn widgetId;\r\n\r\n\t\tfunction getWidgetIdFromDataModel(dataModel) {\r\n\t\t\treturn (dataModel && dataModel.Context && dataModel.Context.WidgetId) || null;\r\n\t\t}\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nDataModelDescriptorService.$inject = ['mx.SolutionBuilderAgent.Http'];\r\nexport default function DataModelDescriptorService(http) {\r\n\treturn {\r\n\t\tgetProperties: loadControlDescriptorProperties,\r\n\t};\r\n\r\n\tfunction isArrayProperty(editor) {\r\n\t\tif (Array.isArray(editor.SupportedTypes)) {\r\n\t\t\treturn editor.SupportedTypes.some(function (type) {\r\n\t\t\t\treturn type.IsArray;\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfunction getTypeFromEditor(editor) {\r\n\t\tvar types = mx.SolutionBuilderAgent.PropertyEditorType;\r\n\r\n\t\tswitch (editor.Type) {\r\n\t\t\tcase types.Boolean:\r\n\t\t\t\treturn mx.SolutionBuilderAgent.DataModelTypes.BoolType.name;\r\n\t\t\tcase types.Integer:\r\n\t\t\t\treturn mx.SolutionBuilderAgent.DataModelTypes.IntType.name;\r\n\t\t\tcase types.Text:\r\n\t\t\t\treturn mx.SolutionBuilderAgent.DataModelTypes.TextType.name;\r\n\t\t\tcase types.String:\r\n\t\t\t\treturn mx.SolutionBuilderAgent.DataModelTypes.StringType.name;\r\n\t\t\tcase types.Enumeration:\r\n\t\t\t\treturn mx.SolutionBuilderAgent.DataModelTypes.StringType.name;\r\n\t\t\tcase types.ObjectPicker:\r\n\t\t\t\treturn mx.SolutionBuilderAgent.DataModelTypes.ObjectReference.name;\r\n\t\t\tcase types.Schema:\r\n\t\t\t\treturn mx.SolutionBuilderAgent.DataModelTypes.GuidType.name;\r\n\t\t\tcase types.Bindable:\r\n\t\t\t\tvar typeName;\r\n\t\t\t\tif (Array.isArray(editor.SupportedTypes) && editor.SupportedTypes.length > 0) {\r\n\t\t\t\t\tvar type = Number(editor.SupportedTypes[0].Type);\r\n\r\n\t\t\t\t\tObject.keys(mx.SolutionBuilderAgent.DataModelTypes).some(function (key) {\r\n\t\t\t\t\t\tif (mx.SolutionBuilderAgent.DataModelTypes[key].id === type) {\r\n\t\t\t\t\t\t\ttypeName = mx.SolutionBuilderAgent.DataModelTypes[key].name;\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn typeName || mx.SolutionBuilderAgent.DataModelTypes.ObjectType.name;\r\n\t\t\tdefault:\r\n\t\t\t\treturn mx.SolutionBuilderAgent.DataModelTypes.ObjectType.name;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction loadControlDescriptorProperties(ids) {\r\n\t\tif (!Array.isArray(ids)) {\r\n\t\t\tids = [ids];\r\n\t\t}\r\n\t\treturn http.post('api/controls/properties', ids).then(function (properties) {\r\n\t\t\treturn (properties || []).map(function (property) {\r\n\t\t\t\tvar editor = typeof property.Editor === 'string' && property.Editor.length > 0 && property.Editor[0] === '{' ? JSON.parse(property.Editor) || {} : {};\r\n\t\t\t\tvar direction = editor.BindingType === 1 ? mx.SolutionBuilderAgent.DataModelPropertyDirection.BOTH : mx.SolutionBuilderAgent.DataModelPropertyDirection.IN;\r\n\t\t\t\treturn {\r\n\t\t\t\t\tname: property.Name,\r\n\t\t\t\t\tcamelCasedName: property.Name.toLowerCase().replace(/-([a-z])/g, function (g) {\r\n\t\t\t\t\t\treturn g[1].toUpperCase();\r\n\t\t\t\t\t}),\r\n\t\t\t\t\ttitle: property.Title,\r\n\t\t\t\t\tdirection: direction,\r\n\t\t\t\t\tisArray: isArrayProperty(editor),\r\n\t\t\t\t\ttype: getTypeFromEditor(editor),\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nimport { SystemStorageType } from '../../../App/model/system-storage-types';\r\n\r\n/**\r\n * @ngdoc service\r\n * @name mx.SolutionBuilderAgent.DashboardWidgetDataService\r\n * @module mx.SolutionBuilderAgent\r\n *\r\n * @description\r\n * A service provides methods for retrieving data sources\r\n */\r\nDashboardWidgetDataService.$inject = ['$q', '$m42DashboardManagerService', 'mx.shell.DataStorage'];\r\nexport default function DashboardWidgetDataService($q, $m42DashboardManagerService, dataStorage) {\r\n\tvar self = this;\r\n\r\n\tvar localStorage = dataStorage.getStorage(SystemStorageType.LocalStorage);\r\n\tvar storageDashboardKey = 'm42Dashboards';\r\n\tvar widgetsContent = {};\r\n\tvar publicFunctions = {};\r\n\tconst widgetsAvailabilityState = {};\r\n\r\n\tself.loadDashboardWidgets = loadDashboardWidgets;\r\n\tself.saveDashboardWidgets = saveDashboardWidgets;\r\n\tself.getWidgetContent = getWidgetContent;\r\n\tself.enableDashboardEditMode = enableDashboardEditMode;\r\n\tself.disableDashboardEditMode = disableDashboardEditMode;\r\n\tself.isDashboardEditable = isDashboardEditable;\r\n\tself.addWidgetToDashboard = addWidgetToDashboard;\r\n\tself.removeWidgetFromDashboard = removeWidgetFromDashboard;\r\n\r\n\tself.getDashboardWidgets = getDashboardWidgets;\r\n\tself.setDashboardWidgets = setDashboardWidgets;\r\n\r\n\tself.getAvailableDashboardWidgets = getAvailableDashboardWidgets;\r\n\tself.isWidgetAvailable = isWidgetAvailable;\r\n\r\n\tself.getDashboardLayout = getDashboardLayout;\r\n\tself.setDashboardLayout = setDashboardLayout;\r\n\tself.getDefaultDashboardLayout = getDefaultDashboardLayout;\r\n\tself.setDefaultDashboardLayout = setDefaultDashboardLayout;\r\n\tself.loadDashboardLayout = loadDashboardLayout;\r\n\tself.storeDashboardLayout = storeDashboardLayout;\r\n\tself.isDashboardCustomized = isDashboardCustomized;\r\n\tself.resetToDefault = resetToDefault;\r\n\tself.revertToCustomLayout = revertToCustomLayout;\r\n\tself.isCustomLayoutSaved = isCustomLayoutSaved;\r\n\tself.removeSavedCustomLayout = removeSavedCustomLayout;\r\n\tself.renderDashboard = renderDashboard;\r\n\tself.initDashboard = initDashboard;\r\n\r\n\t/* Function is necessary for m42Dashboard, must return promise */\r\n\tfunction loadDashboardWidgets(dashboardId) {\r\n\t\tvar dfd = $q.defer();\r\n\r\n\t\tvar widgets = getAvailableDashboardWidgets(dashboardId).filter(function (widget) {\r\n\t\t\treturn widget.added;\r\n\t\t});\r\n\r\n\t\tdfd.resolve(widgets);\r\n\r\n\t\treturn dfd.promise;\r\n\t}\r\n\r\n\t/* Function is necessary for m42Dashboard, must return promise */\r\n\tfunction saveDashboardWidgets(dashboardId, dashboardWidgets) {\r\n\t\tvar dfd = $q.defer();\r\n\r\n\t\tvar widgets = getDashboardWidgets(dashboardId);\r\n\r\n\t\twidgets.forEach(function (widget) {\r\n\t\t\twidget.added = typeof widget.added === 'boolean' ? widget.added : isWidgetInArray(widget.id, dashboardWidgets);\r\n\t\t});\r\n\r\n\t\tsetDashboardWidgets(dashboardId, widgets);\r\n\r\n\t\tdfd.resolve();\r\n\r\n\t\treturn dfd.promise;\r\n\t}\r\n\r\n\t/* Function is necessary for m42Dashboard, must return promise */\r\n\tfunction loadDashboardLayout(dashboardId, deviceType) {\r\n\t\treturn $q.when(getDashboardLayout(dashboardId, deviceType));\r\n\t}\r\n\r\n\t/* Function is necessary for m42Dashboard, must return promise */\r\n\tfunction storeDashboardLayout(dashboardId, newLayouts, deviceType) {\r\n\t\tvar dfd = $q.defer();\r\n\r\n\t\tvar dashboardLayout = getDashboardLayout(dashboardId);\r\n\r\n\t\tdashboardLayout.forEach(function (layout) {\r\n\t\t\tnewLayouts.some(function (newLayout) {\r\n\t\t\t\tif (newLayout.id === layout.id) {\r\n\t\t\t\t\tlayout.frame = newLayout.frame;\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tsetDashboardLayout(dashboardId, dashboardLayout, deviceType);\r\n\t\tdfd.resolve();\r\n\t\treturn dfd.promise;\r\n\t}\r\n\r\n\t/** **************************************************************/\r\n\r\n\tfunction getCurrentDeviceType() {\r\n\t\treturn 'desktop';\r\n\t}\r\n\r\n\tfunction isWidgetInArray(widgetId, dashboardWidgets) {\r\n\t\treturn dashboardWidgets.some(function (widget) {\r\n\t\t\treturn widget.id === widgetId;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getDashboardsDataFromStorage() {\r\n\t\tvar localDashboards = localStorage.get(storageDashboardKey);\r\n\r\n\t\tif (!localDashboards) {\r\n\t\t\tlocalDashboards = {};\r\n\t\t} else {\r\n\t\t\tlocalDashboards = JSON.parse(localDashboards);\r\n\t\t\tif (typeof localDashboards !== 'object' || localDashboards instanceof Array) {\r\n\t\t\t\tlocalDashboards = {};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn localDashboards;\r\n\t}\r\n\r\n\tfunction saveDashboardsDataToStorage(data) {\r\n\t\tlocalStorage.set(storageDashboardKey, JSON.stringify(data));\r\n\t}\r\n\r\n\tfunction getDashboardData(dashboardId) {\r\n\t\treturn getDashboardsDataFromStorage()[dashboardId] || {};\r\n\t}\r\n\r\n\tfunction setDashboardData(dashboardId, data) {\r\n\t\tvar dashboards = getDashboardsDataFromStorage();\r\n\r\n\t\tdashboards[dashboardId] = data;\r\n\r\n\t\tsaveDashboardsDataToStorage(dashboards);\r\n\t}\r\n\r\n\tfunction getDashboardWidgets(dashboardId) {\r\n\t\treturn getDashboardData(dashboardId).widgets || [];\r\n\t}\r\n\r\n\tfunction getAvailableDashboardWidgets(dashboardId) {\r\n\t\treturn getDashboardWidgets(dashboardId).filter((widget) => widgetsAvailabilityState[dashboardId][widget.id].available);\r\n\t}\r\n\r\n\tfunction isWidgetAvailable(dashboardId, widgetId) {\r\n\t\treturn widgetsAvailabilityState[dashboardId][widgetId].available;\r\n\t}\r\n\r\n\tfunction setDashboardWidgets(dashboardId, widgets) {\r\n\t\tvar dashboard = getDashboardData(dashboardId);\r\n\r\n\t\tdashboard.widgets = widgets;\r\n\r\n\t\tsetDashboardData(dashboardId, dashboard);\r\n\t}\r\n\r\n\tfunction getWidgetContent(dashboardId, widgetId) {\r\n\t\treturn widgetsContent[dashboardId] ? widgetsContent[dashboardId][widgetId] || '' : '';\r\n\t}\r\n\r\n\tfunction enableDashboardEditMode(dashboardId) {\r\n\t\tvar dashboard = getDashboardData(dashboardId);\r\n\r\n\t\tdashboard.editMode = true;\r\n\t\tsetDashboardData(dashboardId, dashboard);\r\n\t}\r\n\r\n\tfunction disableDashboardEditMode(dashboardId) {\r\n\t\tvar dashboard = getDashboardData(dashboardId);\r\n\r\n\t\tdashboard.editMode = false;\r\n\t\tsetDashboardData(dashboardId, dashboard);\r\n\t}\r\n\r\n\tfunction isDashboardEditable(dashboardId) {\r\n\t\tvar dashboard = getDashboardData(dashboardId);\r\n\r\n\t\treturn dashboard.editMode || false;\r\n\t}\r\n\r\n\tfunction updateDashboardLayout(dashboardId) {\r\n\t\tvar widgetLayouts = getDashboardLayout(dashboardId);\r\n\t\tvar widgets = getDashboardWidgets(dashboardId);\r\n\r\n\t\twidgets.forEach(function (widget) {\r\n\t\t\tvar isFinded = widgetLayouts.some(function (widgetLayout) {\r\n\t\t\t\tif (widget.id === widgetLayout.id) {\r\n\t\t\t\t\twidgetLayout.added = widget.added;\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (!isFinded) {\r\n\t\t\t\twidgetLayouts.push({\r\n\t\t\t\t\tid: widget.id,\r\n\t\t\t\t\tframe: getDefaultLayoutForWidget(dashboardId, widget.id),\r\n\t\t\t\t\tadded: widget.added,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tsetDashboardLayout(dashboardId, widgetLayouts);\r\n\t}\r\n\r\n\tfunction addWidgetToDashboard(dashboardId, widgetId, addAsAvailable = false) {\r\n\t\tvar widgets = getDashboardWidgets(dashboardId);\r\n\r\n\t\tvar defaultLayout = getDefaultFrame();\r\n\r\n\t\twidgets.some(function (widget) {\r\n\t\t\tif (widget.id === widgetId) {\r\n\t\t\t\tif ((addAsAvailable && !widgetsAvailabilityState[dashboardId][widgetId].available) || (!addAsAvailable && !widget.added)) {\r\n\t\t\t\t\tdefaultLayout = getDefaultLayoutForWidget(dashboardId, widget.id);\r\n\t\t\t\t\tconst currentWidgetLayout = getDashboardLayout(dashboardId).find((layout) => layout.id === widgetId)?.frame || {};\r\n\r\n\t\t\t\t\tvar w = angular.extend({}, widget, {\r\n\t\t\t\t\t\tsizeX: typeof currentWidgetLayout.size.w !== 'undefined' ? currentWidgetLayout.size.w : defaultLayout.size.w,\r\n\t\t\t\t\t\tsizeY: typeof currentWidgetLayout.size.h !== 'undefined' ? currentWidgetLayout.size.h : defaultLayout.size.h,\r\n\t\t\t\t\t\trow: typeof currentWidgetLayout.origin.y !== 'undefined' ? currentWidgetLayout.origin.y : defaultLayout.origin.y,\r\n\t\t\t\t\t\tcol: typeof currentWidgetLayout.origin.x !== 'undefined' ? currentWidgetLayout.origin.x : defaultLayout.origin.x,\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (addAsAvailable) {\r\n\t\t\t\t\t\twidgetsAvailabilityState[dashboardId][widgetId].available = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\twidget.added = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (widget.added && widgetsAvailabilityState[dashboardId][widgetId].available) {\r\n\t\t\t\t\t\t$m42DashboardManagerService.addWidgetToDashboard(dashboardId, w);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tsetDashboardWidgets(dashboardId, widgets);\r\n\r\n\t\tif (!addAsAvailable) {\r\n\t\t\tupdateDashboardLayout(dashboardId);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction removeWidgetFromDashboard(dashboardId, widgetId, removeAsUnavailable = false) {\r\n\t\tvar widgets = getDashboardWidgets(dashboardId);\r\n\r\n\t\twidgets.some(function (widget) {\r\n\t\t\tif (widget.id === widgetId) {\r\n\t\t\t\tif (removeAsUnavailable && widgetsAvailabilityState[dashboardId][widgetId].available) {\r\n\t\t\t\t\twidgetsAvailabilityState[dashboardId][widgetId].available = false;\r\n\t\t\t\t\tpublicFunctions[dashboardId].deleteWidgetById?.(widgetId);\r\n\t\t\t\t} else if (widget.added) {\r\n\t\t\t\t\twidget.added = false;\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tsetDashboardWidgets(dashboardId, widgets);\r\n\r\n\t\tif (!removeAsUnavailable) {\r\n\t\t\tupdateDashboardLayout(dashboardId);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getDashboardLayout(dashboardId, deviceType) {\r\n\t\tdeviceType = getCurrentDeviceType();\r\n\r\n\t\treturn getDashboardData(dashboardId)[deviceType] || [];\r\n\t}\r\n\r\n\tfunction setDashboardLayout(dashboardId, newLayout, deviceType) {\r\n\t\tdeviceType = getCurrentDeviceType();\r\n\r\n\t\tvar dashboard = getDashboardData(dashboardId);\r\n\r\n\t\tif (typeof dashboard[deviceType] === 'undefined') {\r\n\t\t\tdashboard.isCustomized = false;\r\n\t\t} else {\r\n\t\t\tdashboard.isCustomized = !angular.equals(newLayout, getDefaultDashboardLayout(dashboardId));\r\n\t\t}\r\n\r\n\t\tdashboard[deviceType] = newLayout;\r\n\r\n\t\tsetDashboardData(dashboardId, dashboard);\r\n\t}\r\n\r\n\tfunction getDefaultDashboardLayout(dashboardId) {\r\n\t\treturn getDashboardData(dashboardId).defaultLayout || [];\r\n\t}\r\n\r\n\tfunction setDefaultDashboardLayout(dashboardId, layout) {\r\n\t\tvar dashboard = getDashboardData(dashboardId);\r\n\r\n\t\tdashboard.defaultLayout = layout;\r\n\t\tsetDashboardData(dashboardId, dashboard);\r\n\t}\r\n\r\n\tfunction getDefaultFrame() {\r\n\t\treturn {\r\n\t\t\torigin: {\r\n\t\t\t\ty: 0,\r\n\t\t\t\tx: 0,\r\n\t\t\t},\r\n\t\t\tsize: {\r\n\t\t\t\tw: 5,\r\n\t\t\t\th: 3,\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tfunction getDefaultLayoutForWidget(dashboardId, widgetId) {\r\n\t\tvar layout = getDefaultFrame();\r\n\r\n\t\tgetDashboardData(dashboardId).defaultLayout.some(function (defaultWidgetLayout) {\r\n\t\t\tif (defaultWidgetLayout.id === widgetId) {\r\n\t\t\t\tlayout = defaultWidgetLayout.frame;\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn layout;\r\n\t}\r\n\r\n\tfunction isDashboardCustomized(dashboardId) {\r\n\t\treturn Boolean(getDashboardData(dashboardId).isCustomized);\r\n\t}\r\n\r\n\tfunction resetToDefault(dashboardId) {\r\n\t\tvar defaultDashboardLayout = getDefaultDashboardLayout(dashboardId);\r\n\r\n\t\tif (!defaultDashboardLayout) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar deviceType = getCurrentDeviceType();\r\n\r\n\t\tvar customLayout = getDashboardLayout(dashboardId, deviceType);\r\n\r\n\t\tsetDashboardLayout(dashboardId, defaultDashboardLayout, deviceType);\r\n\r\n\t\tvar dashboard = getDashboardData(dashboardId);\r\n\r\n\t\tdashboard.isCustomized = false;\r\n\t\tdashboard.customLayout = customLayout;\r\n\r\n\t\tif (dashboard.widgets) {\r\n\t\t\tdashboard.widgets.forEach(function (widget) {\r\n\t\t\t\twidget.added = defaultDashboardLayout.some(function (layout) {\r\n\t\t\t\t\treturn layout.id === widget.id && layout.added;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsetDashboardData(dashboardId, dashboard);\r\n\t}\r\n\r\n\tfunction isCustomLayoutSaved(dashboardId) {\r\n\t\treturn Boolean(getDashboardData(dashboardId).customLayout);\r\n\t}\r\n\r\n\tfunction removeSavedCustomLayout(dashboardId) {\r\n\t\tvar dashboard = getDashboardData(dashboardId);\r\n\r\n\t\tdelete dashboard.customLayout;\r\n\t\tsetDashboardData(dashboardId, dashboard);\r\n\t}\r\n\r\n\tfunction revertToCustomLayout(dashboardId) {\r\n\t\tvar dashboard = getDashboardData(dashboardId);\r\n\r\n\t\tif (!dashboard.customLayout) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar deviceType = getCurrentDeviceType();\r\n\r\n\t\tdashboard.isCustomized = true;\r\n\t\tdashboard[deviceType] = dashboard.customLayout;\r\n\r\n\t\tif (dashboard.widgets) {\r\n\t\t\tdashboard.widgets.forEach(function (widget) {\r\n\t\t\t\twidget.added = dashboard.customLayout.some(function (layout) {\r\n\t\t\t\t\treturn layout.id === widget.id && layout.added;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsetDashboardData(dashboardId, dashboard);\r\n\t}\r\n\r\n\tfunction renderDashboard(dashboardId) {\r\n\t\tif (publicFunctions && publicFunctions[dashboardId] && typeof publicFunctions[dashboardId].renderDashboard === 'function') {\r\n\t\t\tpublicFunctions[dashboardId].renderDashboard();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction initDashboard(dashboardId, widgets, defaultLayout, dashboardPublicFunctions) {\r\n\t\tdisableDashboardEditMode(dashboardId);\r\n\r\n\t\tvar isCustomized = isDashboardCustomized(dashboardId),\r\n\t\t\tcustomizedLayout;\r\n\r\n\t\tif (isCustomized) {\r\n\t\t\tcustomizedLayout = getDashboardLayout(dashboardId);\r\n\t\t}\r\n\r\n\t\tvar prevDefaultLayout = getDefaultDashboardLayout(dashboardId);\r\n\r\n\t\tvar isDefaultLayoutChanged = !angular.equals(prevDefaultLayout, defaultLayout);\r\n\t\tvar isSetOfWidgetsChanged = typeof prevDefaultLayout !== 'undefined' && prevDefaultLayout.length !== defaultLayout.length;\r\n\r\n\t\tif (isDefaultLayoutChanged) {\r\n\t\t\tsetDefaultDashboardLayout(dashboardId, defaultLayout);\r\n\t\t}\r\n\r\n\t\twidgetsContent[dashboardId] = {};\r\n\t\twidgetsAvailabilityState[dashboardId] = {};\r\n\t\tpublicFunctions[dashboardId] = dashboardPublicFunctions;\r\n\r\n\t\twidgets.forEach(function (widget) {\r\n\t\t\twidgetsContent[dashboardId][widget.id] = widget.content;\r\n\t\t\tdelete widget.content;\r\n\r\n\t\t\twidgetsAvailabilityState[dashboardId][widget.id] = { available: widget.available };\r\n\t\t\tdelete widget.available;\r\n\r\n\t\t\tif (isCustomized) {\r\n\t\t\t\twidget.added = customizedLayout.some(function (customWidget) {\r\n\t\t\t\t\treturn customWidget.id === widget.id && customWidget.added;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tsetDashboardWidgets(dashboardId, widgets);\r\n\r\n\t\tif (!isCustomized && isDefaultLayoutChanged) {\r\n\t\t\tsetDashboardLayout(dashboardId, defaultLayout);\r\n\t\t} else if (isSetOfWidgetsChanged) {\r\n\t\t\tdefaultLayout.forEach(function (layout) {\r\n\t\t\t\tlayout.added = false;\r\n\t\t\t\tcustomizedLayout.some(function (customLayout) {\r\n\t\t\t\t\tif (customLayout.id === layout.id) {\r\n\t\t\t\t\t\tlayout.added = customLayout.added;\r\n\t\t\t\t\t\tlayout.frame = customLayout.frame;\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tsetDashboardLayout(dashboardId, defaultLayout);\r\n\r\n\t\t\tif (isCustomLayoutSaved(dashboardId)) {\r\n\t\t\t\tremoveSavedCustomLayout(dashboardId);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tisCustomized: isCustomized,\r\n\t\t\tisSetOfWidgetsChanged: isSetOfWidgetsChanged,\r\n\t\t\tisDefaultLayoutChanged: isDefaultLayoutChanged,\r\n\t\t};\r\n\t}\r\n}\r\n","'use strict';\r\n\r\n/**\r\n * @ngdoc service\r\n * @name mx.SolutionBuilderAgent.DataModelService\r\n * @module mx.SolutionBuilderAgent\r\n *\r\n * @description\r\n * A service provides methods for retrieving data sources\r\n */\r\n\r\nDataModelService.$inject = [\r\n\t'$q',\r\n\t'mx.SolutionBuilderAgent.Http',\r\n\t'mx.SolutionBuilderAgent.ControlDescriptorService',\r\n\t'mx.internationalization',\r\n\t'mx.shell.UserProfileService',\r\n\t'mx.shell.BackgroundProcessesService',\r\n\t'mx.shell.AppsService',\r\n\t'mx.shell.HostUrlHelper',\r\n\t'mx.SolutionBuilderAgent.mxColumnDefinitionService',\r\n\t'mx.shell.DownloadHelpService',\r\n\t'mx.SolutionBuilderAgent.FilterExpressionService',\r\n\t'mx.SolutionBuilderAgent.SchemaService.Enums',\r\n\t'mx.SolutionBuilderAgent.HelpService',\r\n\t'$stateParams',\r\n];\r\n\r\nexport default function DataModelService(\r\n\t$q,\r\n\thttp,\r\n\tcontrolDescriptorService,\r\n\tinternationalization,\r\n\tuserProfileService,\r\n\tbackgroundProcessesService,\r\n\tappsService,\r\n\thostUrlHelper,\r\n\tcolumnDefinitionService,\r\n\tdownloadHelpService,\r\n\tfilterExpressionService,\r\n\tschemaServiceEnums,\r\n\thelpService,\r\n\t$stateParams\r\n) {\r\n\tconst cache = { data: {} };\r\n\r\n\tconst _sourceDescriptors = {};\r\n\r\n\tconst sysProperties = mx.SolutionBuilderAgent.DataModelSystemProperty;\r\n\tconst dataTypes = schemaServiceEnums.DataTypes;\r\n\r\n\tconst dataModelHelper = new mx.SolutionBuilderAgent.DataModelHelper();\r\n\tconst profiler = dataModelHelper.profiler;\r\n\r\n\tangular.extend(dataModelHelper.additionalData.config, hostUrlHelper.getHostUrls());\r\n\r\n\treturn {\r\n\t\t// Common\r\n\t\tgetSources: getSources,\r\n\t\tgetEntityModel: getEntityModel,\r\n\t\tgetDataQueryModel: getDataQueryModel,\r\n\r\n\t\t// Design time\r\n\t\tgetDataModel: getDataModel,\r\n\t\tsaveCalculatedField: saveCalculatedField,\r\n\t\tdeleteCalculatedField: deleteCalculatedField,\r\n\t\tgetInputParametersModel: getInputParametersModel,\r\n\t\textendDataModelSource: extendDataModelSource,\r\n\r\n\t\t// Run time\r\n\t\tloadDialogDataModel: loadDialogDataModel,\r\n\t\tloadDataModel: loadDataModel,\r\n\t\tloadSources: loadSources,\r\n\t\treloadSource: reloadSource,\r\n\t\treloadSourceByPath: reloadSourceByPath,\r\n\r\n\t\textendSourceResult: extendSourceResult,\r\n\t\tserializeObject: serializeObject,\r\n\t\tcleanFromEmptyOptionalDataDefinition: cleanFromEmptyOptionalDataDefinition,\r\n\t};\r\n\r\n\tfunction serializeObject(entity) {\r\n\t\treturn JSON.stringify(entity)\r\n\t\t\t.replace(/\\.[0-9]{1,3}Z\"/g, '\"')\r\n\t\t\t.replace(/:[0-9]{2}Z\"/g, function (x) {\r\n\t\t\t\treturn x.replace('Z', '');\r\n\t\t\t});\r\n\t}\r\n\r\n\tfunction getSources(modelDescriptor, forRuntime, isEmail) {\r\n\t\tconst getStaticModelArgument = modelDescriptor.dataQueryId || modelDescriptor.entityName || modelDescriptor.dataDefinition || modelDescriptor.controlDescriptorId || null;\r\n\t\tconst getStaticModel =\r\n\t\t\t(modelDescriptor.dataQueryId && getDataQueryModel) ||\r\n\t\t\t(modelDescriptor.entityName && getEntityModel) ||\r\n\t\t\t(modelDescriptor.controlDescriptorId && getCustomWidgetModel) ||\r\n\t\t\tnull;\r\n\r\n\t\tif (!Array.isArray(modelDescriptor.Sources)) {\r\n\t\t\tmodelDescriptor.Sources = [];\r\n\t\t}\r\n\r\n\t\tif ((!getStaticModel || !getStaticModelArgument) && modelDescriptor.Sources.length === 0) {\r\n\t\t\treturn $q.when([]);\r\n\t\t}\r\n\r\n\t\tconst sources = modelDescriptor.Sources.map(function (sd) {\r\n\t\t\treturn loadInfo(sd, forRuntime, modelDescriptor);\r\n\t\t});\r\n\t\tconst staticSource =\r\n\t\t\tgetStaticModel &&\r\n\t\t\tgetStaticModelArgument &&\r\n\t\t\tgetStaticModel(getStaticModelArgument, false, modelDescriptor.ExtraProperties, modelDescriptor.widgetId).then(function (staticSource) {\r\n\t\t\t\tif (staticSource) {\r\n\t\t\t\t\tstaticSource.isStatic = true;\r\n\t\t\t\t\tif (!modelDescriptor.isCustomWidget) {\r\n\t\t\t\t\t\tstaticSource.addBoolean('IsNew');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn staticSource || null;\r\n\t\t\t});\r\n\r\n\t\tif (staticSource) {\r\n\t\t\tsources.push(staticSource);\r\n\t\t}\r\n\r\n\t\treturn $q.all(sources).then(function (data) {\r\n\t\t\treturn data.filter(function (s) {\r\n\t\t\t\treturn s !== null;\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tfunction loadInfo(sourceDescriptor, forRuntime, modelDescriptor) {\r\n\t\t\tif (typeof forRuntime === 'undefined') {\r\n\t\t\t\tforRuntime = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (sourceDescriptor.OperationId || sourceDescriptor.WorkflowId) {\r\n\t\t\t\treturn getServiceOperationSource(sourceDescriptor, isEmail);\r\n\t\t\t}\r\n\r\n\t\t\tif (sourceDescriptor.EntityName) {\r\n\t\t\t\treturn getEntitySource(sourceDescriptor, modelDescriptor);\r\n\t\t\t}\r\n\r\n\t\t\tif (sourceDescriptor.DataDefinition) {\r\n\t\t\t\treturn getDataDefinitionSource(sourceDescriptor, modelDescriptor, isEmail);\r\n\t\t\t}\r\n\r\n\t\t\tif (sourceDescriptor.DataQueryId) {\r\n\t\t\t\treturn getDataQuerySource(sourceDescriptor);\r\n\t\t\t}\r\n\r\n\t\t\treturn $q.when(null);\r\n\r\n\t\t\tfunction getServiceOperationSource(sourceDescriptor, isEmail) {\r\n\t\t\t\tlet promise;\r\n\r\n\t\t\t\tif (sourceDescriptor.RequestDescriptor && sourceDescriptor.ResponseDescriptor) {\r\n\t\t\t\t\tpromise = $q.when(sourceDescriptor);\r\n\t\t\t\t} else if (sourceDescriptor.WorkflowId) {\r\n\t\t\t\t\tpromise = helpService.getWorkflowInfo(sourceDescriptor.WorkflowId);\r\n\t\t\t\t} else if (sourceDescriptor.OperationId) {\r\n\t\t\t\t\tpromise = helpService.getOperationInfo(sourceDescriptor.OperationId);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tpromise = $q.when();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn promise.then(function (data) {\r\n\t\t\t\t\tconst source = new mx.SolutionBuilderAgent.DataModelSource(sourceDescriptor, data && data.RequestContract, null, forRuntime);\r\n\t\t\t\t\tsource.isOperation = !!sourceDescriptor.OperationId;\r\n\t\t\t\t\tsource.isWorkflow = !!sourceDescriptor.WorkflowId;\r\n\r\n\t\t\t\t\tif (!data) {\r\n\t\t\t\t\t\treturn makeSourceRemoved(source);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tsourceDescriptor.HttpMethod = mx.shell.HttpMethod.find(data.HttpMethod);\r\n\t\t\t\t\tsourceDescriptor.RelativePath = data.RelativePath;\r\n\t\t\t\t\tsourceDescriptor.Operation = sourceDescriptor.Operation || data.ActionName;\r\n\t\t\t\t\tsourceDescriptor.ServiceId = sourceDescriptor.ServiceId || data.ServiceId;\r\n\t\t\t\t\tsourceDescriptor.Service = sourceDescriptor.Service || data.ServiceName;\r\n\t\t\t\t\tsourceDescriptor.BaseUrl = sourceDescriptor.BaseUrl || data.BaseUrl;\r\n\r\n\t\t\t\t\tif (!isEmail) {\r\n\t\t\t\t\t\tsource.addSourceState();\r\n\t\t\t\t\t\tsource.addInactive();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst response = data.ResponseContract;\r\n\r\n\t\t\t\t\tif (response && response.ContractDescriptor && response.ContractDescriptor.Type !== 'System_Void') {\r\n\t\t\t\t\t\tsource.addProperty(\r\n\t\t\t\t\t\t\tmx.SolutionBuilderAgent.DataModelSystemProperty.Return,\r\n\t\t\t\t\t\t\tresponse.ContractDescriptor,\r\n\t\t\t\t\t\t\tresponse.UsedTypes,\r\n\t\t\t\t\t\t\tmx.SolutionBuilderAgent.DataModelPropertyDirection.OUT\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn source;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfunction getEntitySource(sourceDescriptor, modelDescriptor) {\r\n\t\t\t\tif (!sourceDescriptor.EntityName) {\r\n\t\t\t\t\tthrow new Error(internationalization.get('solutionBuilderAgent.errors.entity_name_not_provided'));\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn helpService.getCiInfo(sourceDescriptor.EntityName, true).then(\r\n\t\t\t\t\tfunction (structure) {\r\n\t\t\t\t\t\tsourceDescriptor.HttpMethod = mx.shell.HttpMethod.Get;\r\n\t\t\t\t\t\tconst entitySource = new mx.SolutionBuilderAgent.DataModelSource(sourceDescriptor, null, null, forRuntime);\r\n\t\t\t\t\t\tentitySource.isCi = true;\r\n\t\t\t\t\t\tif (!structure) {\r\n\t\t\t\t\t\t\treturn makeSourceRemoved(entitySource);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tentitySource.addGuid(mx.SolutionBuilderAgent.DataModelSystemProperty.ObjectId, { Direction: mx.SolutionBuilderAgent.DataModelPropertyDirection.IN });\r\n\r\n\t\t\t\t\t\tentitySource.addSourceState();\r\n\r\n\t\t\t\t\t\tentitySource.addInactive();\r\n\r\n\t\t\t\t\t\tentitySource.addProperty(\r\n\t\t\t\t\t\t\tsourceDescriptor.EntityName,\r\n\t\t\t\t\t\t\tstructure.ContractDescriptor,\r\n\t\t\t\t\t\t\tstructure.UsedTypes,\r\n\t\t\t\t\t\t\tmx.SolutionBuilderAgent.DataModelPropertyDirection.OUT\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tadjustEntityProperties(entitySource, modelDescriptor.ExtraProperties);\r\n\r\n\t\t\t\t\t\treturn entitySource;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfunction (error) {\r\n\t\t\t\t\t\treturn $q.reject(error);\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tfunction adjustFilter(sourceDescriptor, modelDescriptor, dataModelSource) {\r\n\t\t\t\tconst sourcePath = sourceDescriptor.Path;\r\n\t\t\t\tconst filterPath = `${sourcePath}.${mx.SolutionBuilderAgent.DataModelSystemProperty.Filter}`;\r\n\t\t\t\t(modelDescriptor.Properties || []).forEach((property) => {\r\n\t\t\t\t\tif (property.Path === filterPath || property.Parameters.some((parameter) => parameter.path === filterPath)) {\r\n\t\t\t\t\t\tdataModelSource.addFilter();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tasync function adjustFilterExpressionParameters(sourceDescriptor, modelDescriptor, dataModelSource) {\r\n\t\t\t\tconst submitProperty = (property) => {\r\n\t\t\t\t\tconst paramDataModel = dataModelSource.addSimpleProperty(\r\n\t\t\t\t\t\tmx.SolutionBuilderAgent.DataModelSystemProperty.Parameters,\r\n\t\t\t\t\t\tmx.SolutionBuilderAgent.DataModelTypes.ObjectType.name,\r\n\t\t\t\t\t\tmx.SolutionBuilderAgent.DataModelPropertyDirection.IN,\r\n\t\t\t\t\t\tnull\r\n\t\t\t\t\t);\r\n\t\t\t\t\tparamDataModel.addSimpleProperty(property.Name, property.Type, mx.SolutionBuilderAgent.DataModelPropertyDirection.IN, { isArray: property.IsArray });\r\n\t\t\t\t};\r\n\t\t\t\tconst handleProperty = (result) => {\r\n\t\t\t\t\tif (result.IsValid) {\r\n\t\t\t\t\t\tresult.Parameters?.forEach((prop) => {\r\n\t\t\t\t\t\t\tsubmitProperty({\r\n\t\t\t\t\t\t\t\tName: prop.Name.slice(1),\r\n\t\t\t\t\t\t\t\tType: dataTypes[prop.ParameterType],\r\n\t\t\t\t\t\t\t\tIsArray: prop.IsArray,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (forRuntime && Array.isArray(modelDescriptor.Properties)) {\r\n\t\t\t\t\tconst sourcePath = sourceDescriptor.Path;\r\n\t\t\t\t\tconst parametersPath = `${sourcePath}.${mx.SolutionBuilderAgent.DataModelSystemProperty.Parameters}`;\r\n\t\t\t\t\tmodelDescriptor.Properties.forEach((property) => {\r\n\t\t\t\t\t\tif (property.ParentPath === parametersPath) {\r\n\t\t\t\t\t\t\tsubmitProperty(property);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if (sourceDescriptor.DataDefinition) {\r\n\t\t\t\t\treturn filterExpressionService\r\n\t\t\t\t\t\t.getParametersForExpressionEntityClass(sourceDescriptor.FilterExpression, sourceDescriptor.DataDefinition)\r\n\t\t\t\t\t\t.then((result) => handleProperty(result));\r\n\t\t\t\t} else if (sourceDescriptor.DataQueryId) {\r\n\t\t\t\t\treturn filterExpressionService\r\n\t\t\t\t\t\t.getParametersForExpressionDataQuery(sourceDescriptor.FilterExpression, sourceDescriptor.DataQueryId)\r\n\t\t\t\t\t\t.then((result) => handleProperty(result));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction getDataDefinitionSource(sourceDescriptor, modelDescriptor, isEmail) {\r\n\t\t\t\treturn helpService.getDdInfo(sourceDescriptor.DataDefinition, true).then(\r\n\t\t\t\t\tfunction (structure) {\r\n\t\t\t\t\t\tconst dataDefinitionSource = new mx.SolutionBuilderAgent.DataModelSource(sourceDescriptor, null, null, forRuntime);\r\n\t\t\t\t\t\tdataDefinitionSource.isDd = true;\r\n\t\t\t\t\t\tif (!structure) {\r\n\t\t\t\t\t\t\treturn makeSourceRemoved(dataDefinitionSource);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst keepLegacyId =\r\n\t\t\t\t\t\t\tisEmail ||\r\n\t\t\t\t\t\t\t(modelDescriptor.Properties || []).some(\r\n\t\t\t\t\t\t\t\t(prop) =>\r\n\t\t\t\t\t\t\t\t\t(prop.Name === mx.SolutionBuilderAgent.DataModelSystemProperty.Id && prop.ParentPath === sourceDescriptor.Path) ||\r\n\t\t\t\t\t\t\t\t\tprop.Parameters.some((parameter) => parameter.path === `${sourceDescriptor.Path}.${mx.SolutionBuilderAgent.DataModelSystemProperty.Id}`)\r\n\t\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tif (!sourceDescriptor.IsArray && keepLegacyId) {\r\n\t\t\t\t\t\t\tdataDefinitionSource.addProperty(\r\n\t\t\t\t\t\t\t\tmx.SolutionBuilderAgent.DataModelSystemProperty.Id,\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tType: 'GuidType',\r\n\t\t\t\t\t\t\t\t\tDescription: dataDefinitionSource.sysPropertyDescriptions.fragmentIdDescription,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{},\r\n\t\t\t\t\t\t\t\tmx.SolutionBuilderAgent.DataModelPropertyDirection.IN\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!isEmail) {\r\n\t\t\t\t\t\t\tdataDefinitionSource.addSourceState();\r\n\t\t\t\t\t\t\tdataDefinitionSource.addOrderBy();\r\n\t\t\t\t\t\t\tdataDefinitionSource.addInactive();\r\n\r\n\t\t\t\t\t\t\tdataDefinitionSource.addPagingData();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tdataDefinitionSource.addProperty(\r\n\t\t\t\t\t\t\t\t'$objectId',\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tType: 'GuidType',\r\n\t\t\t\t\t\t\t\t\tDescription: dataDefinitionSource.sysPropertyDescriptions.fragmentIdDescription,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{},\r\n\t\t\t\t\t\t\t\tmx.SolutionBuilderAgent.DataModelPropertyDirection.IN\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tdataDefinitionSource.addFilter({ Expression: '' });\r\n\t\t\t\t\t\t\tdataDefinitionSource.addOrderBy({ Expression: '' });\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst returnProperty = dataDefinitionSource.addProperty(\r\n\t\t\t\t\t\t\tstructure.ContractDescriptor,\r\n\t\t\t\t\t\t\t{ Type: structure.ContractDescriptor },\r\n\t\t\t\t\t\t\tstructure.UsedTypes,\r\n\t\t\t\t\t\t\tmx.SolutionBuilderAgent.DataModelPropertyDirection.OUT\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\treturnProperty.isArray = sourceDescriptor.IsArray;\r\n\t\t\t\t\t\tadjustEntityProperties(dataDefinitionSource, modelDescriptor.ExtraProperties);\r\n\r\n\t\t\t\t\t\tif (!isEmail && sourceDescriptor.FilterExpression) {\r\n\t\t\t\t\t\t\treturn adjustFilterExpressionParameters(sourceDescriptor, modelDescriptor, dataDefinitionSource).then(() => dataDefinitionSource);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tadjustFilter(sourceDescriptor, modelDescriptor, dataDefinitionSource);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn dataDefinitionSource;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfunction (error) {\r\n\t\t\t\t\t\treturn $q.reject(error);\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tfunction getDataQuerySource(sourceDescriptor) {\r\n\t\t\t\treturn helpService.getDqInfo(sourceDescriptor.DataQueryId, true).then(function (structure) {\r\n\t\t\t\t\tconst dataQuerySource = new mx.SolutionBuilderAgent.DataModelSource(sourceDescriptor, null, null, forRuntime);\r\n\t\t\t\t\tdataQuerySource.isDataQuery = true;\r\n\t\t\t\t\tif (!structure) {\r\n\t\t\t\t\t\treturn makeSourceRemoved(dataQuerySource);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (sourceDescriptor.FilterExpression === undefined) {\r\n\t\t\t\t\t\tdataQuerySource.addSimpleProperty(\r\n\t\t\t\t\t\t\tmx.SolutionBuilderAgent.DataModelSystemProperty.ObjectId,\r\n\t\t\t\t\t\t\t'GuidType',\r\n\t\t\t\t\t\t\tmx.SolutionBuilderAgent.DataModelPropertyDirection.IN\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tdataQuerySource.addSimpleProperty(\r\n\t\t\t\t\t\t\tmx.SolutionBuilderAgent.DataModelSystemProperty.FragmentIds,\r\n\t\t\t\t\t\t\t'GuidType',\r\n\t\t\t\t\t\t\tmx.SolutionBuilderAgent.DataModelPropertyDirection.IN,\r\n\t\t\t\t\t\t\t{ IsArray: true }\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst firstProperty = dataQuerySource.addProperty(\r\n\t\t\t\t\t\tmx.SolutionBuilderAgent.DataModelSystemProperty.First,\r\n\t\t\t\t\t\t{ Type: structure.ContractDescriptor },\r\n\t\t\t\t\t\tstructure.UsedTypes,\r\n\t\t\t\t\t\tmx.SolutionBuilderAgent.DataModelPropertyDirection.OUT\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tfirstProperty.isArray = false;\r\n\r\n\t\t\t\t\tdataQuerySource.addSourceState();\r\n\t\t\t\t\tdataQuerySource.addInactive();\r\n\r\n\t\t\t\t\tdataQuerySource.addPagingData();\r\n\r\n\t\t\t\t\tconst returnProperty = dataQuerySource.addProperty(\r\n\t\t\t\t\t\tmx.SolutionBuilderAgent.DataModelSystemProperty.Return,\r\n\t\t\t\t\t\t{ Type: structure.ContractDescriptor },\r\n\t\t\t\t\t\tstructure.UsedTypes,\r\n\t\t\t\t\t\tmx.SolutionBuilderAgent.DataModelPropertyDirection.OUT\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\treturnProperty.isArray = true;\r\n\r\n\t\t\t\t\tif (sourceDescriptor.FilterExpression) {\r\n\t\t\t\t\t\treturn adjustFilterExpressionParameters(sourceDescriptor, modelDescriptor, dataQuerySource).then(() => dataQuerySource);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tadjustFilter(sourceDescriptor, modelDescriptor, dataQuerySource);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn dataQuerySource;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction makeSourceRemoved(source) {\r\n\t\tsource.loadOnInit = false;\r\n\t\tsource.reloadable = false;\r\n\t\tsource.removed = true;\r\n\t\treturn source;\r\n\t}\r\n\r\n\tfunction getDataModel(options, widgetId, inputParameters) {\r\n\t\tconst dataModelDefer = $q.defer();\r\n\t\tconst dataModel = new mx.SolutionBuilderAgent.DataModel();\r\n\t\tconst isEmail = Array.isArray(inputParameters);\r\n\r\n\t\tconst modelDescriptor = options instanceof mx.SolutionBuilderAgent.DataModelDescriptor ? options : new mx.SolutionBuilderAgent.DataModelDescriptor(options);\r\n\t\tconst extendedProperties = modelDescriptor.Properties;\r\n\r\n\t\tmodelDescriptor.widgetId = widgetId;\r\n\r\n\t\tmodelDescriptor.Properties.forEach(function (itm) {\r\n\t\t\titm.Direction = undefined;\r\n\t\t});\r\n\r\n\t\tgetSources(modelDescriptor, false, isEmail).then(function (sources) {\r\n\t\t\tdataModel.addSources(sources);\r\n\t\t\tdataModel.sources.some(function (source) {\r\n\t\t\t\tif (source.multiCurrencies) {\r\n\t\t\t\t\tdataModel.multiCurrencies = true;\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\r\n\t\t\tconst isDialog = !options.dataQueryId && Boolean(options.entityName);\r\n\t\t\tconst isWizard = !options.dataQueryId && Boolean(options.isWizard);\r\n\r\n\t\t\tconst contextSource = isEmail ? getInputParametersModel(inputParameters, modelDescriptor.ExtraProperties) : $q.when(createContextSource(isWizard, isDialog));\r\n\t\t\tcontextSource.then(function (context) {\r\n\t\t\t\tdataModel.addSources([context]);\r\n\t\t\t\tdataModelDefer.resolve(extendDataModel(dataModel, extendedProperties));\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn dataModelDefer.promise;\r\n\r\n\t\tfunction createContextSource(isWizard, isDialog) {\r\n\t\t\tconst contextSource = new mx.SolutionBuilderAgent.DataModelSource({\r\n\t\t\t\tStaticSource: true,\r\n\t\t\t\tPath: 'Context',\r\n\t\t\t\tName: 'Context',\r\n\t\t\t\tProperties: [],\r\n\t\t\t});\r\n\r\n\t\t\tcontextSource.path = 'Context';\r\n\t\t\tcontextSource.isStatic = true;\r\n\r\n\t\t\tcontextSource.addCurrentUser();\r\n\t\t\tcontextSource.addApplicationName();\r\n\r\n\t\t\tif (isWizard || isDialog) {\r\n\t\t\t\tcontextSource.addActionContext(isDialog, isWizard);\r\n\r\n\t\t\t\tif (isWizard) {\r\n\t\t\t\t\tcontextSource.addObjectReference('ObjectReference');\r\n\t\t\t\t\tcontextSource.addGuid('ObjectIds', { IsArray: true });\r\n\t\t\t\t\tcontextSource.addObjectReference('ObjectReferences', '', { IsArray: true });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (isDialog) {\r\n\t\t\t\tcontextSource.addOuterContext();\r\n\t\t\t}\r\n\r\n\t\t\tif (!isWizard) {\r\n\t\t\t\tcontextSource.addSharedContext();\r\n\t\t\t}\r\n\r\n\t\t\tcontextSource.addNavigationId();\r\n\t\t\tcontextSource.addFilterId();\r\n\r\n\t\t\treturn contextSource;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction cleanFromEmptyOptionalDataDefinition(object) {\r\n\t\tconst result = angular.copy(object);\r\n\t\tif (typeof object === 'object' && object !== null && !Array.isArray(object)) {\r\n\t\t\tObject.keys(object).forEach((key) => {\r\n\t\t\t\tconst value = object[key];\r\n\t\t\t\tif (typeof value === 'object' && value !== null && value.__optionalDD) {\r\n\t\t\t\t\tconst hasProperties = Object.keys(value).some((propertyKey) => {\r\n\t\t\t\t\t\tconst property = value[propertyKey];\r\n\t\t\t\t\t\tif (property instanceof mx.SolutionBuilderAgent.Relation) {\r\n\t\t\t\t\t\t\tif (property.AddedRelations.length || property.RemovedRelations.length) {\r\n\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tif (!hasProperties) {\r\n\t\t\t\t\t\tdelete result[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tfunction loadDialogDataModel(entityName, entity, context, options, freeDataSourcePromise, isService, staticData, defaultData) {\r\n\t\tstaticData = staticData || {\r\n\t\t\tContext: context,\r\n\t\t};\r\n\t\tstaticData[entityName] = entity;\r\n\r\n\t\treturn (\r\n\t\t\tisService // if entity is not service then extend entity with default values from helper\r\n\t\t\t\t? $q.when()\r\n\t\t\t\t: getEntityModel(entityName, false).then(function (entitySource) {\r\n\t\t\t\t\t\t/* Predefine DataMode dialogs. If there is no data in data from server then define:\r\n\t\t\t\t\t\t * \t1. {} for optional DD. It is necessary for calc-fields;\r\n\t\t\t\t\t\t * \t2. empty MultiFragmentGrid from entityDefaultModel for optional multi-DD. For relations and other complex properties;\r\n\t\t\t\t\t\t * \t3. init Relations properties with relation-config recursively;\r\n\t\t\t\t\t\t */\r\n\r\n\t\t\t\t\t\tconst entityDefaultModel = dataModelHelper.createModelDefaultObject([entitySource])[entityName];\r\n\r\n\t\t\t\t\t\tObject.keys(entityDefaultModel).forEach((key) => {\r\n\t\t\t\t\t\t\tconst value = entityDefaultModel[key];\r\n\t\t\t\t\t\t\tconst optionalDD = {};\r\n\t\t\t\t\t\t\tObject.defineProperty(optionalDD, '__optionalDD', {\r\n\t\t\t\t\t\t\t\tenumerable: false,\r\n\t\t\t\t\t\t\t\tvalue: true,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tif (typeof value === 'object' && typeof entity[key] === 'undefined') {\r\n\t\t\t\t\t\t\t\tentity[key] = Array.isArray(value) ? value : optionalDD;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tdataModelHelper.initRelations(entity, entityDefaultModel);\r\n\t\t\t\t\t\t// init multifragment\r\n\t\t\t\t })\r\n\t\t).then(function () {\r\n\t\t\treturn loadDataModel(options, staticData, defaultData, freeDataSourcePromise).then(function (dataModel) {\r\n\t\t\t\tdataModel.entityName = entityName;\r\n\t\t\t\treturn dataModel;\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction loadDataModel(options, staticData, defaultData, freeDataSourcePromise) {\r\n\t\tconst output = {\r\n\t\t\tsources: [],\r\n\t\t\tresult: {},\r\n\t\t};\r\n\r\n\t\toutput.result.$calcProperties = new mx.SolutionBuilderAgent.DataModelCalculatedPropertiesInfo();\r\n\r\n\t\tlet modelDescriptor;\r\n\r\n\t\tif (!options) {\r\n\t\t\tmodelDescriptor = new mx.SolutionBuilderAgent.DataModelDescriptor({\r\n\t\t\t\tSources: [],\r\n\t\t\t\tProperties: [],\r\n\t\t\t\tExtraProperties: [],\r\n\t\t\t});\r\n\t\t\toptions = {};\r\n\t\t} else if (!(options instanceof mx.SolutionBuilderAgent.DataModelDescriptor)) {\r\n\t\t\tif (typeof options === 'string') {\r\n\t\t\t\tmodelDescriptor = JSON.parse(options);\r\n\t\t\t}\r\n\t\t\tif (typeof options === 'object') {\r\n\t\t\t\tmodelDescriptor = new mx.SolutionBuilderAgent.DataModelDescriptor(options);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tmodelDescriptor = options;\r\n\t\t}\r\n\r\n\t\tif (options.dataQueryId) {\r\n\t\t\tmodelDescriptor.dataQueryId = options.dataQueryId;\r\n\t\t}\r\n\t\tif (options.widgetId) {\r\n\t\t\tmodelDescriptor.widgetId = options.widgetId;\r\n\t\t}\r\n\r\n\t\treturn $q.all([userProfileService.get(), appsService.getCurrentApplication()]).then(function (result) {\r\n\t\t\tconst userProfile = result[0];\r\n\t\t\tconst currentApp = result[1];\r\n\r\n\t\t\t_.set(output.result, 'Context.CurrentUser', userProfile.id);\r\n\t\t\t_.set(output.result, 'Context.IsDevMode', userProfile.isDevMode);\r\n\t\t\t_.set(output.result, 'Context.ApplicationName', currentApp.name);\r\n\t\t\t_.set(output.result, 'Context.NavigationId', $stateParams.navigationId);\r\n\t\t\t_.set(output.result, 'Context.FilterId', $stateParams.filterId);\r\n\r\n\t\t\treturn getSources(modelDescriptor, true).then(async function (sources) {\r\n\t\t\t\toutput.sources = sources;\r\n\t\t\t\tif (sources.length) {\r\n\t\t\t\t\tangular.extend(output.result, dataModelHelper.createModelDefaultObject(sources, defaultData));\r\n\t\t\t\t}\r\n\t\t\t\t_.forEach(staticData || {}, function (staticValue, key) {\r\n\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(output.result, key)) {\r\n\t\t\t\t\t\tangular.extend(output.result[key], staticData[key]);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t_.set(output.result, key, staticValue);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// TO DO: tmp fix. Direction to be properly saved in LD\r\n\t\t\t\tdataModelHelper.updateDirections(output.sources, modelDescriptor.Properties);\r\n\r\n\t\t\t\tawait dataModelHelper.applyCalculatedProperties(output.result, modelDescriptor.Properties);\r\n\r\n\t\t\t\treturn loadSources(output.result, output.sources, freeDataSourcePromise);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction loadSources(result, sources, freeDataSourcePromise) {\r\n\t\t_sourceDescriptors[result.Context.WidgetId] = sources;\r\n\r\n\t\tconst promises = [];\r\n\r\n\t\tsources.forEach(function (source) {\r\n\t\t\tif (source.loadOnInit) {\r\n\t\t\t\tpromises.push(\r\n\t\t\t\t\t$q.when().then(function () {\r\n\t\t\t\t\t\treloadSource(source, result).then(\r\n\t\t\t\t\t\t\tfunction (data) {\r\n\t\t\t\t\t\t\t\tsource.callBackPromise = null;\r\n\t\t\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tfunction (error) {\r\n\t\t\t\t\t\t\t\tif (error !== 'by condition') {\r\n\t\t\t\t\t\t\t\t\twindow.mx.console.warn(\"mxAgent: reloadSource() was rejected. Check whether it's ok. \", error);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif (source.reloadable) {\r\n\t\t\t\tsource.items.forEach(function (prop) {\r\n\t\t\t\t\tsetCalcPropertyCallback(source, result, prop);\r\n\t\t\t\t\tif (prop.name === mx.SolutionBuilderAgent.DataModelSystemProperty.Parameters) {\r\n\t\t\t\t\t\tprop.items.forEach(function (child) {\r\n\t\t\t\t\t\t\tsetCalcPropertyCallback(source, result, child);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Regular DataSource update with some interval\r\n\t\t\tif (source.refreshInterval && source.refreshInterval > 0 && freeDataSourcePromise) {\r\n\t\t\t\tfreeDataSourcePromise.__intervalsToBeCleared = freeDataSourcePromise.__intervalsToBeCleared || [];\r\n\r\n\t\t\t\tconst intervalID = window.setInterval(function () {\r\n\t\t\t\t\treloadSource(source, result).then(\r\n\t\t\t\t\t\tfunction (data) {\r\n\t\t\t\t\t\t\tsource.callBackPromise = null;\r\n\t\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfunction (error) {\r\n\t\t\t\t\t\t\tif (error !== 'by condition') {\r\n\t\t\t\t\t\t\t\twindow.mx.console.warn(\"mxAgent: reloadSource() was rejected. Check whether it's ok. \", error);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t);\r\n\t\t\t\t}, source.refreshInterval * 1000);\r\n\r\n\t\t\t\tfreeDataSourcePromise.__intervalsToBeCleared.push(intervalID);\r\n\r\n\t\t\t\tfreeDataSourcePromise.then(function () {\r\n\t\t\t\t\tdo {\r\n\t\t\t\t\t\twindow.clearInterval(freeDataSourcePromise.__intervalsToBeCleared.pop());\r\n\t\t\t\t\t} while (freeDataSourcePromise.__intervalsToBeCleared.length > 0);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (!promises.length) {\r\n\t\t\tpromises.push($q.when(1));\r\n\t\t}\r\n\t\treturn $q.all(promises).then(\r\n\t\t\tfunction () {\r\n\t\t\t\treturn result;\r\n\t\t\t},\r\n\t\t\tfunction () {\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tfunction setCalcPropertyCallback(source, result, prop) {\r\n\t\tif (!prop || prop.direction !== mx.SolutionBuilderAgent.DataModelPropertyDirection.IN) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst calcProperties = result.$calcProperties;\r\n\t\tlet calcProperty = calcProperties[prop.path];\r\n\t\tif (!calcProperty) {\r\n\t\t\tcalcProperty = new mx.SolutionBuilderAgent.DataModelCalculatedProperty({\r\n\t\t\t\tName: prop.name,\r\n\t\t\t\tParentPath: prop.parentPath,\r\n\t\t\t\tPath: prop.path,\r\n\t\t\t});\r\n\t\t\tcalcProperty.register(result).apply(result);\r\n\t\t}\r\n\t\tcalcProperty.onChange('reload_' + source.path, function () {\r\n\t\t\tsourceCallBack(source, result, calcProperty.descriptor.Path);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction sourceCallBack(source, model, triggeredBy) {\r\n\t\t// Reload service should be started after all callbacks was called\r\n\t\t// Thus we create $q.when().then(... (will be executed after current thread ended)\r\n\t\tsource.callBackPromise =\r\n\t\t\tsource.callBackPromise ||\r\n\t\t\t$q.when().then(function () {\r\n\t\t\t\treturn reloadSource(source, model, undefined, triggeredBy).then(\r\n\t\t\t\t\tfunction (data) {\r\n\t\t\t\t\t\tsource.callBackPromise = null;\r\n\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfunction (msg) {\r\n\t\t\t\t\t\tprofiler.sourceRejected(source.name, msg);\r\n\t\t\t\t\t\tsource.callBackPromise = null;\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t}\r\n\r\n\tfunction _isEmpty(id) {\r\n\t\treturn !id || id === '00000000-0000-0000-0000-000000000000';\r\n\t}\r\n\r\n\tfunction reloadSource(source, model, headers, triggeredBy) {\r\n\t\tlet url;\r\n\t\tlet queryObject;\r\n\t\tconst sourceStateName = sysProperties.SourceState;\r\n\t\tconst status = mx.SolutionBuilderAgent.SourceLoadingStatus;\r\n\t\tlet isExec = true;\r\n\r\n\t\tconst sourceData = model[source.path];\r\n\t\tconst context = model.Context;\r\n\t\tconst inactive = sourceData[sysProperties.Inactive] === true;\r\n\r\n\t\tprofiler.sourceTriggered(source.name, inactive, triggeredBy, sourceData);\r\n\r\n\t\tif (inactive) {\r\n\t\t\tsourceData[sourceStateName] = status.LOAD_REQUESTED;\r\n\t\t\tisExec = false;\r\n\t\t} else if (source.dataDefinition) {\r\n\t\t\tconst alias = source.path + '.' + source.dataDefinition;\r\n\r\n\t\t\turl = 'api/WidgetCommon/' + context.WidgetId + '/DataSourceData/' + alias;\r\n\r\n\t\t\tlet filter = null;\r\n\r\n\t\t\tif (!_isEmpty(sourceData.$id)) {\r\n\t\t\t\tfilter = \"id='\" + sourceData.$id + \"'\";\r\n\t\t\t} else if (!_isEmpty(sourceData.$filter)) {\r\n\t\t\t\tfilter = sourceData.$filter;\r\n\t\t\t} else if (!_isEmpty(sourceData.$parameters) || !_isEmpty(source.FilterExpression)) {\r\n\t\t\t\turl = `api/WidgetCommon/${context.WidgetId}/${source.id}/${alias}`;\r\n\t\t\t\tsource.httpMethod = mx.shell.HttpMethod.Post;\r\n\r\n\t\t\t\tconst parameters = getParametersList(source, sourceData);\r\n\t\t\t\tsource.bodyParameter = ['Parameters'];\r\n\t\t\t\tsourceData.Parameters = JSON.stringify(parameters);\r\n\t\t\t}\r\n\r\n\t\t\tif (filter !== null && filter.length > 0) {\r\n\t\t\t\turl += '?filter=' + encodeURIComponent(filter);\r\n\t\t\t}\r\n\r\n\t\t\tif (sourceData[sysProperties.OrderBy]) {\r\n\t\t\t\turl += (url.indexOf('?') === -1 ? '?orderby=' : '&orderby=') + encodeURIComponent(sourceData[sysProperties.OrderBy]);\r\n\t\t\t}\r\n\r\n\t\t\tif (sourceData[sysProperties.PageSize]) {\r\n\t\t\t\turl += (url.indexOf('?') === -1 ? '?pageSize=' : '&pageSize=') + sourceData[sysProperties.PageSize];\r\n\t\t\t\turl += '&page=' + (sourceData[sysProperties.PageNumber] || 0);\r\n\t\t\t}\r\n\r\n\t\t\t// Execute or skip service depending on filter/parameters existence\r\n\t\t\tisExec = url.includes('?filter=') || (source.bodyParameter || []).length > 0 ? true : false;\r\n\t\t} else if (source.entityName) {\r\n\t\t\tif (_isEmpty(sourceData.ObjectId)) {\r\n\t\t\t\tisExec = false;\r\n\t\t\t} else {\r\n\t\t\t\turl = 'api/WidgetCommon/GetData/' + context.WidgetId + '/' + sourceData.ObjectId + '?alias=' + source.path + '.' + source.entityName;\r\n\t\t\t}\r\n\t\t} else if (source.dataQueryId) {\r\n\t\t\turl = 'api/DataQuery/' + source.dataQueryId;\r\n\t\t\tif (!_isEmpty(sourceData.ObjectId)) {\r\n\t\t\t\turl += '/' + sourceData.ObjectId;\r\n\t\t\t} else if (Array.isArray(sourceData.FragmentIds) && sourceData.FragmentIds.length) {\r\n\t\t\t\tsource.httpMethod = mx.shell.HttpMethod.Post;\r\n\t\t\t\tsource.bodyParameter = ['FragmentIdsExpression'];\r\n\r\n\t\t\t\tsourceData.FragmentIdsExpression =\r\n\t\t\t\t\t'{\"Conditions\":[{\"Value\":[\"ID in (\\'' + sourceData.FragmentIds.join(\"','\") + '\\')\",\"Expression by ids\"],\"IsExpression\":true}],\"LogicalOperator\":1}';\r\n\t\t\t} else if (!_isEmpty(sourceData.$filter)) {\r\n\t\t\t\tsource.httpMethod = mx.shell.HttpMethod.Post;\r\n\t\t\t\tsource.bodyParameter = ['FilterDataExpression'];\r\n\r\n\t\t\t\tsourceData.FilterDataExpression = '{\"Conditions\":[{\"Value\":[\"' + sourceData.$filter + '\",\"Filter expression\"],\"IsExpression\":true}],\"LogicalOperator\":1}';\r\n\t\t\t} else if (!_isEmpty(sourceData.$parameters) || !_isEmpty(source.FilterExpression)) {\r\n\t\t\t\turl = `api/DataQuery/${context.WidgetId}/${source.id}/query`;\r\n\t\t\t\tsource.httpMethod = mx.shell.HttpMethod.Post;\r\n\r\n\t\t\t\tconst parameters = getParametersList(source, sourceData);\r\n\t\t\t\tsource.bodyParameter = ['Parameters'];\r\n\t\t\t\tsourceData.Parameters = `{\"Parameters\": ${JSON.stringify(parameters)}, \"LogicalOperator\": 1}`;\r\n\t\t\t}\r\n\r\n\t\t\tif (sourceData[sysProperties.OrderBy]) {\r\n\t\t\t\turl += '?orderby=' + encodeURIComponent(sourceData[sysProperties.OrderBy]);\r\n\t\t\t}\r\n\r\n\t\t\tif (sourceData[sysProperties.PageSize]) {\r\n\t\t\t\tconst paramPrefix = url.indexOf('?') === -1 ? '?' : '&';\r\n\t\t\t\turl += paramPrefix + 'pageSize=' + sourceData[sysProperties.PageSize] + '&page=' + (sourceData[sysProperties.PageNumber] || 0);\r\n\t\t\t}\r\n\t\t} else if (source.relativePath) {\r\n\t\t\tlet extraPath;\r\n\t\t\tconst extraQueryObject = {};\r\n\t\t\tif (sourceData.$options) {\r\n\t\t\t\tconst arrOpts = sourceData.$options.split('&');\r\n\t\t\t\tarrOpts.forEach(function (opt) {\r\n\t\t\t\t\tconst optKeyIdx = opt.indexOf('=');\r\n\t\t\t\t\tif (optKeyIdx !== -1) {\r\n\t\t\t\t\t\tconst optKey = opt.substring(0, optKeyIdx);\r\n\t\t\t\t\t\textraQueryObject[optKey] = opt.substring(optKeyIdx + 1);\r\n\r\n\t\t\t\t\t\tif (source.relativePath.lastIndexOf('&') !== -1) {\r\n\t\t\t\t\t\t\textraPath += '&';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\textraPath = (extraPath || '') + optKey + '={' + optKey + '}';\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst idxExtraPath = source.relativePath.indexOf(extraPath);\r\n\t\t\t\tif (idxExtraPath !== -1) {\r\n\t\t\t\t\tsource.relativePath = source.relativePath.substring(0, idxExtraPath);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst urlCfg = dataModelHelper.preparePath(source.relativePath, sourceData, source);\r\n\r\n\t\t\tif (sourceData.$options) {\r\n\t\t\t\tsource.relativePath += extraPath;\r\n\t\t\t\tObject.keys(extraQueryObject).forEach(function (extQueryNm) {\r\n\t\t\t\t\turlCfg.queryObject[extQueryNm] = extraQueryObject[extQueryNm];\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tisExec = urlCfg.execute;\r\n\t\t\tqueryObject = urlCfg.queryObject;\r\n\t\t\turl = urlCfg.path;\r\n\t\t}\r\n\r\n\t\treturn isExec ? executeSource(url, source, model, source.bodyParameter, queryObject, headers) : $q.reject('by condition');\r\n\r\n\t\tfunction executeSource(url, source, model, bodyParameter, queryObject, headers) {\r\n\t\t\tif (queryObject && typeof queryObject === 'object') {\r\n\t\t\t\tObject.keys(queryObject).forEach(function (key) {\r\n\t\t\t\t\tif (queryObject[key] instanceof Date) {\r\n\t\t\t\t\t\tqueryObject[key] = queryObject[key].toISOString();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconst sourceData = model[source.path] || {};\r\n\r\n\t\t\tsourceData[sourceStateName] = status.LOADING;\r\n\r\n\t\t\tconst method = source.httpMethod;\r\n\t\t\tconst defer = $q.defer();\r\n\t\t\tconst host = http.host(source.host);\r\n\t\t\tlet httpCall;\r\n\t\t\tconst isDownload = source.downloadSource === true;\r\n\r\n\t\t\tif (isDownload) {\r\n\t\t\t\theaders = headers || {};\r\n\t\t\t\theaders.responseType = 'arraybuffer';\r\n\t\t\t}\r\n\r\n\t\t\tconst skipNotifications = Boolean(sourceData.$catchError);\r\n\r\n\t\t\tif (method === mx.shell.HttpMethod.Post || method === mx.shell.HttpMethod.Put) {\r\n\t\t\t\tlet bodyObject = {};\r\n\r\n\t\t\t\tif (bodyParameter.length === 1) {\r\n\t\t\t\t\tbodyObject = sourceData[bodyParameter[0]];\r\n\t\t\t\t} else if (bodyParameter.length > 1) {\r\n\t\t\t\t\tbodyParameter.forEach(function (paramName) {\r\n\t\t\t\t\t\tangular.extend(bodyObject, sourceData[paramName]);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tlet methodName = method === mx.shell.HttpMethod.Post ? 'post' : 'put';\r\n\t\t\t\tif (bodyObject instanceof ArrayBuffer || bodyObject instanceof File /*file upload*/) {\r\n\t\t\t\t\tmethodName = 'upload';\r\n\t\t\t\t}\r\n\t\t\t\tconst httpCallFn = host[methodName].bind(host);\r\n\r\n\t\t\t\tprofiler.sourceExecuting(source.name, url, {\r\n\t\t\t\t\tmethod: '#' + methodName,\r\n\t\t\t\t\tbodyObject: bodyObject,\r\n\t\t\t\t\tqueryObject: queryObject,\r\n\t\t\t\t\theaders: headers,\r\n\t\t\t\t});\r\n\r\n\t\t\t\thttpCall = httpCallFn(url, bodyObject, headers, queryObject, skipNotifications, true);\r\n\t\t\t} else if (method === mx.shell.HttpMethod.Get) {\r\n\t\t\t\tprofiler.sourceExecuting(source.name, url, {\r\n\t\t\t\t\tmethod: '#get',\r\n\t\t\t\t\tqueryObject: queryObject,\r\n\t\t\t\t\theaders: headers,\r\n\t\t\t\t});\r\n\r\n\t\t\t\thttpCall = host.get(url, queryObject, headers, skipNotifications, true);\r\n\t\t\t} else if (method === mx.shell.HttpMethod.Delete) {\r\n\t\t\t\tprofiler.sourceExecuting(source.name, url, {\r\n\t\t\t\t\tmethod: '#delete',\r\n\t\t\t\t\tqueryObject: queryObject,\r\n\t\t\t\t\theaders: headers,\r\n\t\t\t\t});\r\n\r\n\t\t\t\thttpCall = host.remove(url, queryObject, headers, skipNotifications, false);\r\n\t\t\t}\r\n\r\n\t\t\tif (httpCall) {\r\n\t\t\t\thttpCall.then(\r\n\t\t\t\t\tfunction (response) {\r\n\t\t\t\t\t\tif (isDownload) {\r\n\t\t\t\t\t\t\tif (downloadHelpService.downloadContent(response, response.data)) {\r\n\t\t\t\t\t\t\t\tsourceData[sourceStateName] = status.LOADED;\r\n\t\t\t\t\t\t\t\tsourceData.$errorMessage = '';\r\n\t\t\t\t\t\t\t\tdefer.resolve();\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tsourceData[sourceStateName] = status.REJECTED;\r\n\t\t\t\t\t\t\t\tsourceData.$errorMessage = internationalization.get('solutionBuilderAgent.errors.no_file_data');\r\n\t\t\t\t\t\t\t\tdefer.reject(internationalization.get('solutionBuilderAgent.errors.no_file_data'));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tbackgroundProcessesService.addTrackedProcess(response.data);\r\n\t\t\t\t\t\t\tdataModelHelper.applySourceResult(model, response.data, source, response);\r\n\t\t\t\t\t\t\tsourceData.$errorMessage = '';\r\n\t\t\t\t\t\t\tsourceData[sourceStateName] = status.LOADED;\r\n\t\t\t\t\t\t\tdefer.resolve();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfunction (error) {\r\n\t\t\t\t\t\tsourceData[sourceStateName] = status.REJECTED;\r\n\t\t\t\t\t\tsourceData.$errorMessage = error.message;\r\n\t\t\t\t\t\tdefer.reject(error.message);\r\n\t\t\t\t\t\tif (!sourceData.$catchError) {\r\n\t\t\t\t\t\t\treturn $q.reject(error);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tsourceData[sourceStateName] = status.REJECTED;\r\n\t\t\t\tsourceData.$errorMessage = internationalization.get('solutionBuilderAgent.errors.method_not_called');\r\n\t\t\t\tdefer.reject(internationalization.get('solutionBuilderAgent.errors.method_not_called'));\r\n\t\t\t}\r\n\t\t\treturn defer.promise;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getParametersList(source, sourceData) {\r\n\t\tconst parametersSource = source && source.items && source.items.find((prop) => prop.name === mx.SolutionBuilderAgent.DataModelSystemProperty.Parameters);\r\n\t\tconst parametersTypeMap = parametersSource\r\n\t\t\t? parametersSource.items.map((param) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tparamName: param.name,\r\n\t\t\t\t\t\t// todo: there is a problem with types conversion while saving the parameters from model (see Assign Model -> Take Value From)\r\n\t\t\t\t\t\tparamType: param.type === 'ObjectReference' ? dataTypes.GuidType : dataTypes[param.type],\r\n\t\t\t\t\t};\r\n\t\t\t })\r\n\t\t\t: [];\r\n\t\treturn sourceData && sourceData.$parameters\r\n\t\t\t? Object.keys(sourceData.$parameters).map((param) => {\r\n\t\t\t\t\tconst mapping = parametersTypeMap.find((map) => map.paramName === param);\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tName: `@${param}`,\r\n\t\t\t\t\t\tValue: sourceData.$parameters[param],\r\n\t\t\t\t\t\tType: mapping ? mapping.paramType : dataTypes['Unknown'],\r\n\t\t\t\t\t};\r\n\t\t\t })\r\n\t\t\t: [];\r\n\t}\r\n\r\n\tfunction extendSourceResult(model, applyPath, parent, property, data) {\r\n\t\tdataModelHelper.initRelations(data, parent[property]);\r\n\t\tmodel.$calcProperties.$$merge(parent, property, data, applyPath);\r\n\t\tmodel.$calcProperties.$$applyTo(applyPath, model, dataModelHelper.additionalData, true);\r\n\t}\r\n\r\n\tfunction reloadSourceByPath(sourceName, dataModel, widgetId, requestHeaders) {\r\n\t\tconst headers = requestHeaders || {};\r\n\t\tconst sourcesDescriptor = _sourceDescriptors[widgetId];\r\n\r\n\t\tif (sourceName && sourcesDescriptor) {\r\n\t\t\tlet targetSource = null;\r\n\r\n\t\t\tsourcesDescriptor.some(function (sd) {\r\n\t\t\t\tif (sd.path === sourceName) {\r\n\t\t\t\t\ttargetSource = sd;\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (targetSource) {\r\n\t\t\t\treturn reloadSource(targetSource, dataModel, headers);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn $q.when(null);\r\n\t}\r\n\r\n\tfunction createStaticSource(structure, forRuntime, specialOptions) {\r\n\t\tconst descriptor = new mx.SolutionBuilderAgent.DataModelSourceDescriptor(\r\n\t\t\tprepareContractOptions(structure.ContractDescriptor, mx.SolutionBuilderAgent.DataModelPropertyDirection.BOTH)\r\n\t\t);\r\n\r\n\t\treturn new mx.SolutionBuilderAgent.DataModelSource(descriptor, null, structure, forRuntime, specialOptions);\r\n\t}\r\n\r\n\tfunction prepareContractOptions(contract, contractDirection) {\r\n\t\tif (contract) {\r\n\t\t\tconst res = { Direction: contractDirection || mx.SolutionBuilderAgent.DataModelPropertyDirection.OUT };\r\n\r\n\t\t\tif (typeof contract === 'string') {\r\n\t\t\t\tres.Name = 'Data Query Model';\r\n\t\t\t\tres.Path = 'DataQuery';\r\n\t\t\t\tres.HttpMethod = mx.shell.HttpMethod.Get;\r\n\t\t\t} else if (contract.Type) {\r\n\t\t\t\tres.Name = contract.Name || contract.Type;\r\n\t\t\t\tres.Path = contract.Path || res.Name;\r\n\t\t\t\tres.HttpMethod = contract.HttpMethod || mx.shell.HttpMethod.Get;\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\tres.StaticSource = true;\r\n\t\t\treturn res;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction extendDataModel(model, extensions) {\r\n\t\tif (extensions && extensions.length && model && model.sources) {\r\n\t\t\textensions.forEach(function (propertyExt) {\r\n\t\t\t\tmodel.sources.some(function (source) {\r\n\t\t\t\t\tconst parent = source.find(propertyExt.ParentPath || propertyExt.ParentName, source.removed);\r\n\r\n\t\t\t\t\tif (parent) {\r\n\t\t\t\t\t\tparent.addProperty(propertyExt.Name, angular.copy(propertyExt), { Extended: true }, mx.SolutionBuilderAgent.DataModelPropertyDirection.NONE);\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn model;\r\n\t}\r\n\r\n\tfunction extendDataModelSource(source, extensions) {\r\n\t\tif (extensions && extensions.length) {\r\n\t\t\textensions.forEach(function (propertyExt) {\r\n\t\t\t\tconst parent = source.find(propertyExt.ParentPath || propertyExt.ParentName, source.removed);\r\n\r\n\t\t\t\tif (parent) {\r\n\t\t\t\t\tparent.addProperty(propertyExt.Name, angular.copy(propertyExt), { Extended: true }, mx.SolutionBuilderAgent.DataModelPropertyDirection.NONE);\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction saveCalculatedField(context, property, isExtra) {\r\n\t\tcontext._dataModelOptions = context._dataModelOptions || {};\r\n\t\tdelete property.Direction;\r\n\t\tconst propertiesObj = isExtra ? context._dataModelOptions.ExtraProperties : context._dataModelOptions.Properties;\r\n\r\n\t\tif (\r\n\t\t\t!propertiesObj.some(function (itm) {\r\n\t\t\t\tconst itmPath = itm.ParentPath + '.' + itm.Name;\r\n\r\n\t\t\t\tif (itmPath === property.Path) {\r\n\t\t\t\t\t// Update\r\n\t\t\t\t\titm.Parameters = property.Parameters;\r\n\t\t\t\t\titm.Expression = property.Expression;\r\n\t\t\t\t\titm.Description = property.Description;\r\n\t\t\t\t\titm.EditMode = property.EditMode || 1;\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t) {\r\n\t\t\t// Add\r\n\t\t\tpropertiesObj.push(new mx.SolutionBuilderAgent.DataModelPropertyDescriptor(property));\r\n\t\t}\r\n\t}\r\n\r\n\tfunction deleteCalculatedField(dataModelItem, context) {\r\n\t\treturn context.dataModelPromise.then(function (dataModel) {\r\n\t\t\tif (\r\n\t\t\t\t(dataModel.sources || []).some(function (source) {\r\n\t\t\t\t\treturn deleteFieldByPath(source, dataModelItem.path);\r\n\t\t\t\t})\r\n\t\t\t) {\r\n\t\t\t\tlet i = 0,\r\n\t\t\t\t\tj = 0;\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\tcontext._dataModelOptions.Properties.some(function (property) {\r\n\t\t\t\t\t\tif (property.Path === dataModelItem.path) {\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\ti++;\r\n\t\t\t\t\t})\r\n\t\t\t\t) {\r\n\t\t\t\t\tcontext._dataModelOptions.Properties.splice(i, 1);\r\n\r\n\t\t\t\t\tcontext._dataModelOptions.Properties = context._dataModelOptions.Properties.filter(function (property) {\r\n\t\t\t\t\t\treturn property.Path.indexOf(dataModelItem.path + '.') !== 0;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t} else if (\r\n\t\t\t\t\tcontext._dataModelOptions.ExtraProperties.some(function (property) {\r\n\t\t\t\t\t\tif (property.Path === dataModelItem.path) {\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tj++;\r\n\t\t\t\t\t})\r\n\t\t\t\t) {\r\n\t\t\t\t\tcontext._dataModelOptions.ExtraProperties.splice(j, 1);\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction deleteFieldByPath(parent, path) {\r\n\t\tlet deleted = false;\r\n\t\tlet itemIndex;\r\n\r\n\t\tif (parent && parent.path && path) {\r\n\t\t\tif (parent.items) {\r\n\t\t\t\titemIndex = 0;\r\n\t\t\t\tparent.items.some(function (item) {\r\n\t\t\t\t\tif (item.path === path) {\r\n\t\t\t\t\t\tif (item.overridden) {\r\n\t\t\t\t\t\t\titem.editMode = 0;\r\n\t\t\t\t\t\t\titem.expression = '';\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tparent.items.splice(itemIndex, 1);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdeleted = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\titemIndex++;\r\n\t\t\t\t\t\tdeleted = deleteFieldByPath(item, path);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn deleted;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn deleted;\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.DataModelService#getDataQueryModel\r\n\t *\r\n\t * @description\r\n\t * Returns data source by id\r\n\t * @param {string} id - DataSource id\r\n\t * @param {boolean} forRuntime - Flag indicating when we call current method, in design time or in runtime. 'true' by default\r\n\t * @returns {promise} result - a promise that resolves data.\r\n\t */\r\n\tfunction getDataQueryModel(id, forRuntime) {\r\n\t\tif (!id) {\r\n\t\t\tthrow new Error(internationalization.get('solutionBuilderAgent.errors.dataquery_not_provided'));\r\n\t\t}\r\n\t\tif (typeof forRuntime === 'undefined') {\r\n\t\t\tforRuntime = true;\r\n\t\t}\r\n\r\n\t\tconst key = 'DataQueryModel_' + id;\r\n\t\tconst model = cache.data[key];\r\n\r\n\t\treturn (\r\n\t\t\tmodel ||\r\n\t\t\t(cache.data[key] = $q.all([helpService.getDqInfo(id), columnDefinitionService.getGridDefinitionById(id)]).then(function (res) {\r\n\t\t\t\tconst structure = res[0];\r\n\t\t\t\tconst columnsInfo = res[1];\r\n\r\n\t\t\t\tconst descriptor = new mx.SolutionBuilderAgent.DataModelSourceDescriptor(\r\n\t\t\t\t\tprepareContractOptions(structure.ContractDescriptor, mx.SolutionBuilderAgent.DataModelPropertyDirection.BOTH)\r\n\t\t\t\t);\r\n\r\n\t\t\t\tlet requestContract = null;\r\n\r\n\t\t\t\tif (columnsInfo.ServiceInfo) {\r\n\t\t\t\t\tconst operationInfo = _.find(columnsInfo.ServiceInfo.Operations, { SupportedOperation: 4 });\r\n\r\n\t\t\t\t\tif (operationInfo) {\r\n\t\t\t\t\t\trequestContract = operationInfo.RequestContract;\r\n\t\t\t\t\t\t// Remove oData parameters\r\n\t\t\t\t\t\tconst requestParams = requestContract.UsedTypes.RequestContract.Descriptor;\r\n\t\t\t\t\t\tconst keys = [];\r\n\r\n\t\t\t\t\t\t_.forEach(requestParams, function (value, key) {\r\n\t\t\t\t\t\t\tif (value.Type && value.Type.indexOf('System_Web_Http_OData') === 0) {\r\n\t\t\t\t\t\t\t\tkeys.push(key);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tkeys.forEach(function (key) {\r\n\t\t\t\t\t\t\tdelete requestParams[key];\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tconst source = new mx.SolutionBuilderAgent.DataModelSource(descriptor, requestContract, null, forRuntime);\r\n\r\n\t\t\t\tsource.addSourceState();\r\n\t\t\t\tsource.addInactive();\r\n\r\n\t\t\t\tconst response = structure;\r\n\r\n\t\t\t\tif (response && response.ContractDescriptor && response.ContractDescriptor.Type !== 'System_Void') {\r\n\t\t\t\t\tconst returnProperty = source.addProperty(\r\n\t\t\t\t\t\tmx.SolutionBuilderAgent.DataModelSystemProperty.Return,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tType: response.ContractDescriptor,\r\n\t\t\t\t\t\t\tIsArray: true,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tresponse.UsedTypes,\r\n\t\t\t\t\t\tmx.SolutionBuilderAgent.DataModelPropertyDirection.OUT\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\treturnProperty.addSimpleProperty(mx.SolutionBuilderAgent.DataModelSystemProperty.Item, 'ObjectType', mx.SolutionBuilderAgent.DataModelPropertyDirection.OUT, {\r\n\t\t\t\t\t\tTitle: 'Data Query Item',\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn source;\r\n\t\t\t}))\r\n\t\t);\r\n\t}\r\n\r\n\tfunction getInputParametersModel(inputParameters, extraProperties) {\r\n\t\tconst promises = [];\r\n\r\n\t\tconst source = new mx.SolutionBuilderAgent.DataModelSource(\r\n\t\t\t{\r\n\t\t\t\tStaticSource: true,\r\n\t\t\t\tPath: 'Parameters',\r\n\t\t\t\tName: 'Parameters',\r\n\t\t\t\tProperties: [],\r\n\t\t\t},\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\tfalse\r\n\t\t);\r\n\t\tsource.isStatic = true;\r\n\r\n\t\tinputParameters.forEach(function (property) {\r\n\t\t\tconst entityType = property.Type === mx.SolutionBuilderAgent.DataModelTypes.Entity.id && mx.SolutionBuilderAgent.DataModelTypes.Entity.name;\r\n\t\t\tconst dataDefinitionType = property.Type === mx.SolutionBuilderAgent.DataModelTypes.DataDefinition.id && mx.SolutionBuilderAgent.DataModelTypes.DataDefinition.name;\r\n\r\n\t\t\tif (entityType || dataDefinitionType) {\r\n\t\t\t\tpromises.push(\r\n\t\t\t\t\thelpService[entityType ? 'getCiInfo' : 'getDdInfo'](property.EntityName).then(\r\n\t\t\t\t\t\tfunction (structure) {\r\n\t\t\t\t\t\t\tconst options = angular.extend(property, {\r\n\t\t\t\t\t\t\t\tType: property.EntityName,\r\n\t\t\t\t\t\t\t\tDataDefinition: dataDefinitionType ? property.EntityName : undefined,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tconst dataModelProperty = source.addProperty(property.Name, options, structure.UsedTypes, mx.SolutionBuilderAgent.DataModelPropertyDirection.OUT);\r\n\t\t\t\t\t\t\tdataModelProperty.type = property.EntityName;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfunction (error) {\r\n\t\t\t\t\t\t\treturn $q.reject(error);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t)\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tsource.addProperty(property.Name, property, null, mx.SolutionBuilderAgent.DataModelPropertyDirection.OUT);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn $q.all(promises).then(function () {\r\n\t\t\tadjustEntityProperties(source, extraProperties);\r\n\t\t\treturn source;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.DataModelService#getEntityModel\r\n\t *\r\n\t * @description\r\n\t * Returns business object fields its type\r\n\t * @param {string} entityName - object type\r\n\t * @param {boolean} forRuntime - Flag indicating when we call current method, in design time or in runtime. 'true' by default\r\n\t * @param {array} extraProperties - Array of extra server properties for entity source\r\n\t * @returns {promise} result - a promise that resolves data.\r\n\t */\r\n\tfunction getEntityModel(entityName, forRuntime, extraProperties) {\r\n\t\tif (!entityName) {\r\n\t\t\tthrow new Error(internationalization.get('solutionBuilderAgent.errors.entity_name_not_provided'));\r\n\t\t}\r\n\t\tif (typeof forRuntime === 'undefined') {\r\n\t\t\tforRuntime = true;\r\n\t\t}\r\n\r\n\t\treturn helpService.getCiInfo(entityName).then(\r\n\t\t\tfunction (structure) {\r\n\t\t\t\tconst res = createStaticSource(structure, forRuntime, { entityName: entityName });\r\n\r\n\t\t\t\tadjustEntityProperties(res, extraProperties);\r\n\t\t\t\treturn res;\r\n\t\t\t},\r\n\t\t\tfunction (error) {\r\n\t\t\t\treturn $q.reject(error);\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tfunction adjustEntityProperties(source, extraProperties) {\r\n\t\tif (Array.isArray(source.items)) {\r\n\t\t\tsource.items.forEach(function (prop) {\r\n\t\t\t\tadjustEntityProperties(prop);\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (source.type && source.type === 'VirtualRelationEnd' && source.relationsConfig.otherSideIsMany()) {\r\n\t\t\tsource.addSimpleProperty(\r\n\t\t\t\tmx.SolutionBuilderAgent.DataModelSystemProperty.Count,\r\n\t\t\t\tmx.SolutionBuilderAgent.DataModelTypes.IntType.name,\r\n\t\t\t\tmx.SolutionBuilderAgent.DataModelPropertyDirection.NONE,\r\n\t\t\t\t{ Description: source.name + ' Count' }\r\n\t\t\t);\r\n\t\t}\r\n\t\tif (source.entityName) {\r\n\t\t\tsource.items.forEach(function (entityClassItem) {\r\n\t\t\t\tif (entityClassItem.isArray) {\r\n\t\t\t\t\tentityClassItem.isMultiFragment = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (extraProperties && extraProperties.length) {\r\n\t\t\textraProperties.forEach(function (prop) {\r\n\t\t\t\tconst parent = source.find(prop.ParentPath);\r\n\r\n\t\t\t\tif (parent) {\r\n\t\t\t\t\tprop.Direction = mx.SolutionBuilderAgent.DataModelPropertyDirection.OUT;\r\n\t\t\t\t\tprop.ParentItem = parent;\r\n\t\t\t\t\tconst extraItem = new mx.SolutionBuilderAgent.DataModelProperty(prop);\r\n\r\n\t\t\t\t\tparent.items.push(extraItem);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getCustomWidgetModel(controlDescriptorId) {\r\n\t\tconst attributesSource = new mx.SolutionBuilderAgent.DataModelSource({\r\n\t\t\tStaticSource: true,\r\n\t\t\tPath: 'WidgetAttributes',\r\n\t\t\tName: 'Widget Attributes',\r\n\t\t\tProperties: [],\r\n\t\t});\r\n\r\n\t\tattributesSource.path = 'WidgetAttributes';\r\n\t\tattributesSource.isStatic = true;\r\n\r\n\t\treturn controlDescriptorService.getProperties(controlDescriptorId).then(function (properties) {\r\n\t\t\tproperties.forEach(function (property) {\r\n\t\t\t\tattributesSource.addProperty(\r\n\t\t\t\t\tproperty.camelCasedName,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tName: property.camelCasedName,\r\n\t\t\t\t\t\tTitle: property.title,\r\n\t\t\t\t\t\tDirection: property.direction,\r\n\t\t\t\t\t\tIsArray: property.isArray,\r\n\t\t\t\t\t\tType: property.type,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tproperty.direction\r\n\t\t\t\t);\r\n\t\t\t});\r\n\r\n\t\t\treturn attributesSource;\r\n\t\t});\r\n\t}\r\n}\r\n","/**\r\n * @ngdoc service\r\n * @name mx.SolutionBuilderAgent.DataQueryService\r\n * @module mx.SolutionBuilderAgent\r\n *\r\n * @description\r\n * A service provides methods for retrieving data sources.\r\n */\r\nDataQueryService.$inject = ['$q', 'mx.SolutionBuilderAgent.Http', 'mx.shell.DownloadHelpService'];\r\nexport function DataQueryService($q, http, downloadHelpService) {\r\n\treturn {\r\n\t\tgetFilters: getFilters,\r\n\t\tgetFilter: getFilter,\r\n\t\tcreateFilter: createFilter,\r\n\t\tupdateFilter: updateFilter,\r\n\t\tremoveFilter: removeFilter,\r\n\t\tpublishFilter: updateFilter,\r\n\t\tunpublishFilter: updateFilter,\r\n\t\tgetRelationItems: getRelationItems,\r\n\t\tgetRelationItemsWithTotalCount: getRelationItemsWithTotalCount,\r\n\t\texportRelationItems: exportRelationItems,\r\n\t\tgetRelationItemsCount: getRelationItemsCount,\r\n\t\tgetMultiFragmentData: getMultiFragmentData,\r\n\t\tgetMultiFragmentDataCount: getMultiFragmentDataCount,\r\n\t\tgetGlobalSearchData: getGlobalSearchData,\r\n\t\tevaluateColumnExpression: evaluateColumnExpression,\r\n\t\texecuteMultiFragmentExpressions: executeMultiFragmentExpressions,\r\n\t};\r\n\r\n\tfunction executeMultiFragmentExpressions(expressionRequest) {\r\n\t\treturn http.post('api/dataQuery/executeMultiFragmentExpressions', expressionRequest);\r\n\t}\r\n\r\n\tfunction getGlobalSearchData(queryInfo) {\r\n\t\treturn http.post('api/dataQuery/globalSearch/', queryInfo).then();\r\n\t}\r\n\r\n\tfunction getFilter(filterId) {\r\n\t\treturn http.get(`api/dataQuery/filter/${filterId}`);\r\n\t}\r\n\r\n\tfunction getFilters(dataQueryId, widgetId) {\r\n\t\treturn http.get(`api/dataQuery/${dataQueryId}/filters${widgetId ? `?widget=${widgetId}` : ''}`);\r\n\t}\r\n\r\n\tfunction createFilter(filter) {\r\n\t\treturn http.post('api/dataQuery/filter/create', filter);\r\n\t}\r\n\r\n\tfunction updateFilter(filter) {\r\n\t\treturn http.post('api/dataQuery/filter/update', filter);\r\n\t}\r\n\r\n\tfunction removeFilter(filterId) {\r\n\t\treturn http.get(`api/dataQuery/filter/${filterId}/remove`);\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.DataQueryService#evaluateColumnExpression\r\n\t *\r\n\t * @description\r\n\t * Evaluates the validity of the data expression\r\n\t *\r\n\t *\r\n\t * @param {string} entityClass - Name of the Entity class.\r\n\t * @param {string} expr - expression for evaluation.\r\n\t * @param {guid} serviceOperationId - service operation Id.\r\n\t *\r\n\t * @returns {string} null if expression is invalid, or name of data type of the expression result\r\n\t */\r\n\tfunction evaluateColumnExpression(entityClass, expr, serviceOperationId, isCondition, placeholders) {\r\n\t\tif (expr) {\r\n\t\t\treturn http.get('api/dataQuery/evaluateExpression', {\r\n\t\t\t\tentityClass: entityClass,\r\n\t\t\t\texpr: expr,\r\n\t\t\t\tserviceOperationId: serviceOperationId,\r\n\t\t\t\tisCondition: isCondition,\r\n\t\t\t\tplaceholders: placeholders,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn $q.when(null);\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.DataQueryService#getRelationItems\r\n\t *\r\n\t * @description\r\n\t * Gets relation items.\r\n\t *\r\n\t * @param {object} request - data, needed to get relation items.\r\n\t *\r\n\t * @returns {promise} - A list of relation items. Resolves as an array of objects.\r\n\t */\r\n\tfunction getRelationItems(request) {\r\n\t\tconst requestInfo = getRelationItemsRequest(request);\r\n\r\n\t\treturn http.post('api/dataQuery/relationItems', requestInfo);\r\n\t}\r\n\r\n\tasync function getRelationItemsWithTotalCount(request) {\r\n\t\tconst requestInfo = getRelationItemsRequest(request);\r\n\t\tconst response = await http.post('api/dataQuery/relationItems', requestInfo, {}, {}, false, true);\r\n\t\treturn {\r\n\t\t\titems: response.data,\r\n\t\t\ttotalCount: Number(response.headers('TotalCount') || ''),\r\n\t\t};\r\n\t}\r\n\r\n\tfunction exportRelationItems(request) {\r\n\t\tconst requestInfo = getRelationItemsRequest(request);\r\n\r\n\t\tconst headers = {\r\n\t\t\tresponseType: 'arraybuffer',\r\n\t\t};\r\n\r\n\t\treturn http.post('api/dataObject/exportObjectRelations', requestInfo, headers, {}, false, true).then(function (response) {\r\n\t\t\tdownloadHelpService.downloadContent(response, response.data);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getRelationItemsRequest(request) {\r\n\t\treturn Object.assign(\r\n\t\t\t{\r\n\t\t\t\tDataQueryName: request.dataQueryName,\r\n\t\t\t\tObjectId: request.objectId || undefined,\r\n\t\t\t\tFragmentId: request.fragmentId,\r\n\t\t\t\tClientTimeOffset: new Date().getTimezoneOffset(),\r\n\t\t\t\tEntityClassName: request.entityClassName,\r\n\t\t\t\tEntityTypeName: request.allowedTypes,\r\n\t\t\t\tRelationName: request.relationName,\r\n\t\t\t\tAddedRelations: listAsCsv(request.addedRelations),\r\n\t\t\t\tRemovedRelations: listAsCsv(request.removedRelations),\r\n\t\t\t\tUseObjectId: request.useObjectId, // means that AddedRelations and RemovedRelations use objectId instead of fragmentId\r\n\t\t\t\tAdditionalFilter: request.additionalFilter,\r\n\t\t\t\tFilters: request.filters,\r\n\t\t\t\tPageSize: request.pageSize,\r\n\t\t\t\tPage: request.pageNumber > 0 ? request.pageNumber - 1 : 0, // Todo: as backend use page-1\r\n\t\t\t\tSearch: request.search || '',\r\n\t\t\t\tOrderBy: request.orderBy,\r\n\t\t\t\tColumns: request.columns,\r\n\t\t\t\tArchived: request.archived,\r\n\t\t\t\tLookupFor: request.lookupFor || '',\r\n\t\t\t\tResetFilter: Boolean(request.resetFilter),\r\n\t\t\t},\r\n\t\t\trequest.filter?.toRequest() || {}\r\n\t\t);\r\n\t}\r\n\r\n\tfunction getRelationItemsCount(request) {\r\n\t\tconst requestInfo = getRelationItemsRequest(request);\r\n\t\tdelete requestInfo.page;\r\n\t\tdelete requestInfo.pageSize;\r\n\t\tdelete requestInfo.orderBy;\r\n\r\n\t\treturn http.post('api/dataQuery/relationItems/count', requestInfo);\r\n\t}\r\n\r\n\tfunction getMultiFragmentData(dataQueryId, objectId) {\r\n\t\treturn dataQueryId && objectId ? http.get(`api/dataQuery/${dataQueryId}/${objectId}`) : $q.reject('wrong attributes');\r\n\t}\r\n\r\n\tfunction getMultiFragmentDataCount(dataQueryId, objectId) {\r\n\t\treturn dataQueryId && objectId ? http.get(`api/dataQuery/${dataQueryId}/${objectId}/count`) : $q.reject('wrong attributes');\r\n\t}\r\n\r\n\tfunction listAsCsv(list) {\r\n\t\tif (!list) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t\treturn Array.isArray(list) ? list.join() : list;\r\n\t}\r\n}\r\n","/**\r\n * @ngdoc service\r\n * @name mx.SolutionBuilderAgent.FilterExpressionService\r\n * @module mx.SolutionBuilderAgent\r\n *\r\n * @description\r\n * A service provides methods for evaluating filter expressions.\r\n */\r\nimport type { HttpService } from '../../../App/services/http-service';\r\nimport { DataTypes } from '../model/enumerations';\r\n\r\nexport interface IValidationResultParameter {\r\n\tIsArray: boolean;\r\n\tName: string;\r\n\tParameterType: DataTypes;\r\n}\r\n\r\nexport interface ValidationResult {\r\n\tIsValid?: boolean;\r\n\tErrorMessage?: string;\r\n\tParameters: Array;\r\n}\r\n\r\nexport class FilterExpressionService {\r\n\tstatic $inject = ['mx.SolutionBuilderAgent.Http'];\r\n\tconstructor(private readonly http: HttpService) {}\r\n\r\n\tasync validateFilterExpressionDataQuery(expression: string | null, dataQueryId: string) {\r\n\t\tif (!expression) {\r\n\t\t\treturn this.createValidateResult({ IsValid: true, Parameters: [] });\r\n\t\t}\r\n\t\tconst result = await this.http.get(`api/schema/evaluateparameterexpressiondataquery?dataqueryid=${dataQueryId}&expr=${encodeURIComponent(expression)}`);\r\n\t\treturn this.createValidateResult(result);\r\n\t}\r\n\r\n\tasync validateFilterExpressionEntityClass(expression: string | null, entityclass: string) {\r\n\t\tif (!expression) {\r\n\t\t\treturn this.createValidateResult({ IsValid: true, Parameters: [] });\r\n\t\t}\r\n\t\tconst result = await this.http.get(`api/schema/evaluateparameterexpressionentityclass?entityclass=${entityclass}&expr=${encodeURIComponent(expression)}`);\r\n\t\treturn this.createValidateResult(result);\r\n\t}\r\n\r\n\tasync getParametersForExpressionDataQuery(expression: string, dataQueryId: string) {\r\n\t\treturn await this.http.get(`api/schema/evaluateparameterexpressiondataquery?dataqueryid=${dataQueryId}&expr=${encodeURIComponent(expression)}`);\r\n\t}\r\n\r\n\tasync getParametersForExpressionEntityClass(expression: string, entityclass: string) {\r\n\t\treturn await this.http.get(`api/schema/evaluateparameterexpressionentityclass?entityclass=${entityclass}&expr=${encodeURIComponent(expression)}`);\r\n\t}\r\n\r\n\tasync getParametersForExpression(expression: string) {\r\n\t\treturn await this.http.get(`api/schema/evaluateParameterExpression?expr=${encodeURIComponent(expression)}`);\r\n\t}\r\n\r\n\tprivate createValidateResult(data: ValidationResult) {\r\n\t\treturn { isValid: !!data.IsValid, message: data.ErrorMessage || '' };\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nDataService.$inject = ['mx.SolutionBuilderAgent.Http'];\r\nexport function DataService(http) {\r\n\tvar fragmentUrl = 'api/data/fragments/';\r\n\tvar objectUrl = 'api/data/objects/';\r\n\r\n\treturn {\r\n\t\tFragments: {\r\n\t\t\tadd: addFragment,\r\n\t\t\taddRelation: addFragmentRelation,\r\n\t\t\tget: getFragment,\r\n\t\t\tgetList: getFragmentsList,\r\n\t\t\tgetRelationList: getFragmentRelationList,\r\n\t\t\tupdate: updateFragment,\r\n\t\t\tdelete: deleteFragment,\r\n\t\t\tdeleteRelation: deleteFragmentRelation,\r\n\t\t},\r\n\t\tObjects: {\r\n\t\t\tadd: addObject,\r\n\t\t\tget: getObject,\r\n\t\t\tupdate: updateObject,\r\n\t\t\tdelete: deleteObject,\r\n\t\t},\r\n\t};\r\n\r\n\tfunction addFragment(ddName, fragment) {\r\n\t\treturn http.post(fragmentUrl + ddName, fragment).then();\r\n\t}\r\n\r\n\tfunction addFragmentRelation(ddName, fragmentId, relationName, relationFragmentId) {\r\n\t\treturn http.post(fragmentUrl + ddName + '/' + fragmentId + '/' + relationName + '/' + relationFragmentId).then();\r\n\t}\r\n\r\n\tfunction getFragment(ddName, fragmentId) {\r\n\t\treturn http.get(fragmentUrl + ddName + '/' + fragmentId).then();\r\n\t}\r\n\r\n\tfunction getFragmentsList(ddName, request) {\r\n\t\treturn http.get(fragmentUrl + ddName, request).then();\r\n\t}\r\n\r\n\tfunction getFragmentRelationList(ddName, fragmentId, relationName, request) {\r\n\t\treturn http.get(fragmentUrl + ddName + '/' + fragmentId + '/' + relationName, request).then();\r\n\t}\r\n\r\n\tfunction updateFragment(ddName, fragment) {\r\n\t\treturn http.put(fragmentUrl + ddName, fragment).then();\r\n\t}\r\n\r\n\tfunction deleteFragment(ddName, fragmentId) {\r\n\t\treturn http.remove(fragmentUrl + ddName + '/' + fragmentId).then();\r\n\t}\r\n\r\n\tfunction deleteFragmentRelation(ddName, fragmentId, relationName, relationFragmentId) {\r\n\t\treturn http.remove(fragmentUrl + ddName + '/' + fragmentId + '/' + relationName + '/' + relationFragmentId).then();\r\n\t}\r\n\r\n\tfunction addObject(ciName, object) {\r\n\t\treturn http.post(objectUrl + ciName, object).then();\r\n\t}\r\n\r\n\tfunction getObject(ciName, objectId, full) {\r\n\t\tvar queryFull = full ? '?full=true' : '';\r\n\t\treturn http.get(objectUrl + ciName + '/' + objectId + queryFull).then();\r\n\t}\r\n\r\n\tfunction updateObject(ciName, object, full) {\r\n\t\tvar queryFull = full ? '?full=true' : '';\r\n\t\treturn http.put(objectUrl + ciName + queryFull, object).then();\r\n\t}\r\n\r\n\tfunction deleteObject(ciName, objectId) {\r\n\t\treturn http.remove(objectUrl + ciName + '/' + objectId).then();\r\n\t}\r\n}\r\n","import { EventCodes } from '../../../App/model/event-codes';\r\n\r\n/**\r\n * @ngdoc service\r\n * @name mx.SolutionBuilderAgent.DeepLinkingService\r\n * @module mx.SolutionBuilderAgent\r\n *\r\n * @description\r\n * A service provides a way for opening most common dialogs from URL\r\n */\r\nexport class DeepLinkingService {\r\n\tstatic $inject = [\r\n\t\t'$stateParams',\r\n\t\t'mx.shell.EventService',\r\n\t\t'mx.SolutionBuilderAgent.MixedActionHelper',\r\n\t\t'mx.SolutionBuilderAgent.DialogOpenerService',\r\n\t\t'mx.shell.SidePanelService',\r\n\t\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n\t\t'mx.SolutionBuilderAgent.WidgetManager',\r\n\t\t'mx.shell.AppsService',\r\n\t\t'mx.shell.RoutingService',\r\n\t\t'mx.internationalization',\r\n\t];\r\n\r\n\tconstructor($stateParams, eventService, mixedActionHelper, dialogOpener, sidePanelService, contentWidgetService, widgetManager, applicationService, routingService, i18n) {\r\n\t\tObject.assign(this, {\r\n\t\t\t$stateParams,\r\n\t\t\teventService,\r\n\t\t\tmixedActionHelper,\r\n\t\t\tdialogOpener,\r\n\t\t\tsidePanelService,\r\n\t\t\tcontentWidgetService,\r\n\t\t\twidgetManager,\r\n\t\t\tapplicationService,\r\n\t\t\troutingService,\r\n\t\t\ti18n,\r\n\t\t});\r\n\t}\r\n\r\n\trunAction(actionId, context, presetParams, fullScreen) {\r\n\t\treturn this.mixedActionHelper.init({\r\n\t\t\taction: actionId,\r\n\t\t\tactionContext: [context],\r\n\t\t\ttype: 'action',\r\n\t\t\tpresetFields: presetParams,\r\n\t\t\tfullScreen: fullScreen,\r\n\t\t})();\r\n\t}\r\n\r\n\t_parseViewOptions(url) {\r\n\t\ttry {\r\n\t\t\treturn JSON.parse(decodeURIComponent(/view-options=(.+?)(?:&|$)/gi.exec(url)[1]));\r\n\t\t} catch (e) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tparseViewOptionsFromUrl() {\r\n\t\treturn this._parseViewOptions(window.location.search);\r\n\t}\r\n\r\n\t_parsePresetParams(url) {\r\n\t\ttry {\r\n\t\t\treturn JSON.parse(decodeURIComponent((url.match(/presetParams=([^&]*)/) || [])[1]));\r\n\t\t} catch (e) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tparsePresetParamsFromUrl() {\r\n\t\treturn this._parsePresetParams(window.location.href);\r\n\t}\r\n\r\n\tasync processViewOptions(viewOptions) {\r\n\t\tconst navigationId = this.$stateParams.navigationId;\r\n\t\tconst presetParams = this.parsePresetParamsFromUrl() || {};\r\n\r\n\t\tthis.eventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\teventName: `DeepLinking executed`,\r\n\t\t\t...Object.fromEntries(Object.entries(viewOptions).map(([key, value]) => [`mx42_uux_deeplinking_${key}`, value])),\r\n\t\t});\r\n\r\n\t\tconst objectParams = {\r\n\t\t\tId: viewOptions.objectId,\r\n\t\t\tEntityType: viewOptions.type,\r\n\t\t\tIsArchived: viewOptions.archived === '1',\r\n\t\t};\r\n\r\n\t\tswitch (viewOptions.viewType) {\r\n\t\t\tcase 'new':\r\n\t\t\t\tthis.dialogOpener.openNewDialog(objectParams.EntityType, null, null, undefined, presetParams, null, false, {}, false, viewOptions.dialogId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'preview':\r\n\t\t\tcase 'edit': {\r\n\t\t\t\tconst entityType = objectParams.EntityType;\r\n\r\n\t\t\t\tif (viewOptions.viewType === 'preview') {\r\n\t\t\t\t\tthis.dialogOpener.openPreview(\r\n\t\t\t\t\t\tobjectParams,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tnavigationId: navigationId,\r\n\t\t\t\t\t\t\twidgetId: viewOptions.dialogId,\r\n\t\t\t\t\t\t\thideActions: viewOptions.ext === 1,\r\n\t\t\t\t\t\t\tisSingleView: viewOptions.std === 1,\r\n\t\t\t\t\t\t\treadOnly: viewOptions.nda === 1,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\ttrue\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.dialogOpener.openEditDialog(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t_id: objectParams.Id,\r\n\t\t\t\t\t\t\t_type: objectParams.EntityType,\r\n\t\t\t\t\t\t\t_name: '',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\ttrue,\r\n\t\t\t\t\t\tpresetParams,\r\n\t\t\t\t\t\tundefined,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\twidgetId: objectParams.EntityType === entityType ? viewOptions.dialogId : undefined,\r\n\t\t\t\t\t\t\thideActions: viewOptions.ext === 1,\r\n\t\t\t\t\t\t\tisSingleView: viewOptions.std === 1,\r\n\t\t\t\t\t\t\treadOnly: viewOptions.nda === 1,\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (viewOptions.runAction) {\r\n\t\t\t\t\t//Old variant for actions\r\n\t\t\t\t\tthis.eventService.subscribeOnce(mx.shell.EventCodes.ActionsReady, () => {\r\n\t\t\t\t\t\tthis.runAction(viewOptions.runAction, this.sidePanelService.currentView.context, presetParams, true);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 'action':\r\n\t\t\t\tif (viewOptions.actionId) {\r\n\t\t\t\t\tconst objectContext = {\r\n\t\t\t\t\t\t_id: viewOptions.objectId,\r\n\t\t\t\t\t\t_type: viewOptions.type,\r\n\t\t\t\t\t};\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tconst view = await this.widgetManager.getPreviewView(objectContext);\r\n\t\t\t\t\t\tconst widgetId = view?.locals?.widgetId;\r\n\t\t\t\t\t\tconst data = widgetId && objectContext._id && (await this.contentWidgetService.getDialogData(widgetId, objectContext._id));\r\n\t\t\t\t\t\tthis.runAction(viewOptions.actionId, data?.entity || objectContext, presetParams, viewOptions.fullScreen);\r\n\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\tmx.console.warn(e);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tasync _setTitleForExternalOpenedDialog(view, navigationItem) {\r\n\t\tlet displayName = view.headerTitle + (view.displayName ? ': ' + view.displayName : '');\r\n\t\tconst windowTitle = await this.applicationService.getWindowTitle();\r\n\r\n\t\tdocument.title = this.i18n.getFormatted('solutionBuilderAgent.pageTitle.preview', displayName, navigationItem ? navigationItem.title : '', windowTitle);\r\n\t\tthis.eventService.subscribeOnce(mx.SolutionBuilderAgent.Events.ObjectDisplayNameChanged, (e, params) => {\r\n\t\t\tif (view.id === params.objectId && view.type === params.entityType) {\r\n\t\t\t\tdisplayName = view.headerTitle + (view.displayName ? ': ' + view.displayName : '');\r\n\t\t\t\tdocument.title = this.i18n.getFormatted('solutionBuilderAgent.pageTitle.preview', displayName, navigationItem ? navigationItem.title : '', windowTitle);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//TODO: refactor this\r\n\tasync tryOpenDialog(stateName, stateParameters, navigationItem) {\r\n\t\tconst windowTitle = await this.applicationService.getWindowTitle();\r\n\t\t// Creating object from outside\r\n\t\tswitch (stateName) {\r\n\t\t\tcase 'createObjectExternally': {\r\n\t\t\t\tconst presetParams = this.parsePresetParamsFromUrl();\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst view = await this.dialogOpener.openNewDialog(stateParameters.entityType, undefined, undefined, true, presetParams).newDialogOpenedPromise;\r\n\t\t\t\t\tdocument.title = this.i18n.getFormatted('solutionBuilderAgent.pageTitle.create', view.headerTitle, navigationItem ? navigationItem.title : '', windowTitle);\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tmx.logCatch(e);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 'editObjectExternally': {\r\n\t\t\t\tconst context = {\r\n\t\t\t\t\t_id: stateParameters.objectId,\r\n\t\t\t\t\t_type: stateParameters.entityType,\r\n\t\t\t\t};\r\n\t\t\t\tconst editDialogState = this.dialogOpener.openEditDialog(context, true);\r\n\t\t\t\teditDialogState.editDialogOpenedPromise.then((view) => this._setTitleForExternalOpenedDialog(view, navigationItem)).catch(mx.logCatch);\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst res = await editDialogState.finishDialogInteractionPromise;\r\n\t\t\t\t\tthis.dialogOpener.openPreview(res);\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tmx.logCatch(e);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 'previewObjectExternally': {\r\n\t\t\t\tconst view = await this.dialogOpener.openPreview(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t_id: stateParameters.objectId,\r\n\t\t\t\t\t\t_type: stateParameters.entityType,\r\n\t\t\t\t\t\t_archived: stateParameters._archived === '1',\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsearchPageWidgetId: stateParameters.contentWidgetId,\r\n\t\t\t\t\t\tnavigationId: stateParameters.navigationId,\r\n\t\t\t\t\t\twidgetId: stateParameters.previewWidgetId,\r\n\t\t\t\t\t},\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t\tthis._setTitleForExternalOpenedDialog(view, navigationItem);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tdefault:\r\n\t\t\t\tdocument.title = this.i18n.getFormatted('solutionBuilderAgent.pageTitle.searchPage', navigationItem ? navigationItem.title : '', windowTitle);\r\n\t\t}\r\n\t}\r\n}\r\n","'use strict';\r\n\r\ndesignerOpener.$inject = ['mx.shell.NotificationService', 'mx.internationalization'];\r\nexport default function designerOpener(notificationService, internationalization) {\r\n\twindow.mx = window.mx || {};\r\n\r\n\treturn {\r\n\t\topen: openDesigner,\r\n\t\tformUrl: formUrl,\r\n\t};\r\n\r\n\tfunction openDesigner(type, id) {\r\n\t\tvar designerWindow = window.mx.designerWindow;\r\n\r\n\t\tif (designerWindow && !designerWindow.closed && designerWindow.location.pathname.indexOf(id) > -1) {\r\n\t\t\t// This notification is needed for Browsers\r\n\t\t\t// That doesn't support window.focus() method\r\n\t\t\t// Or it is disabled because of security reasons.\r\n\t\t\tnotificationService.info(internationalization.get('solutionBuilderAgent.errors.layout_designer_is_opened_already'));\r\n\t\t\tdesignerWindow.focus();\r\n\t\t} else {\r\n\t\t\twindow.mx.designerWindow = window.open(formUrl(type, id));\r\n\t\t}\r\n\t}\r\n\r\n\tfunction formUrl(type, id) {\r\n\t\treturn './designer/' + type + '/' + id;\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nLocalizationModeHelper.$inject = ['$q', 'mx.shell.UserProfileService', 'mx.shell.InternationalizationService', 'mx.SolutionBuilderAgent.DialogOpenerService'];\r\nexport default function LocalizationModeHelper($q, userProfileService, i18nService, dialogOpener) {\r\n\tvar dialogLocalizationModeClassName = 'mx-dialog-localization-mode';\r\n\tvar baseLcid = 9;\r\n\tvar customEditorInstances = {};\r\n\r\n\treturn {\r\n\t\tdialogSelector: '.' + dialogLocalizationModeClassName + ':visible',\r\n\t\tenableMode: enableMode,\r\n\t\tdisableMode: disableMode,\r\n\t\tapplyStylesForControls: applyStylesForControls,\r\n\t\tisHtmlValueFilledIn: isHtmlValueFilledIn,\r\n\t\tgetTranslatedValueByLcid: getTranslatedValueByLcid,\r\n\t\tremoveStylesForControls: removeStylesForControls,\r\n\t\tpreventUsualControlHandler: preventUsualControlHandler,\r\n\t\tgetCurrentLanguage: getCurrentLanguage,\r\n\t\topenLocalizationDialog: openLocalizationDialog,\r\n\t\tgetValueWithFallback: getValueWithFallback,\r\n\t\tapplyTranslations: applyTranslations,\r\n\t\tgetModelInfoFromElement: getModelInfoFromElement,\r\n\t\tregisterCustomEditorInstance: registerCustomEditorInstance,\r\n\t\tdestroyCustomEditorInstances: destroyCustomEditorInstances,\r\n\t};\r\n\r\n\tfunction enableMode(formElement) {\r\n\t\tformElement.addClass(dialogLocalizationModeClassName);\r\n\t}\r\n\r\n\tfunction disableMode(formElement) {\r\n\t\tremoveStylesForControls();\r\n\t\tformElement.removeClass(dialogLocalizationModeClassName);\r\n\t}\r\n\r\n\tfunction applyStylesForControls(el, localizableModels, formCssSelector /*not mandatory*/) {\r\n\t\tvar formCSS = '.' + dialogLocalizationModeClassName + (formCssSelector || '');\r\n\t\tel.append(\r\n\t\t\t''\r\n\t\t);\r\n\t}\r\n\r\n\tfunction isHtmlValueFilledIn(value) {\r\n\t\treturn (\r\n\t\t\t$('

' + (value || '') + '

')\r\n\t\t\t\t.text()\r\n\t\t\t\t.trim() !== ''\r\n\t\t);\r\n\t}\r\n\r\n\tfunction getTranslatedValueByLcid(localizedField, lcid) {\r\n\t\tvar translatedObject = localizedField.translations.filter(function (tr) {\r\n\t\t\treturn tr.lcid === lcid;\r\n\t\t})[0];\r\n\t\tif (!translatedObject && lcid === baseLcid) {\r\n\t\t\ttranslatedObject = {\r\n\t\t\t\tlcid: baseLcid,\r\n\t\t\t\tvalue: localizedField.value,\r\n\t\t\t};\r\n\t\t}\r\n\t\treturn isHtmlValueFilledIn(translatedObject && translatedObject.value) ? translatedObject.value : '';\r\n\t}\r\n\r\n\tfunction removeStylesForControls() {\r\n\t\t$('.mx-localization-controls-styles').remove();\r\n\t}\r\n\r\n\tfunction preventUsualControlHandler(event, localizableModels) {\r\n\t\tvar allLocalizableControlsCssSelector = localizableModels\r\n\t\t\t.map(function (modelString) {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t'' +\r\n\t\t\t\t\t'mx-text-box[ng-model=\"' +\r\n\t\t\t\t\tmodelString +\r\n\t\t\t\t\t'\"], ' +\r\n\t\t\t\t\t'mx-text-area[ng-model=\"' +\r\n\t\t\t\t\tmodelString +\r\n\t\t\t\t\t'\"], ' +\r\n\t\t\t\t\t'mx-rich-text-box[ng-model=\"' +\r\n\t\t\t\t\tmodelString +\r\n\t\t\t\t\t'\"], ' +\r\n\t\t\t\t\t'[value=\"' +\r\n\t\t\t\t\tmodelString +\r\n\t\t\t\t\t'\"] > mx-rich-text-box'\r\n\t\t\t\t);\r\n\t\t\t})\r\n\t\t\t.join(',');\r\n\t\tvar controlElm = $(event.target).filter(allLocalizableControlsCssSelector);\r\n\t\tif (controlElm.length === 0 && allLocalizableControlsCssSelector) {\r\n\t\t\tcontrolElm = $(event.target).parents(allLocalizableControlsCssSelector);\r\n\t\t}\r\n\t\tif (\r\n\t\t\tcontrolElm.length === 0 ||\r\n\t\t\tcontrolElm.find('input.md-input').is(':disabled') ||\r\n\t\t\tcontrolElm.find('input.md-input').prop('readonly') ||\r\n\t\t\tcontrolElm.find('.mx-rich-text-box-fake-disabled, .mx-rich-text-box-fake-readonly').length !== 0\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tevent.stopPropagation();\r\n\t\tevent.preventDefault();\r\n\r\n\t\treturn controlElm;\r\n\t}\r\n\r\n\tfunction getCurrentLanguage() {\r\n\t\treturn $q.all([userProfileService.get(), i18nService.getLanguages()]).then(function (res) {\r\n\t\t\treturn res[1].filter(function (lang) {\r\n\t\t\t\treturn lang.id.toLowerCase() === res[0].languageId.toLowerCase();\r\n\t\t\t})[0];\r\n\t\t});\r\n\t}\r\n\r\n\tfunction prepareValueTranslations(sourceCI, inputedVal, currentLang, fieldKey) {\r\n\t\tvar incomingLangVals = [];\r\n\r\n\t\tfor (var lcidKey in sourceCI) {\r\n\t\t\tif (sourceCI.hasOwnProperty(lcidKey) && lcidKey !== 'fields') {\r\n\t\t\t\tincomingLangVals.push({\r\n\t\t\t\t\tLcid: Number(lcidKey),\r\n\t\t\t\t\tValue: Number(lcidKey) === currentLang.lcid ? inputedVal : sourceCI[lcidKey][fieldKey],\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar currentIncomingLang = incomingLangVals.filter(function (lang) {\r\n\t\t\treturn lang.Lcid === currentLang.lcid;\r\n\t\t})[0];\r\n\t\tvar parentIncomingLang = incomingLangVals.filter(function (lang) {\r\n\t\t\treturn lang.Lcid === currentLang.parentLcid;\r\n\t\t})[0];\r\n\t\tif (currentIncomingLang) {\r\n\t\t\tcurrentIncomingLang.Value = inputedVal;\r\n\t\t} else if (parentIncomingLang) {\r\n\t\t\tparentIncomingLang.Value = inputedVal;\r\n\t\t} else if (isHtmlValueFilledIn(inputedVal)) {\r\n\t\t\tincomingLangVals.push({\r\n\t\t\t\tLcid: currentLang.parentLcid || currentLang.lcid,\r\n\t\t\t\tValue: inputedVal,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn incomingLangVals;\r\n\t}\r\n\r\n\tfunction openLocalizationDialog(controlElm, currentValue, sourceCI, inputedVal) {\r\n\t\tvar resParams = {};\r\n\t\tvar modelInfo = getModelInfoFromElement(controlElm);\r\n\t\treturn getCurrentLanguage()\r\n\t\t\t.then(function (currentLang) {\r\n\t\t\t\tresParams.currentLang = currentLang;\r\n\t\t\t\tvar localizedValue = new mx.SolutionBuilderAgent.LocalizationProperty({\r\n\t\t\t\t\tKey: modelInfo.modelKey,\r\n\t\t\t\t\tValue: currentValue,\r\n\t\t\t\t\tTranslations: prepareValueTranslations(sourceCI, inputedVal, currentLang, modelInfo.fieldKey),\r\n\t\t\t\t});\r\n\t\t\t\tlocalizedValue.id = modelInfo.modelKey;\r\n\r\n\t\t\t\tvar customEditor = customEditorInstances[modelInfo.modelKey];\r\n\t\t\t\tvar getTitleForLocalization =\r\n\t\t\t\t\t(customEditor && customEditor.getTitleForLocalization) ||\r\n\t\t\t\t\tfunction () {\r\n\t\t\t\t\t\treturn controlElm.find('label > span').text() || controlElm.find('label').text();\r\n\t\t\t\t\t};\r\n\t\t\t\treturn dialogOpener.openLocalizationDialog({\r\n\t\t\t\t\tsaveLocalizationDirectly: false,\r\n\t\t\t\t\ttitle: getTitleForLocalization(),\r\n\t\t\t\t\trichTextMode: controlElm[0].tagName === 'MX-RICH-TEXT-BOX',\r\n\t\t\t\t\tlocalizedValue: localizedValue,\r\n\t\t\t\t\tcustomEditor: customEditor,\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.then(function (localizedField) {\r\n\t\t\t\tresParams.localizedField = localizedField;\r\n\t\t\t\treturn resParams;\r\n\t\t\t});\r\n\t}\r\n\r\n\tfunction getValueWithFallback(localizedField, currentLang) {\r\n\t\treturn getTranslatedValueByLcid(localizedField, currentLang.lcid) || getTranslatedValueByLcid(localizedField, currentLang.parentLcid);\r\n\t}\r\n\r\n\tfunction applyTranslations(localizedField, fieldKey, resultCIObject) {\r\n\t\t// clean up old values\r\n\t\tfor (var k in resultCIObject) {\r\n\t\t\tif (resultCIObject.hasOwnProperty(k) && parseInt(k, 10) + '' === k + '' /*if it's number*/) {\r\n\t\t\t\tresultCIObject[k][fieldKey] = null;\r\n\t\t\t}\r\n\t\t}\r\n\t\t// init base lang translation\r\n\r\n\t\tvar baseLangTranslation = _.find(localizedField.translations, { lcid: baseLcid });\r\n\t\tvar translations = localizedField.translations.slice(0);\r\n\t\tif (!baseLangTranslation) {\r\n\t\t\ttranslations.push({\r\n\t\t\t\tlcid: baseLcid,\r\n\t\t\t\tvalue: localizedField.value,\r\n\t\t\t});\r\n\t\t}\r\n\t\t// adding new or updating old translated field\r\n\t\ttranslations.forEach(function (trVal) {\r\n\t\t\tif (isHtmlValueFilledIn(trVal.value)) {\r\n\t\t\t\tresultCIObject[trVal.lcid] = resultCIObject[trVal.lcid] || {};\r\n\t\t\t\tresultCIObject[trVal.lcid][fieldKey] = trVal.value;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn resultCIObject;\r\n\t}\r\n\r\n\tfunction getModelInfoFromElement(controlElm) {\r\n\t\tvar modelInfo = {};\r\n\t\tmodelInfo.modelKey = controlElm.attr('ng-model');\r\n\t\tif (modelInfo.modelKey === 'vm.value') {\r\n\t\t\tmodelInfo.modelKey = controlElm.parent('[value]').attr('value');\r\n\t\t}\r\n\t\tmodelInfo.modelPath = modelInfo.modelKey.split('.');\r\n\t\tmodelInfo.fieldKey = modelInfo.modelPath[modelInfo.modelPath.length - 1];\r\n\t\treturn modelInfo;\r\n\t}\r\n\r\n\tfunction registerCustomEditorInstance(modelKey, editorType, params, modelAttrKey, getTitleForLocalizationFn) {\r\n\t\tcustomEditorInstances[modelKey] = {\r\n\t\t\teditorType: editorType,\r\n\t\t\tparams: params,\r\n\t\t\tmodelAttrKey: modelAttrKey,\r\n\t\t\tgetTitleForLocalization: getTitleForLocalizationFn,\r\n\t\t};\r\n\t}\r\n\r\n\tfunction destroyCustomEditorInstances() {\r\n\t\tcustomEditorInstances = {};\r\n\t}\r\n}\r\n","/**\r\n * @ngdoc service\r\n * @name mx.SolutionBuilderAgent.DialogOpenerService\r\n * @module mx.SolutionBuilderAgent\r\n *\r\n * @description\r\n * A service provides a way for opening most common dialogs like:\r\n * `ObjectDetails`, `NewDialog`, `EditDialog`, `ObjectsList`, `selectObjects`, `selectFiles`.\r\n */\r\nDialogOpenerService.$inject = [\r\n\t'$q',\r\n\t'$mdDialog',\r\n\t'mx.shell.DetailsView',\r\n\t'mx.internationalization',\r\n\t'mx.shell.SidePanelService',\r\n\t'mx.shell.SideLayout',\r\n\t'mx.shell.RoutingService',\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.DetailsView',\r\n\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n\t'mx.SolutionBuilderAgent.WizardService',\r\n\t'mx.SolutionBuilderAgent.WidgetManager',\r\n\t'mx.SolutionBuilderAgent.RecentService',\r\n\t'mx.SolutionBuilderAgent.MultiSelectionTabService',\r\n\t'mx.sb.DialogView.DialogFactory',\r\n\t'mx.SolutionBuilderAgent.EntityService',\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n];\r\n\r\nexport function DialogOpenerService(\r\n\t$q,\r\n\t$mdDialog,\r\n\tMxDetailsView,\r\n\ti18n,\r\n\tsidePanelService,\r\n\tsideLayoutService,\r\n\troutingService,\r\n\teventService,\r\n\tDetailsView,\r\n\tcontentWidgetService,\r\n\twizardService,\r\n\twidgetManager,\r\n\trecentService,\r\n\tmultiSelectionTabService,\r\n\tdialogFactory,\r\n\tentityService,\r\n\tpersonalizationService\r\n) {\r\n\teventService.subscribeGlobal(mx.SolutionBuilderAgent.Events.ForceOpenObjectDetails, function (e, params) {\r\n\t\topenPreview(params, undefined, undefined, params.parentView);\r\n\t});\r\n\r\n\teventService.subscribeGlobal(mx.SolutionBuilderAgent.Events.ForceOpenObjectsGrid, function (e, params) {\r\n\t\topenObjectsListPreview(\r\n\t\t\t{\r\n\t\t\t\tentityClassName: params.entityClassName,\r\n\t\t\t\tlabel: params.displayName,\r\n\t\t\t\tselectedItemIds: params.ids,\r\n\t\t\t},\r\n\t\t\tparams.parentView\r\n\t\t).catch(mx.logCatch);\r\n\t});\r\n\r\n\treturn {\r\n\t\topenPreview: openPreview,\r\n\t\topenNewDialog: openNewDialog,\r\n\t\topenEditDialog: openEditDialog,\r\n\t\topenObjectsListPreview: openObjectsListPreview,\r\n\t\topenLocalizationDialog: openLocalizationDialog,\r\n\t\tselectObjects: selectObjects,\r\n\t\tselectFiles: selectFiles,\r\n\t\tselectHierarchyObject: selectHierarchyObject,\r\n\t\tselectImage: selectImage,\r\n\t};\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.DialogOpenerService#openLocalizationDialog\r\n\t *\r\n\t * @description\r\n\t * Opens a Dialog used to localize localizable values\r\n\t *\r\n\t * @param {object} params - localization params:\r\n\t * {mx.SolutionBuilderAgent.LocalizationProperty} localizedValue - {@ref mx.SolutionBuilderAgent.LocalizationProperty localization property} with translations filled\r\n\t * {boolean} saveLocalizationDirectly - show Save button and save localization directly to server\r\n\t * {string} title - dialog's title\r\n\t * {boolean} richTextMode - rich text localization is intended\r\n\t * @return {promise} A promise, resolved to a {@ref mx.SolutionBuilderAgent.LocalizationProperty localization property}\r\n\t */\r\n\tfunction openLocalizationDialog(params) {\r\n\t\tconst dialogContentTemplate =\r\n\t\t\t'' +\r\n\t\t\t' ' +\r\n\t\t\t' ' +\r\n\t\t\t' ' +\r\n\t\t\t' ' +\r\n\t\t\t'';\r\n\r\n\t\tconst result = $q.defer();\r\n\r\n\t\tparams.result = result;\r\n\r\n\t\tconst dialogParams = {\r\n\t\t\ttemplate: dialogContentTemplate,\r\n\t\t\tlocals: { params: params },\r\n\t\t\tcontroller: DialogController,\r\n\t\t};\r\n\r\n\t\t$mdDialog.show(dialogParams);\r\n\r\n\t\tDialogController.$inject = ['$scope', '$mdDialog', 'params'];\r\n\r\n\t\tfunction DialogController($scope, $mdDialog, params) {\r\n\t\t\t$scope.vm = params;\r\n\t\t\t$scope.dialog = $mdDialog;\r\n\t\t}\r\n\r\n\t\treturn result.promise;\r\n\t}\r\n\r\n\tfunction preparePresetsForWizard(presetFields, entityType) {\r\n\t\tif (typeof presetFields === 'object') {\r\n\t\t\tconst presets = {};\r\n\t\t\tpresets.Context = presetFields.Context;\r\n\t\t\tdelete presetFields.Context;\r\n\t\t\tpresets[entityType] = presetFields;\r\n\t\t\treturn presets;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.DialogOpenerService#openNewDialog\r\n\t *\r\n\t * @description\r\n\t * Opens a `Create New Dialog` by given objectType.\r\n\t *\r\n\t * @param {string} objectType - object type.\r\n\t * @param {object} action - [optional] action.\r\n\t * @param {object[]} actionContext - [optional] selected objects from action.\r\n\t * @param {boolean} openInFullScreen - [optional]flag, that indicates if dialog should be opened in full screen.\r\n\t * @param {object} presetFields - [optional] some preset params if exists.\r\n\t * @param {DetailsView} parentView - [optional] if set - this opened New Dialog will be closed automatically if parent view is closed.\r\n\t * @param {boolean} showDetailsAfterCreation - [optional] [default: 'true'] if `true` then just created object details will be shown.\r\n\t * @param {object} outerContext - [optional]Object with fields to be added to a new view's Context.OuterContext.\r\n\t * @param {boolean} related - [optional] true if new view is related to parentView and blocks parentView\r\n\t * @param {string} widgetId widget id\r\n\t * @param {string|undefined} telemetrySource source field for telemetry on open event\r\n\t * @returns {{newEntityCreatedPromise: promise,\tnewDialogOpenedPromise: promise}} - promise, which will be successfully resolved when new item is created.\r\n\t */\r\n\tfunction openNewDialog(\r\n\t\tobjectType,\r\n\t\taction,\r\n\t\tactionContext,\r\n\t\topenInFullScreen,\r\n\t\tpresetFields,\r\n\t\tparentView,\r\n\t\tshowDetailsAfterCreation,\r\n\t\touterContext,\r\n\t\trelated,\r\n\t\twidgetId,\r\n\t\ttelemetrySource\r\n\t) {\r\n\t\t// TODO: Is it possible to move out opening Details View out from this method?\r\n\t\t// It should be done on the same level as calling openNewDialog().\r\n\t\t// Something like mxDialogOpener.openNewDialog(...).newEntityCreatedPromise.then(mxDialogOpener.openPreview(...));\r\n\t\tshowDetailsAfterCreation = showDetailsAfterCreation === undefined ? true : Boolean(showDetailsAfterCreation);\r\n\r\n\t\tlet view;\r\n\t\tconst newEntityCreatedDefer = $q.defer();\r\n\t\tconst newDialogOpenedDefer = $q.defer();\r\n\t\tlet alwaysFullScreen = true;\r\n\t\tif (objectType) {\r\n\t\t\t__getNewDialogView(objectType, action, widgetId).then(\r\n\t\t\t\tfunction (addView) {\r\n\t\t\t\t\tif (addView) {\r\n\t\t\t\t\t\tconst commonNewName = i18n.get('solutionBuilderAgent.common.new');\r\n\t\t\t\t\t\tconst title = `${addView.EntityDisplayName}: ${commonNewName}`;\r\n\t\t\t\t\t\tconst viewId = `solutionBuilderAgent.common.new_${objectType}${Math.random()}`;\r\n\r\n\t\t\t\t\t\tif (addView.ShowAsWizard === true || !recentService.enabled) {\r\n\t\t\t\t\t\t\talwaysFullScreen = !addView.ShowAsWizard;\r\n\r\n\t\t\t\t\t\t\tview = wizardService.getWizardView({\r\n\t\t\t\t\t\t\t\ttypeName: addView.Entity,\r\n\t\t\t\t\t\t\t\twidgetId: addView.Id,\r\n\t\t\t\t\t\t\t\tactionId: action ? action.id : addView.Id,\r\n\t\t\t\t\t\t\t\tactionName: action ? action.name : '',\r\n\t\t\t\t\t\t\t\twizardMode: mx.SolutionBuilderAgent.WizardMode.New,\r\n\t\t\t\t\t\t\t\tname: commonNewName,\r\n\t\t\t\t\t\t\t\tdisplayName: commonNewName,\r\n\t\t\t\t\t\t\t\tfinishTitle: '',\r\n\t\t\t\t\t\t\t\tcustomHeader: title,\r\n\t\t\t\t\t\t\t\tselectedObjects: actionContext,\r\n\t\t\t\t\t\t\t\tpresetFields: preparePresetsForWizard(presetFields, addView.Entity),\r\n\t\t\t\t\t\t\t\touterContext: outerContext,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tview.id = viewId;\r\n\t\t\t\t\t\t\tview.alwaysFullScreen = alwaysFullScreen;\r\n\t\t\t\t\t\t\tview.headerIcon = addView.EntityIcon;\r\n\t\t\t\t\t\t\tview.headerColor = addView.EntityColor;\r\n\t\t\t\t\t\t\tview.headerTitle = addView.EntityDisplayName;\r\n\t\t\t\t\t\t\tview.ShowAsWizard = true;\r\n\t\t\t\t\t\t\tview.dialogType = mx.SolutionBuilderAgent.ContentWidgetDialogAction.New;\r\n\r\n\t\t\t\t\t\t\topenInFullScreen = false;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconst context = {\r\n\t\t\t\t\t\t\t\t_type: objectType,\r\n\t\t\t\t\t\t\t\t_name: commonNewName,\r\n\t\t\t\t\t\t\t\t_displayName: commonNewName,\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\tview = dialogFactory.createNewDialog(context, addView, {\r\n\t\t\t\t\t\t\t\tid: viewId,\r\n\t\t\t\t\t\t\t\touterContext: outerContext,\r\n\t\t\t\t\t\t\t\tpresetFields: presetFields,\r\n\t\t\t\t\t\t\t\tcontrollerParams: action ? action.controllerParams : '',\r\n\t\t\t\t\t\t\t\tselectedObjects: actionContext,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (action) {\r\n\t\t\t\t\t\t\tview.startedFromAction = action;\r\n\t\t\t\t\t\t\tview.actionContext = actionContext;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Set URL for View, by which this view can be opened in separate browser tab.\r\n\t\t\t\t\t\tconst objectContext = {\r\n\t\t\t\t\t\t\t_type: objectType,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tcontentWidgetService.setViewUrl(view, addView.Id, objectContext);\r\n\r\n\t\t\t\t\t\tview.locals.view = view;\r\n\r\n\t\t\t\t\t\tview.telemetrySource = telemetrySource;\r\n\r\n\t\t\t\t\t\tsidePanelService\r\n\t\t\t\t\t\t\t.addView(view, parentView, related)\r\n\t\t\t\t\t\t\t.then(function (res) {\r\n\t\t\t\t\t\t\t\tnewEntityCreatedDefer.resolve(res);\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t.catch(function (e) {\r\n\t\t\t\t\t\t\t\tnewEntityCreatedDefer.reject(e);\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (typeof openInFullScreen !== 'undefined' && !alwaysFullScreen) {\r\n\t\t\t\t\t\t\tsideLayoutService.switchFullScreenMode(openInFullScreen);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tnewDialogOpenedDefer.resolve(view);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tnewEntityCreatedDefer.reject('view was not found');\r\n\t\t\t\t\t\tnewDialogOpenedDefer.reject('view was not found');\r\n\t\t\t\t\t\troutingService.go('401');\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tfunction () {\r\n\t\t\t\t\tnewEntityCreatedDefer.reject('view was not found');\r\n\t\t\t\t\tnewDialogOpenedDefer.reject('view was not found');\r\n\t\t\t\t\tconsole.error('A promise was rejected');\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tconst errMessage = i18n.get('solutionBuilderAgent.errors.noTypesMsg');\r\n\t\t\tnewDialogOpenedDefer.reject(errMessage);\r\n\t\t\tnewEntityCreatedDefer.reject(errMessage);\r\n\t\t\tthrow new Error(errMessage);\r\n\t\t}\r\n\r\n\t\tnewEntityCreatedDefer.promise.then(\r\n\t\t\tfunction (res) {\r\n\t\t\t\tif (res) {\r\n\t\t\t\t\tif (showDetailsAfterCreation) {\r\n\t\t\t\t\t\topenPreview(res);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\twidgetManager.getPreviewView(res).then(function (previewView) {\r\n\t\t\t\t\t\t\tif (previewView) {\r\n\t\t\t\t\t\t\t\trecentService.addToRecent(previewView);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn res;\r\n\t\t\t},\r\n\t\t\tfunction (e) {\r\n\t\t\t\tmx.logCatch(e);\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\treturn {\r\n\t\t\tnewEntityCreatedPromise: newEntityCreatedDefer.promise,\r\n\t\t\tnewDialogOpenedPromise: newDialogOpenedDefer.promise,\r\n\t\t};\r\n\t}\r\n\r\n\tfunction __getNewDialogView(objectType, action, widgetId) {\r\n\t\treturn widgetManager.getNewDialogs(objectType, widgetId || (action && action.Widget && action.Widget.Id)).then(\r\n\t\t\tasync function (views) {\r\n\t\t\t\tviews = views || [];\r\n\r\n\t\t\t\tif (!widgetId) {\r\n\t\t\t\t\tconst personalizedWidgetId = await personalizationService.getDefaultNewDialogId(objectType);\r\n\t\t\t\t\tconst view = personalizedWidgetId && views.find((v) => v.Id === personalizedWidgetId);\r\n\t\t\t\t\tif (view) {\r\n\t\t\t\t\t\treturn view;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (action && action.Widget && action.Widget.Type === mx.SolutionBuilderAgent.ContentWidgetType.Dialog) {\r\n\t\t\t\t\treturn _.find(views, { Id: action.Widget.Id });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (widgetId) {\r\n\t\t\t\t\tconst viewById = views.find((view) => view.Id === widgetId);\r\n\r\n\t\t\t\t\tif (viewById) {\r\n\t\t\t\t\t\treturn viewById;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// In case the 'Add' action is specified the views with the property of NotUseInCreateEditPurposes set to True will be ignored.\r\n\t\t\t\t// Otherwise, when action is null, all views are processing (for e.g. quick links).\r\n\t\t\t\treturn (\r\n\t\t\t\t\t!action\r\n\t\t\t\t\t\t? views\r\n\t\t\t\t\t\t: views.filter(function (view) {\r\n\t\t\t\t\t\t\t\treturn !view.NotUseInCreateEditPurposes;\r\n\t\t\t\t\t\t })\r\n\t\t\t\t)[0];\r\n\t\t\t},\r\n\t\t\tfunction (e) {\r\n\t\t\t\tmx.logCatch(e);\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.DialogOpenerService#openEditDialog\r\n\t *\r\n\t * @description\r\n\t * Opens a `Edit Dialog` by given objectType and ID.\r\n\t *\r\n\t * @param {object} objectContext - object context.\r\n\t * @param {boolean} openInFullScreen - [optional] flag, that indicates if dialog should be opened in full screen.\r\n\t * @param {object} presetFields - [optional] some preset params if exists.\r\n\t * @param {string} parentView - [optional] if set - this opened New Dialog will be closed automatically if parent view is closed.\r\n\t * @param {Object} extraLocals = {}- [optional] if set - mxView locals will be extended with passed one.\r\n\t *\r\n\t * @returns {{finishDialogInteractionPromise: promise, editDialogOpenedPromise: promise}}\r\n\t */\r\n\tfunction openEditDialog(objectContext, openInFullScreen, presetFields, parentView, extraLocals = {}) {\r\n\t\tlet view;\r\n\t\tconst finishDialogInteractionDefer = $q.defer();\r\n\t\tconst editDialogOpenedDefer = $q.defer();\r\n\t\tconst { widgetId } = extraLocals;\r\n\r\n\t\tif (objectContext._type) {\r\n\t\t\tentityService\r\n\t\t\t\t.processObjectContext(objectContext)\r\n\t\t\t\t.then(() => __getEditDialogView(objectContext._type, widgetId))\r\n\t\t\t\t.then(\r\n\t\t\t\t\tfunction (editView) {\r\n\t\t\t\t\t\tif (!editView) {\r\n\t\t\t\t\t\t\teditDialogOpenedDefer.reject('view was not found');\r\n\t\t\t\t\t\t\tfinishDialogInteractionDefer.reject('view was not found');\r\n\t\t\t\t\t\t\troutingService.go('401');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlet alwaysFullScreen = true;\r\n\r\n\t\t\t\t\t\tif (editView.ShowAsWizard === true || !recentService.enabled) {\r\n\t\t\t\t\t\t\talwaysFullScreen = !editView.ShowAsWizard;\r\n\r\n\t\t\t\t\t\t\tview = wizardService.getWizardView({\r\n\t\t\t\t\t\t\t\ttypeName: editView.Entity,\r\n\t\t\t\t\t\t\t\twidgetId: editView.Id,\r\n\t\t\t\t\t\t\t\tactionId: editView.Id,\r\n\t\t\t\t\t\t\t\twizardMode: mx.SolutionBuilderAgent.WizardMode.Edit,\r\n\t\t\t\t\t\t\t\tname: objectContext._name,\r\n\t\t\t\t\t\t\t\tdisplayName: objectContext._displayName,\r\n\t\t\t\t\t\t\t\tfinishTitle: '',\r\n\t\t\t\t\t\t\t\tselectedObjects: [objectContext], //???\r\n\t\t\t\t\t\t\t\tpresetFields: preparePresetsForWizard(presetFields, editView.Entity),\r\n\t\t\t\t\t\t\t\t// outerContext: outerContext,\r\n\r\n\t\t\t\t\t\t\t\tmergeDisabled: editView.MergeDisabled,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tview.alwaysFullScreen = alwaysFullScreen;\r\n\t\t\t\t\t\t\tview.headerIcon = editView.EntityIcon;\r\n\t\t\t\t\t\t\tview.headerColor = editView.EntityColor;\r\n\t\t\t\t\t\t\tview.headerTitle = editView.EntityDisplayName;\r\n\t\t\t\t\t\t\tview.ShowAsWizard = true;\r\n\t\t\t\t\t\t\tview.dialogType = mx.SolutionBuilderAgent.ContentWidgetDialogAction.New;\r\n\r\n\t\t\t\t\t\t\topenInFullScreen = false;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tview = dialogFactory.createEditDialog(objectContext, editView, {\r\n\t\t\t\t\t\t\t\thideActions: Boolean(extraLocals.hideActions),\r\n\t\t\t\t\t\t\t\tisSingleView: Boolean(extraLocals.isSingleView),\r\n\t\t\t\t\t\t\t\treadOnly: Boolean(extraLocals.readOnly),\r\n\t\t\t\t\t\t\t\tpresetFields: presetFields,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tview.locals.view = view;\r\n\t\t\t\t\t\tcontentWidgetService.setViewUrl(view, editView.Id, objectContext);\r\n\t\t\t\t\t\tsidePanelService\r\n\t\t\t\t\t\t\t.addView(view, parentView)\r\n\t\t\t\t\t\t\t.then(function (res) {\r\n\t\t\t\t\t\t\t\tfinishDialogInteractionDefer.resolve(res);\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t.catch(function (e) {\r\n\t\t\t\t\t\t\t\tfinishDialogInteractionDefer.reject(e);\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (typeof openInFullScreen !== 'undefined' && !alwaysFullScreen) {\r\n\t\t\t\t\t\t\tsideLayoutService.switchFullScreenMode(openInFullScreen);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\teditDialogOpenedDefer.resolve(view);\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfunction () {\r\n\t\t\t\t\t\teditDialogOpenedDefer.reject('view was not found');\r\n\t\t\t\t\t\tfinishDialogInteractionDefer.reject('view was not found');\r\n\t\t\t\t\t\tconsole.error('view was not found');\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t} else {\r\n\t\t\tconst errorMessage = i18n.get('solutionBuilderAgent.new.noTypesMsg');\r\n\t\t\teditDialogOpenedDefer.reject(errorMessage);\r\n\t\t\tfinishDialogInteractionDefer.reject(errorMessage);\r\n\t\t\tthrow new Error(errorMessage);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tfinishDialogInteractionPromise: finishDialogInteractionDefer.promise,\r\n\t\t\teditDialogOpenedPromise: editDialogOpenedDefer.promise,\r\n\t\t};\r\n\t}\r\n\r\n\tfunction __getEditDialogView(objectType, viewId) {\r\n\t\treturn widgetManager.getEditDialogs(objectType, viewId).then(\r\n\t\t\tasync function (views) {\r\n\t\t\t\tif (!views) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (viewId) {\r\n\t\t\t\t\tconst byId = views.filter(function (view) {\r\n\t\t\t\t\t\treturn view.Id === viewId;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (byId.length) {\r\n\t\t\t\t\t\treturn byId[0];\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst personalizedWidgetId = await personalizationService.getDefaultEditDialogId(objectType);\r\n\t\t\t\t\tconst view = personalizedWidgetId && views.find((v) => v.Id === personalizedWidgetId);\r\n\t\t\t\t\tif (view) {\r\n\t\t\t\t\t\treturn view;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn views[0];\r\n\t\t\t},\r\n\t\t\tfunction () {\r\n\t\t\t\tconsole.error('A promise was rejected');\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.DialogOpenerService#openPreview\r\n\t *\r\n\t * @description\r\n\t * Opens a `Preview Dialog` by given objectType.\r\n\t *\r\n\t * @param {object} objectDetails - object details in format like this:\r\n\t * `parentViewId` has greater priority.\r\n\t * ```\r\n\t *{\r\n\t * _id: \"f8e4e825-5501-e611-8682-50e549e83fa6\",\r\n\t * _type: \"SPSUserType\",\r\n\t * _displayName: \"Nick, Muller\"\r\n\t *}\r\n\t * or\r\n\t *{\r\n\t * Id: \"f8e4e825-5501-e611-8682-50e549e83fa6\",\r\n\t * EntityType (or 'Sys-Entity'): \"SPSUserType\",\r\n\t * DisplayString: \"Nick, Muller\"\r\n\t *}\r\n\t * (TODO: figure out and use single unified format)\r\n\t * ```\r\n\t * @param {Object} [extraLocals = {}] - locals for the view controller\r\n\t * @param {boolean} [openInFullScreen = false] - [optional] flag, that indicates if dialog should be opened in full screen.\r\n\t * @param {DetailsView?} [parentView] - parent view for the new opening view\r\n\t * @param {Object} [presetFields = {}] - object with parameters which will be used as default values for data model in the view\r\n\t *\r\n\t */\r\n\tasync function openPreview(objectDetails, extraLocals = {}, openInFullScreen = false, parentView, presetFields = {}) {\r\n\t\tconst { widgetId } = extraLocals;\r\n\t\ttry {\r\n\t\t\tconst detailsView = await widgetManager.getPreviewView(objectDetails, widgetId, extraLocals, presetFields);\r\n\t\t\tif (detailsView) {\r\n\t\t\t\tsidePanelService.addView(detailsView, parentView).catch(mx.logCatch);\r\n\t\t\t\tif (openInFullScreen) {\r\n\t\t\t\t\tsideLayoutService.switchFullScreenMode(true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn detailsView;\r\n\t\t} catch (e) {\r\n\t\t\tmx.logCatch(e);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.DialogOpenerService#selectObjects\r\n\t *\r\n\t * @description\r\n\t * Opens a `Select Objects` dialog.\r\n\t *\r\n\t * @param {string} entityClassName - entityClassName.\r\n\t * @param {string} title - Display name.\r\n\t * @param {array} excludedIDs - a list of pre-selected items in selection list.\r\n\t * @param {string} filter - filter.\r\n\t * @param {string} columnDefinition -columnDefinition.\r\n\t * @param {boolean} multiSelection - if true then this Dialog will allow to select several items.\r\n\t * @param {boolean} viewMode - if true then this Dialog just show list of related Objects and selection will be disabled.\r\n\t * @param {string} allowedTypes - list of objects for selection will be filtered by these Allowed Types.\r\n\t * @param {string} parentView - if set and parent view will be closed then this Dialog will be closed automatically.\r\n\t * @param {boolean} allowResetFilter - enable checkbox \"Reset filter\" to enable search without default filter\r\n\t * @param {string} resetFilterExpression - filter expressions which is used when default filter is reset\r\n\t * @param {boolean} onlyTypedSearch - if set then grid is visible only when some EntityType is selected\r\n\t * @param {object} presetFields - object with predefined data which is used for \"Create\" action in selection grid\r\n\t *\r\n\t * @returns {promise} - promise, which will be resolved with items that user selected on this Dialog.\r\n\t *\r\n\t */\r\n\tfunction selectObjects(\r\n\t\tentityClassName,\r\n\t\ttitle,\r\n\t\texcludedIDs,\r\n\t\tfilter,\r\n\t\tcolumnDefinition,\r\n\t\tmultiSelection,\r\n\t\tviewMode,\r\n\t\tallowedTypes,\r\n\t\tparentView,\r\n\t\tallowResetFilter,\r\n\t\tresetFilterExpression,\r\n\t\tonlyTypedSearch,\r\n\t\tpresetFields\r\n\t) {\r\n\t\treturn multiSelectionTabService.open(\r\n\t\t\t{\r\n\t\t\t\ttitle: title,\r\n\t\t\t\tviewMode: viewMode,\r\n\t\t\t\tmultiSelection: !viewMode && multiSelection,\r\n\t\t\t\tentityClassName: entityClassName,\r\n\t\t\t\tallowedTypes: allowedTypes,\r\n\t\t\t\tfilter: filter,\r\n\t\t\t\tcorrectEntityFilter: filter,\r\n\t\t\t\texcludedIDs: excludedIDs,\r\n\t\t\t\tcolumnDefinition: columnDefinition,\r\n\t\t\t\tonlyTypedSelectSearch: onlyTypedSearch,\r\n\t\t\t\tallowResetFilter: allowResetFilter,\r\n\t\t\t\tresetFilterExpression: resetFilterExpression,\r\n\t\t\t\tpresetFields: presetFields,\r\n\t\t\t},\r\n\t\t\tparentView\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.DialogOpenerService#openObjectsListPreview\r\n\t *\r\n\t * @description\r\n\t * Opens a Dialog with list of objects with given `entityClassName` and `ids`, or by `filterExpression`\r\n\t */\r\n\tfunction openObjectsListPreview(options, parentView) {\r\n\t\treturn multiSelectionTabService.open(\r\n\t\t\t{\r\n\t\t\t\ttitle: options.title || options.label,\r\n\t\t\t\tviewMode: true,\r\n\t\t\t\tmultiSelection: options.multiSelection,\r\n\t\t\t\tshowActionsPanel: options.showActionsPanel,\r\n\t\t\t\tshowSelectAll: options.showSelectAll,\r\n\t\t\t\tentityClassName: options.entityClassName,\r\n\t\t\t\trelation: options.relation,\r\n\t\t\t\tarchived: options.archived,\r\n\t\t\t\tallowedTypes: options.allowedTypes,\r\n\t\t\t\tfilter: options.filterExpression,\r\n\t\t\t\tcorrectEntityFilter: options.filterExpression,\r\n\t\t\t\texcludedIDs: options.excludedIDs,\r\n\t\t\t\tobjectIDs: options.selectedItemIds,\r\n\t\t\t\tcolumnDefinition: options.columnDefinition,\r\n\t\t\t\tuseObjectId: options.useObjectId,\r\n\t\t\t},\r\n\t\t\tparentView\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.DialogOpenerService#selectHierarchyObject\r\n\t *\r\n\t * @description\r\n\t * Opens a `Select Hierarchical Objects` dialog with tree-view.\r\n\t *\r\n\t * @param {string} entityClassName - entityClassName.\r\n\t * @param {string} relationDisplayName - Display name.\r\n\t * @param {DetailsView} parentView - if set and parent view will be closed then this Dialog will be closed automatically.\r\n\t * @param {string} parentExpression - parent expression.\r\n\t * @param {string} selectedId - pre-selected node id.\r\n\t * @param {string} filter - filter expression.\r\n\t * @param {string} rootElement - root element for tree data\r\n\t * @param {boolean} includeRoot - include root element in result set if root element is specified\r\n\t * @param {string} columnToDisplay column to use as a display value\r\n\t * @param {string} dataQueryName specific Data Query name\r\n\t * @returns {promise} - promise, which will be resolved with selected item that user selected on this Dialog.\r\n\t */\r\n\tfunction selectHierarchyObject(\r\n\t\tentityClassName,\r\n\t\trelationDisplayName,\r\n\t\tparentView,\r\n\t\tparentExpression,\r\n\t\tselectedId,\r\n\t\tfilter,\r\n\t\trootElement,\r\n\t\tincludeRoot,\r\n\t\tcolumnToDisplay,\r\n\t\tdataQueryName\r\n\t) {\r\n\t\treturn _openSelectView(\r\n\t\t\t'selectHierarchyObjects_' + relationDisplayName + Math.random(),\r\n\t\t\trelationDisplayName || i18n.get('solutionBuilderAgent.browseDialog.select_label'),\r\n\t\t\ti18n.get('solutionBuilderAgent.browseDialog.select_objects_short'),\r\n\t\t\trelationDisplayName,\r\n\t\t\t{\r\n\t\t\t\tentityClassName: entityClassName,\r\n\t\t\t\tfilter: filter,\r\n\t\t\t\tparentExpression: parentExpression,\r\n\t\t\t\tdisplayExpression: columnToDisplay,\r\n\t\t\t\tselectedId: selectedId || null,\r\n\t\t\t\trootElement: rootElement,\r\n\t\t\t\tincludeRoot: includeRoot,\r\n\t\t\t\tdataQueryName: dataQueryName,\r\n\t\t\t},\r\n\t\t\t'mx.SolutionBuilderAgent.ObjectPickerHierarchyViewController',\r\n\t\t\t'workspaces/SolutionBuilderAgent/layouts/hierarchy-view/hierarchy-view.html',\r\n\t\t\tparentView\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.DialogOpenerService#selectFiles\r\n\t *\r\n\t * @description\r\n\t * Opens a `Select Files` dialog.\r\n\t *\r\n\t * @param {Object} options - image options.\r\n\t * @param {string} relatedObjectId - relatedObjectId.\r\n\t * @param {string} relatedEntity - relatedEntity.\r\n\t * @param {DetailsView} parentView - if set and parent view will be closed then this Dialog will be closed automatically.\r\n\t *\r\n\t * @returns {promise} - promise, which will be resolved with files that user selected on this Dialog.\r\n\t *\r\n\t */\r\n\tfunction selectImage(options, relatedObjectId, relatedEntity, parentView) {\r\n\t\tconst locals = {\r\n\t\t\tmodeAttach: options.modeAttach,\r\n\t\t\tmodeIcon: options.modeIcon,\r\n\t\t\tmodeImage: options.modeImage,\r\n\t\t\tserverBasePath: options.serverBasePath,\r\n\t\t\trelatedEntity: relatedEntity,\r\n\t\t\trelatedObjectId: relatedObjectId,\r\n\t\t\tbaseFolder: options.baseFolder,\r\n\t\t\tselectedImage: options.selectedImage,\r\n\t\t};\r\n\r\n\t\treturn _openSelectView(\r\n\t\t\t'selectFiles_' + relatedEntity + relatedObjectId + Math.random(),\r\n\t\t\ti18n.get('solutionBuilderAgent.browseDialog.selectImageTitle'),\r\n\t\t\ti18n.get('solutionBuilderAgent.browseDialog.selectImage'),\r\n\t\t\tundefined,\r\n\t\t\tlocals,\r\n\t\t\t'mx.SolutionBuilderAgent.ImageSelectionViewController',\r\n\t\t\t'workspaces/SolutionBuilderAgent/layouts/image-selection-view/image-selection-view.html',\r\n\t\t\tparentView\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.DialogOpenerService#selectFiles\r\n\t *\r\n\t * @description\r\n\t * Opens a `Select Files` dialog.\r\n\t *\r\n\t * @param {string} relatedObjectId - relatedObjectId.\r\n\t * @param {string} relatedEntity - relatedEntity.\r\n\t * @param {boolean} skipInitialLoad - skip initial load.\r\n\t * @param {DetailsView} parentView - if set and parent view will be closed then this Dialog will be closed automatically.\r\n\t *\r\n\t * @returns {promise} - promise, which will be resolved with files that user selected on this Dialog.\r\n\t *\r\n\t */\r\n\tfunction selectFiles(relatedObjectId, relatedEntity, skipInitialLoad, parentView) {\r\n\t\tconst locals = {\r\n\t\t\trelatedObjectId: relatedObjectId,\r\n\t\t\trelatedEntity: relatedEntity,\r\n\t\t\tskipInitialLoad: skipInitialLoad === true,\r\n\t\t\tselectionMode: mx.SolutionBuilderAgent.DetailsViewSelectionMode.Single,\r\n\t\t};\r\n\r\n\t\treturn _openSelectView(\r\n\t\t\t'selectFiles_' + relatedEntity + relatedObjectId + Math.random(),\r\n\t\t\ti18n.get('solutionBuilderAgent.browseDialog.selectFilesTitle'),\r\n\t\t\ti18n.get('solutionBuilderAgent.browseDialog.selectFiles'),\r\n\t\t\tundefined,\r\n\t\t\tlocals,\r\n\t\t\t'mx.SolutionBuilderAgent.ObjectPickerFileSelectionTabController',\r\n\t\t\t'workspaces/SolutionBuilderAgent/components/mx-grid/file-selection-tab.html',\r\n\t\t\tparentView\r\n\t\t);\r\n\t}\r\n\r\n\tfunction _openSelectView(uniqueViewId, name, headerTitle, displayName, locals, controller, templateUrl, parentView, keepAsOpened) {\r\n\t\tconst selView = new MxDetailsView({\r\n\t\t\tcontroller: controller,\r\n\t\t\theaderTitle: headerTitle,\r\n\t\t\tdisplayName: displayName,\r\n\t\t\tid: uniqueViewId,\r\n\t\t\tlocals: locals,\r\n\t\t\tname: name,\r\n\t\t\tkeepAsOpened: keepAsOpened,\r\n\t\t\ttemplateUrl: templateUrl,\r\n\t\t});\r\n\r\n\t\tlocals.__view = selView;\r\n\r\n\t\treturn sidePanelService.addView(selView, parentView, true);\r\n\t}\r\n}\r\n","export class EmbeddedViewService {\r\n\tstatic $inject = ['mx.shell.LeftSidebarService', 'mx.shell.ToolbarManager', 'mx.shell.SideLayout', 'mx.shell.Config'];\r\n\r\n\tconstructor(leftSidebarService, toolbarManager, sideLayout, config) {\r\n\t\tObject.assign(this, { leftSidebarService, toolbarManager, sideLayout, config });\r\n\t}\r\n\r\n\tactivate() {\r\n\t\tconst { leftSidebarService, toolbarManager, sideLayout, config } = this;\r\n\t\t$('body').addClass('mx-embedded-view');\r\n\t\tsideLayout.fullScreenMode = true;\r\n\r\n\t\ttoolbarManager.isVisible = false;\r\n\t\tleftSidebarService.isVisible = false;\r\n\t\tsideLayout.switchFullScreenMode();\r\n\r\n\t\tmx.EmbeddedView = mx.EmbeddedView || {};\r\n\t\tmx.EmbeddedView.save = function () {\r\n\t\t\t$($('.mx-action-generic--done, .mx-wizard-button--next button, .mx-wizard-button--finish button').get(0)).click();\r\n\t\t\tvar checkInterval = window.setInterval(function () {\r\n\t\t\t\tvar id = $('mx-side-panel [external-usage-output--object-id]:visible').attr('external-usage-output--object-id');\r\n\t\t\t\tif (id) {\r\n\t\t\t\t\twindow.clearInterval(checkInterval);\r\n\t\t\t\t\twindow.location.href =\r\n\t\t\t\t\t\twindow.location.origin +\r\n\t\t\t\t\t\tconfig.settings.basePath +\r\n\t\t\t\t\t\t'guid-output.html' +\r\n\t\t\t\t\t\t//This JSON is needed for Native Mobile team, because iPhone App gets ID from URL.\r\n\t\t\t\t\t\t// But it may change after they release.\r\n\t\t\t\t\t\t// Proper way is to get ID from HTML body by this URL.\r\n\t\t\t\t\t\t// In this case we can just remove next line.\r\n\t\t\t\t\t\t'?view-options=' +\r\n\t\t\t\t\t\tJSON.stringify({ embedded: true, createdObjectId: id }) +\r\n\t\t\t\t\t\t// This line is mandatory.\r\n\t\t\t\t\t\t'#' +\r\n\t\t\t\t\t\tid;\r\n\t\t\t\t}\r\n\t\t\t}, 500);\r\n\t\t\twindow.setTimeout(function () {\r\n\t\t\t\tif (checkInterval) {\r\n\t\t\t\t\twindow.clearInterval(checkInterval);\r\n\t\t\t\t}\r\n\t\t\t}, 3 * 60 * 1000);\r\n\t\t};\r\n\t}\r\n}\r\n","'use strict';\r\nimport { SupportedOperations } from '../model/enumerations';\r\n\r\n/**\r\n * @ngdoc service\r\n * @name mx.SolutionBuilderAgent.ExternalServiceManager\r\n * @module mx.SolutionBuilderAgent\r\n *\r\n * @description\r\n * Provides list of methods for working with external Rest Services.\r\n */\r\nExternalServiceManager.$inject = ['$q', 'mx.internationalization', 'mx.SolutionBuilderAgent.Http'];\r\nexport function ExternalServiceManager($q, internationalization, http) {\r\n\tconst cache = { services: {} };\r\n\r\n\treturn {\r\n\t\tdeleteObjects: deleteObjects,\r\n\t\tgetOperation: getOperation,\r\n\t\tgetOperationInfo: getOperationInfo,\r\n\t\tgetOperationTypes: getOperationTypes,\r\n\t\tgetObjectInfo: getObjectInfo,\r\n\t\tgetFragmentDescriptors: getFragmentDescriptors,\r\n\t\tgetListExecuteOptions: getListExecuteOptions,\r\n\t\tgetServiceInfo: getServiceInfo,\r\n\t\tparseServiceInfo: parseServiceInfo,\r\n\t\tgetEntity: getEntity,\r\n\t\tupdateEntity: updateEntity,\r\n\t\tisService: isService,\r\n\t\tgetServiceId: getServiceId,\r\n\t\tgetServiceInfoByEntityName: getServiceInfoByEntityName,\r\n\t\tgetEnumeration: getEnumeration,\r\n\t};\r\n\r\n\tfunction deleteObjects(type, objects) {\r\n\t\treturn getServiceInfoByEntityName(type).then(function (service) {\r\n\t\t\tvar deleteOperation = service.Operations.filter(function (op) {\r\n\t\t\t\treturn op.SupportedOperation === SupportedOperations.DeleteObject;\r\n\t\t\t})[0];\r\n\r\n\t\t\tif (!deleteOperation) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar serviceURl = service.Prefix + '/';\r\n\t\t\tvar path = deleteOperation.RouteTemplate.toLocaleLowerCase();\r\n\r\n\t\t\tvar results = objects.map(function (object) {\r\n\t\t\t\tvar _path = path.replace(/{\\w+}/gi, object._id);\r\n\t\t\t\treturn http.host(service.BaseUrl).remove(serviceURl + _path);\r\n\t\t\t});\r\n\r\n\t\t\treturn $q.all(results);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getOperationInfo(entityName, operation) {\r\n\t\tvar serviceId = getServiceId(entityName);\r\n\t\treturn getServiceInfo(serviceId).then(function (service) {\r\n\t\t\tvar readOperation = getOperation(service, operation);\r\n\t\t\treturn getOperationTypesInternal(readOperation, entityName, serviceId, operation);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getObjectInfo(entityName, objectId) {\r\n\t\tvar serviceId = getServiceId(entityName);\r\n\r\n\t\treturn getServiceInfo(serviceId).then(function (service) {\r\n\t\t\tvar readOperation = getOperation(service, SupportedOperations.ReadObject);\r\n\r\n\t\t\tif (!readOperation) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar typeInfo = getResponseTypeInfo(readOperation, serviceId);\r\n\r\n\t\t\tvar serviceURl = service.Prefix + '/';\r\n\r\n\t\t\tvar path = readOperation.RouteTemplate.toLocaleLowerCase().replace('{id}', objectId).replace('{identifier}', objectId);\r\n\r\n\t\t\treturn http\r\n\t\t\t\t.host(service.BaseUrl)\r\n\t\t\t\t.get(serviceURl + path)\r\n\t\t\t\t.then(function (result) {\r\n\t\t\t\t\tvar item = result;\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tId: item[typeInfo.Identifier],\r\n\t\t\t\t\t\tDisplayString: item[typeInfo.DisplayName],\r\n\t\t\t\t\t\t'Sys-Entity': entityName,\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getOperationTypeInfo(operation, serviceId, supportedOperation, subCollection) {\r\n\t\tif (!operation) {\r\n\t\t\treturn {};\r\n\t\t}\r\n\r\n\t\tif (!serviceId) {\r\n\t\t\tserviceId = operation.ServiceId;\r\n\t\t}\r\n\r\n\t\tsupportedOperation = supportedOperation || SupportedOperations.ReadObject;\r\n\r\n\t\treturn supportedOperation === SupportedOperations.InsertObject || supportedOperation === SupportedOperations.UpdateObject\r\n\t\t\t? getRequestBodyTypeInfo(operation, serviceId)\r\n\t\t\t: getResponseTypeInfo(operation, serviceId, subCollection);\r\n\t}\r\n\r\n\tfunction getOperationTypes(operation, subCollection) {\r\n\t\treturn getOperationTypesInternal(operation, undefined, undefined, undefined, subCollection);\r\n\t}\r\n\r\n\tfunction getOperationTypesInternal(operation, entityName, serviceId, supportedOperation, subCollection) {\r\n\t\tvar typeInfo = getOperationTypeInfo(operation, serviceId, supportedOperation, subCollection);\r\n\r\n\t\tif (!entityName) {\r\n\t\t\tentityName = 'service_' + serviceId;\r\n\t\t}\r\n\r\n\t\tvar oi = {\r\n\t\t\tisService: true,\r\n\t\t\tEnums: {},\r\n\t\t\tEnumTypes: [],\r\n\t\t\tEnumNames: [],\r\n\t\t\tIdentifier: typeInfo.Identifier,\r\n\t\t\tTypeInfo: typeInfo,\r\n\t\t};\r\n\r\n\t\toi.Enums.$find = function (name, value) {\r\n\t\t\tvar _enum = oi.Enums[name];\r\n\t\t\tvar enumField = _.find(_enum, { Value: value });\r\n\t\t\treturn (enumField && enumField.DisplayString) || value;\r\n\t\t};\r\n\r\n\t\t_.forOwn(typeInfo.UsedTypes, function (type, name) {\r\n\t\t\tif (type.Enum) {\r\n\t\t\t\tvar enumName = (entityName ? entityName + '_' : '') + name;\r\n\t\t\t\toi.Enums[enumName] = [];\r\n\t\t\t\t_.forOwn(type.Enum, function (val) {\r\n\t\t\t\t\toi.Enums[enumName].push({\r\n\t\t\t\t\t\tValue: val.Value,\r\n\t\t\t\t\t\tDisplayString: val.Title,\r\n\t\t\t\t\t\tOrder: val.Order,\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\toi.Enums[enumName] = oi.Enums[enumName].sort(function (a, b) {\r\n\t\t\t\t\tif (isNaN(a.Order) && isNaN(b.Order)) {\r\n\t\t\t\t\t\treturn a.DisplayString.localeCompare(b.DisplayString);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (isNaN(a.Order)) {\r\n\t\t\t\t\t\treturn 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (isNaN(b.Order)) {\r\n\t\t\t\t\t\treturn -1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn a.Order - b.Order;\r\n\t\t\t\t});\r\n\r\n\t\t\t\toi.EnumNames.push(name);\r\n\t\t\t\toi.EnumTypes.push({\r\n\t\t\t\t\tName: enumName,\r\n\t\t\t\t\tDisplayName: name,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn oi;\r\n\t}\r\n\r\n\tfunction getFragmentDescriptors(request, searchText) {\r\n\t\tvar serviceId = getServiceId(request.entityClass);\r\n\r\n\t\treturn getServiceInfo(serviceId).then(function (service) {\r\n\t\t\tvar listOperation = getOperation(service, SupportedOperations.ReadObjectsByODataQuery);\r\n\r\n\t\t\tif (!listOperation) {\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\r\n\t\t\tvar serviceURl = service.Prefix + '/';\r\n\t\t\tvar path = listOperation.RouteTemplate.toLocaleLowerCase();\r\n\r\n\t\t\tvar typeInfo = getResponseTypeInfo(listOperation, serviceId);\r\n\t\t\tvar url = serviceURl + path + '?$filter=contains(' + typeInfo.DisplayName + \",'\" + searchText + \"')\";\r\n\r\n\t\t\tvar objectMapper = new ObjectMapper(serviceId, typeInfo);\r\n\t\t\tvar contract = listOperation.ResponseContract.ContractDescriptor;\r\n\t\t\tvar getDataFromObject = function (data) {\r\n\t\t\t\treturn contract.PathToData ? data[contract.PathToData] : data;\r\n\t\t\t};\r\n\r\n\t\t\treturn http\r\n\t\t\t\t.host(service.BaseUrl)\r\n\t\t\t\t.get(url)\r\n\t\t\t\t.then(function (result) {\r\n\t\t\t\t\tvar data = getDataFromObject(result);\r\n\r\n\t\t\t\t\treturn data.map(function (item) {\r\n\t\t\t\t\t\titem = objectMapper(item);\r\n\t\t\t\t\t\titem.Id = item[typeInfo.Identifier];\r\n\t\t\t\t\t\titem.DisplayString = item[typeInfo.DisplayName];\r\n\t\t\t\t\t\treturn item;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getOperation(service, operationFlag, operationId) {\r\n\t\tvar ops = service.Operations.filter(function (op) {\r\n\t\t\treturn (operationId && op.Id === operationId) || (!operationId && op.SupportedOperation & operationFlag);\r\n\t\t});\r\n\r\n\t\tif (ops.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\treturn ops[0];\r\n\t}\r\n\r\n\tfunction updateEntity(entityName, objectId, entity) {\r\n\t\tvar serviceId = getServiceId(entityName);\r\n\r\n\t\treturn getServiceInfo(serviceId).then(function (service) {\r\n\t\t\tvar isNew = objectId === 'new';\r\n\t\t\tvar serviceURl = service.Prefix + '/';\r\n\t\t\tvar operation = isNew ? SupportedOperations.InsertObject : SupportedOperations.UpdateObject;\r\n\t\t\tvar updateOperation = getOperation(service, operation);\r\n\t\t\tvar typeInfo = getRequestBodyTypeInfo(updateOperation, serviceId);\r\n\t\t\tvar objectMapper = new ObjectMapper(serviceId, typeInfo);\r\n\t\t\tvar path = isNew ? updateOperation.RouteTemplate || '' : getPath(updateOperation, typeInfo, objectId);\r\n\t\t\treturn http\r\n\t\t\t\t.host(service.BaseUrl)\r\n\t\t\t\t.post(serviceURl + path, entity, {}, {}, true)\r\n\t\t\t\t.then(function (result) {\r\n\t\t\t\t\tif (isNew && result) {\r\n\t\t\t\t\t\tvar resultId = result[typeInfo.Identifier];\r\n\t\t\t\t\t\tif (resultId) {\r\n\t\t\t\t\t\t\tentity[typeInfo.Identifier] = resultId;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tentity[typeInfo.Identifier] = result;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tobjectMapper(entity);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn entity[typeInfo.Identifier];\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getEntity(entityName, objectId) {\r\n\t\tvar serviceId = getServiceId(entityName);\r\n\r\n\t\treturn getServiceInfo(serviceId).then(function (service) {\r\n\t\t\tvar serviceURl = service.Prefix + '/';\r\n\r\n\t\t\tvar getObjectOperation = getOperation(service, SupportedOperations.ReadObject);\r\n\t\t\tvar typeInfo = getResponseTypeInfo(getObjectOperation, serviceId);\r\n\t\t\tvar objectMapper = new ObjectMapper(serviceId, typeInfo);\r\n\r\n\t\t\tif (objectId === 'new') {\r\n\t\t\t\treturn $q.when({\r\n\t\t\t\t\tobject: objectMapper({ 'Sys-IsNew': true }),\r\n\t\t\t\t\tentityName: getObjectOperation.ResponseContract.ContractDescriptor.Type,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tvar path = getPath(getObjectOperation, typeInfo, objectId);\r\n\t\t\treturn http\r\n\t\t\t\t.host(service.BaseUrl)\r\n\t\t\t\t.get(serviceURl + path)\r\n\t\t\t\t.then(function (result) {\r\n\t\t\t\t\tresult['Sys-IsNew'] = false;\r\n\t\t\t\t\tresult = objectMapper(result);\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tobject: result,\r\n\t\t\t\t\t\tentityName: getObjectOperation.ResponseContract.ContractDescriptor.Type,\r\n\t\t\t\t\t\ttypeName: typeInfo.TypeName,\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getPath(operationInfo, typeInfo, objectId) {\r\n\t\tvar path = operationInfo.RouteTemplate.toLocaleLowerCase();\r\n\t\tif (typeInfo.Identifier) {\r\n\t\t\tpath = path.replace('{' + typeInfo.Identifier.toLocaleLowerCase() + '}', objectId);\r\n\t\t}\r\n\t\tif (!typeInfo.Identifier || path.indexOf('{') !== -1) {\r\n\t\t\tpath = path.replace('{id}', objectId).replace('{identifier}', objectId);\r\n\t\t}\r\n\t\treturn path;\r\n\t}\r\n\r\n\tfunction getListExecuteOptions(dataQuery, operation, entityService) {\r\n\t\tvar columns = dataQuery.Columns;\r\n\t\tvar serviceInfo = dataQuery.ServiceInfo;\r\n\t\tvar serviceId = dataQuery.Service;\r\n\t\tvar subCollection = dataQuery.SubCollection;\r\n\t\tvar executeOptions = {};\r\n\t\tvar isOData = (operation & SupportedOperations.ReadObjectsByODataQuery) > 0;\r\n\r\n\t\texecuteOptions.serviceUrl = serviceInfo.Prefix + '/';\r\n\r\n\t\tvar listOperation = getOperation(serviceInfo, operation, dataQuery.Operation);\r\n\t\tvar contract = listOperation.ResponseContract.ContractDescriptor;\r\n\r\n\t\texecuteOptions.listUrl = listOperation.RelativePath;\r\n\r\n\t\texecuteOptions.httpProvider = http.host(serviceInfo.BaseUrl);\r\n\t\texecuteOptions.processResponse = function (result) {\r\n\t\t\treturn result;\r\n\t\t};\r\n\r\n\t\tvar path = subCollection || contract.PathToData;\r\n\t\texecuteOptions.getDataFromObject = function (data) {\r\n\t\t\treturn path ? data[path] : data;\r\n\t\t};\r\n\t\texecuteOptions.getProcessedDataFromObject = function (obj) {\r\n\t\t\tvar data = executeOptions.getDataFromObject(obj);\r\n\t\t\tif (Array.isArray(data)) {\r\n\t\t\t\treturn data.map(function (item) {\r\n\t\t\t\t\treturn executeOptions.processDataFuncs.reduce(function (accumulator, func) {\r\n\t\t\t\t\t\treturn func(accumulator);\r\n\t\t\t\t\t}, item);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/* Load count settings*/\r\n\r\n\t\tvar returnCountType = (contract.ReturnCountType !== undefined && Number(contract.ReturnCountType)) || 3;\r\n\r\n\t\texecuteOptions.countOptions = {\r\n\t\t\texecuteExternalService: returnCountType === 3,\r\n\t\t\tdataRequestUrlCount:\r\n\t\t\t\texecuteOptions.listUrl.indexOf('/?') !== -1\r\n\t\t\t\t\t? executeOptions.listUrl.replace('/?', '/$count?')\r\n\t\t\t\t\t: executeOptions.listUrl.indexOf('?') !== -1\r\n\t\t\t\t\t? executeOptions.listUrl.replace('?', '/$count?')\r\n\t\t\t\t\t: executeOptions.listUrl[executeOptions.listUrl.length - 1] === '/'\r\n\t\t\t\t\t? executeOptions.listUrl + '$count'\r\n\t\t\t\t\t: executeOptions.listUrl + '/$count',\r\n\t\t\tprocessResponse: function (result) {\r\n\t\t\t\treturn result;\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tif (returnCountType === 1) {\r\n\t\t\t// TODO: rework for get count from path same as data.xxx.rrr.ddd\r\n\t\t\texecuteOptions.countOptions.getFromObject = function (data) {\r\n\t\t\t\treturn data[contract.PathToCount];\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t/* End: Load count settings*/\r\n\r\n\t\t/* Load Filters*/\r\n\t\texecuteOptions.processDataFuncs = [];\r\n\t\texecuteOptions.searchByKeywordFuncs = [];\r\n\r\n\t\texecuteOptions.searchByKeywordFuncs.processKeyword = function (keyword) {\r\n\t\t\tif (!keyword) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tkeyword = keyword.toLowerCase();\r\n\t\t\treturn executeOptions.searchByKeywordFuncs\r\n\t\t\t\t.map(function (func) {\r\n\t\t\t\t\treturn func(keyword);\r\n\t\t\t\t})\r\n\t\t\t\t.filter(function (item) {\r\n\t\t\t\t\treturn Boolean(item);\r\n\t\t\t\t})\r\n\t\t\t\t.join(' or ');\r\n\t\t};\r\n\r\n\t\tvar enumColumns = columns.filter(function (column) {\r\n\t\t\treturn column.ReferenceTo !== undefined && column.AttributeSearchValueType === 'IntType' && column.IsKeyword;\r\n\t\t});\r\n\r\n\t\tenumColumns.forEach(function (column) {\r\n\t\t\tvar enumFunctions = new ProcessEnum(column, listOperation, entityService);\r\n\t\t\tenumFunctions.then(function (enumF) {\r\n\t\t\t\tif (!enumF.intToString) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\texecuteOptions.processDataFuncs.push(enumF.intToString);\r\n\t\t\t\tif (isOData) {\r\n\t\t\t\t\texecuteOptions.searchByKeywordFuncs.push(enumF.searchByKeyword);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tif (isOData) {\r\n\t\t\tvar stringColumns = columns.filter(function (column) {\r\n\t\t\t\treturn column.AttributeSearchValueType === 'StringType' && !column.IsArray && column.IsKeyword;\r\n\t\t\t});\r\n\r\n\t\t\tstringColumns.forEach(function (column) {\r\n\t\t\t\tvar expressionField = (column.SearchExpression || column.Expression).replace(/\\./g, '/');\r\n\t\t\t\tif (!expressionField.match(/[^\\w$_/]/g)) {\r\n\t\t\t\t\texecuteOptions.searchByKeywordFuncs.push(function (keyword) {\r\n\t\t\t\t\t\treturn 'contains(tolower(' + expressionField + \"),'\" + encodeURIComponent(escapeSql(keyword)) + \"')\";\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\texecuteOptions.typeInfo = getResponseTypeInfo(listOperation, serviceId, subCollection);\r\n\t\texecuteOptions.processDataFuncs.push(new ObjectMapper(serviceId, executeOptions.typeInfo));\r\n\t\texecuteOptions.processDataFuncs.push(new DataQueryMapper(dataQuery, executeOptions.typeInfo));\r\n\r\n\t\treturn executeOptions;\r\n\t}\r\n\r\n\tfunction escapeSql(keyword) {\r\n\t\treturn keyword && keyword.replace(/'/g, \"''''\");\r\n\t}\r\n\r\n\tfunction DataQueryMapper(dataQuery, typeInfo) {\r\n\t\tvar columns = dataQuery.Columns;\r\n\t\tif (!columns.length) {\r\n\t\t\treturn function (item) {\r\n\t\t\t\treturn item;\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tvar preFunc = typeInfo.MakeExpression();\r\n\t\tcolumns.forEach(function (c) {\r\n\t\t\tif (c.Expression && c.Expression.match(/[^\\w$_]/g)) {\r\n\t\t\t\tc.ExpressionFunc = preFunc(c.Expression);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn function (item) {\r\n\t\t\tvar result = {\r\n\t\t\t\t_type: item._type,\r\n\t\t\t\t_id: item._id,\r\n\t\t\t\t_displayName: item._displayName,\r\n\t\t\t\t_getTypeDisplayName: item._getTypeDisplayName,\r\n\t\t\t\t_name: item._name,\r\n\t\t\t};\r\n\r\n\t\t\tcolumns.forEach(function (c) {\r\n\t\t\t\tif (c.ExpressionFunc) {\r\n\t\t\t\t\tresult[c.Name] = c.ExpressionFunc(item);\r\n\t\t\t\t} else if (c.Expression.indexOf('.') === -1) {\r\n\t\t\t\t\tresult[c.Name || c.Expression] = item[c.Expression];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar tmpObj = item;\r\n\t\t\t\t\tc.Expression.split('.').forEach(function (part) {\r\n\t\t\t\t\t\ttmpObj = tmpObj && tmpObj[part];\r\n\t\t\t\t\t});\r\n\t\t\t\t\tresult[c.Name] = tmpObj;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn result;\r\n\t\t};\r\n\t}\r\n\r\n\tfunction ObjectMapper(serviceId, typeInfo) {\r\n\t\tif (!typeInfo) {\r\n\t\t\treturn function (item) {\r\n\t\t\t\treturn item;\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn function (item) {\r\n\t\t\titem._type = typeInfo.Dynamic ? item[typeInfo.TypeName] : typeInfo.TypeName;\r\n\t\t\titem._id = item[typeInfo.Identifier] ? item[typeInfo.Identifier] : null;\r\n\t\t\titem._displayName = item[typeInfo.DisplayName] ? item[typeInfo.DisplayName] : internationalization.notAvailable();\r\n\t\t\titem._name = item._displayName;\r\n\t\t\titem._getTypeDisplayName = typeInfo.GetTypeDisplayNamePromise && typeInfo.GetTypeDisplayNamePromise(item);\r\n\t\t\treturn item;\r\n\t\t};\r\n\t}\r\n\r\n\tfunction getRequestBodyTypeInfo(operation, serviceId) {\r\n\t\tvar usedTypes = operation.RequestContract.UsedTypes;\r\n\t\tvar requestContractDescriptor = usedTypes.RequestContract.Descriptor;\r\n\t\tvar contractDescriptor = _.find(requestContractDescriptor, { Source: 1 });\r\n\t\tvar resultType = contractDescriptor.Type;\r\n\t\treturn getTypeInfo(usedTypes, resultType, serviceId);\r\n\t}\r\n\r\n\tfunction getResponseTypeInfo(operation, serviceId, subCollection) {\r\n\t\tvar contractDescriptor = operation.ResponseContract.ContractDescriptor;\r\n\t\tvar usedTypes = operation.ResponseContract.UsedTypes;\r\n\t\tvar resultTypeObj;\r\n\r\n\t\tvar resultType = contractDescriptor.Type;\r\n\r\n\t\tif (Array.isArray(resultType)) {\r\n\t\t\tresultType = resultType[0];\r\n\t\t}\r\n\r\n\t\tif (subCollection || contractDescriptor.PathToData) {\r\n\t\t\tresultTypeObj = usedTypes[resultType];\r\n\t\t\tif (!resultTypeObj) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tresultType = resultTypeObj.Descriptor[subCollection || contractDescriptor.PathToData].Type;\r\n\t\t}\r\n\t\treturn getTypeInfo(usedTypes, resultType, serviceId);\r\n\t}\r\n\r\n\tfunction getTypeInfo(usedTypes, resultType, serviceId) {\r\n\t\tconst resultTypeObj = usedTypes[resultType];\r\n\t\tif (!resultTypeObj) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet typeName = resultTypeObj.TypeName;\r\n\r\n\t\tif (!typeName && serviceId) {\r\n\t\t\ttypeName = 'service_' + serviceId;\r\n\t\t}\r\n\r\n\t\tconst typeDisplayNameAttr = resultTypeObj.TypeDisplayName;\r\n\t\tlet typeDisplayName;\r\n\r\n\t\tswitch (typeDisplayNameAttr?.DisplayType) {\r\n\t\t\tcase 0: //field\r\n\t\t\t\ttypeDisplayName = function (item) {\r\n\t\t\t\t\treturn $q.when(item?.[typeDisplayNameAttr?.Name]);\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tcase 1: //static\r\n\t\t\t\ttypeDisplayName = function () {\r\n\t\t\t\t\treturn $q.when(typeDisplayNameAttr?.Name);\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tcase 2: //TODO: from service\r\n\t\t\t\ttypeDisplayName = function () {\r\n\t\t\t\t\treturn $q.when(typeDisplayNameAttr?.Name);\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 3: //TODO: from service\r\n\t\t\t\ttypeDisplayName = function () {\r\n\t\t\t\t\treturn $q.when(typeDisplayNameAttr?.Name);\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\t//TODO: from service\r\n\t\t\t\ttypeDisplayName = function () {\r\n\t\t\t\t\treturn $q.when(typeDisplayNameAttr?.Name);\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tIdentifier: resultTypeObj.Identifier,\r\n\t\t\tDisplayName: resultTypeObj.DisplayName,\r\n\t\t\tDynamic: resultTypeObj.Dynamic === true,\r\n\t\t\tTypeName: typeName,\r\n\t\t\tGetTypeDisplayNamePromise: typeDisplayName,\r\n\t\t\tUsedTypes: usedTypes,\r\n\t\t\tResultType: resultTypeObj,\r\n\t\t\tMakeExpression: makeExpression(resultTypeObj, usedTypes),\r\n\t\t};\r\n\t}\r\n\r\n\tfunction findMainCollection(type, usedTypes, pathToObject) {\r\n\t\tif (!pathToObject) {\r\n\t\t\treturn type;\r\n\t\t}\r\n\t\tvar innerType = type.Descriptor[pathToObject].Type;\r\n\t\tif (Array.isArray(innerType)) {\r\n\t\t\tinnerType = innerType[0];\r\n\t\t}\r\n\t\treturn usedTypes[innerType];\r\n\t}\r\n\r\n\tfunction makeExpression(type, usedTypes) {\r\n\t\treturn function (pathToObject) {\r\n\t\t\tvar params = [];\r\n\t\t\tvar args = [];\r\n\t\t\t_.forOwn(findMainCollection(type, usedTypes, pathToObject).Descriptor, function (value, key) {\r\n\t\t\t\targs.push(key);\r\n\t\t\t\tparams.push('context.' + key);\r\n\t\t\t});\r\n\r\n\t\t\tvar funcPartArgs = 'var func = function(' + args.join(',') + '){';\r\n\t\t\tvar funcPartParams = '};\\r\\nreturn func(' + params.join(',') + ');\\r\\n';\r\n\t\t\treturn function (expression) {\r\n\t\t\t\texpression = expression.replace(/\\/\\*.+?\\*\\/|\\/\\/.*(?=[\\n\\r])/g, '').trim();\r\n\t\t\t\tvar exp = expression.match(/return(:?\\s|;)/g) ? expression : 'return ' + expression;\r\n\t\t\t\tvar sFunc = funcPartArgs + exp + funcPartParams;\r\n\t\t\t\tvar func = new Function('context', sFunc);\r\n\t\t\t\treturn function (object) {\r\n\t\t\t\t\treturn func(object);\r\n\t\t\t\t};\r\n\t\t\t};\r\n\t\t};\r\n\t}\r\n\r\n\tfunction ProcessEnum(column, operation, entityService) {\r\n\t\tvar defer = $q.defer();\r\n\r\n\t\tvar enumName = column.ReferenceTo;\r\n\r\n\t\tif (!enumName) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar field = column.Name;\r\n\t\tvar expressionField = column.SearchExpression || column.Expression;\r\n\t\tvar enumInfo = operation.ResponseContract.UsedTypes[enumName];\r\n\t\tif (!enumInfo) {\r\n\t\t\tentityService.getEnumerationValues(enumName).then(function (enumData) {\r\n\t\t\t\tdefer.resolve(_processEnum({ Enum: enumData }, field, expressionField));\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tdefer.resolve(_processEnum(enumInfo, field, expressionField));\r\n\t\t}\r\n\r\n\t\treturn defer.promise;\r\n\t}\r\n\r\n\tfunction _processEnum(enumInfo, field, expressionField) {\r\n\t\tvar _enum = enumInfo.Enum;\r\n\t\tvar flags = enumInfo.Flags;\r\n\t\tvar enumArray = [];\r\n\t\tvar enumArrayLowerCase = [];\r\n\r\n\t\tObject.keys(_enum).forEach(function (paramName) {\r\n\t\t\tvar value = _enum[paramName];\r\n\r\n\t\t\tenumArray[value.Value] = value.Title || value.DisplayString;\r\n\t\t\tenumArrayLowerCase[value.Value] = (value.Title || value.DisplayString).replace(/\\s/g, '').toLowerCase();\r\n\t\t});\r\n\r\n\t\treturn {\r\n\t\t\tintToString: function (item) {\r\n\t\t\t\tvar val = item[expressionField];\r\n\t\t\t\tif (flags) {\r\n\t\t\t\t\tvar strings = [];\r\n\t\t\t\t\tvar pos = 1;\r\n\t\t\t\t\tvar flagValue;\r\n\t\t\t\t\tfor (flagValue = pos & val; pos <= val; pos = pos << 1, flagValue = pos & val) {\r\n\t\t\t\t\t\tif (flagValue) {\r\n\t\t\t\t\t\t\tstrings.push(enumArray[flagValue]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\titem[field] = strings.join(', ');\r\n\t\t\t\t} else {\r\n\t\t\t\t\titem[field] = enumArray[val];\r\n\t\t\t\t}\r\n\t\t\t\treturn item;\r\n\t\t\t},\r\n\t\t\tsearchByKeyword: function (keyword) {\r\n\t\t\t\tvar matchingValues = [];\r\n\r\n\t\t\t\tenumArray.forEach(function (enumItem, index) {\r\n\t\t\t\t\tif (enumItem.indexOf(keyword) !== -1 || enumItem.toLowerCase().indexOf(keyword) !== -1) {\r\n\t\t\t\t\t\tif (_enum.NameSpace) {\r\n\t\t\t\t\t\t\tmatchingValues.push(String(expressionField) + _enum.NameSpace + \"'\" + index + \"'\");\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tmatchingValues.push(String(expressionField) + ' eq ' + index);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\treturn matchingValues.join(' or ');\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tfunction isService(entityName) {\r\n\t\treturn typeof entityName === 'string' && entityName.indexOf('service_') === 0;\r\n\t}\r\n\r\n\tfunction getServiceId(entityName) {\r\n\t\treturn entityName.split('_')[1];\r\n\t}\r\n\r\n\tfunction getServiceInfo(serviceId) {\r\n\t\tvar result = cache.services[serviceId];\r\n\r\n\t\tif (!result) {\r\n\t\t\tresult = http.get('api/Help/ServiceInfo/' + serviceId).then();\r\n\t\t\tcache.services[serviceId] = result;\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tfunction getServiceInfoByEntityName(entityName) {\r\n\t\treturn getServiceInfo(getServiceId(entityName));\r\n\t}\r\n\r\n\tfunction parseServiceInfo(serviceData) {\r\n\t\tvar serviceContext = {\r\n\t\t\tOperations: {},\r\n\t\t\tOperationTypes: {},\r\n\t\t\tEnums: {},\r\n\t\t\tUsedTypes: {},\r\n\t\t};\r\n\r\n\t\tserviceData.Operations.forEach(function (operation) {\r\n\t\t\tserviceContext.Operations[operation.Id] = operation;\r\n\t\t});\r\n\t\tserviceContext.UsedTypes = serviceData.Operations.reduce(function (usedTypes, operation) {\r\n\t\t\treturn angular.extend(usedTypes, getAllUsedTypes(operation));\r\n\t\t}, {});\r\n\r\n\t\tserviceContext.Enums = getEnums(serviceContext.UsedTypes);\r\n\r\n\t\treturn serviceContext;\r\n\t}\r\n\r\n\tfunction getServiceContext(serviceId) {\r\n\t\treturn getServiceInfo(serviceId).then(parseServiceInfo);\r\n\t}\r\n\r\n\tfunction getAllUsedTypes(operation) {\r\n\t\tvar usedTypes = {};\r\n\r\n\t\tObject.keys(operation.ResponseContract.UsedTypes).forEach(function (typeName) {\r\n\t\t\tusedTypes[typeName] = operation.ResponseContract.UsedTypes[typeName];\r\n\t\t});\r\n\r\n\t\tObject.keys(operation.RequestContract.UsedTypes).forEach(function (typeName) {\r\n\t\t\tusedTypes[typeName] = operation.RequestContract.UsedTypes[typeName];\r\n\t\t});\r\n\r\n\t\treturn usedTypes;\r\n\t}\r\n\r\n\tfunction getEnums(usedTypes) {\r\n\t\tvar enums = {};\r\n\t\tObject.keys(usedTypes).forEach(function (enumName) {\r\n\t\t\tvar type = usedTypes[enumName];\r\n\r\n\t\t\tif (type.Enum) {\r\n\t\t\t\tenums[enumName] = {\r\n\t\t\t\t\tName: enumName,\r\n\t\t\t\t\tValues: [],\r\n\t\t\t\t};\r\n\r\n\t\t\t\tObject.keys(type.Enum).forEach(function (name) {\r\n\t\t\t\t\tvar val = type.Enum[name];\r\n\r\n\t\t\t\t\tenums[enumName].Values.push({\r\n\t\t\t\t\t\tValue: val.Value,\r\n\t\t\t\t\t\tDisplayString: val.Title,\r\n\t\t\t\t\t\tOrder: val.Order,\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tenums[enumName].Values.sort(function (a, b) {\r\n\t\t\t\t\tif (isNaN(a.Order) && isNaN(b.Order)) {\r\n\t\t\t\t\t\treturn a.DisplayString.localeCompare(b.DisplayString);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (isNaN(a.Order)) {\r\n\t\t\t\t\t\treturn 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (isNaN(b.Order)) {\r\n\t\t\t\t\t\treturn -1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn a.Order - b.Order;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn enums;\r\n\t}\r\n\r\n\tfunction getEnumName(fullName) {\r\n\t\tif (typeof fullName === 'string') {\r\n\t\t\treturn fullName.split('_')[2] || null;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction getEnumeration(name) {\r\n\t\tif (!isService(name)) {\r\n\t\t\treturn $q.reject(name + ' is not a service');\r\n\t\t}\r\n\t\tvar serviceId = getServiceId(name);\r\n\t\tvar enumName = getEnumName(name);\r\n\t\treturn getServiceContext(serviceId).then(function (serviceContext) {\r\n\t\t\treturn serviceContext.Enums[enumName];\r\n\t\t});\r\n\t}\r\n}\r\n","'use strict';\r\n\r\n/**\r\n * @ngdoc service\r\n * @name mx.SolutionBuilderAgent.HelpService\r\n * @module mx.SolutionBuilderAgent\r\n *\r\n * @description\r\n * Provides list of methods for working with help Rest Services.\r\n */\r\nHelpService.$inject = ['$q', 'mx.SolutionBuilderAgent.Http'];\r\nexport default function HelpService($q, http) {\r\n\tvar cache = { DataDefinition: {}, Entity: {}, DataQuery: {}, Service: {}, ServiceOperation: {}, Workflow: {} };\r\n\r\n\treturn {\r\n\t\tgetServiceInfo: getServiceInfo,\r\n\t\tgetOperationInfo: getOperationInfo,\r\n\t\tgetWorkflowInfo: getWorkflowInfo,\r\n\t\tgetDqInfo: getDqInfo,\r\n\t\tgetCiInfo: getCiInfo,\r\n\t\tgetDdInfo: getDdInfo,\r\n\t};\r\n\r\n\tfunction getWorkflowInfo(id, skipError) {\r\n\t\treturn getEntityInfo(id, 'Workflow', 'api/Workflow/Descriptor', skipError);\r\n\t}\r\n\r\n\tfunction getServiceInfo(id, skipError) {\r\n\t\treturn getEntityInfo(id, 'Service', undefined, skipError);\r\n\t}\r\n\r\n\tfunction getOperationInfo(id, skipError) {\r\n\t\treturn getEntityInfo(id, 'ServiceOperation', undefined, skipError);\r\n\t}\r\n\r\n\tfunction getDqInfo(id, skipError) {\r\n\t\treturn getEntityInfo(id, 'DataQuery', undefined, skipError);\r\n\t}\r\n\r\n\tfunction getDdInfo(entityName, skipError) {\r\n\t\treturn getEntityInfo(entityName, 'DataDefinition', undefined, skipError);\r\n\t}\r\n\r\n\tfunction getCiInfo(entityName, skipError) {\r\n\t\treturn getEntityInfo(entityName, 'Entity', undefined, skipError);\r\n\t}\r\n\r\n\tfunction getEntityInfo(id, entityType, serviceUrl, skipError = false) {\r\n\t\tconst cached = cache[entityType][id];\r\n\t\tif (cached) {\r\n\t\t\treturn $q.when(angular.copy(cached));\r\n\t\t}\r\n\t\tconst url = serviceUrl || 'api/Help/' + entityType;\r\n\t\treturn http.get(url + '/' + id, {}, {}, skipError).then(\r\n\t\t\tfunction (info) {\r\n\t\t\t\tcache[entityType][id] = info;\r\n\t\t\t\treturn angular.copy(info);\r\n\t\t\t},\r\n\t\t\tfunction (error) {\r\n\t\t\t\treturn skipError ? undefined : $q.reject(error);\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nJournalService.$inject = ['$q', 'mx.SolutionBuilderAgent.Http', 'mx.shell.Config'];\r\nexport default function JournalService($q, http, config) {\r\n\treturn {\r\n\t\tget: get,\r\n\t\tadd: add,\r\n\t\timg: img,\r\n\t\tupdate: update,\r\n\t};\r\n\r\n\tfunction get(objectId, allowedInPortal, start, count, objectLinkTemplate) {\r\n\t\tvar timeOffset = new Date().getTimezoneOffset();\r\n\t\tlet operation = allowedInPortal ? 'api/JournalPortal' : 'api/Journal';\r\n\r\n\t\treturn http.get(\r\n\t\t\toperation +\r\n\t\t\t\t'?objectId=' +\r\n\t\t\t\tobjectId +\r\n\t\t\t\t'&start=' +\r\n\t\t\t\tstart +\r\n\t\t\t\t'&count=' +\r\n\t\t\t\tcount +\r\n\t\t\t\t'&objectLinkTemplate=' +\r\n\t\t\t\tencodeURIComponent(objectLinkTemplate) +\r\n\t\t\t\t'&timeOffset=' +\r\n\t\t\t\ttimeOffset\r\n\t\t);\r\n\t}\r\n\r\n\tfunction add(info) {\r\n\t\treturn http.post('api/Journal/Add', info);\r\n\t}\r\n\r\n\tfunction update(info) {\r\n\t\thttp.post('api/Journal/Update', info);\r\n\t}\r\n\r\n\tfunction img(photo) {\r\n\t\tif (!photo) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\tvar baseUrl = '';\r\n\r\n\t\tif (config.settings && config.settings.imgHosts && config.settings.imgHosts.default) {\r\n\t\t\tbaseUrl = config.settings.imgHosts.default;\r\n\t\t}\r\n\t\treturn baseUrl + photo;\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nHolidaysService.$inject = ['mx.SolutionBuilderAgent.Http'];\r\nexport default function HolidaysService(http) {\r\n\treturn {\r\n\t\tgetUserHolidays: getUserHolidays,\r\n\t};\r\n\r\n\tfunction getUserHolidays(startDate, endDate) {\r\n\t\tvar holidaysPromise = http.get('api/userinfo/holidays?startDate=' + startDate + '&endDate=' + endDate);\r\n\r\n\t\tholidaysPromise = holidaysPromise.then(function (data) {\r\n\t\t\treturn data.map(function (item) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tid: item.Id,\r\n\t\t\t\t\tname: item.Name,\r\n\t\t\t\t\tdateFrom: item.DateFrom,\r\n\t\t\t\t\tdateTo: item.DateTo,\r\n\t\t\t\t\tfullDay: item.FullDay,\r\n\t\t\t\t\tcalendarEntryType: item.CalendarEntryType,\r\n\t\t\t\t\tcalendarEntryTypeName: item.CalendarEntryTypeName,\r\n\t\t\t\t\tcountry: item.Country,\r\n\t\t\t\t\tcountryName: item.CountryName,\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn holidaysPromise;\r\n\t}\r\n}\r\n","'use strict';\r\n\r\n/**\r\n * @ngdoc component\r\n * @name mx.agent:mxMixedActionHandler\r\n * @module mx.agent\r\n * @description\r\n\r\n */\r\nMixedActionHelper.$inject = [\r\n\t'$timeout',\r\n\t'$q',\r\n\t'mx.SolutionBuilderAgent.DialogOpenerService',\r\n\t'mx.shell.RoutingService',\r\n\t'mx.shell.ActionExecutorService',\r\n\t'mx.shell.ActionManagerService',\r\n];\r\nexport default function MixedActionHelper($timeout, $q, dialogOpener, routingService, actionExecutorService, actionManagerService) {\r\n\treturn {\r\n\t\tinit: init,\r\n\t};\r\n\r\n\tfunction init(options) {\r\n\t\tvar fn;\r\n\r\n\t\tswitch (options.type) {\r\n\t\t\tcase 'dialog':\r\n\t\t\t\tif (options.objectId) {\r\n\t\t\t\t\tfn = handlers().openEditDialog.bind({}, options.objectId, options.entityType, options.fullScreen);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfn = handlers().openNewDialog.bind({}, options.entityType, options.fullScreen);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'preview':\r\n\t\t\t\tfn = handlers().openPreview.bind({}, options.objectId, options.entityType, options.fullScreen);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'action':\r\n\t\t\t\tfn = handlers().runAction.bind({}, options.action, options.actionContext, options.isLazy, options.parentView, options.presetFields, options.fullScreen);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn fn || function () {};\r\n\t}\r\n\r\n\tfunction handlers() {\r\n\t\treturn {\r\n\t\t\topenNewDialog: function (entityType, fullScreen, presetFields) {\r\n\t\t\t\tdialogOpener.openNewDialog(entityType, null, null, fullScreen, presetFields);\r\n\t\t\t},\r\n\t\t\topenEditDialog: function (objectId, entityType, fullScreen, presetFields) {\r\n\t\t\t\tvar context = {\r\n\t\t\t\t\t_id: objectId,\r\n\t\t\t\t\t_type: entityType,\r\n\t\t\t\t\t_name: '',\r\n\t\t\t\t};\r\n\t\t\t\tdialogOpener.openEditDialog(context, fullScreen, presetFields);\r\n\t\t\t},\r\n\t\t\topenPreview: function (objectId, entityType, fullScreen) {\r\n\t\t\t\tdialogOpener.openPreview(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tEntityType: entityType,\r\n\t\t\t\t\t\tId: objectId,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tundefined,\r\n\t\t\t\t\tfullScreen\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t\trunAction: function (actionId, actionContext, isLazy, parentView, presetFields, fullScreen) {\r\n\t\t\t\tif (actionId) {\r\n\t\t\t\t\tactionManagerService.getActionById(actionId).then(function (action) {\r\n\t\t\t\t\t\tif (action) {\r\n\t\t\t\t\t\t\tvar context = actionContext;\r\n\t\t\t\t\t\t\tif (typeof context !== 'undefined') {\r\n\t\t\t\t\t\t\t\tcontext = Array.isArray(context) ? context : [context];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\taction.isLazy = isLazy;\r\n\t\t\t\t\t\t\taction.openInFullScreen = fullScreen;\r\n\t\t\t\t\t\t\tactionExecutorService.execute(action, context, parentView, presetFields).catch(mx.logCatch);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nTranslationService.$inject = ['mx.SolutionBuilderAgent.Http', 'mx.shell.Language'];\r\nexport default function TranslationService(http, MxLanguage) {\r\n\treturn {\r\n\t\tget: get,\r\n\t\tupdateLocalizationString: updateLocalizationString,\r\n\t\tupdateTranslation: updateTranslation,\r\n\t\tgetAllLanguages: getAllLanguages,\r\n\t};\r\n\r\n\tfunction get(id) {\r\n\t\treturn http.get('api/localization/' + id);\r\n\t}\r\n\r\n\tfunction updateLocalizationString(translations) {\r\n\t\treturn http.post('api/localization/update', translations);\r\n\t}\r\n\r\n\tfunction updateTranslation(id, translations) {\r\n\t\treturn http.post('api/translation/' + id, translations);\r\n\t}\r\n\r\n\tfunction getAllLanguages(languageGroup) {\r\n\t\tvar languagesPromise = http.get('api/internationalization/AllLanguages?languageGroup=' + languageGroup);\r\n\r\n\t\tlanguagesPromise = languagesPromise.then(function (data) {\r\n\t\t\treturn data.map(function (item) {\r\n\t\t\t\treturn new MxLanguage({\r\n\t\t\t\t\tid: item.Id,\r\n\t\t\t\t\ttitle: item.Title,\r\n\t\t\t\t\tcode: item.Code,\r\n\t\t\t\t\tlcid: item.LCID,\r\n\t\t\t\t\tparentLcid: item.ParentLCID,\r\n\t\t\t\t\tparentTitle: item.ParentTitle,\r\n\t\t\t\t\tflagUrl: item.FlagImagePath,\r\n\t\t\t\t\ttwoLetterCode: item.TwoLetterCode,\r\n\t\t\t\t\tisRightToLeft: item.IsRightToLeft,\r\n\t\t\t\t\tisBaseLanguageInGroup: item.IsBaseLanguageInGroup,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn languagesPromise;\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nimport { EventCodes } from '../../../App/model/event-codes';\r\n\r\nViewHelpService.$inject = [\r\n\t'$q',\r\n\t'$window',\r\n\t'$http',\r\n\t'$mdDialog',\r\n\t'mx.shell.Http',\r\n\t'mx.shell.Config',\r\n\t'mx.shell.View',\r\n\t'mx.shell.SidePanelService',\r\n\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n\t'mx.shell.AppsService',\r\n\t'mx.shell.EventService',\r\n];\r\n\r\n/**\r\n * @ngdoc service\r\n * @name mx.SolutionBuilderAgent.ViewHelpService\r\n * @module mx.shell\r\n *\r\n * @requires {@ref mx.shell.Config mx.shell.Http}\r\n * @requires {@ref mx.shell.Config mx.shell.Config}\r\n *\r\n * @description\r\n * A service provides methods to get/handle/display the help associated with given view.\r\n */\r\nexport default function ViewHelpService($q, $window, $http, $mdDialog, mxHttp, mxConfig, MxView, sidePanelService, contentWidgetService, appsService, eventService) {\r\n\tvar m42OnlineHelpUrl = mxConfig.settings.restHosts.onlineHelp + '/api/kbarticle/';\r\n\r\n\treturn {\r\n\t\tgetHelpData: getHelpData,\r\n\t\tshowMore: showMore,\r\n\t\tshowViewHelp: showViewHelp,\r\n\t\tcancelViewHelp: cancelViewHelp,\r\n\t\tshowHelpPopup: showHelpPopup,\r\n\t\tisHelpAvailable: isHelpAvailable,\r\n\t};\r\n\r\n\tfunction showViewHelp(view) {\r\n\t\teventService.dispatchEvent(EventCodes.TrackViewTelemetry, {\r\n\t\t\teventName: 'Help link opened',\r\n\t\t\tview,\r\n\t\t});\r\n\r\n\t\tif (view.helpSourceType === 3) {\r\n\t\t\tshowMore(view.helpSourceType, view.helpValue);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst helpView = new MxView({\r\n\t\t\tid: 'mx-view-help',\r\n\t\t\tlocals: {\r\n\t\t\t\thelpSourceType: view.helpSourceType,\r\n\t\t\t\thelpValue: view.helpValue,\r\n\t\t\t\tpopup: true,\r\n\t\t\t\tcalledFromSidePanel: true,\r\n\t\t\t},\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t\tcontroller: 'mx.SolutionBuilderAgent.HelpArticlePageController',\r\n\t\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/layouts/help-article-page/help-article-popup.html',\r\n\t\t});\r\n\r\n\t\tsidePanelService.showPopupInTab(view, helpView);\r\n\t}\r\n\r\n\tfunction showHelpPopup(helpContent, calledFromSidePanel) {\r\n\t\tvar helpView = new MxView({\r\n\t\t\tid: 'mx-view-help',\r\n\t\t\tlocals: {\r\n\t\t\t\thelpData: {\r\n\t\t\t\t\tHTML: helpContent,\r\n\t\t\t\t},\r\n\t\t\t\tisContentHelp: true,\r\n\t\t\t\tpopup: true,\r\n\t\t\t\tcalledFromSidePanel,\r\n\t\t\t},\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t\tcontroller: 'mx.SolutionBuilderAgent.HelpArticlePageController',\r\n\t\t\ttemplateUrl: 'workspaces/SolutionBuilderAgent/layouts/help-article-page/help-article-popup.html',\r\n\t\t});\r\n\r\n\t\tif (calledFromSidePanel && sidePanelService.currentView) {\r\n\t\t\tsidePanelService.showPopupInTab(sidePanelService.currentView, helpView);\r\n\t\t} else {\r\n\t\t\t$mdDialog.show(helpView);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction cancelViewHelp(calledFromSidePanel) {\r\n\t\tif (calledFromSidePanel && sidePanelService.currentView) {\r\n\t\t\tsidePanelService.hidePopupInTab(sidePanelService.currentView);\r\n\t\t} else {\r\n\t\t\t$mdDialog.hide();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getHelpData(srcType, value) {\r\n\t\tvar parsedValue;\r\n\t\ttry {\r\n\t\t\tparsedValue = JSON.parse(value);\r\n\t\t} catch (e) {\r\n\t\t\tmx.console.error(e);\r\n\t\t\treturn $q.reject(e);\r\n\t\t}\r\n\t\tvar objectId = parsedValue.ObjID;\r\n\r\n\t\tswitch (srcType) {\r\n\t\t\tcase 1:\r\n\t\t\t\treturn mxHttp.get('api/kbarticle/' + objectId + '/html').then(function (data) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdata: data,\r\n\t\t\t\t\t\thash: parsedValue.Hashtag,\r\n\t\t\t\t\t\tarticleId: objectId,\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\tcase 2:\r\n\t\t\t\treturn $http.get(m42OnlineHelpUrl + objectId + '/html').then(function (response) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdata: typeof response === 'object' && response.data,\r\n\t\t\t\t\t\thash: parsedValue.Hashtag,\r\n\t\t\t\t\t\tarticleId: objectId,\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn $q.when();\r\n\t}\r\n\r\n\tfunction getCorrespondingUrl(srcType, value, objKBArtileValue) {\r\n\t\tswitch (srcType) {\r\n\t\t\tcase 1:\r\n\t\t\t\tvar objectContext = {\r\n\t\t\t\t\t_type: 'SVMKBArticleType',\r\n\t\t\t\t\t_id: objKBArtileValue.ObjID,\r\n\t\t\t\t};\r\n\t\t\t\treturn appsService.getCurrentApplication().then(function (app) {\r\n\t\t\t\t\treturn mxConfig.settings.basePath + 'app-' + app.name + '?' + contentWidgetService.getCorrespondingUrl(undefined, undefined, objectContext, true);\r\n\t\t\t\t});\r\n\t\t\tcase 2:\r\n\t\t\t\treturn $q.when(mxConfig.settings.basePath + 'article/' + objKBArtileValue.ObjID);\r\n\t\t\tcase 3:\r\n\t\t\t\treturn $q.when(value);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction showMore(srcType, value) {\r\n\t\tvar objKBArtileValue = srcType === 3 ? null : JSON.parse(value || '{}') || {};\r\n\t\tvar hashtag = (objKBArtileValue && objKBArtileValue.Hashtag) || '';\r\n\r\n\t\tgetCorrespondingUrl(srcType, value, objKBArtileValue).then(function (correspondingUrl) {\r\n\t\t\tif (correspondingUrl) {\r\n\t\t\t\tvar _wnd = $window.open(correspondingUrl, '_blank');\r\n\t\t\t\tif (_wnd && hashtag) {\r\n\t\t\t\t\t$(_wnd).ready(function (/*_jQuery*/) {\r\n\t\t\t\t\t\tvar intervalId = setInterval(function () {\r\n\t\t\t\t\t\t\tvar elem = _wnd.document.getElementsByTagName('mx-kb-solution');\r\n\t\t\t\t\t\t\tif (elem && elem.length > 0) {\r\n\t\t\t\t\t\t\t\tclearInterval(intervalId);\r\n\t\t\t\t\t\t\t\t_wnd.location.hash = hashtag;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, 1000);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction isHelpAvailable(view) {\r\n\t\treturn view.helpSourceType > 0;\r\n\t}\r\n}\r\n","BasePreprocessorFactory.$inject = [];\r\nexport default function BasePreprocessorFactory() {\r\n\tfunction BasePreprocessor() {\r\n\t\tObject.defineProperty(this, 'changedHandlers', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: [],\r\n\t\t});\r\n\t\treturn this;\r\n\t}\r\n\r\n\tBasePreprocessor.prototype = {\r\n\t\taddChangedHandler: function (callBack) {\r\n\t\t\tthis.changedHandlers.push(callBack);\r\n\t\t},\r\n\r\n\t\tinit: function (executor, parameters, dataQueryList) {\r\n\t\t\tthis.executor = executor;\r\n\t\t\tthis.parameters = parameters;\r\n\t\t\tthis.dataQueryList = dataQueryList;\r\n\t\t},\r\n\r\n\t\tload: function () {\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tbuild: angular.noop,\r\n\r\n\t\tcallChanged: function () {\r\n\t\t\tthis.changed();\r\n\t\t},\r\n\r\n\t\tchanged: function () {\r\n\t\t\tthis.changedHandlers.forEach(function (callBack) {\r\n\t\t\t\tcallBack();\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tprocess: angular.noop,\r\n\r\n\t\tclear: angular.noop,\r\n\t};\r\n\r\n\treturn BasePreprocessor;\r\n}\r\n","'use strict';\r\n\r\nStructurePreprocessorFactory.$inject = ['mx.SolutionBuilderAgent.BasePreprocessor'];\r\nexport default function StructurePreprocessorFactory(BasePreprocessor) {\r\n\tfunction StructurePreprocessor() {\r\n\t\tBasePreprocessor.apply(this);\r\n\t\tthis.type = mx.SolutionBuilderAgent.PreprocessorType.Structure;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tStructurePreprocessor.prototype = angular.extend(Object.create(BasePreprocessor.prototype), {\r\n\t\tbuild: function () {\r\n\t\t\tconst nodeId = this.getNodeId();\r\n\t\t\tif (nodeId) {\r\n\t\t\t\tif (this.executor.structureBuild) {\r\n\t\t\t\t\treturn this.executor.structureBuild(nodeId);\r\n\t\t\t\t}\r\n\t\t\t\treturn 'structureNodeId=' + nodeId;\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetNodeId: function () {\r\n\t\t\treturn this.parameters.structureNodeId;\r\n\t\t},\r\n\t});\r\n\r\n\treturn StructurePreprocessor;\r\n}\r\n","'use strict';\r\n\r\nColumnDefinitionPreprocessorFactory.$inject = [\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n\t'mx.SolutionBuilderAgent.mxColumnDefinitionService',\r\n\t'$q',\r\n\t'mx.SolutionBuilderAgent.BasePreprocessor',\r\n];\r\nexport default function ColumnDefinitionPreprocessorFactory(personalizationService, columnDefinitionService, $q, BasePreprocessor) {\r\n\tfunction ColumnDefinitionPreprocessor() {\r\n\t\tBasePreprocessor.apply(this);\r\n\t\tthis.type = mx.SolutionBuilderAgent.PreprocessorType.ColumnDefinition;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tColumnDefinitionPreprocessor.prototype = angular.extend(Object.create(BasePreprocessor.prototype), {\r\n\t\tbuild: function () {\r\n\t\t\treturn this.executor.columnsBuild(this._columns);\r\n\t\t},\r\n\r\n\t\tload: async function (widgetId, dataQueryId, parameters) {\r\n\t\t\tconst self = this;\r\n\t\t\tself.widgetId = widgetId;\r\n\r\n\t\t\tconst personalColumns = await personalizationService.getGridPersonalization(widgetId);\r\n\t\t\tconst dqColumns = parameters.dataQuery.Columns;\r\n\r\n\t\t\tconst newColumns = {};\r\n\r\n\t\t\tconst dataQueryHasVisibleColumn = function (columnName) {\r\n\t\t\t\treturn dqColumns.some(function (dqColumn) {\r\n\t\t\t\t\treturn dqColumn.Name === columnName && dqColumn.IsDisplay === true;\r\n\t\t\t\t});\r\n\t\t\t};\r\n\r\n\t\t\tfor (let column in personalColumns) {\r\n\t\t\t\tif (personalColumns.hasOwnProperty(column) && dataQueryHasVisibleColumn(column)) {\r\n\t\t\t\t\tnewColumns[column] = personalColumns[column];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tdqColumns.forEach(function (dqColumn) {\r\n\t\t\t\tif ((dqColumn.IsDisplay === true || dqColumn.IsLoading === true) && !personalColumns[dqColumn.Name]) {\r\n\t\t\t\t\tnewColumns[dqColumn.Name] = { IsDisplay: true };\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tself.allColumns = dqColumns;\r\n\t\t\tself._columns = newColumns;\r\n\t\t},\r\n\r\n\t\tcallVisibilityChanged: function (column) {\r\n\t\t\tvar self = this;\r\n\r\n\t\t\tpersonalizationService.savePersonalizedColumnVisibility(column, self.widgetId).then(function () {\r\n\t\t\t\tif (column.visible) {\r\n\t\t\t\t\tpersonalizationService.getGridPersonalization(self.widgetId).then(function (columns) {\r\n\t\t\t\t\t\tself._columns = columns;\r\n\t\t\t\t\t\tself.changed();\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tcallPositionChanged: function (column, oldPosition, newPosition, columns) {\r\n\t\t\tpersonalizationService.savePersonalizedColumnPosition(columns, this.widgetId);\r\n\t\t},\r\n\r\n\t\tcallSizeChanged: function (column, columnWidthShift, absoluteWidth) {\r\n\t\t\tpersonalizationService.savePersonalizedColumnSize(column, absoluteWidth, this.widgetId);\r\n\t\t},\r\n\t});\r\n\r\n\treturn ColumnDefinitionPreprocessor;\r\n}\r\n","import { GroupType } from '../../model/enumerations';\r\n\r\nDateRangePreprocessorFactory.$inject = [\r\n\t'mx.shell.SearchProviderService',\r\n\t'mx.SolutionBuilderAgent.BasePreprocessor',\r\n\t'mx.sb.Agent.DataQuery.FilterOperatorsFactory',\r\n\t'mx.SolutionBuilderAgent.SearchQueryGroup',\r\n\t'mx.SolutionBuilderAgent.SearchQueryCondition',\r\n];\r\nexport default function DateRangePreprocessorFactory(searchService, BasePreprocessor, filterOperatorsFactory, SearchQueryGroup, SearchQueryCondition) {\r\n\tclass DateRangePreprocessor extends BasePreprocessor {\r\n\t\tconstructor() {\r\n\t\t\tsuper();\r\n\t\t\tthis.type = mx.SolutionBuilderAgent.PreprocessorType.DateRange;\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tbuild() {\r\n\t\t\tthis._addRangeGroupIntoSearch();\r\n\t\t}\r\n\r\n\t\tinit(executor, parameters, dataQueryList) {\r\n\t\t\tsuper.init(executor, parameters, dataQueryList);\r\n\t\t\tthis.dateRangeGroup = this._getDateRangeSearchGroup(parameters);\r\n\t\t\tlet startDate;\r\n\t\t\tlet endDate;\r\n\r\n\t\t\tObject.defineProperties(this, {\r\n\t\t\t\tstartDate: {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn startDate;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newDate) {\r\n\t\t\t\t\t\tstartDate = newDate;\r\n\t\t\t\t\t\tthis.dateRangeGroup.groups[0].conditions[0].value = [startDate, ''];\r\n\t\t\t\t\t\tthis.dateRangeGroup.groups[1].conditions[0].value = [startDate, ''];\r\n\t\t\t\t\t\tthis.dateRangeGroup.groups[2].conditions[0].value = ['', startDate];\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tendDate: {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn endDate;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newDate) {\r\n\t\t\t\t\t\tendDate = newDate;\r\n\t\t\t\t\t\tthis.dateRangeGroup.groups[0].conditions[1].value = ['', endDate];\r\n\t\t\t\t\t\tthis.dateRangeGroup.groups[1].conditions[1].value = ['', endDate];\r\n\t\t\t\t\t\tthis.dateRangeGroup.groups[2].conditions[1].value = [endDate, ''];\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t_addRangeGroupIntoSearch() {\r\n\t\t\tsearchService.currentSearch().searchForm.setGroup(this.dateRangeGroup, GroupType.DateRange);\r\n\t\t}\r\n\r\n\t\t_getDateRangeSearchGroup(parameters) {\r\n\t\t\t/*\r\n\t\t\tevent.start >= start \t&& event.start < end ||\r\n\t\t\tevent.end \t> start \t&& event.end <= end ||\r\n\t\t\tevent.start < start\t \t&& event.end > end\r\n\t\t\t*/\r\n\t\t\tconst group = new SearchQueryGroup({\r\n\t\t\t\tLogicalOperator: mx.SolutionBuilderAgent.SearchQueryLogicalOperator.OR,\r\n\t\t\t});\r\n\r\n\t\t\tconst startInRangeGroup = new SearchQueryGroup();\r\n\t\t\tstartInRangeGroup.addCondition(this._createCondition(parameters, parameters.calendar.startDateKey));\r\n\t\t\tstartInRangeGroup.addCondition(this._createCondition(parameters, parameters.calendar.startDateKey));\r\n\r\n\t\t\tconst endInRangeGroup = new SearchQueryGroup();\r\n\t\t\tendInRangeGroup.addCondition(this._createCondition(parameters, parameters.calendar.endDateKey));\r\n\t\t\tendInRangeGroup.addCondition(this._createCondition(parameters, parameters.calendar.endDateKey));\r\n\r\n\t\t\tconst moreThanRangeGroup = new SearchQueryGroup();\r\n\t\t\tmoreThanRangeGroup.addCondition(this._createCondition(parameters, parameters.calendar.startDateKey));\r\n\t\t\tmoreThanRangeGroup.addCondition(this._createCondition(parameters, parameters.calendar.endDateKey));\r\n\r\n\t\t\tgroup.addGroup(startInRangeGroup);\r\n\t\t\tgroup.addGroup(endInRangeGroup);\r\n\t\t\tgroup.addGroup(moreThanRangeGroup);\r\n\r\n\t\t\treturn group;\r\n\t\t}\r\n\r\n\t\t_createCondition(parameters, columnName) {\r\n\t\t\tconst column = parameters.dataQuery.Columns.find(function (column) {\r\n\t\t\t\treturn column.Name === columnName;\r\n\t\t\t});\r\n\t\t\tconst condition = new SearchQueryCondition({\r\n\t\t\t\tProperty: column.Name,\r\n\t\t\t\tType: column.AttributeSearchValueType,\r\n\t\t\t\tOperator: filterOperatorsFactory.operators.Between.value,\r\n\t\t\t});\r\n\t\t\tcondition.__property = column;\r\n\t\t\treturn condition;\r\n\t\t}\r\n\t}\r\n\r\n\treturn DateRangePreprocessor;\r\n}\r\n","'use strict';\r\n\r\nimport { EventCodes } from '../../../../App/model/event-codes';\r\n\r\nQuickFilterPreprocessorFactory.$inject = ['mx.SolutionBuilderAgent.BasePreprocessor', 'mx.shell.EventService'];\r\nexport default function QuickFilterPreprocessorFactory(BasePreprocessor, eventService) {\r\n\tfunction QuickFilterPreprocessor() {\r\n\t\tBasePreprocessor.apply(this);\r\n\t\tthis.options = {};\r\n\t\tthis.type = mx.SolutionBuilderAgent.PreprocessorType.QuickFilter;\r\n\t\tthis.parts = 0;\r\n\t\tthis.titles = {};\r\n\t\tthis.filters = [];\r\n\t\treturn this;\r\n\t}\r\n\r\n\tQuickFilterPreprocessor.prototype = angular.extend(Object.create(BasePreprocessor.prototype), {\r\n\t\tbuild: function () {\r\n\t\t\treturn this.executor.quickFiltersBuild(this.options, this.filters);\r\n\t\t},\r\n\r\n\t\tload: function (_widgetId, dataQueryId, parameters) {\r\n\t\t\tthis.options.red = parameters.redFilter;\r\n\t\t\tthis.options.yellow = parameters.yellowFilter;\r\n\t\t\tthis.options.green = parameters.greenFilter;\r\n\t\t\tthis.parts = (this.options.red ? 1 : 0) | (this.options.yellow ? 2 : 0) | (this.options.green ? 4 : 0);\r\n\t\t\tthis.titles = parameters.quickFilterTitles;\r\n\t\t\tthis.filters = this.checkFilters(parameters.quickFilters);\r\n\t\t\tthis.color = this.getColor(this.filters);\r\n\t\t},\r\n\r\n\t\tcallChanged: function (color) {\r\n\t\t\tthis.filters = [];\r\n\t\t\tthis.color = color;\r\n\t\t\tvar red = (color & 1) === 1 && this.options.red;\r\n\t\t\tvar yellow = (color & 2) === 2 && this.options.yellow;\r\n\t\t\tvar green = (color & 4) === 4 && this.options.green;\r\n\t\t\tif (red) {\r\n\t\t\t\tthis.filters.push(red);\r\n\t\t\t}\r\n\t\t\tif (yellow) {\r\n\t\t\t\tthis.filters.push(yellow);\r\n\t\t\t}\r\n\t\t\tif (green) {\r\n\t\t\t\tthis.filters.push(green);\r\n\t\t\t}\r\n\r\n\t\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\t\teventName: `Quick filter applied`,\r\n\t\t\t\tsender: this.parameters.id,\r\n\t\t\t\tsenderTitle: this.parameters.name,\r\n\t\t\t\tcontextTypeId: this.parameters.entities.map((entity) => entity.id),\r\n\t\t\t\tcontextTypeTitle: this.parameters.entities.map((entity) => entity.name),\r\n\t\t\t\tcontextId: this.filters,\r\n\t\t\t});\r\n\r\n\t\t\tthis.changed();\r\n\t\t},\r\n\r\n\t\tresetFilters: function () {\r\n\t\t\tthis.callChanged(0);\r\n\t\t},\r\n\r\n\t\tgetFilters: function () {\r\n\t\t\treturn {\r\n\t\t\t\tred: {\r\n\t\t\t\t\tactive: (this.color & 1) === 1,\r\n\t\t\t\t\ttitle: this.titles.red,\r\n\t\t\t\t\tid: this.options.red,\r\n\t\t\t\t},\r\n\t\t\t\tyellow: {\r\n\t\t\t\t\tactive: (this.color & 2) === 2,\r\n\t\t\t\t\ttitle: this.titles.yellow,\r\n\t\t\t\t\tid: this.options.yellow,\r\n\t\t\t\t},\r\n\t\t\t\tgreen: {\r\n\t\t\t\t\tactive: (this.color & 4) === 4,\r\n\t\t\t\t\ttitle: this.titles.green,\r\n\t\t\t\t\tid: this.options.green,\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tcheckFilters: function (quickFilters) {\r\n\t\t\tvar result = [];\r\n\r\n\t\t\t(quickFilters || []).forEach(function (value) {\r\n\t\t\t\tif (value === this.options.red || value === this.options.yellow || value === this.options.green) {\r\n\t\t\t\t\tresult.push(value);\r\n\t\t\t\t}\r\n\t\t\t}, this);\r\n\r\n\t\t\treturn result;\r\n\t\t},\r\n\r\n\t\tgetColor: function (filters) {\r\n\t\t\tif (!filters || !filters.length) {\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\treturn (\r\n\t\t\t\t(filters.indexOf(this.options.red) === -1 ? 0 : 1) | (filters.indexOf(this.options.yellow) === -1 ? 0 : 2) | (filters.indexOf(this.options.green) === -1 ? 0 : 4)\r\n\t\t\t);\r\n\t\t},\r\n\t});\r\n\r\n\treturn QuickFilterPreprocessor;\r\n}\r\n","'use strict';\r\n\r\nServiceRequestParamsPreprocessorFactory.$inject = ['mx.shell.SearchProviderService', 'mx.SolutionBuilderAgent.BasePreprocessor'];\r\n\r\nexport default function ServiceRequestParamsPreprocessorFactory(searchService, BasePreprocessor) {\r\n\tfunction ServiceRequestParamsPreprocessor() {\r\n\t\tBasePreprocessor.apply(this);\r\n\t\tthis.dataModelHelper = new mx.SolutionBuilderAgent.DataModelHelper();\r\n\t\tthis.type = mx.SolutionBuilderAgent.PreprocessorType.ServiceRequestParams;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tServiceRequestParamsPreprocessor.prototype = angular.extend(Object.create(BasePreprocessor.prototype), {\r\n\t\tbuild: function (_parameters) {\r\n\t\t\tconst serviceUrl = this.executor.getServiceUrl();\r\n\t\t\tconst dataModel = _parameters.dataModel || {};\r\n\t\t\tconst dataQuery = _parameters.dataQuery || {};\r\n\t\t\tconst dataQueryModel = dataModel[dataQuery.Name] || dataModel.DataQuery || {};\r\n\r\n\t\t\tsearchService.currentSearch().searchForm.conditions.forEach((condition) => {\r\n\t\t\t\tif (dataQueryModel.hasOwnProperty(condition.property)) {\r\n\t\t\t\t\tdataQueryModel[condition.property] = condition.value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.executor.setUrlCfg(\r\n\t\t\t\tthis.dataModelHelper.preparePath(serviceUrl, dataQueryModel, null, {\r\n\t\t\t\t\tuseQueryObject: false,\r\n\t\t\t\t\tskipEmptyParameters: true,\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t},\r\n\t});\r\n\r\n\treturn ServiceRequestParamsPreprocessor;\r\n}\r\n","'use strict';\r\n\r\nSortingPreprocessorFactory.$inject = ['mx.SolutionBuilderAgent.SortingGridPreprocessor', 'mx.sb.Agent.DataQuery.SortingPreprocessor'];\r\nexport default function SortingPreprocessorFactory(SortingGridPreprocessor, newSortingPreprocessorFactory) {\r\n\tclass SortingPreprocessor extends SortingGridPreprocessor {\r\n\t\tconstructor() {\r\n\t\t\tsuper();\r\n\t\t\tthis.preprocessor = newSortingPreprocessorFactory();\r\n\t\t\tthis.preprocessor.enableSingleColumnMode();\r\n\t\t}\r\n\t}\r\n\r\n\treturn SortingPreprocessor;\r\n}\r\n","SortingGridPreprocessorFactory.$inject = [\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n\t'mx.SolutionBuilderAgent.mxColumnDefinitionService',\r\n\t'$q',\r\n\t'mx.sb.Agent.DataQuery.SortingPreprocessor',\r\n\t'mx.SolutionBuilderAgent.BasePreprocessor',\r\n];\r\n\r\nexport default function SortingGridPreprocessorFactory(personalizationService, columnDefinition, $q, newSortingPreprocessorFactory, BasePreprocessor) {\r\n\tclass SortingGridPreprocessor extends BasePreprocessor {\r\n\t\tconstructor() {\r\n\t\t\tsuper();\r\n\t\t\tthis.type = mx.SolutionBuilderAgent.PreprocessorType.Sorting;\r\n\t\t\tthis.preprocessor = newSortingPreprocessorFactory();\r\n\r\n\t\t\tObject.defineProperties(this, {\r\n\t\t\t\tsortedColumns: {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn this.preprocessor.sortedColumns;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tcolumns: {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn this.preprocessor.columns;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tsortableColumns: {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn this.preprocessor.sortableColumns;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tbuild() {\r\n\t\t\treturn this.executor.sortingBuild(this.sortedColumns);\r\n\t\t}\r\n\r\n\t\tload(widgetId) {\r\n\t\t\tthis.preprocessor.init({\r\n\t\t\t\tcolumns: this.dataQueryList.columns,\r\n\t\t\t});\r\n\r\n\t\t\tthis.preprocessor.addChangedHandler(() => {\r\n\t\t\t\tthis.callChanged();\r\n\t\t\t});\r\n\r\n\t\t\treturn this._initPersonalization(widgetId, this.dataQueryList.columns);\r\n\t\t}\r\n\r\n\t\tsetSort(sortConfig) {\r\n\t\t\tthis.preprocessor.setSort(sortConfig);\r\n\t\t}\r\n\r\n\t\t_initPersonalization(widgetId, columns) {\r\n\t\t\tconst self = this;\r\n\r\n\t\t\treturn personalizationService.getGridPersonalization(widgetId).then((personalization) => {\r\n\t\t\t\tcolumns.forEach((column) => {\r\n\t\t\t\t\tif (personalization[column.Name]) {\r\n\t\t\t\t\t\tangular.extend(column, personalization[column.Name]);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\t// Reorder columns\r\n\t\t\t\tcolumns.sort((a, b) => {\r\n\t\t\t\t\tconst aName = personalization[a.Name];\r\n\t\t\t\t\tconst bName = personalization[b.Name];\r\n\t\t\t\t\tconst bothPersonalized = aName && aName.__personalizedPosition && bName && bName.__personalizedPosition;\r\n\r\n\t\t\t\t\treturn bothPersonalized ? aName.__personalizedPosition - bName.__personalizedPosition : (a.Position || 0) - (b.Position || 0);\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn self.preprocessor.initPersonalization(widgetId);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\treturn SortingGridPreprocessor;\r\n}\r\n","'use strict';\r\n\r\nPagingPreprocessorFactory.$inject = ['mx.shell.Config', 'mx.SolutionBuilderAgent.PersonalizationService', 'mx.SolutionBuilderAgent.BasePreprocessor'];\r\nexport default function PagingPreprocessorFactory(config, personalizationService, BasePreprocessor) {\r\n\tfunction PagingPreprocessor() {\r\n\t\tBasePreprocessor.apply(this);\r\n\t\tlet pageSize = 0;\r\n\t\tthis._personalizedPageSize = 0;\r\n\t\tthis.type = mx.SolutionBuilderAgent.PreprocessorType.Paging;\r\n\r\n\t\tObject.defineProperty(this, 'pageSize', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn pageSize;\r\n\t\t\t},\r\n\t\t\tset: function (size) {\r\n\t\t\t\tsize = parseInt(size);\r\n\t\t\t\tif (!isNaN(size) && this.pageSize !== size) {\r\n\t\t\t\t\tthis.page = 1;\r\n\t\t\t\t\tpageSize = size;\r\n\t\t\t\t\tthis.callChanged();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\tPagingPreprocessor.prototype = angular.extend(Object.create(BasePreprocessor.prototype), {\r\n\t\tload: async function () {\r\n\t\t\tconst dataSource = config.get('dataSource');\r\n\t\t\tthis._personalizedPageSize = await personalizationService.getPageSize();\r\n\t\t\tlet localPageSize = this._personalizedPageSize || dataSource.pageSize;\r\n\t\t\tthis.pageSizes = dataSource.pageSizes;\r\n\r\n\t\t\tif (this.pageSizes.indexOf(localPageSize) < 0) {\r\n\t\t\t\tlocalPageSize = this.pageSizes[0];\r\n\t\t\t}\r\n\r\n\t\t\tthis._pageSize = this.pageSize = localPageSize;\r\n\t\t\tthis._page = 0;\r\n\t\t\tthis.page = 0;\r\n\t\t\tthis.count = 0;\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tbuild: function () {\r\n\t\t\t// Todo: as backend use page-1\r\n\t\t\treturn this.executor.paginationBuild(this.pageSize, this.page > 0 ? this.page - 1 : 0);\r\n\t\t},\r\n\r\n\t\tcallChanged: function () {\r\n\t\t\tif (this._page === this.page && this._pageSize === this.pageSize) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (this._personalizedPageSize !== this.pageSize) {\r\n\t\t\t\tpersonalizationService.savePageSize(this.pageSize);\r\n\t\t\t}\r\n\r\n\t\t\tthis._pageSize = this.pageSize;\r\n\t\t\tthis._page = this.page;\r\n\t\t\tthis.changed();\r\n\t\t},\r\n\r\n\t\tprocess: function (data, totalCount) {\r\n\t\t\tthis.count = Number(totalCount);\r\n\t\t},\r\n\r\n\t\tclear: function () {\r\n\t\t\tthis._page = 0;\r\n\t\t\tthis.page = 0;\r\n\t\t},\r\n\t});\r\n\r\n\treturn PagingPreprocessor;\r\n}\r\n","'use strict';\r\n\r\nSearchPreprocessorFactory.$inject = ['mx.shell.SearchProviderService', 'mx.SolutionBuilderAgent.BasePreprocessor'];\r\nexport default function SearchPreprocessorFactory(searchService, BasePreprocessor) {\r\n\tfunction SearchPreprocessor() {\r\n\t\tBasePreprocessor.apply(this);\r\n\t\tthis.type = mx.SolutionBuilderAgent.PreprocessorType.Search;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tSearchPreprocessor.prototype = angular.extend(Object.create(BasePreprocessor.prototype), {\r\n\t\tbuild: function () {\r\n\t\t\treturn this.executor.searchBuild();\r\n\t\t},\r\n\r\n\t\tcallChanged: function () {\r\n\t\t\tthis.changed();\r\n\t\t},\r\n\r\n\t\tresetSearch: function () {\r\n\t\t\tsearchService.resetSearch();\r\n\t\t},\r\n\t});\r\n\r\n\treturn SearchPreprocessor;\r\n}\r\n","'use strict';\r\n\r\nimport { PreprocessorType, GroupType } from '../../model/enumerations';\r\n\r\nGroupingPreprocessorFactory.$inject = [\r\n\t'mx.shell.SearchProviderService',\r\n\t'mx.SolutionBuilderAgent.BasePreprocessor',\r\n\t'mx.sb.Agent.DataQuery.FilterOperatorsFactory',\r\n\t'mx.SolutionBuilderAgent.SearchQueryGroup',\r\n\t'mx.SolutionBuilderAgent.SearchQueryCondition',\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n];\r\nexport default function GroupingPreprocessorFactory(searchService, BasePreprocessor, filterOperatorsFactory, SearchQueryGroup, SearchQueryCondition, personalizationService) {\r\n\tclass GroupingPreprocessor extends BasePreprocessor {\r\n\t\tconstructor() {\r\n\t\t\tsuper();\r\n\t\t\tthis.type = PreprocessorType.Grouping;\r\n\t\t\tthis.groupedColumnsSorting = {};\r\n\t\t\tthis._groupPath = [];\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tbuild() {\r\n\t\t\tthis._addGroupingIntoSearch();\r\n\t\t}\r\n\r\n\t\tinit(executor, parameters, dataQueryList) {\r\n\t\t\tsuper.init(executor, parameters, dataQueryList);\r\n\t\t\tthis.groupingGroup = this._getGroupingGroup();\r\n\t\t\tlet columns = [];\r\n\t\t\tlet groupingTree = [];\r\n\r\n\t\t\tObject.defineProperties(this, {\r\n\t\t\t\tgroupedColumns: {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn columns;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newColumns) {\r\n\t\t\t\t\t\tif (Array.isArray(newColumns)) {\r\n\t\t\t\t\t\t\tcolumns = newColumns;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tgroupingTree: {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn groupingTree;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newGroupingTree) {\r\n\t\t\t\t\t\tif (Array.isArray(newGroupingTree)) {\r\n\t\t\t\t\t\t\tgroupingTree = newGroupingTree;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tcolumns: {\r\n\t\t\t\t\tget: () => dataQueryList.columns,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tprocess() {\r\n\t\t\tif (!this._internalProcess) {\r\n\t\t\t\treturn this._reloadGroupingTree();\r\n\t\t\t}\r\n\t\t\tthis._internalProcess = false;\r\n\t\t}\r\n\r\n\t\tisActive() {\r\n\t\t\treturn this.groupedColumns.length > 0;\r\n\t\t}\r\n\r\n\t\tasync load(widgetId) {\r\n\t\t\tif (!this.executor.supportsGrouping()) {\r\n\t\t\t\tthis.columns.forEach((column) => (column.GroupingIsAvailable = false));\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._personalizationId = widgetId;\r\n\t\t\tthis.loading = true;\r\n\t\t\tthis._internalProcess = true;\r\n\r\n\t\t\tlet groupedColumns = await personalizationService.getGroupingColumns(this._personalizationId);\r\n\t\t\tif (Array.isArray(groupedColumns)) {\r\n\t\t\t\tgroupedColumns.forEach((groupedColumn) => {\r\n\t\t\t\t\tconst column = this._getColumnByName(groupedColumn.Name);\r\n\t\t\t\t\tgroupedColumn.Title = column?.Title;\r\n\t\t\t\t});\r\n\t\t\t\tgroupedColumns = groupedColumns.filter((column) => column.Title);\r\n\t\t\t} else {\r\n\t\t\t\tgroupedColumns = [];\r\n\t\t\t}\r\n\r\n\t\t\tgroupedColumns.forEach((columns) => {\r\n\t\t\t\tthis.groupedColumnsSorting[columns.Name] = columns.SortDirection === 'desc';\r\n\t\t\t});\r\n\r\n\t\t\tthis._groupPath = await personalizationService.getGroupingFilter(this._personalizationId);\r\n\t\t\tif (!Array.isArray(this._groupPath)) {\r\n\t\t\t\tthis._groupPath = [];\r\n\t\t\t}\r\n\r\n\t\t\tif (typeof this._groupPath[0] === 'object') {\r\n\t\t\t\t// to support previous personalization format\r\n\t\t\t\tthis._groupPath = this._groupPath.map((group) => group?.Value);\r\n\t\t\t}\r\n\r\n\t\t\tawait this._applyGroupedColumns(groupedColumns);\r\n\t\t}\r\n\r\n\t\tasync enableGroupingForColumn(columnName) {\r\n\t\t\tconst column = this._getColumnByName(columnName);\r\n\t\t\tif (!column.GroupingIsAvailable) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst groupedColumns = this.groupedColumns.slice();\r\n\r\n\t\t\tgroupedColumns.push({\r\n\t\t\t\tName: column.Name,\r\n\t\t\t\tTitle: column.Title,\r\n\t\t\t\tSortDirection: 'asc',\r\n\t\t\t});\r\n\r\n\t\t\tawait this._applyGroupedColumns(groupedColumns);\r\n\t\t}\r\n\r\n\t\tasync disableGroupingForColumn(columnName) {\r\n\t\t\tlet groupedColumn = this.groupedColumns.find((groupedColumn) => groupedColumn.Name === columnName);\r\n\t\t\tif (!groupedColumn) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst groupedColumns = this.groupedColumns.slice();\r\n\t\t\tgroupedColumns.splice(groupedColumns.indexOf(groupedColumn), 1);\r\n\r\n\t\t\tawait this._applyGroupedColumns(groupedColumns);\r\n\t\t}\r\n\r\n\t\tasync toggleColumnGrouping(columnName) {\r\n\t\t\tconst column = this._getColumnByName(columnName);\r\n\r\n\t\t\tif (column.GroupingIsActive) {\r\n\t\t\t\tawait this.disableGroupingForColumn(column.Name);\r\n\t\t\t} else {\r\n\t\t\t\tawait this.enableGroupingForColumn(column.Name);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttoggleGroupingSorting(groupingColumn) {\r\n\t\t\tgroupingColumn.SortDirection = groupingColumn.SortDirection === 'desc' ? 'asc' : 'desc';\r\n\t\t\tthis.groupedColumnsSorting[groupingColumn.Name] = groupingColumn.SortDirection === 'desc';\r\n\r\n\t\t\tpersonalizationService.savePersonalizedGrouping(this.groupedColumns, this._personalizationId);\r\n\t\t}\r\n\r\n\t\tasync resetGrouping() {\r\n\t\t\tawait this._applyGroupedColumns([]);\r\n\t\t}\r\n\r\n\t\tsetActiveGroup(activeGroup) {\r\n\t\t\tthis._updateSubTreeRecursively(this.groupingTree, (group) => {\r\n\t\t\t\tgroup.isActive = false;\r\n\t\t\t\tgroup.isEnabled = false;\r\n\t\t\t});\r\n\r\n\t\t\tconst previousPath = this._groupPath;\r\n\r\n\t\t\tthis._groupPath = [];\r\n\t\t\tthis.activeGroup = activeGroup;\r\n\r\n\t\t\tif (activeGroup) {\r\n\t\t\t\tactiveGroup.isActive = true;\r\n\r\n\t\t\t\twhile (activeGroup) {\r\n\t\t\t\t\tactiveGroup.isEnabled = true;\r\n\t\t\t\t\tthis._groupPath.unshift(activeGroup.Value);\r\n\t\t\t\t\tactiveGroup = activeGroup.Parent;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis._prepareGroupingSearchConditions();\r\n\r\n\t\t\tif (!angular.equals(previousPath, this._groupPath)) {\r\n\t\t\t\tthis._internalProcess = true;\r\n\t\t\t\tpersonalizationService.savePersonalizedGroupingFilter(this._groupPath, this._personalizationId);\r\n\t\t\t\tthis.callChanged();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tasync _reloadGroupingTree() {\r\n\t\t\tawait this._applyGroupedColumns(this.groupedColumns);\r\n\t\t}\r\n\r\n\t\t_updateSubTreeRecursively(groups, updater) {\r\n\t\t\tgroups.forEach((group) => {\r\n\t\t\t\tupdater(group);\r\n\t\t\t\tif (Array.isArray(group.SubGroups)) {\r\n\t\t\t\t\tthis._updateSubTreeRecursively(group.SubGroups, updater);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t_getGroupByPath(groups, groupPath) {\r\n\t\t\tlet found;\r\n\t\t\tgroups.some((group) => {\r\n\t\t\t\tif (group.Value === groupPath[0]) {\r\n\t\t\t\t\tif (groupPath.length === 1) {\r\n\t\t\t\t\t\tfound = group;\r\n\t\t\t\t\t} else if (Array.isArray(group.SubGroups) && groupPath.length > 1) {\r\n\t\t\t\t\t\tgroupPath = groupPath.slice();\r\n\t\t\t\t\t\tgroupPath.shift();\r\n\t\t\t\t\t\tfound = this._getGroupByPath(group.SubGroups, groupPath) || group;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn found;\r\n\t\t}\r\n\r\n\t\tasync _applyGroupedColumns(groupedColumns = []) {\r\n\t\t\tif (!this.executor.supportsGrouping() || !Array.isArray(groupedColumns)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.loading = true;\r\n\t\t\tlet activeGroup;\r\n\r\n\t\t\tif (!angular.equals(this.groupedColumns, groupedColumns)) {\r\n\t\t\t\tthis.groupedColumns = groupedColumns;\r\n\t\t\t\tpersonalizationService.savePersonalizedGrouping(this.groupedColumns, this._personalizationId);\r\n\t\t\t}\r\n\r\n\t\t\tconst groupedColumnNames = this.groupedColumns.map((column) => column.Name);\r\n\r\n\t\t\tthis.columns.forEach((column) => (column.GroupingIsActive = groupedColumnNames.includes(column.Name)));\r\n\r\n\t\t\tthis.groupingTree = await this._getGroupingTree();\r\n\r\n\t\t\tif (this.groupingTree.length) {\r\n\t\t\t\tactiveGroup = this._getGroupByPath(this.groupingTree, this._groupPath);\r\n\r\n\t\t\t\tif (!activeGroup && this.groupingTree.length) {\r\n\t\t\t\t\tconst firstGroup = this.groupingTree.find((gr) => gr.Value) || this.groupingTree[0];\r\n\t\t\t\t\tconst groupPath = this._getFirstDeepestGroupPath(firstGroup);\r\n\t\t\t\t\tactiveGroup = this._getGroupByPath(this.groupingTree, groupPath);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.setActiveGroup(activeGroup);\r\n\r\n\t\t\tthis.loading = false;\r\n\t\t}\r\n\r\n\t\tasync _getGroupingTree() {\r\n\t\t\tif (!Array.isArray(this.groupedColumns) || !this.groupedColumns.length) {\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\r\n\t\t\t// executor.getGroupingTree uses the same requester as for data loading, so it is necessary to remove grouping conditions to request grouping tree\r\n\t\t\tthis._removeGroupingFromSearch();\r\n\t\t\tconst groupingTree = await this.executor.getGroupingTree(this.groupedColumns);\r\n\t\t\tthis._addGroupingIntoSearch();\r\n\r\n\t\t\treturn groupingTree;\r\n\t\t}\r\n\r\n\t\t_getFirstDeepestGroupPath(group) {\r\n\t\t\tlet path = [group.Value];\r\n\t\t\tif (Array.isArray(group.SubGroups) && group.SubGroups.length) {\r\n\t\t\t\tconst firstGroup = group.SubGroups.find((gr) => gr.Value) || group.SubGroups[0];\r\n\t\t\t\tpath = path.concat(this._getFirstDeepestGroupPath(firstGroup));\r\n\t\t\t}\r\n\t\t\treturn path;\r\n\t\t}\r\n\r\n\t\t_prepareGroupingSearchConditions() {\r\n\t\t\tthis.groupingGroup.conditions = [];\r\n\r\n\t\t\tlet group = this.activeGroup;\r\n\r\n\t\t\twhile (group) {\r\n\t\t\t\tconst condition = this._createCondition(group.Column, group.Value);\r\n\t\t\t\tthis.groupingGroup.addCondition(condition);\r\n\t\t\t\tgroup = group.Parent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t_addGroupingIntoSearch() {\r\n\t\t\tsearchService.currentSearch().searchForm.setGroup(this.groupingGroup, GroupType.Grouping);\r\n\t\t}\r\n\r\n\t\t_removeGroupingFromSearch() {\r\n\t\t\tsearchService.currentSearch().searchForm.removeGroup(this.groupingGroup);\r\n\t\t}\r\n\r\n\t\t_getGroupingGroup() {\r\n\t\t\treturn new SearchQueryGroup({\r\n\t\t\t\tLogicalOperator: mx.SolutionBuilderAgent.SearchQueryLogicalOperator.AND,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t_getColumnByName(columnName) {\r\n\t\t\treturn this.columns.find((column) => column.Name === columnName);\r\n\t\t}\r\n\r\n\t\t_createCondition(columnName, value) {\r\n\t\t\tconst column = this._getColumnByName(columnName);\r\n\t\t\tconst condition = new SearchQueryCondition({\r\n\t\t\t\tProperty: column.Name,\r\n\t\t\t\tType: column.AttributeSearchValueType,\r\n\t\t\t\tOperator: filterOperatorsFactory.operators.In.value,\r\n\t\t\t\tValue: [value],\r\n\t\t\t});\r\n\r\n\t\t\tcondition.__property = column;\r\n\t\t\treturn condition;\r\n\t\t}\r\n\t}\r\n\r\n\treturn GroupingPreprocessor;\r\n}\r\n","'use strict';\r\n\r\nClientQueryExecutorFactory.$inject = [\r\n\t'mx.shell.SearchProviderService',\r\n\t'mx.SolutionBuilderAgent.ExternalServiceManager',\r\n\t'$q',\r\n\t'$filter',\r\n\t'mx.sb.Agent.DataQuery.Enums',\r\n\t'mx.SolutionBuilderAgent.ServiceRequestParamsPreprocessor',\r\n\t'mx.sb.Agent.DataQuery.FilterOperatorsFactory',\r\n];\r\nexport default function ClientQueryExecutorFactory(searchService, externalServiceManager, $q, $filter, dataQueryEnums, ServiceRequestParamsPreprocessor, filterOperatorsFactory) {\r\n\treturn function ClientQueryExecutor() {\r\n\t\tvar data;\r\n\t\tvar controlType;\r\n\t\tvar dataQuery;\r\n\t\tvar executeOptions = {};\r\n\t\tvar urlCfg = {};\r\n\t\tvar ColumnSortingEnum = dataQueryEnums.ColumnSortingEnum;\r\n\r\n\t\treturn {\r\n\t\t\trun: run,\r\n\t\t\tsortingBuild: sortingBuild,\r\n\t\t\tpaginationBuild: paginationBuild,\r\n\t\t\tsearchBuild: searchBuild,\r\n\t\t\tinit: init,\r\n\t\t\tgetTypes: getTypes,\r\n\t\t\tsupportsGrouping: supportsGrouping,\r\n\t\t\tcolumnsBuild: columnsBuild,\r\n\t\t\tquickFiltersBuild: quickFiltersBuild,\r\n\t\t\tgetServiceUrl: getServiceUrl,\r\n\t\t\tusePostBack: false,\r\n\t\t\tgetIdentifier: getIdentifier,\r\n\t\t};\r\n\r\n\t\tfunction getServiceUrl() {\r\n\t\t\treturn executeOptions.listUrl;\r\n\t\t}\r\n\r\n\t\tfunction getTypes() {\r\n\t\t\tvar type = executeOptions.typeInfo.TypeName;\r\n\r\n\t\t\treturn type ? [type] : [];\r\n\t\t}\r\n\r\n\t\tfunction columnsBuild() {\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\tfunction init(type, params) {\r\n\t\t\tcontrolType = type;\r\n\t\t\tdataQuery = params.dataQuery;\r\n\t\t\texecuteOptions = externalServiceManager.getListExecuteOptions(dataQuery, mx.SolutionBuilderAgent.SupportedOperations.ReadObjects);\r\n\t\t\treturn [ServiceRequestParamsPreprocessor];\r\n\t\t}\r\n\r\n\t\tfunction sortingBuild(sortColumns) {\r\n\t\t\tif (controlType === mx.SolutionBuilderAgent.ListingType.grid) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\texecutionOrder: 20,\r\n\t\t\t\tprocess: function (objects) {\r\n\t\t\t\t\treturn $filter('orderBy')(\r\n\t\t\t\t\t\tobjects,\r\n\t\t\t\t\t\tsortColumns.map(function (column) {\r\n\t\t\t\t\t\t\treturn (column.Sorting === ColumnSortingEnum.Descending ? '-' : '+') + column.Name;\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tfunction quickFiltersBuild() {}\r\n\r\n\t\tfunction paginationBuild(pageSize, page) {\r\n\t\t\tif (controlType === mx.SolutionBuilderAgent.ListingType.grid) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\texecutionOrder: 100,\r\n\t\t\t\tprocess: function (objects) {\r\n\t\t\t\t\treturn $filter('limitTo')(objects, pageSize, page * pageSize);\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tfunction searchBuild() {\r\n\t\t\tvar searchState = searchService.currentSearch();\r\n\r\n\t\t\treturn {\r\n\t\t\t\texecutionOrder: 10,\r\n\t\t\t\tprocess: function (objects) {\r\n\t\t\t\t\treturn objects.filter(filterFn);\r\n\t\t\t\t},\r\n\t\t\t};\r\n\r\n\t\t\tfunction filterFn(currentObj) {\r\n\t\t\t\tvar activeFunctions = {};\r\n\r\n\t\t\t\tif (searchState.keyword) {\r\n\t\t\t\t\taddFn(currentObj, keywordFilter, searchState.keyword);\r\n\t\t\t\t}\r\n\t\t\t\taddFn(currentObj, queryGroupFilter, searchState.searchForm);\r\n\r\n\t\t\t\tvar res = true;\r\n\r\n\t\t\t\tif (Object.keys(activeFunctions).length) {\r\n\t\t\t\t\tactiveFunctions.forEach();\r\n\t\t\t\t\t_.some(activeFunctions, function (fn) {\r\n\t\t\t\t\t\tres = res && fn();\r\n\t\t\t\t\t\treturn !res;\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tres = true;\r\n\t\t\t\t}\r\n\t\t\t\treturn res;\r\n\r\n\t\t\t\tfunction addFn(object, fn) {\r\n\t\t\t\t\tif (!activeFunctions.hasOwnProperty(fn.name)) {\r\n\t\t\t\t\t\tvar args = Array.prototype.slice.call(arguments, 2);\r\n\r\n\t\t\t\t\t\tactiveFunctions[fn.name] = function () {\r\n\t\t\t\t\t\t\treturn fn.apply(object, args.unshift(object));\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction conditionFilter(dataItem, condition) {\r\n\t\t\t\t\tvar result = true;\r\n\r\n\t\t\t\t\tif (typeof condition !== 'undefined' && condition !== null) {\r\n\t\t\t\t\t\tvar property = dataItem[condition.property];\r\n\r\n\t\t\t\t\t\tif (typeof property !== 'undefined') {\r\n\t\t\t\t\t\t\tconst currentOperator = filterOperatorsFactory.getOperatorByValue(condition.operator);\r\n\t\t\t\t\t\t\tif (currentOperator && typeof currentOperator.fn === 'function') {\r\n\t\t\t\t\t\t\t\tresult = currentOperator.fn(property, condition.value);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction queryGroupFilter(dataItem, group) {\r\n\t\t\t\t\tvar res = true;\r\n\r\n\t\t\t\t\tif (typeof group !== 'undefined' && group !== null) {\r\n\t\t\t\t\t\t_.some(group.conditions, function (condition) {\r\n\t\t\t\t\t\t\tif (group.logicalOperator === 1) {\r\n\t\t\t\t\t\t\t\tres = res && conditionFilter.apply(dataItem, [dataItem, condition]);\r\n\t\t\t\t\t\t\t\treturn !res;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tres = conditionFilter.apply(dataItem, [dataItem, condition]);\r\n\t\t\t\t\t\t\treturn res;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tif (res && group.logicalOperator === 1) {\r\n\t\t\t\t\t\t\t_.some(group.groups, function (group) {\r\n\t\t\t\t\t\t\t\tif (group.logicalOperator === 1) {\r\n\t\t\t\t\t\t\t\t\tres = res && queryGroupFilter.apply(dataItem, [dataItem, group]);\r\n\t\t\t\t\t\t\t\t\treturn !res;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tres = queryGroupFilter.apply(dataItem, [dataItem, group]);\r\n\t\t\t\t\t\t\t\treturn res;\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn res;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction keywordFilter(dataItem, keyword) {\r\n\t\t\t\t\tif (!keyword) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar _keyword = keyword.toLowerCase();\r\n\r\n\t\t\t\t\treturn _.some(dataItem, function (dataItemProperty) {\r\n\t\t\t\t\t\tif (typeof dataItemProperty === 'string') {\r\n\t\t\t\t\t\t\treturn dataItemProperty.toLowerCase().indexOf(_keyword) !== -1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction supportsGrouping() {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfunction run(parts) {\r\n\t\t\tparts.sort(function (a, b) {\r\n\t\t\t\treturn a.executionOrder - b.executionOrder;\r\n\t\t\t});\r\n\r\n\t\t\treturn (\r\n\t\t\t\tdata\r\n\t\t\t\t\t? $q.when(data)\r\n\t\t\t\t\t: executeSource().then(function (d) {\r\n\t\t\t\t\t\t\tdata = d;\r\n\t\t\t\t\t\t\treturn d;\r\n\t\t\t\t\t })\r\n\t\t\t).then(function (objects) {\r\n\t\t\t\tvar result = objects;\r\n\r\n\t\t\t\tparts.forEach(function (filter) {\r\n\t\t\t\t\tresult = filter.process(result);\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tdata: result,\r\n\t\t\t\t\ttotalCount: objects.length,\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction executeSource() {\r\n\t\t\tvar dataRequestUrl = urlCfg.path;\r\n\r\n\t\t\treturn executeOptions.httpProvider\r\n\t\t\t\t.get(dataRequestUrl)\r\n\t\t\t\t.then(executeOptions.processResponse)\r\n\t\t\t\t.then(function (response) {\r\n\t\t\t\t\tvar data = executeOptions.getProcessedDataFromObject(response);\r\n\t\t\t\t\tif (!Array.isArray(data)) {\r\n\t\t\t\t\t\tdata = [];\r\n\t\t\t\t\t\tmx.console.error('Wrong response format for: ', dataRequestUrl);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn data;\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction getIdentifier() {\r\n\t\t\treturn 'Id';\r\n\t\t}\r\n\t};\r\n}\r\n","'use strict';\r\n\r\nDataQueryExecutorFactory.$inject = [\r\n\t'mx.shell.SearchProviderService',\r\n\t'mx.SolutionBuilderAgent.Http',\r\n\t'mx.shell.ObjectMapper',\r\n\t'mx.shell.DownloadHelpService',\r\n\t'mx.sb.Agent.DataQuery.Enums',\r\n\t'mx.sb.Agent.DataQuery.FilterOperatorsFactory',\r\n];\r\nexport default function DataQueryExecutorFactory(searchService, http, objectMapper, downloadHelpService, dataQueryEnums, filterOperatorsFactory) {\r\n\treturn function DataQueryExecutor() {\r\n\t\tlet structureNodeId;\r\n\t\tlet entityTypes;\r\n\t\tlet widgetId;\r\n\t\tlet dataQueryId;\r\n\t\tlet totalCount;\r\n\t\tlet filters = [];\r\n\t\tlet quickFilters = [];\r\n\r\n\t\tconst ColumnSortingEnum = dataQueryEnums.ColumnSortingEnum;\r\n\r\n\t\treturn {\r\n\t\t\trun: run,\r\n\t\t\tsetTotalCount: setTotalCount,\r\n\t\t\tgetDataCount: getDataCount,\r\n\t\t\tsortingBuild: sortingBuild,\r\n\t\t\tpaginationBuild: paginationBuild,\r\n\t\t\tsearchBuild: searchBuild,\r\n\t\t\tstructureBuild: structureBuild,\r\n\t\t\tquickFiltersBuild: quickFiltersBuild,\r\n\t\t\tcolumnsBuild: columnsBuild,\r\n\t\t\tinit: init,\r\n\t\t\tgetTypes: getTypes,\r\n\t\t\tusePostBack: true,\r\n\t\t\tsupportsGrouping: supportsGrouping,\r\n\t\t\tgetGroupingTree: getGroupingTree,\r\n\t\t\texecuteExportData: executeExportData,\r\n\t\t\tgetIdentifier: getIdentifier,\r\n\t\t};\r\n\r\n\t\tfunction init(viewType, parameters) {\r\n\t\t\tstructureNodeId = parameters.structureNodeId;\r\n\t\t\tentityTypes = parameters.entityTypes;\r\n\t\t\twidgetId = parameters.id;\r\n\t\t\tdataQueryId = parameters.dataQueryId;\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tfunction getTypes() {\r\n\t\t\treturn entityTypes || [];\r\n\t\t}\r\n\r\n\t\tfunction structureBuild(structureId) {\r\n\t\t\tif (structureId) {\r\n\t\t\t\treturn 'structureNodeId=' + structureId;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction searchBuild() {\r\n\t\t\tconst currentSearch = searchService.currentSearch();\r\n\t\t\tlet keyword = '';\r\n\r\n\t\t\tif (currentSearch) {\r\n\t\t\t\tkeyword = currentSearch.keyword || '';\r\n\t\t\t\tfilters = currentSearch.filters || filters;\r\n\r\n\t\t\t\tif (currentSearch.context) {\r\n\t\t\t\t\tconst defaultFilter = currentSearch.context.defaultQueryFilter;\r\n\r\n\t\t\t\t\tif (defaultFilter && filters.indexOf(defaultFilter) !== -1) {\r\n\t\t\t\t\t\tfilters.push(defaultFilter);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn keyword ? 'search=' + keyword : '';\r\n\t\t}\r\n\r\n\t\tfunction quickFiltersBuild(options, filters) {\r\n\t\t\tquickFilters = filters;\r\n\t\t\treturn (\r\n\t\t\t\tcreateQuickFilterUrl('redFilter', options.red, true) +\r\n\t\t\t\tcreateQuickFilterUrl('yellowFilter', options.yellow, !options.red) +\r\n\t\t\t\tcreateQuickFilterUrl('greenFilter', options.green, !(options.red || options.yellow))\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tfunction createQuickFilterUrl(name, id, isFirst) {\r\n\t\t\treturn id ? (isFirst ? '' : '&') + name + '=' + id : '';\r\n\t\t}\r\n\r\n\t\tfunction sortingBuild(sortColumns) {\r\n\t\t\tif (!Array.isArray(sortColumns) || !sortColumns.length) {\r\n\t\t\t\treturn '';\r\n\t\t\t}\r\n\t\t\treturn sortColumns.reduce(function (accumulator, column, index) {\r\n\t\t\t\tconst direction = column.Sorting === ColumnSortingEnum.Ascending ? 'asc' : 'desc';\r\n\t\t\t\treturn accumulator + (index > 0 ? ',' : '') + column.Name + ' ' + direction;\r\n\t\t\t}, 'orderBy=');\r\n\t\t}\r\n\r\n\t\tfunction paginationBuild(pageSize, page) {\r\n\t\t\treturn pageSize > 0 ? 'pageSize=' + pageSize + '&page=' + (page || 0) : '';\r\n\t\t}\r\n\r\n\t\tfunction columnsBuild(columns) {\r\n\t\t\treturn columns && Object.keys(columns).length > 0\r\n\t\t\t\t? 'columns=' +\r\n\t\t\t\t\t\tObject.keys(columns)\r\n\t\t\t\t\t\t\t.filter(function (key) {\r\n\t\t\t\t\t\t\t\treturn columns[key].IsLoading === true;\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t.join(',')\r\n\t\t\t\t: '';\r\n\t\t}\r\n\r\n\t\tasync function getDataCount(parts) {\r\n\t\t\tlet dataRequestUrl = widgetId ? 'api/WidgetList/GetData/' + widgetId : 'api/dataquery/' + dataQueryId;\r\n\r\n\t\t\tdataRequestUrl += '/count';\r\n\r\n\t\t\tconst response = await _executeRequest(dataRequestUrl, parts);\r\n\t\t\ttotalCount = response.data;\r\n\t\t\treturn response.data;\r\n\t\t}\r\n\r\n\t\tfunction supportsGrouping() {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tasync function getGroupingTree(columns) {\r\n\t\t\tconst columnCondition =\r\n\t\t\t\t'byColumns=' +\r\n\t\t\t\tcolumns\r\n\t\t\t\t\t.map(function (c) {\r\n\t\t\t\t\t\treturn c.Name;\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.join(',');\r\n\r\n\t\t\tconst structureParam = structureBuild(structureNodeId);\r\n\t\t\tconst baseUrl = 'api/WidgetList/GroupData/' + widgetId + '/';\r\n\r\n\t\t\tconst { data: groupingTree } = await _executeRequest(baseUrl, [columnCondition, structureParam, searchBuild()]);\r\n\r\n\t\t\tif (Array.isArray(groupingTree)) {\r\n\t\t\t\tgroupingTree.forEach((group) => setGroupsParent(group));\r\n\t\t\t}\r\n\r\n\t\t\treturn groupingTree;\r\n\t\t}\r\n\r\n\t\tfunction setGroupsParent(group) {\r\n\t\t\tif (typeof group.Value === 'undefined') {\r\n\t\t\t\tgroup.Value = null;\r\n\t\t\t}\r\n\t\t\tif (Array.isArray(group.SubGroups)) {\r\n\t\t\t\tgroup.SubGroups.forEach((subGroup) => {\r\n\t\t\t\t\tsubGroup.Parent = group;\r\n\t\t\t\t\tsetGroupsParent(subGroup);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction setTotalCount(count) {\r\n\t\t\ttotalCount = Number(count);\r\n\t\t}\r\n\r\n\t\tfunction _generateQueryString(parts) {\r\n\t\t\tlet queryString = '';\r\n\r\n\t\t\tparts.forEach(function (part) {\r\n\t\t\t\tqueryString = addUrlParam(queryString, part);\r\n\t\t\t});\r\n\r\n\t\t\tconst commonFilters = filters && filters[0] ? filters.concat(quickFilters) : quickFilters;\r\n\t\t\tif (commonFilters.length) {\r\n\t\t\t\tqueryString = addUrlParam(queryString, 'filters=' + commonFilters.join());\r\n\t\t\t}\r\n\r\n\t\t\treturn queryString.replace(/&&/gi, '&');\r\n\r\n\t\t\tfunction addUrlParam(queryString, paramString) {\r\n\t\t\t\treturn !paramString ? queryString : (queryString ? queryString + '&' : '?') + paramString;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tasync function _executeRequest(dataRequestUrl, parts, progressHandler) {\r\n\t\t\tconst filter = searchService.currentSearch().searchForm.toJSON();\r\n\t\t\tfilter.Conditions = filter.Conditions.filter(\r\n\t\t\t\t(c) => c.Value.length > 0 || c.Operator === filterOperatorsFactory.operators.IsSet.value || c.Operator === filterOperatorsFactory.operators.IsNotSet.value\r\n\t\t\t);\r\n\r\n\t\t\tdataRequestUrl += _generateQueryString(parts);\r\n\t\t\tconst options = {};\r\n\t\t\tif (typeof progressHandler === 'function') {\r\n\t\t\t\toptions.eventHandlers = {\r\n\t\t\t\t\tprogress: progressHandler,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn http.post(dataRequestUrl, filter, options, {}, false, true);\r\n\t\t}\r\n\r\n\t\tasync function run(parts, progressHandler) {\r\n\t\t\tconst dataRequestUrl = widgetId ? `api/widgetList/getData/${widgetId}` : `api/dataQuery/${dataQueryId}`;\r\n\r\n\t\t\tconst response = await _executeRequest(dataRequestUrl, parts, progressHandler);\r\n\r\n\t\t\tconst data = response.data.map(function (item) {\r\n\t\t\t\treturn objectMapper.mapItem(item);\r\n\t\t\t});\r\n\r\n\t\t\ttotalCount = parseInt(response.headers().totalcount || data.length);\r\n\r\n\t\t\treturn {\r\n\t\t\t\tdata: data,\r\n\t\t\t\ttotalCount: totalCount,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tfunction executeExportData() {\r\n\t\t\tconst currentSearch = searchService.currentSearch();\r\n\t\t\tconst exportRequest = {};\r\n\r\n\t\t\texportRequest.Columns = currentSearch.dataQueryList.columns\r\n\t\t\t\t.filter((column) => column.visible)\r\n\t\t\t\t.map((column) => column.Name)\r\n\t\t\t\t.join(',');\r\n\r\n\t\t\texportRequest.ExportAllRows = true;\r\n\t\t\texportRequest.ExportFormatType = 3; // Excel\r\n\t\t\texportRequest.ClientTimeOffset = new Date().getTimezoneOffset();\r\n\t\t\texportRequest.DatasetViewId = currentSearch.context.parameters.contentWidgetId || currentSearch.context.widgetId;\r\n\t\t\texportRequest.Keyword = currentSearch.keyword;\r\n\t\t\texportRequest.ActiveFilter = currentSearch.searchForm.toJSON();\r\n\r\n\t\t\tif (currentSearch.dataQueryList) {\r\n\t\t\t\texportRequest.Filters =\r\n\t\t\t\t\tcurrentSearch.filters && currentSearch.filters[0]\r\n\t\t\t\t\t\t? currentSearch.filters.concat(currentSearch.dataQueryList.quickFilterPreprocessor.filters)\r\n\t\t\t\t\t\t: currentSearch.dataQueryList.quickFilterPreprocessor.filters;\r\n\r\n\t\t\t\texportRequest.OrderBy = currentSearch.dataQueryList.sortingPreprocessor.build();\r\n\t\t\t\tif (exportRequest.OrderBy) {\r\n\t\t\t\t\texportRequest.OrderBy = exportRequest.OrderBy.replace('orderBy=', '');\r\n\t\t\t\t}\r\n\t\t\t\texportRequest.StructureNodeId = currentSearch.dataQueryList.structurePreprocessor.getNodeId();\r\n\t\t\t}\r\n\r\n\t\t\tconst headers = { responseType: 'arraybuffer' };\r\n\t\t\treturn http.post('api/DataObject/Export', exportRequest, headers, {}, false, true).then(function (response) {\r\n\t\t\t\tdownloadHelpService.downloadContent(response, response.data);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction getIdentifier() {\r\n\t\t\treturn 'Id';\r\n\t\t}\r\n\t};\r\n}\r\n","'use strict';\r\n\r\nimport { DataModelTypes } from '../../model/data-model/enumerations';\r\n\r\nODataQueryExecutorFactory.$inject = [\r\n\t'mx.shell.SearchProviderService',\r\n\t'mx.SolutionBuilderAgent.ExternalServiceManager',\r\n\t'mx.SolutionBuilderAgent.EntityService',\r\n\t'mx.SolutionBuilderAgent.SearchQueryService',\r\n\t'mx.shell.DownloadHelpService',\r\n\t'mx.shell.NotificationService',\r\n\t'$timeout',\r\n\t'mx.SolutionBuilderAgent.Http',\r\n\t'mx.sb.Agent.DataQuery.Enums',\r\n\t'mx.SolutionBuilderAgent.ServiceRequestParamsPreprocessor',\r\n\t'mx.SolutionBuilderAgent.SearchQueryGroup',\r\n\t'mx.sb.Agent.DataQuery.FilterOperatorsFactory',\r\n\t'mx.shell.UserProfileService',\r\n];\r\nexport default function ODataQueryExecutorFactory(\r\n\tsearchService,\r\n\texternalServiceManager,\r\n\tentityService,\r\n\tsearchQueryService,\r\n\tdownloadHelpService,\r\n\tnotificationService,\r\n\t$timeout,\r\n\thttp,\r\n\tdataQueryEnums,\r\n\tServiceRequestParamsPreprocessor,\r\n\tSearchQueryGroup,\r\n\tfilterOperatorsFactory,\r\n\tuserProfileService\r\n) {\r\n\tfunction ODataQueryExecutor() {\r\n\t\tlet dataQuery;\r\n\t\tlet dataModel;\r\n\t\tlet widgetId;\r\n\t\tlet structureNodeId;\r\n\t\tlet executeOptions = {};\r\n\t\tlet urlCfg = {};\r\n\t\tlet userId;\r\n\t\tlet filterExpression;\r\n\t\tconst ColumnSortingEnum = dataQueryEnums.ColumnSortingEnum;\r\n\r\n\t\treturn {\r\n\t\t\trun: run,\r\n\t\t\tsortingBuild: sortingBuild,\r\n\t\t\tpaginationBuild: paginationBuild,\r\n\t\t\tsearchBuild: searchBuild,\r\n\t\t\tgetODataSearchFilter: getODataSearchFilter,\r\n\t\t\tinit: init,\r\n\t\t\tgetTypes: getTypes,\r\n\t\t\tsupportsGrouping: () => false,\r\n\t\t\tcolumnsBuild: () => '',\r\n\t\t\tgetServiceUrl: getServiceUrl,\r\n\t\t\tquickFiltersBuild: quickFiltersBuild,\r\n\t\t\tsetUrlCfg: (_urlCfg) => (urlCfg = _urlCfg),\r\n\t\t\tusePostBack: true,\r\n\t\t\texecuteExportData: executeExportData,\r\n\t\t\tgetIdentifier: () => executeOptions.typeInfo.Identifier,\r\n\t\t};\r\n\r\n\t\tfunction getServiceUrl() {\r\n\t\t\treturn executeOptions.listUrl;\r\n\t\t}\r\n\r\n\t\tfunction getTypes() {\r\n\t\t\tconst type = executeOptions.typeInfo.TypeName;\r\n\t\t\treturn type ? [type] : [];\r\n\t\t}\r\n\r\n\t\tfunction init(type, params) {\r\n\t\t\tdataModel = params.dataModel || {};\r\n\t\t\tfilterExpression = params.filterExpression;\r\n\t\t\tdataQuery = params.dataQuery;\r\n\t\t\twidgetId = params.id;\r\n\t\t\tstructureNodeId = params.structureNodeId;\r\n\t\t\texecuteOptions = externalServiceManager.getListExecuteOptions(dataQuery, mx.SolutionBuilderAgent.SupportedOperations.ReadObjectsByODataQuery, entityService);\r\n\t\t\treturn [ServiceRequestParamsPreprocessor];\r\n\t\t}\r\n\r\n\t\tasync function searchBuild() {\r\n\t\t\tconst currentSearch = searchService.currentSearch();\r\n\t\t\tuserId = (await userProfileService.get()).id;\r\n\t\t\tconst { filters, keyword, searchForm, filtersOperator } = currentSearch;\r\n\t\t\treturn getODataSearchFilter(dataQuery, keyword, filters, searchForm, filtersOperator);\r\n\t\t}\r\n\r\n\t\tasync function getODataSearchFilter(dataQuery, keyword, filterIds, searchForm, filtersOperator) {\r\n\t\t\tconst allWidgetFilters = await searchQueryService.getFilters(dataQuery.Id, widgetId);\r\n\t\t\tconst filterGroups = allWidgetFilters\r\n\t\t\t\t.filter((widgetFilter) => filterIds.includes(widgetFilter.Id))\r\n\t\t\t\t.map((filter) => new SearchQueryGroup(JSON.parse(filter.QueryFilter)));\r\n\r\n\t\t\tconst keywordExpression = executeOptions.searchByKeywordFuncs.processKeyword(keyword);\r\n\r\n\t\t\tconst search = new SearchQueryGroup();\r\n\t\t\tsearch.groups = filterGroups;\r\n\t\t\tif (searchForm) {\r\n\t\t\t\tsearch.groups.push(searchForm);\r\n\t\t\t}\r\n\t\t\tconst query = { group: search };\r\n\t\t\tawait searchQueryService.initQueryByDataQuery(query, dataQuery);\r\n\t\t\tsearch.attachedOperator = searchService.getQueryOperatorText(filtersOperator, 'and');\r\n\r\n\t\t\tsearch.logicalOperator =\r\n\t\t\t\tsearch.attachedOperator === 'and' ? mx.SolutionBuilderAgent.SearchQueryLogicalOperator.AND : mx.SolutionBuilderAgent.SearchQueryLogicalOperator.OR;\r\n\r\n\t\t\tconst expression = processSearchGroup(search);\r\n\r\n\t\t\tconst filters = [expression, filterExpression, keywordExpression].filter((item) => item);\r\n\r\n\t\t\tif (filters.length > 0) {\r\n\t\t\t\treturn `$filter=(${filters.join(') and (')})`;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction quickFiltersBuild() {}\r\n\r\n\t\tfunction processSearchGroup(searchGroup) {\r\n\t\t\tif (!searchGroup) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst conditions = [];\r\n\r\n\t\t\tsearchGroup.conditions.forEach((condition) => {\r\n\t\t\t\tlet result;\r\n\t\t\t\tif (!dataModel[dataQuery.Name] || !dataModel[dataQuery.Name].hasOwnProperty(condition.property)) {\r\n\t\t\t\t\tresult = processSearchCondition(condition);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (result) {\r\n\t\t\t\t\tconditions.push(result);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tsearchGroup.groups.forEach((group) => {\r\n\t\t\t\tconst groupAsCondition = processSearchGroup(group);\r\n\r\n\t\t\t\tif (groupAsCondition) {\r\n\t\t\t\t\tconditions.push(groupAsCondition);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn conditions.join(searchGroup.logicalOperator === 1 ? ' and ' : ' or ');\r\n\t\t}\r\n\r\n\t\tfunction processSearchCondition(condition) {\r\n\t\t\tif (condition.value.length === 0 && (condition.type !== 'StringType' || (condition.operator !== 14 && condition.operator !== 15))) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst conditions = [];\r\n\t\t\tlet operator;\r\n\t\t\tlet not = '';\r\n\t\t\tlet linkOperator;\r\n\t\t\tconst property = condition.__property;\r\n\t\t\tconst expression = _getExpression(property.SearchExpression || property.Expression || property.Name, 'search');\r\n\r\n\t\t\tswitch (condition.operator) {\r\n\t\t\t\tcase 14:\r\n\t\t\t\t\treturn `((${expression} eq null) or (${expression} eq ''))`;\r\n\t\t\t\tcase 15:\r\n\t\t\t\t\treturn `((${expression} ne null) and (${expression} ne ''))`;\r\n\t\t\t}\r\n\r\n\t\t\tif (condition.__enumeration) {\r\n\t\t\t\tif (condition.__flags) {\r\n\t\t\t\t\toperator = ' has ';\r\n\t\t\t\t\tlinkOperator = ' or ';\r\n\t\t\t\t\tif (condition.operator !== 10) {\r\n\t\t\t\t\t\tnot = ' not ';\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\toperator = condition.operator === 10 ? ' eq ' : ' ne ';\r\n\t\t\t\t\tlinkOperator = condition.operator === 10 ? ' or ' : ' and ';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcondition.value.forEach((val) => {\r\n\t\t\t\t\tconst value = condition.__namespace ? `${condition.__namespace}'${val}'` : val;\r\n\t\t\t\t\tconditions.push(expression + operator + value);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst groupNeed = condition.__flags ? true : conditions.length > 1;\r\n\t\t\t\treturn not + (groupNeed ? `(${conditions.join(linkOperator)})` : conditions[0]);\r\n\t\t\t}\r\n\r\n\t\t\tlinkOperator = condition.operator === 10 ? ' or ' : ' and ';\r\n\t\t\tcondition.value.forEach(function (val, index) {\r\n\t\t\t\tif (val || condition.type === DataModelTypes.BoolType.name) {\r\n\t\t\t\t\tconst conditionExpression = getConditionExpression(expression, condition.operator, condition.type, val, index);\r\n\t\t\t\t\tif (conditionExpression) {\r\n\t\t\t\t\t\tconditions.push(conditionExpression);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn conditions.length > 1 ? '(' + conditions.join(linkOperator) + ')' : conditions[0];\r\n\t\t}\r\n\r\n\t\tfunction getConditionExpression(expression, operator, type, value, index) {\r\n\t\t\tconst originalValue = value;\r\n\r\n\t\t\tif (value === '@me' && userId) {\r\n\t\t\t\tvalue = userId;\r\n\t\t\t} else if (value === '@today') {\r\n\t\t\t\tvalue = new Date();\r\n\t\t\t}\r\n\r\n\t\t\tif (type === DataModelTypes.StringType.name) {\r\n\t\t\t\tvalue = `'${value.toLowerCase()}'`;\r\n\t\t\t} else if (type === DataModelTypes.DateType.name && value instanceof Date) {\r\n\t\t\t\tvalue = value.toISOString();\r\n\t\t\t}\r\n\r\n\t\t\tconst operators = filterOperatorsFactory.operators;\r\n\r\n\t\t\tconst getContainsAnyWordFilter = (value, expression) => {\r\n\t\t\t\treturn filterOperatorsFactory.getWords(value).reduce((accumulator, word) => {\r\n\t\t\t\t\tconst wordOperator = accumulator.length ? ' or ' : '';\r\n\t\t\t\t\treturn `${accumulator}${wordOperator} contains(tolower(${expression}), '${word}')`;\r\n\t\t\t\t}, '');\r\n\t\t\t};\r\n\r\n\t\t\tconst getContainsAllWordFilter = (value, expression) => {\r\n\t\t\t\treturn filterOperatorsFactory.getWords(value).reduce((accumulator, word) => {\r\n\t\t\t\t\tconst wordOperator = accumulator.length ? ' and ' : '';\r\n\t\t\t\t\treturn `${accumulator}${wordOperator} contains(tolower(${expression}), '${word}')`;\r\n\t\t\t\t}, '');\r\n\t\t\t};\r\n\r\n\t\t\tswitch (operator) {\r\n\t\t\t\tcase operators.Equals.value:\r\n\t\t\t\t\treturn type === DataModelTypes.StringType.name ? `tolower(${expression}) eq ${value}` : `${expression} eq ${value}`;\r\n\t\t\t\tcase operators.NotEquals.value:\r\n\t\t\t\t\treturn type === DataModelTypes.StringType.name ? `tolower(${expression}) ne ${value}` : `${expression} ne ${value}`;\r\n\t\t\t\tcase operators.LowerThan.value:\r\n\t\t\t\t\treturn `${expression} lt ${value}`;\r\n\t\t\t\tcase operators.LowerThanOrEquals.value:\r\n\t\t\t\t\treturn `${expression} le ${value}`;\r\n\t\t\t\tcase operators.GreaterThan.value:\r\n\t\t\t\t\treturn `${expression} gt ${value}`;\r\n\t\t\t\tcase operators.GreaterThanOrEquals:\r\n\t\t\t\t\treturn `${expression} ge ${value}`;\r\n\t\t\t\tcase operators.Contains.value:\r\n\t\t\t\t\treturn `contains(tolower(${expression}), ${value})`;\r\n\t\t\t\tcase operators.StartsWith.value:\r\n\t\t\t\t\treturn `startswith(tolower(${expression}),${value})`;\r\n\t\t\t\tcase operators.EndsWith.value:\r\n\t\t\t\t\treturn `endswith(tolower(${expression}),${value})`;\r\n\t\t\t\tcase operators.In.value:\r\n\t\t\t\t\treturn `${expression} eq ${value}`;\r\n\t\t\t\tcase operators.NotIn.value:\r\n\t\t\t\t\treturn `${expression} ne ${value}`;\r\n\t\t\t\tcase operators.Between.value:\r\n\t\t\t\t\tif (type === DataModelTypes.DateType.name) {\r\n\t\t\t\t\t\tconst dateOperator = index === 0 ? ' ge ' : ' le ';\r\n\t\t\t\t\t\treturn expression + dateOperator + value;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn;\r\n\t\t\t\tcase operators.FlexDateBetween.value:\r\n\t\t\t\t\treturn;\r\n\t\t\t\tcase operators.NotContains.value:\r\n\t\t\t\t\treturn `not contains(tolower(${expression}), ${value})`;\r\n\t\t\t\tcase operators.ContainsAnyWord.value:\r\n\t\t\t\t\treturn getContainsAnyWordFilter(originalValue, expression);\r\n\t\t\t\tcase operators.ContainsAllWords.value:\r\n\t\t\t\t\treturn getContainsAllWordFilter(originalValue, expression);\r\n\t\t\t\tcase operators.DoesNotContainAnyWord.value: {\r\n\t\t\t\t\tconst containsAnyWordFilter = getContainsAnyWordFilter(originalValue, expression);\r\n\t\t\t\t\treturn `not (${containsAnyWordFilter})`;\r\n\t\t\t\t}\r\n\t\t\t\tcase operators.DoesNotContainAllWords.value: {\r\n\t\t\t\t\tconst containsAllWordFilter = getContainsAllWordFilter(originalValue, expression);\r\n\t\t\t\t\treturn `not (${containsAllWordFilter})`;\r\n\t\t\t\t}\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction sortingBuild(sortColumns) {\r\n\t\t\tif (!Array.isArray(sortColumns) || !sortColumns.length) {\r\n\t\t\t\treturn '';\r\n\t\t\t}\r\n\t\t\treturn sortColumns.reduce((accumulator, column, index) => {\r\n\t\t\t\tconst direction = column.Sorting === ColumnSortingEnum.Ascending ? 'asc' : 'desc';\r\n\t\t\t\treturn accumulator + (index > 0 ? ',' : '') + _getExpression(column.SortingExpression || column.Expression || column.Name, 'sort') + ' ' + direction;\r\n\t\t\t}, '$orderby=');\r\n\t\t}\r\n\r\n\t\tfunction paginationBuild(pageSize, page) {\r\n\t\t\treturn pageSize > 0 ? '$top=' + pageSize + (page > 0 ? '&$skip=' + page * pageSize : '') : '';\r\n\t\t}\r\n\r\n\t\tfunction prepareUrl(baseUrl, parts) {\r\n\t\t\tlet queryString = '';\r\n\r\n\t\t\tparts.forEach((part) => {\r\n\t\t\t\tqueryString = (queryString ? `${queryString}&` : '') + part;\r\n\t\t\t});\r\n\r\n\t\t\tbaseUrl += (baseUrl.indexOf('?') === -1 ? '?' : '&') + queryString;\r\n\t\t\treturn baseUrl;\r\n\t\t}\r\n\r\n\t\tfunction run(parts, progressHandler) {\r\n\t\t\tconst dataRequestUrl = prepareUrl(urlCfg.path, executeOptions.countOptions.executeExternalService ? parts : parts.concat('$count=true'));\r\n\t\t\tconst options = {};\r\n\t\t\tif (typeof progressHandler === 'function') {\r\n\t\t\t\toptions.eventHandlers = {\r\n\t\t\t\t\tprogress: progressHandler,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn executeOptions.httpProvider\r\n\t\t\t\t.get(dataRequestUrl, undefined, options)\r\n\t\t\t\t.then(executeOptions.processResponse)\r\n\t\t\t\t.then(function (response) {\r\n\t\t\t\t\tlet data = executeOptions.getProcessedDataFromObject(response);\r\n\r\n\t\t\t\t\tif (!Array.isArray(data)) {\r\n\t\t\t\t\t\tdata = [];\r\n\t\t\t\t\t\tmx.console.error('Wrong response format for: ', dataRequestUrl);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (executeOptions.countOptions.executeExternalService) {\r\n\t\t\t\t\t\tconst dataRequestUrlCount = prepareUrl(executeOptions.countOptions.dataRequestUrlCount, parts);\r\n\t\t\t\t\t\treturn executeOptions.httpProvider\r\n\t\t\t\t\t\t\t.get(dataRequestUrlCount)\r\n\t\t\t\t\t\t\t.then(executeOptions.processResponse, () => -1)\r\n\t\t\t\t\t\t\t.then((result) => ({\r\n\t\t\t\t\t\t\t\tdata: data,\r\n\t\t\t\t\t\t\t\ttotalCount: Number(result),\r\n\t\t\t\t\t\t\t}));\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdata: data,\r\n\t\t\t\t\t\ttotalCount: Number(executeOptions.countOptions.getFromObject(response) || 0),\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction _getExpression(expression, type) {\r\n\t\t\tconst allExpressions = JSON.parse(expression.match(/{(.+?)}/g));\r\n\t\t\tif (allExpressions && allExpressions[type]) {\r\n\t\t\t\treturn allExpressions[type].replace(/\\./g, '/');\r\n\t\t\t}\r\n\r\n\t\t\treturn expression\r\n\t\t\t\t.replace(/\\/\\*.+?\\*\\/|\\/\\/.*(?=[\\n\\r])/g, '')\r\n\t\t\t\t.trim()\r\n\t\t\t\t.replace(/\\./g, '/');\r\n\t\t}\r\n\r\n\t\tfunction executeExportData() {\r\n\t\t\tconst headers = { responseType: 'arraybuffer' };\r\n\r\n\t\t\treturn searchBuild().then((search) =>\r\n\t\t\t\thttp.get(getExportDataUrl(search), '', headers, false, true).then((response) => {\r\n\t\t\t\t\tdownloadHelpService.downloadContent(response, response.data);\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tfunction getExportDataUrl(search) {\r\n\t\t\tconst baseUrl = getBaseUrl();\r\n\t\t\tlet exportMarker = '?export=true';\r\n\t\t\tconst structureParam = structureBuild(structureNodeId);\r\n\t\t\tif (structureParam) {\r\n\t\t\t\texportMarker += `&${structureParam}`;\r\n\t\t\t}\r\n\t\t\tif (search) {\r\n\t\t\t\texportMarker += `&${search}`;\r\n\t\t\t}\r\n\t\t\treturn baseUrl + exportMarker;\r\n\t\t}\r\n\r\n\t\tfunction getBaseUrl() {\r\n\t\t\tconst serviceUrl = getServiceUrl();\r\n\t\t\tconst exportIndex = serviceUrl.indexOf('?export');\r\n\t\t\tif (exportIndex === -1) {\r\n\t\t\t\tthrow new Error('Export not allowed for this data query');\r\n\t\t\t}\r\n\t\t\treturn serviceUrl.substr(0, exportIndex);\r\n\t\t}\r\n\r\n\t\tfunction structureBuild(structureId) {\r\n\t\t\tif (structureId) {\r\n\t\t\t\treturn `structureNodeId=${structureId}`;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn ODataQueryExecutor;\r\n}\r\n","import type { RequestDTO as EvaluateExpressionRequestDTO, ResponseDTO as EvaluateExpressionResponseDTO } from '@dwp/api-parser/dist/api/Schema/Schema.EvaluateExpression';\r\nimport type { ObjectClassInfo } from '@dwp/api-parser/dist/api/Schema/classes/Schema/Classes.GetClasses';\r\nimport type { ObjectClassSchema, ClassType, SchemaObjectInfo } from '@dwp/api-parser/dist/api/Schema/classes/Schema/Classes.GetClass';\r\nimport type { ObjectTypeInfo } from '@dwp/api-parser/dist/api/Schema/types/Schema/Types.GetTypes';\r\nimport type { ObjectTypeSchema } from '@dwp/api-parser/dist/api/Schema/types/Schema/Types.GetType';\r\nimport {\r\n\tRequestDTO as GetObjectReferenceExpressionRequestDTO,\r\n\tResponseDTO as GetObjectReferenceExpressionResponseDTO,\r\n} from '@dwp/api-parser/dist/api/Schema/Schema.GetObjectReferenceExpression';\r\n\r\nimport { HttpService } from '../../../App/services/http-service';\r\nimport { WithRequired } from '../../../Types/WithRequired';\r\n\r\ntype SchemaItemTypes = 'types' | 'classes';\r\ntype SchemaObjectResponseType = T extends 'types' ? Promise : T extends 'classes' ? Promise : never;\r\n\r\ntype SchemaItemInfo = Required> & { ProtectionLevel: number };\r\n\r\nexport type TypeSchema = SchemaItemInfo & WithRequired;\r\nexport type TypeInfo = SchemaItemInfo & WithRequired;\r\nexport type ClassInfo = SchemaItemInfo & ObjectClassInfo;\r\nexport type ClassSchema = SchemaItemInfo & WithRequired;\r\n\r\nexport type SchemaItem = {\r\n\tDisplayName: string;\r\n\tName: string;\r\n\tIsPickup?: boolean;\r\n\tId: string;\r\n};\r\n\r\ntype AttributeExpression = Required;\r\n\r\ntype CacheType = {\r\n\tclasses: null | Promise;\r\n\ttypes: null | Promise;\r\n\tattrExpressions: Record>;\r\n\tclassInfos: Record>;\r\n};\r\n\r\n/**\r\n * @ngdoc service\r\n * @name mx.SolutionBuilderAgent.SchemaService\r\n * @module mx.SolutionBuilderAgent\r\n *\r\n * @description\r\n * A service provides methods for retrieving schema meta-data\r\n *\r\n */\r\nexport class SchemaService {\r\n\tprivate readonly cache: CacheType = {\r\n\t\tclasses: null,\r\n\t\ttypes: null,\r\n\t\tattrExpressions: {},\r\n\t\tclassInfos: {},\r\n\t};\r\n\tprivate readonly schemaServiceUrl = 'api/schema/';\r\n\r\n\tstatic $inject = ['mx.SolutionBuilderAgent.Http'];\r\n\tconstructor(private readonly http: HttpService) {}\r\n\r\n\tpublic clearClasses(): void {\r\n\t\tthis.cache.classes = null;\r\n\t}\r\n\r\n\tpublic clearTypes(): void {\r\n\t\tthis.cache.types = null;\r\n\t}\r\n\r\n\tpublic getClassInfo(className: string): Promise {\r\n\t\tif (!this.cache.classInfos[className]) {\r\n\t\t\tthis.cache.classInfos[className] = this.http.get(`${this.schemaServiceUrl}classes/${className}`);\r\n\t\t}\r\n\t\treturn this.cache.classInfos[className];\r\n\t}\r\n\r\n\tpublic getClassInfoById(id: string): Promise {\r\n\t\tif (!this.cache.classInfos[id]) {\r\n\t\t\tthis.cache.classInfos[id] = this.http.get(`${this.schemaServiceUrl}classes/${id}`);\r\n\t\t}\r\n\t\treturn this.cache.classInfos[id];\r\n\t}\r\n\r\n\tpublic getType(key: string, keyIsId = false): Promise {\r\n\t\treturn this._findSchemaItem(this.getTypes.bind(this), key, keyIsId);\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.SchemaService#evaluateColumnExpression\r\n\t *\r\n\t * @description\r\n\t * Evaluates the validity of the data expression\r\n\t *\r\n\t *\r\n\t * @param {string} entityClass - Name of the Entity class.\r\n\t * @param {string} expr - expression for evaluation.\r\n\t *\r\n\t * @returns {string} null if expression is invalid, or name of data type of the expression result\r\n\t */\r\n\tpublic async evaluateColumnExpression(entityClass: string, expr: string): Promise {\r\n\t\tif (expr) {\r\n\t\t\tconst params: EvaluateExpressionRequestDTO = {\r\n\t\t\t\tentityClass: entityClass,\r\n\t\t\t\texpr: expr,\r\n\t\t\t};\r\n\t\t\treturn this.http.get(`${this.schemaServiceUrl}evaluateExpression`, params);\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tpublic async getReferenceAttributeExpr(entityClass: string, attributeName: string, id: string): Promise {\r\n\t\tconst key = `${entityClass}.${attributeName}`.toLowerCase();\r\n\r\n\t\tconst params: GetObjectReferenceExpressionRequestDTO = {\r\n\t\t\tentityClass: entityClass,\r\n\t\t\tattributeName: attributeName,\r\n\t\t};\r\n\t\tthis.cache.attrExpressions[key] = this.cache.attrExpressions[key] || this.http.get(`${this.schemaServiceUrl}attrExpr`, params);\r\n\r\n\t\tconst data = await this.cache.attrExpressions[key];\r\n\r\n\t\tif (data) {\r\n\t\t\treturn {\r\n\t\t\t\tEntityClassName: data.EntityClassName,\r\n\t\t\t\tFilterExpression: (data.FilterExpression || '').replace('@id', id),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tpublic getClass(key: string, keyIsId = false): Promise {\r\n\t\treturn this._findSchemaItem(this.getClasses.bind(this), key, keyIsId);\r\n\t}\r\n\r\n\tprivate async _findSchemaItem(itemsGetter: () => Promise, key: string, keyIsId = false): Promise {\r\n\t\tconst types = await itemsGetter();\r\n\t\treturn types.find(({ Id, InternalName }) => (keyIsId ? Id === key : InternalName === key));\r\n\t}\r\n\r\n\tpublic getTypeItems(valueIsId = false, className: string) {\r\n\t\treturn this._getSchemaItems(this.getTypes.bind(this), className, valueIsId);\r\n\t}\r\n\r\n\tpublic getClassItems(valueIsId = false, typeName: string, classType: ClassType) {\r\n\t\treturn this._getSchemaItems(this.getClasses.bind(this), null, valueIsId, typeName, classType);\r\n\t}\r\n\r\n\tprivate itemsAreTypes(items: SchemaItemInfo[], className: string | null): items is TypeInfo[] {\r\n\t\treturn Boolean(className);\r\n\t}\r\n\r\n\tprivate itemsAreClasses(items: SchemaItemInfo[], classType?: number): items is ClassInfo[] {\r\n\t\treturn typeof classType === 'number';\r\n\t}\r\n\r\n\tprivate async _getSchemaItems(\r\n\t\tfunc: () => Promise,\r\n\t\tclassName: string | null,\r\n\t\tvalueIsId = false,\r\n\t\ttypeName?: string,\r\n\t\tclassType?: number\r\n\t): Promise {\r\n\t\tlet items = await func();\r\n\t\tif (this.itemsAreTypes(items, className)) {\r\n\t\t\titems = items.filter((item) => {\r\n\t\t\t\tconst classes = item.RelatedClasses || [];\r\n\t\t\t\tclassName = (className || '').toUpperCase();\r\n\t\t\t\treturn classes.some((_class) => _class.toUpperCase() === className);\r\n\t\t\t});\r\n\t\t} else if (typeof classType === 'number' && this.itemsAreClasses(items, classType)) {\r\n\t\t\tif (classType === -2) {\r\n\t\t\t\titems = items.filter((item) => item.ClassType !== 4 /*pickups*/);\r\n\t\t\t} else if (classType > -1 /*all*/) {\r\n\t\t\t\titems = items.filter((item) => item.ClassType === classType);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (typeName) {\r\n\t\t\ttypeName = (typeName || '').toUpperCase();\r\n\t\t\tconst types = await this.getTypes();\r\n\t\t\tlet classes: string[] = [];\r\n\r\n\t\t\ttypes.some((type) => {\r\n\t\t\t\tif (type.InternalName.toUpperCase() === typeName) {\r\n\t\t\t\t\tclasses = type.RelatedClasses;\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\t\t\titems = items.filter((item) => classes.some((_item) => item.InternalName === _item));\r\n\t\t}\r\n\r\n\t\treturn items.map((item) => ({\r\n\t\t\tDisplayName: item.DisplayName + ' (' + item.InternalName + ')',\r\n\t\t\tName: valueIsId ? item.Id : item.InternalName,\r\n\t\t\tIsPickup: (item as ClassInfo).IsPickup,\r\n\t\t\tId: item.Id,\r\n\t\t}));\r\n\t}\r\n\r\n\tpublic getTypes(): Promise {\r\n\t\treturn this._getSchemaObjects('types');\r\n\t}\r\n\r\n\tpublic getClasses(): Promise {\r\n\t\treturn this._getSchemaObjects('classes');\r\n\t}\r\n\r\n\tprivate _getSchemaObjects(schemaType: SchemaType): SchemaObjectResponseType {\r\n\t\tif (!this.cache[schemaType]) {\r\n\t\t\t(this.cache[schemaType] as SchemaObjectResponseType) = this.http.get(`${this.schemaServiceUrl}${schemaType}`) as SchemaObjectResponseType;\r\n\t\t}\r\n\t\treturn this.cache[schemaType] as NonNullable>;\r\n\t}\r\n}\r\n","import { ClassTypes, DataTypes, RelatedClassCardinality } from '../model/enumerations';\r\nimport MxEnum from '../../../Utils/MxEnum';\r\n\r\nSchemaServiceEnums.$inject = [];\r\nexport function SchemaServiceEnums() {\r\n\treturn {\r\n\t\tClassTypes: new MxEnum(ClassTypes),\r\n\t\tDataTypes: new MxEnum(DataTypes),\r\n\t\tRelationCardinality: new MxEnum(mx.SolutionBuilderAgent.RelationCardinality),\r\n\t\tRelatedClassCardinality: new MxEnum(RelatedClassCardinality),\r\n\t};\r\n}\r\n","/**\r\n * @ngdoc service\r\n * @name mx.SolutionBuilderAgent.SearchQueryService\r\n * @module mx.SolutionBuilderAgent\r\n *\r\n * @description\r\n * A service provides methods to manage search queries and filters.\r\n */\r\nSearchQueryService.$inject = [\r\n\t'$q',\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.SearchProviderService',\r\n\t'mx.shell.NotificationService',\r\n\t'mx.SolutionBuilderAgent.mxColumnDefinitionService',\r\n\t'mx.SolutionBuilderAgent.EntityService',\r\n\t'mx.SolutionBuilderAgent.DataQueryService',\r\n\t'mx.internationalization',\r\n\t'mx.SolutionBuilderAgent.CacheService',\r\n\t'mx.sb.Agent.DataQuery.FilterOperatorsFactory',\r\n\t'mx.SolutionBuilderAgent.SearchQueryCondition',\r\n\t'mx.SolutionBuilderAgent.SearchQueryGroup',\r\n\t'mx.SolutionBuilderAgent.SearchQuery',\r\n\t'$stateParams',\r\n];\r\n\r\nexport default function SearchQueryService(\r\n\t$q,\r\n\teventService,\r\n\tsearchService,\r\n\tnotificationService,\r\n\tcolumnDefinitionService,\r\n\tentityService,\r\n\tdataQueryService,\r\n\tinternationalization,\r\n\tcacheService,\r\n\tfilterOperatorsFactory,\r\n\tSearchQueryCondition,\r\n\tSearchQueryGroup,\r\n\tSearchQuery,\r\n\t$stateParams\r\n) {\r\n\tconst queriesCache = {};\r\n\r\n\teventService.subscribeGlobal(mx.shell.EventCodes.CurrentNavigationItemChanged, (e, { navigationItem }) => onNavigationItemChanged(navigationItem));\r\n\r\n\treturn {\r\n\t\tgetQueries: getQueries,\r\n\t\tgetFilters: getFilters,\r\n\t\topenFilterDialog: openFilterDialog,\r\n\t\tcreateConditionByColumn: createConditionByColumn,\r\n\t\tcreateExpressionCondition: createExpressionCondition,\r\n\t\tinitQueryByContext: initQueryByContext,\r\n\t\tinitQueryByDataQuery: initQueryByDataQuery,\r\n\t\tcreateQuery: createQuery,\r\n\t\tcreateQueryGroup: createQueryGroup,\r\n\t\tcreateQueryCondition: createQueryCondition,\r\n\t\tsaveSearchQuery: saveSearchQuery,\r\n\t\taddSearchQuery: addSearchQuery,\r\n\t\tremoveSearchQuery: removeSearchQuery,\r\n\t\tgetConditionString: getConditionString,\r\n\t\teditFilter: editFilter,\r\n\t\taddChildFilter: addChildFilter,\r\n\t\tdeleteFilter: deleteFilter,\r\n\t\tgetContextByDataQueryId: getContextByDataQueryId,\r\n\t\tvalidateGroup: validateGroup,\r\n\t};\r\n\r\n\tasync function onNavigationItemChanged(navigationItem) {\r\n\t\tif (navigationItem?.searchContext) {\r\n\t\t\tconst queries = ((await getQueries(navigationItem.searchContext)) || []).filter((query) => !query.showInNavigation);\r\n\t\t\tqueries.forEach((query) => (query.__active = false));\r\n\r\n\t\t\tif ($stateParams.extraFilter) {\r\n\t\t\t\tconst query = queries.find((query) => query.id === $stateParams.extraFilter);\r\n\t\t\t\tif (query) {\r\n\t\t\t\t\tquery.__active = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.SearchQueryService#editFilter\r\n\t *\r\n\t * @description\r\n\t * Opens a dialog to edit the specified filter.\r\n\t *\r\n\t * @param {object} filter - a filter to edit.\r\n\t */\r\n\tfunction editFilter(filter) {\r\n\t\tconst context = _getContextByFilter(filter);\r\n\t\tgetQueries(context, false).then(function (queries) {\r\n\t\t\tif (!Array.isArray(queries)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet query = null;\r\n\t\t\tlet parent = null;\r\n\r\n\t\t\tqueries.forEach((item) => {\r\n\t\t\t\tconst id = item.id;\r\n\r\n\t\t\t\tif (id === filter.id) {\r\n\t\t\t\t\tquery = item;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (id === filter.parent) {\r\n\t\t\t\t\tparent = item;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\topenFilterDialog(query, context, parent);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.SearchQueryService#deleteFilter\r\n\t *\r\n\t * @description\r\n\t * Deletes the filter.\r\n\t *\r\n\t * @param {object} filter - a filter to delete\r\n\t */\r\n\tfunction deleteFilter(filter) {\r\n\t\treturn notificationService\r\n\t\t\t.confirm(\r\n\t\t\t\t'',\r\n\t\t\t\tinternationalization.get('solutionBuilderAgent.components.mx-search-query-builder.confirmDelete'),\r\n\t\t\t\tinternationalization.get('shell.common.yes'),\r\n\t\t\t\tinternationalization.get('shell.common.no')\r\n\t\t\t)\r\n\t\t\t.then(() => {\r\n\t\t\t\tconst context = _getContextByFilter(filter);\r\n\t\t\t\treturn removeSearchQuery(filter.id, context).then(() => {\r\n\t\t\t\t\tnotificationService.success(internationalization.get('solutionBuilderAgent.components.mx-search-query-builder.filterDeleted'));\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.SearchQueryService#addChildFilter\r\n\t *\r\n\t * @description\r\n\t * Opens a dialog to create a child filter.\r\n\t *\r\n\t * @param {object} filter - a filter to create child for\r\n\t */\r\n\tfunction addChildFilter(filter) {\r\n\t\tconst context = _getContextByFilter(filter);\r\n\t\tgetQueries(context, false).then((queries) => {\r\n\t\t\tconst parent = (queries || []).find((item) => item.id === filter.id) || null;\r\n\t\t\topenFilterDialog(null, context, parent, true);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction _getContextByFilter(filter) {\r\n\t\treturn getContextByDataQueryId(filter.dataQuery, filter.widgetId);\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.SearchQueryService#getContextByDataQueryId\r\n\t *\r\n\t * @description\r\n\t * Gets a search context for DataQuery by its id\r\n\t *\r\n\t * @param {guid} dataQueryId - id of a DataQuery to get context for\r\n\t * @param {guid} widgetId - id of a widget to get context for\r\n\t */\r\n\tfunction getContextByDataQueryId(dataQueryId, widgetId) {\r\n\t\tconst contexts = searchService.getContexts();\r\n\t\tconst filters = contexts.filter((item) => item.datasource === dataQueryId);\r\n\r\n\t\tif (filters.length > 1 && Boolean(widgetId)) {\r\n\t\t\tconst widgetFilters = filters.filter((item) => item.widgetId === widgetId);\r\n\t\t\tif (widgetFilters.length > 0) {\r\n\t\t\t\treturn widgetFilters[0];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn filters[0];\r\n\t}\r\n\r\n\tfunction getConditionString(condition) {\r\n\t\tconst values = condition.value;\r\n\r\n\t\tif (condition.type === 'Expression') {\r\n\t\t\treturn `\"${values[1]}\"`;\r\n\t\t}\r\n\r\n\t\tconst operator = filterOperatorsFactory.getOperatorByValue(condition.operator);\r\n\t\tconst valueString = condition.valueString;\r\n\r\n\t\tif (!values || (!values[0] && !values[1] && condition.type !== 'BoolType')) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\tlet value = values[0] || '';\r\n\t\tlet secondValue = values[1] || '';\r\n\r\n\t\tif (condition.type === 'DateType') {\r\n\t\t\tvalue = internationalization.formatDate(value, 'longDate');\r\n\t\t\tsecondValue = internationalization.formatDate(secondValue, 'longDate');\r\n\t\t} else if (condition.type === 'BoolType') {\r\n\t\t\tvalue = value ? 'True' : 'False';\r\n\t\t}\r\n\r\n\t\tif (operator) {\r\n\t\t\tlet res = '';\r\n\r\n\t\t\tswitch (operator.value) {\r\n\t\t\t\tcase filterOperatorsFactory.operators.In.value:\r\n\t\t\t\t\tif (condition.type === 'IntType' && condition.__enumeration) {\r\n\t\t\t\t\t\tres += ` ${_getLocalization('capIs')} `;\r\n\t\t\t\t\t\tres += enumerationValuesString(values, condition.__enumeration);\r\n\t\t\t\t\t} else if (valueString) {\r\n\t\t\t\t\t\tres += ' ' + (values.length > 1 ? _getLocalization('are') : _getLocalization('is')) + ' ' + valueString;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tres += ` ${_getLocalization('inSelectObjects')} (${values.length})`;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase filterOperatorsFactory.operators.NotIn.value:\r\n\t\t\t\t\tif (condition.type === 'IntType' && condition.__enumeration) {\r\n\t\t\t\t\t\tres += ' ' + _getLocalization('capIsn') + ' ';\r\n\t\t\t\t\t\tres += enumerationValuesString(values, condition.__enumeration);\r\n\t\t\t\t\t} else if (valueString) {\r\n\t\t\t\t\t\tres += ` ${values.length > 1 ? _getLocalization('arenot') : _getLocalization('isnot')} ${valueString}`;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tres += ` ${_getLocalization('inNotSelectObjects')} (${values.length})`;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tres += `${operator.name} `;\r\n\r\n\t\t\t\t\tif (valueString) {\r\n\t\t\t\t\t\tres += valueString;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tres += `\"${value}\" `;\r\n\t\t\t\t\t\tif (secondValue) {\r\n\t\t\t\t\t\t\tres += `${_getLocalization('and')} \"${secondValue}\"`;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t}\r\n\t\treturn '';\r\n\t}\r\n\r\n\tfunction enumerationValuesString(values, enumeration) {\r\n\t\tlet res = '';\r\n\r\n\t\tfor (let i = 0; i < values.length; i++) {\r\n\t\t\tconst enumValue = _.find(enumeration, ['Value', Number(values[i])]);\r\n\r\n\t\t\tif (enumValue) {\r\n\t\t\t\tif (i !== 0 && i !== values.length - 1) {\r\n\t\t\t\t\tres += ',';\r\n\t\t\t\t} else if (i !== 0 && i === values.length - 1) {\r\n\t\t\t\t\tres += ' or';\r\n\t\t\t\t}\r\n\t\t\t\tres += ` \"${enumValue.DisplayString}\"`;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\r\n\tfunction _getLocalization(string) {\r\n\t\treturn internationalization.get(`solutionBuilderAgent.components.mx-search-query-condition.${string}`);\r\n\t}\r\n\r\n\tfunction getFilters(dataQueryId, listWidgetId) {\r\n\t\treturn dataQueryService.getFilters(dataQueryId, listWidgetId).then((filters) => {\r\n\t\t\tfilters.forEach((filter) => {\r\n\t\t\t\tfilter.Widget = listWidgetId;\r\n\t\t\t\tgetParentsChain(filter, filters);\r\n\t\t\t});\r\n\r\n\t\t\treturn filters;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getParentsChain(currentFilter, filters) {\r\n\t\tif (currentFilter.parentsChain) {\r\n\t\t\treturn currentFilter.parentsChain;\r\n\t\t}\r\n\r\n\t\tcurrentFilter.ParentsChain = [];\r\n\t\tif (currentFilter.Parent && currentFilter.ConsiderParentFilters) {\r\n\t\t\tfilters.some(function (filter) {\r\n\t\t\t\tif (currentFilter.Parent === filter.Id) {\r\n\t\t\t\t\tcurrentFilter.ParentsChain = [filter].concat(getParentsChain(filter, filters));\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn currentFilter.ParentsChain;\r\n\t}\r\n\r\n\tfunction getQueries(context, fromCache) {\r\n\t\tconst defer = $q.defer();\r\n\r\n\t\tif (fromCache === undefined) {\r\n\t\t\tfromCache = true;\r\n\t\t}\r\n\r\n\t\tconst key = context && context.name ? context.name : null;\r\n\r\n\t\tif (fromCache && key && queriesCache[key] && queriesCache[key].length) {\r\n\t\t\tdefer.resolve(queriesCache[key]);\r\n\t\t} else {\r\n\t\t\t$q.all([getFilters(context.datasource, context.widgetId), getDataQuery(context)]).then((data) => {\r\n\t\t\t\tconst qData = data[0];\r\n\t\t\t\tconst dataQuery = data[1];\r\n\r\n\t\t\t\tif (Array.isArray(qData)) {\r\n\t\t\t\t\tlet queries = qData.map((item) => createQuery(item));\r\n\r\n\t\t\t\t\tqueries = queries.sort((a, b) => a.position - b.position);\r\n\r\n\t\t\t\t\tconst queryPromises = queries.map((query) => initQueryByDataQuery(query, dataQuery));\r\n\r\n\t\t\t\t\t$q.all(queryPromises).then(function () {\r\n\t\t\t\t\t\tif (key) {\r\n\t\t\t\t\t\t\tqueriesCache[key] = queries;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdefer.resolve(queries);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn defer.promise;\r\n\t}\r\n\r\n\tasync function openFilterDialog(query, context, parent, showInNavigation) {\r\n\t\tif (!context) {\r\n\t\t\tthrow new Error('No context provided');\r\n\t\t}\r\n\r\n\t\tconst title = internationalization.get(`solutionBuilderAgent.components.mx-search-query-builder.${query ? 'editQuery' : 'createQuery'}`);\r\n\r\n\t\tif (!query?.group) {\r\n\t\t\tquery = createQuery(query);\r\n\t\t}\r\n\r\n\t\tif (!parent && query.parent) {\r\n\t\t\tparent = ((await getQueries(context, false)) || []).find((item) => item.id === query.parent);\r\n\t\t}\r\n\r\n\t\tsearchService.openSearchQueryBuilder({\r\n\t\t\ttitle: title,\r\n\t\t\tquery: query,\r\n\t\t\tcontext: context,\r\n\t\t\tparent: parent,\r\n\t\t\tshowInNavigation: showInNavigation || (parent && parent.showInNavigation),\r\n\t\t});\r\n\t}\r\n\r\n\tfunction createQuery(queryOptions) {\r\n\t\treturn new SearchQuery(queryOptions);\r\n\t}\r\n\r\n\tfunction createQueryGroup(groupOptions) {\r\n\t\treturn new SearchQueryGroup(groupOptions);\r\n\t}\r\n\r\n\tfunction createQueryCondition(conditionOptions) {\r\n\t\treturn new SearchQueryCondition(conditionOptions);\r\n\t}\r\n\r\n\tfunction getDataQuery(context) {\r\n\t\tif (context) {\r\n\t\t\tconst widgetId = context.widgetId || (context.parameters && context.parameters.contentWidgetId);\r\n\t\t\treturn columnDefinitionService.getGridDefinitionById(context.datasource, widgetId);\r\n\t\t} else {\r\n\t\t\treturn $q.when({ Columns: [] });\r\n\t\t}\r\n\t}\r\n\r\n\tfunction initQueryByContext(query, context) {\r\n\t\treturn getDataQuery(context).then((dataQuery) => {\r\n\t\t\tcontext.className = dataQuery.SchemaClassName;\r\n\t\t\treturn initQueryByDataQuery(query, dataQuery);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction initQueryByDataQuery(query, dataQuery) {\r\n\t\treturn initGroup(query.group, dataQuery);\r\n\t}\r\n\r\n\tfunction initGroup(group, dataQuery) {\r\n\t\tconst defer = $q.defer();\r\n\t\tconst res = [];\r\n\r\n\t\tgroup.conditions.forEach((c) => {\r\n\t\t\tif (!c.__property) {\r\n\t\t\t\tlet dataQueryColumn = null;\r\n\r\n\t\t\t\tdataQuery.Columns.some(function (column) {\r\n\t\t\t\t\tif (column.Name === c.property) {\r\n\t\t\t\t\t\tdataQueryColumn = column;\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tres.push(initCondition(c, dataQueryColumn, dataQuery));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tgroup.groups.forEach((g) => {\r\n\t\t\tres.push(initGroup(g, dataQuery));\r\n\t\t});\r\n\r\n\t\t$q.all(res).then(() => {\r\n\t\t\tdefer.resolve(group);\r\n\t\t});\r\n\r\n\t\treturn defer.promise;\r\n\t}\r\n\r\n\tfunction initCondition(condition, dataQueryColumn, dataQuery) {\r\n\t\tcondition.__property = dataQueryColumn;\r\n\t\tcondition.type = dataQueryColumn ? dataQueryColumn.AttributeSearchValueType : condition.type;\r\n\r\n\t\tif (condition.type === 'IntType' && dataQueryColumn && dataQueryColumn.ReferenceTo) {\r\n\t\t\tif (dataQuery.Service) {\r\n\t\t\t\treturn getEnumerationFromService(condition, dataQueryColumn, dataQuery);\r\n\t\t\t} else {\r\n\t\t\t\treturn getEnumeration(condition, dataQueryColumn);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn $q.when(condition);\r\n\t}\r\n\r\n\tfunction getEnumerationFromService(condition, property, dataQuery) {\r\n\t\tconst listOperation = dataQuery.ServiceInfo.Operations.filter((op) => op.Id === dataQuery.Operation)[0];\r\n\r\n\t\tconst enumInfo = listOperation.ResponseContract.UsedTypes[property.ReferenceTo];\r\n\t\tif (!enumInfo) {\r\n\t\t\tcondition.__namespace = undefined;\r\n\t\t\treturn getEnumeration(condition, property);\r\n\t\t}\r\n\r\n\t\tconst _enum = enumInfo.Enum;\r\n\r\n\t\tcondition.__namespace = enumInfo.NameSpace;\r\n\t\tif (enumInfo.Flags) {\r\n\t\t\tcondition.__flags = enumInfo.Flags;\r\n\t\t}\r\n\r\n\t\tconst enumeration = [];\r\n\r\n\t\tObject.keys(_enum).forEach((paramName) => {\r\n\t\t\tconst value = _enum[paramName];\r\n\r\n\t\t\tenumeration.push({\r\n\t\t\t\tDisplayString: value.Title,\r\n\t\t\t\tValue: value.Value,\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tcondition.__enumeration = enumeration;\r\n\t\treturn condition;\r\n\t}\r\n\r\n\tfunction getEnumeration(condition, property) {\r\n\t\treturn entityService.getEnumerationValues(property.ReferenceTo, property.ReferenceFilter).then((enumeration) => {\r\n\t\t\tcondition.__enumeration = enumeration;\r\n\t\t\treturn condition;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction createExpressionCondition() {\r\n\t\tconst condition = createQueryCondition({\r\n\t\t\tProperty: '__expression',\r\n\t\t\tType: 'Expression',\r\n\t\t});\r\n\r\n\t\treturn initCondition(condition);\r\n\t}\r\n\r\n\tfunction createConditionByColumn(columnName, dataQuery) {\r\n\t\tconst column = dataQuery.Columns.find((column) => column.Name === columnName);\r\n\t\tif (!column) {\r\n\t\t\treturn $q.when(null);\r\n\t\t}\r\n\t\tconst condition = createQueryCondition({\r\n\t\t\tProperty: column.Name,\r\n\t\t\tType: column.AttributeSearchValueType,\r\n\t\t\tOperator: column.AttributeSearchValueType === mx.shell.ObjectPropertyType.String.name ? filterOperatorsFactory.operators.Contains.value : undefined,\r\n\t\t});\r\n\r\n\t\treturn initCondition(condition, column, dataQuery);\r\n\t}\r\n\r\n\tfunction addSearchQuery(query, context) {\r\n\t\tquery.dataQuery = context.datasource;\r\n\t\tquery.datasetView = context.widgetId;\r\n\t\treturn dataQueryService.createFilter(query).then(reloadNavigation(context));\r\n\t}\r\n\r\n\tfunction saveSearchQuery(query, context) {\r\n\t\treturn dataQueryService.updateFilter(query).then(reloadNavigation(context));\r\n\t}\r\n\r\n\tfunction removeSearchQuery(queryId, context) {\r\n\t\treturn dataQueryService.removeFilter(queryId).then(reloadNavigation(context));\r\n\t}\r\n\r\n\tfunction reloadNavigation(context) {\r\n\t\treturn function (id) {\r\n\t\t\treturn cacheService.resetServerCache({ navigation: true }).then(function () {\r\n\t\t\t\teventService.dispatchEvent(mx.shell.EventCodes.NavigationReload);\r\n\t\t\t\tif (queriesCache && queriesCache[context.name]) {\r\n\t\t\t\t\tdelete queriesCache[context.name];\r\n\t\t\t\t}\r\n\t\t\t\treturn id;\r\n\t\t\t});\r\n\t\t};\r\n\t}\r\n\r\n\tfunction validateConditions(conditions) {\r\n\t\treturn conditions.every((condition) => condition.__valid);\r\n\t}\r\n\r\n\tfunction validateGroup(group) {\r\n\t\tif (!group || typeof group !== 'object') {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst hasConditions = Array.isArray(group.conditions) && group.conditions.length > 0;\r\n\t\tconst hasGroups = Array.isArray(group.groups) && group.groups.length > 0;\r\n\t\tif (!hasConditions && !hasGroups) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn validateConditions(group.conditions || []) && (group.groups || []).every((group) => validateGroup(group));\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nexport class WidgetManager {\r\n\tstatic $inject = [\r\n\t\t'$q',\r\n\t\t'mx.shell.UserProfileService',\r\n\t\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n\t\t'mx.shell.DetailsView',\r\n\t\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n\t\t'mx.shell.Config',\r\n\t\t'mx.sb.DialogView.DialogFactory',\r\n\t\t'mx.SolutionBuilderAgent.EntityService',\r\n\t];\r\n\r\n\tconstructor($q, userProfileService, contentWidgetService, DetailsView, personalizationService, mxConfig, dialogFactory, entityService) {\r\n\t\tObject.assign(this, {\r\n\t\t\t$q,\r\n\t\t\tuserProfileService,\r\n\t\t\tcontentWidgetService,\r\n\t\t\tDetailsView,\r\n\t\t\tpersonalizationService,\r\n\t\t\tmxConfig,\r\n\t\t\tdialogFactory,\r\n\t\t\tentityService,\r\n\t\t});\r\n\r\n\t\tthis.viewTypes = {};\r\n\t\tthis._openDialogIfNoPreview = mxConfig.get('openDialogIfNoPreview') || false;\r\n\t}\r\n\r\n\tfilterViews(views, dialogActionType) {\r\n\t\tconst defaultDialogFilter = function (view) {\r\n\t\t\treturn (\r\n\t\t\t\tview.WidgetType === mx.SolutionBuilderAgent.ContentWidgetType.Dialog &&\r\n\t\t\t\t((dialogActionType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.New && view.Purpose !== mx.SolutionBuilderAgent.ContentWidgetDialogPurpose.EditOnly) ||\r\n\t\t\t\t\t(dialogActionType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.Edit && view.Purpose !== mx.SolutionBuilderAgent.ContentWidgetDialogPurpose.CreateOnly))\r\n\t\t\t);\r\n\t\t};\r\n\r\n\t\treturn views.filter(dialogActionType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.Preview ? this.isPreview : defaultDialogFilter);\r\n\t}\r\n\r\n\tasync getPreviewView(objectDetails, widgetId, extraLocals = {}, presetFields = {}) {\r\n\t\tif (!objectDetails) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tobjectDetails = angular.copy(objectDetails);\r\n\t\tobjectDetails.EntityType =\r\n\t\t\tobjectDetails['Sys-EntityType'] || objectDetails.EntityType || objectDetails['Sys-Entity'] || objectDetails.ConfigurationItemTypeName || objectDetails._type;\r\n\t\tobjectDetails.Id =\r\n\t\t\tobjectDetails['Sys-ObjectId2'] ||\r\n\t\t\tobjectDetails._id ||\r\n\t\t\tobjectDetails['Sys-ObjectId'] ||\r\n\t\t\tobjectDetails.ObjectId ||\r\n\t\t\tobjectDetails.objectId ||\r\n\t\t\tobjectDetails.Id ||\r\n\t\t\tobjectDetails.ID;\r\n\t\tobjectDetails.IsArchived = objectDetails._archived || objectDetails.IsArchived;\r\n\r\n\t\tif (!objectDetails.EntityType) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst context = {\r\n\t\t\t_id: objectDetails.Id,\r\n\t\t\t_type: objectDetails.EntityType,\r\n\t\t\t_name: objectDetails._name || objectDetails.DisplayString,\r\n\t\t\t_state: objectDetails._state || objectDetails['Sys-EntityState'],\r\n\t\t\t_displayName: objectDetails._displayName || objectDetails.DisplayString,\r\n\t\t\t_archived: objectDetails.IsArchived,\r\n\t\t};\r\n\r\n\t\tawait this.entityService.processObjectContext(context);\r\n\r\n\t\tconst { dialogInsteadOfPreview, views } = await this.getViewsForPreview(context._type, Boolean(objectDetails.print));\r\n\r\n\t\tconst selectedWidget = widgetId && views.find((view) => view.Id === widgetId);\r\n\t\tlet personalizedWidget;\r\n\r\n\t\tif (!selectedWidget) {\r\n\t\t\tconst personalizedWidgetID = await this.personalizationService.getDefaultPreviewId(context._type);\r\n\t\t\tpersonalizedWidget = personalizedWidgetID && views.find((view) => view.Id === personalizedWidgetID);\r\n\t\t}\r\n\r\n\t\tlet view = selectedWidget || personalizedWidget || views[0];\r\n\r\n\t\tif (!view) {\r\n\t\t\tconst isAdmin = await this.userProfileService.isAdminMode();\r\n\t\t\tif (!isAdmin) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\tview = {};\r\n\t\t} else {\r\n\t\t\tview.EntityDisplayName = objectDetails._getTypeDisplayName ? await objectDetails._getTypeDisplayName : view.EntityDisplayName || ''; //TODO: check for DD and CI\r\n\t\t}\r\n\r\n\t\tconst detailsView = this.dialogFactory.createPreview(context, view, {\r\n\t\t\t//TODO: remove it from extraLocals\r\n\t\t\thideActions: Boolean(objectDetails.hideActions || extraLocals.hideActions),\r\n\t\t\tisSingleView: Boolean(objectDetails.isSingleView || extraLocals.isSingleView),\r\n\t\t\treadOnly: Boolean(objectDetails.readOnly || extraLocals.readOnly),\r\n\t\t\tdialogInsteadOfPreview: dialogInsteadOfPreview,\r\n\t\t\tpresetFields: presetFields,\r\n\t\t});\r\n\r\n\t\tObject.assign(detailsView.locals, extraLocals);\r\n\r\n\t\treturn detailsView;\r\n\t}\r\n\r\n\tgetViewsForPreview(type, forAllApps) {\r\n\t\tvar dialogInsteadOfPreview = false;\r\n\r\n\t\t// In case of isPrint === true we must ignore current application\r\n\r\n\t\treturn this.getPreviews(type, forAllApps)\r\n\t\t\t.then((views) => {\r\n\t\t\t\tif (!views.length && this._openDialogIfNoPreview) {\r\n\t\t\t\t\tdialogInsteadOfPreview = true;\r\n\t\t\t\t\treturn this.getEditDialogs(type, undefined, forAllApps);\r\n\t\t\t\t}\r\n\t\t\t\treturn views;\r\n\t\t\t})\r\n\t\t\t.then((views) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tviews: views,\r\n\t\t\t\t\tdialogInsteadOfPreview: dialogInsteadOfPreview,\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t}\r\n\r\n\tisPreview(view) {\r\n\t\treturn view.WidgetType === mx.SolutionBuilderAgent.ContentWidgetType.ObjectDetails;\r\n\t}\r\n\r\n\tisEditDialog(view) {\r\n\t\treturn (\r\n\t\t\tview.WidgetType === mx.SolutionBuilderAgent.ContentWidgetType.Dialog &&\r\n\t\t\t(typeof view.Purpose === 'undefined' ||\r\n\t\t\t\tview.Purpose === mx.SolutionBuilderAgent.ContentWidgetDialogPurpose.EditOnly ||\r\n\t\t\t\tview.Purpose === mx.SolutionBuilderAgent.ContentWidgetDialogPurpose.CreateAndEdit)\r\n\t\t);\r\n\t}\r\n\r\n\tisAdHocDialog(view) {\r\n\t\treturn view.WidgetType === mx.SolutionBuilderAgent.ContentWidgetType.Dialog && Boolean(view.NotUseInCreateEditPurposes);\r\n\t}\r\n\r\n\tgetSortedViews(objectTypeName, forAllApps) {\r\n\t\treturn this.contentWidgetService\r\n\t\t\t.getViews(objectTypeName, forAllApps)\r\n\t\t\t.then((views) => {\r\n\t\t\t\treturn views.sort((view1, view2) => {\r\n\t\t\t\t\treturn (view2.Priority || 0) - (view1.Priority || 0);\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.catch(() => {\r\n\t\t\t\treturn [];\r\n\t\t\t});\r\n\t}\r\n\r\n\tisNewDialog(view) {\r\n\t\treturn (\r\n\t\t\tview.WidgetType === mx.SolutionBuilderAgent.ContentWidgetType.Dialog &&\r\n\t\t\t(typeof view.Purpose === 'undefined' ||\r\n\t\t\t\tview.Purpose === mx.SolutionBuilderAgent.ContentWidgetDialogPurpose.CreateOnly ||\r\n\t\t\t\tview.Purpose === mx.SolutionBuilderAgent.ContentWidgetDialogPurpose.CreateAndEdit)\r\n\t\t);\r\n\t}\r\n\r\n\tgetPreviews(objectTypeName, forAllApps) {\r\n\t\treturn this.getSortedViews(objectTypeName, forAllApps).then((views) => views.filter((view) => this.isPreview(view)));\r\n\t}\r\n\r\n\tgetNewDialogs(objectTypeName, viewId) {\r\n\t\treturn this.getSortedViews(objectTypeName).then((views) => {\r\n\t\t\treturn views.filter((view) => this.isNewDialog(view) || (viewId && this.isAdHocDialog(view)));\r\n\t\t});\r\n\t}\r\n\r\n\tgetEditDialogs(objectTypeName, viewId, forAllApps) {\r\n\t\treturn this.getSortedViews(objectTypeName, forAllApps).then((views) => {\r\n\t\t\treturn views.filter((view) => this.isEditDialog(view) || (viewId && this.isAdHocDialog(view)));\r\n\t\t});\r\n\t}\r\n\r\n\tgetPreviewsOrDialogs(objectTypeName) {\r\n\t\treturn this.getSortedViews(objectTypeName).then((views) => {\r\n\t\t\tvar previews = views.filter((view) => this.isPreview(view));\r\n\t\t\tif (previews.length) {\r\n\t\t\t\treturn previews;\r\n\t\t\t}\r\n\t\t\treturn views.filter((view) => this.isNewDialog(view));\r\n\t\t});\r\n\t}\r\n\r\n\tasync hasNewDialogs(objectTypeName) {\r\n\t\treturn (await this.getNewDialogs(objectTypeName)).length > 0;\r\n\t}\r\n\r\n\tasync hasEditDialogs(objectTypeName) {\r\n\t\treturn (await this.getEditDialogs(objectTypeName)).length > 0;\r\n\t}\r\n\r\n\tasync hasPreviews(objectTypeName) {\r\n\t\treturn (await this.getPreviews(objectTypeName)).length > 0;\r\n\t}\r\n\r\n\tasync hasPreviewsOrDialogs(objectTypeName) {\r\n\t\treturn (await this.getPreviewsOrDialogs(objectTypeName)).length > 0;\r\n\t}\r\n\r\n\tasync getAlternativeViews(view = {}) {\r\n\t\tif (!view.context || !view.context._type) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\tswitch (view.dialogType) {\r\n\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetDialogAction.Preview:\r\n\t\t\t\treturn (await this.getViewsForPreview(view.context._type)).views;\r\n\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetDialogAction.Edit:\r\n\t\t\t\treturn this.getEditDialogs(view.context._type);\r\n\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetDialogAction.New:\r\n\t\t\t\treturn this.getNewDialogs(view.context._type);\r\n\t\t\tdefault:\r\n\t\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n}\r\n","/**\r\n * @ngdoc service\r\n * @name mx.SolutionBuilderAgent.WizardService\r\n * @module mx.SolutionBuilderAgent\r\n *\r\n * @requires {@ref mx.SolutionBuilderAgent.DataModelService mx.SolutionBuilderAgent.DataModelService}\r\n * @requires mx.shell.WizardView\r\n * @requires mx.shell.Wizard\r\n * @requires mx.shell.WizardPage\r\n * @requires mx.shell.WizardButton\r\n * @requires mx.shell.WizardRoadmap\r\n * @requires mx.shell.WizardRoadmapStep\r\n * @requires mx.shell.EventService\r\n * @requires {@ref mx.SolutionBuilderAgent.ContentWidgetService mx.SolutionBuilderAgent.ContentWidgetService}\r\n * @requires $q\r\n * @requires mx.shell.NotificationService\r\n * @requires mx.internationalization\r\n * @requires {@ref mx.SolutionBuilderAgent.SchemaService mx.SolutionBuilderAgent.SchemaService}\r\n * @requires mx.shell.SidePanelService\r\n * @requires {@ref mx.SolutionBuilderAgent.ExternalServiceManager mx.SolutionBuilderAgent.ExternalServiceManager}\r\n * @requires mx.shell.SideLayout\r\n * @requires {@ref mx.SolutionBuilderAgent.CacheService mx.SolutionBuilderAgent.CacheService}\r\n * @requires $injector\r\n *\r\n * @description\r\n * A service provides methods for wizard view creation.\r\n */\r\nWizardService.$inject = [\r\n\t'mx.SolutionBuilderAgent.DataModelService',\r\n\t'mx.shell.WizardView',\r\n\t'mx.shell.Wizard',\r\n\t'mx.shell.WizardPage',\r\n\t'mx.shell.WizardButton',\r\n\t'mx.shell.WizardRoadmap',\r\n\t'mx.shell.WizardRoadmapStep',\r\n\t'mx.shell.EventService',\r\n\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n\t'mx.SolutionBuilderAgent.ConcurrencyTrackingService',\r\n\t'$q',\r\n\t'mx.shell.NotificationService',\r\n\t'mx.internationalization',\r\n\t'mx.SolutionBuilderAgent.SchemaService',\r\n\t'mx.shell.SidePanelService',\r\n\t'mx.SolutionBuilderAgent.ExternalServiceManager',\r\n\t'mx.shell.SideLayout',\r\n\t'mx.SolutionBuilderAgent.CacheService',\r\n\t'mx.SolutionBuilderAgent.ActionCoRuService',\r\n\t'mx.shell.ObjectMapper',\r\n];\r\nexport default function WizardService(\r\n\tdataModelService,\r\n\tWizardView,\r\n\tWizard,\r\n\tWizardPage,\r\n\tWizardButton,\r\n\tWizardRoadmap,\r\n\tWizardRoadmapStep,\r\n\teventService,\r\n\tcontentWidgetService,\r\n\tconcurrencyTrackingService,\r\n\t$q,\r\n\tnotificationService,\r\n\ti18n,\r\n\tschemaService,\r\n\tsidePanelService,\r\n\texternalServiceManager,\r\n\tsideLayoutService,\r\n\tcacheService,\r\n\tactionCoRuService,\r\n\tobjectMapper\r\n) {\r\n\tconst pagesCommonController = 'mx.SolutionBuilderAgent.WizardPageController';\r\n\r\n\tlet _gettingWizardAndDataModelPendingPromises = [];\r\n\tconst wizardUiActionGroup = [];\r\n\r\n\teventService.subscribeGlobal(mx.shell.EventCodes.WizardClose, function (e, data) {\r\n\t\t_freeWizardDataSources(data.wizard);\r\n\t});\r\n\teventService.subscribeGlobal(mx.shell.EventCodes.SidePanelViewClosed, function (e, view) {\r\n\t\t_freeWizardDataSources(view && view.locals && view.locals.wizard);\r\n\t});\r\n\r\n\treturn {\r\n\t\tgetWizardView: getWizardView,\r\n\t\tgetWizardAndDataModel: getWizardAndDataModel,\r\n\t\tprocessFinishEvents: processFinishEvents,\r\n\t\tshowObjectChangedNotification: showObjectChangedNotification,\r\n\t\tshowObjectDeletedNotification: showObjectDeletedNotification,\r\n\t\twizardUiActionGroup: wizardUiActionGroup,\r\n\t};\r\n\r\n\tfunction _freeWizardDataSources(wizard) {\r\n\t\twizard?.__freeDataSourceDefer?.resolve(true);\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.WizardService#getWizardView\r\n\t *\r\n\t * @description\r\n\t * Creates and returns WizardView\r\n\t *\r\n\t * @param {object} options - Wizard view options that may contain\r\n\t * {string} typeName - Type of object wizard view to be created for.\r\n\t * {string} widgetId - Related Content Widget Wizard identifier.\r\n\t * {string} actionId - An id of an action that triggered the wizard.\r\n\t * {string} actionName - A name of an action that triggered the wizard.\r\n\t * {number} wizardMode - Shows if wizard view is created for create or edit dialog.\r\n\t * {string} name - A title for view tab.\r\n\t * {string} displayName - A display name for view.\r\n\t * {string} finishTitle - A title for wizard's finish button.\r\n\t * {string} customHeader - A custom header text to view instead of default wizard's header.\r\n\t * {object[]} selectedObjects - An array of objects that describes current context.\r\n\t * {object} presetFields - An object with a Data Model preset values.\r\n\t * {object} outerContext - Context of entity that calls current wizard\r\n\t *\r\n\t * @returns {object} An object with initialized wizard in `wizard` field and initialized DataModel in `dataModel` field.\r\n\t */\r\n\tfunction getWizardView(options) {\r\n\t\tconst initViewWrapper = function (selectedObjectsFromView) {\r\n\t\t\tconst freeDataSourceDefer = $q.defer();\r\n\t\t\tselectedObjectsFromView = selectedObjectsFromView || options.selectedObjects || [];\r\n\t\t\t//originalOptions is used in the merge process\r\n\t\t\twizardView.locals.originalOptions = options;\r\n\t\t\twizardView.locals.originalOptions.selectedObjects = selectedObjectsFromView;\r\n\r\n\t\t\treturn getWizardAndDataModel(\r\n\t\t\t\toptions.typeName,\r\n\t\t\t\toptions.wizardMode,\r\n\t\t\t\toptions.widgetId,\r\n\t\t\t\twizardView,\r\n\t\t\t\toptions.actionId,\r\n\t\t\t\toptions.actionName,\r\n\t\t\t\toptions.finishTitle,\r\n\t\t\t\toptions.customHeader,\r\n\t\t\t\tselectedObjectsFromView,\r\n\t\t\t\toptions.outerContext,\r\n\t\t\t\tundefined,\r\n\t\t\t\tfreeDataSourceDefer.promise\r\n\t\t\t)\r\n\t\t\t\t.then(function (data) {\r\n\t\t\t\t\tif (data?.dataModel && options.presetFields) {\r\n\t\t\t\t\t\t$.extend(true, data.dataModel, options.presetFields);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (data?.wizard) {\r\n\t\t\t\t\t\tdata.wizard.__freeDataSourceDefer = freeDataSourceDefer;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (options.wizardMode === mx.SolutionBuilderAgent.WizardMode.New || options.wizardMode === mx.SolutionBuilderAgent.WizardMode.Edit) {\r\n\t\t\t\t\t\tconst entity = data.dataModel[data.dataModel.Context.__typeName];\r\n\t\t\t\t\t\tdata.wizard.context = data.wizard.context || {};\r\n\t\t\t\t\t\tdata.wizard.context.objectId = (entity && entity._id) || 'new';\r\n\t\t\t\t\t\t// originalOptions is used in the merge process\r\n\t\t\t\t\t\tif (options.wizardMode === mx.SolutionBuilderAgent.WizardMode.Edit) {\r\n\t\t\t\t\t\t\tdata.wizard.context.originalOptions = wizardView.locals.originalOptions;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn data;\r\n\t\t\t\t})\r\n\t\t\t\t.catch(function (e) {\r\n\t\t\t\t\tmx.console.error(e);\r\n\t\t\t\t\treturn $q.reject(e);\r\n\t\t\t\t});\r\n\t\t};\r\n\r\n\t\tconst wizardView = new WizardView({\r\n\t\t\tid: undefined,\r\n\t\t\tname: options.name,\r\n\t\t\tinitView: initViewWrapper,\r\n\t\t\tdisplayName: options.displayName,\r\n\t\t\tcontroller: 'mx.SolutionBuilderAgent.WizardController',\r\n\t\t\ttemplate:\r\n\t\t\t\t'',\r\n\t\t\tmergeDisabled: options.mergeDisabled,\r\n\t\t\tlocals: {\r\n\t\t\t\twidgetId: options.widgetId,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\twizardView.uiActionGroup.push(...wizardUiActionGroup);\r\n\t\twizardView.locals.view = wizardView;\r\n\t\twizardView.headerTitle = i18n.get('solutionBuilderAgent.wizards.headerTitle');\r\n\t\twizardView.actionId = options.actionId;\r\n\r\n\t\treturn wizardView;\r\n\t}\r\n\r\n\tfunction prepareNonVisualControls(template) {\r\n\t\tlet i = 0;\r\n\t\tlet result = template.replace(new RegExp(' 0 ? selectedObjects[0] : {};\r\n\t\tconst requests = [getWizard(widgetId, wizardView, finishTitle, wizardMode, mainWizardRef)];\r\n\t\tlet isService = false;\r\n\r\n\t\tif (wizardMode !== mx.SolutionBuilderAgent.WizardMode.Default) {\r\n\t\t\tisService = externalServiceManager.isService(typeName);\r\n\r\n\t\t\tif (isService) {\r\n\t\t\t\trequests.push(externalServiceManager.getEntity(typeName, 'new'));\r\n\t\t\t} else if (wizardMode === mx.SolutionBuilderAgent.WizardMode.New) {\r\n\t\t\t\trequests.push(contentWidgetService.getNewDialogData(widgetId, '', null));\r\n\t\t\t} else {\r\n\t\t\t\trequests.push(contentWidgetService.getDialogData(widgetId, firstObject._id));\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\trequests.push(schemaService.getType(firstObject['Sys-EntityType'] || firstObject._type));\r\n\t\t}\r\n\r\n\t\tconst getWizardAndDataModelPromise = $q.all(requests.concat(_gettingWizardAndDataModelPendingPromises)).then(function (result) {\r\n\t\t\tlet defaultData = null;\r\n\t\t\tlet wizard = result[0];\r\n\t\t\tconst dataModelExtensions = JSON.parse(wizard.__widgetHtmlData.Template.DataModelExtensions || '{}');\r\n\r\n\t\t\tlet typeDisplayName = wizard.__widgetHtmlData.EntityDisplayName || wizard.__widgetHtmlData.Name;\r\n\r\n\t\t\tif (wizardMode === mx.SolutionBuilderAgent.WizardMode.Edit && firstObject && result[1].entity) {\r\n\t\t\t\tfirstObject._displayName = firstObject._displayName || result[1].entity._displayName;\r\n\t\t\t\tfirstObject._name = firstObject._name || result[1].entity._name;\r\n\t\t\t\tfirstObject._state = firstObject._state || result[1].entity._state;\r\n\t\t\t}\r\n\r\n\t\t\tif (wizardMode === mx.SolutionBuilderAgent.WizardMode.Default && selectedObjects.length > 0) {\r\n\t\t\t\tlet mainClassName = '';\r\n\r\n\t\t\t\tif (result[1]) {\r\n\t\t\t\t\ttypeDisplayName = result[1].DisplayName;\r\n\t\t\t\t\tmainClassName = result[1].MainClassName;\r\n\t\t\t\t}\r\n\t\t\t\tinitWizardContextDescriptionHandlers(wizard, selectedObjects, firstObject, typeDisplayName, mainClassName);\r\n\t\t\t}\r\n\r\n\t\t\tinitWizardContextDescription(wizard, selectedObjects, firstObject, typeDisplayName);\r\n\r\n\t\t\tlet staticData = {};\r\n\r\n\t\t\tinitStaticData(staticData, selectedObjects, widgetId, actionId, actionName, wizardMode);\r\n\t\t\tlet entityName = '';\r\n\r\n\t\t\t_.set(staticData, 'Context.OuterContext', outerContext || {});\r\n\r\n\t\t\tif (wizard.__widgetHtmlData.DataDefinition && selectedObjects[0]) {\r\n\t\t\t\tdefaultData = {};\r\n\t\t\t\t_.set(defaultData, 'DataDefinition.' + wizard.__widgetHtmlData.DataDefinition, selectedObjects[0]);\r\n\t\t\t}\r\n\t\t\tlet promise;\r\n\t\t\tif (wizardMode !== mx.SolutionBuilderAgent.WizardMode.Default) {\r\n\t\t\t\tconst entity = isService ? result[1].object : result[1].entity;\r\n\t\t\t\tentity.IsNew = entity['Sys-IsNew'];\r\n\t\t\t\tentityName = isService ? result[1].entityName : wizard.__widgetHtmlData.Entity;\r\n\t\t\t\tpromise = dataModelService.loadDialogDataModel(entityName, entity, undefined, dataModelExtensions, freeDataSourcePromise, isService, staticData, defaultData);\r\n\t\t\t} else {\r\n\t\t\t\tpromise = dataModelService.loadDataModel(dataModelExtensions, staticData, defaultData, freeDataSourcePromise);\r\n\t\t\t}\r\n\r\n\t\t\treturn promise\r\n\t\t\t\t.then(function (dataModel) {\r\n\t\t\t\t\tdataModel.Context.__wizard = mainWizardRef || wizard;\r\n\t\t\t\t\tdataModel.Context.__selectedObjects = selectedObjects;\r\n\t\t\t\t\tdataModel.Context.__typeName = typeName;\r\n\t\t\t\t\tif (wizardView) {\r\n\t\t\t\t\t\twizardView.context = wizardView.context || {};\r\n\t\t\t\t\t\twizardView.context._archived = !!dataModel['Sys-Archived'];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn dataModel;\r\n\t\t\t\t})\r\n\t\t\t\t.then(updateWizardAfterDataModelLoad(wizardMode, isService, wizard.__widgetHtmlData, entityName, typeName, wizard, widgetId, wizardView, customHeader))\r\n\t\t\t\t.finally(function () {\r\n\t\t\t\t\t// Filter not just pending promises, which we should wait before starting processing new one\r\n\t\t\t\t\t_gettingWizardAndDataModelPendingPromises = _gettingWizardAndDataModelPendingPromises.filter(function (p) {\r\n\t\t\t\t\t\treturn p.$$state.status === 0;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t});\r\n\r\n\t\t_gettingWizardAndDataModelPendingPromises.push(getWizardAndDataModelPromise);\r\n\r\n\t\treturn getWizardAndDataModelPromise;\r\n\t}\r\n\r\n\tfunction initStaticData(staticData, selectedObjects, widgetId, actionId, actionName, wizardMode) {\r\n\t\tstaticData.Context = getDefaultContext(widgetId, actionId, actionName);\r\n\r\n\t\tif (wizardMode === mx.SolutionBuilderAgent.WizardMode.Default) {\r\n\t\t\tselectedObjects.forEach(function (item) {\r\n\t\t\t\tstaticData.Context.ObjectIds.push(item._id);\r\n\t\t\t\tstaticData.Context.ObjectReferences.push(item);\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (selectedObjects.length > 0) {\r\n\t\t\tconst item = selectedObjects[0];\r\n\r\n\t\t\tstaticData.Context.Object = {};\r\n\t\t\tangular.extend(staticData.Context.Object, item);\r\n\t\t\tstaticData.Context.Object.Id = item._id;\r\n\t\t\tstaticData.Context.Object.Type = item._type;\r\n\t\t\tstaticData.Context.Object.DisplayName = item._displayName;\r\n\r\n\t\t\tstaticData.Context.ObjectReference = staticData.Context.ObjectReferences[0];\r\n\t\t} else {\r\n\t\t\tstaticData.Context.Object = {\r\n\t\t\t\tId: '',\r\n\t\t\t\tType: '',\r\n\t\t\t\tDisplayName: '',\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tfunction initWizardContextDescriptionHandlers(wizard, selectedObjects, firstObject, typeDisplayName, mainClassName) {\r\n\t\tconst singleObject = selectedObjects.length === 1;\r\n\r\n\t\tif (singleObject) {\r\n\t\t\twizard.displayContextFn = function () {\r\n\t\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.ForceOpenObjectDetails, firstObject);\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tif (selectedObjects.length > 0) {\r\n\t\t\t\tconst ids = selectedObjects.map(function (item) {\r\n\t\t\t\t\treturn item['Sys-ObjectId2'] || item._id;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst details = {\r\n\t\t\t\t\tentityClassName: mainClassName,\r\n\t\t\t\t\tids: ids,\r\n\t\t\t\t\tdisplayName: typeDisplayName,\r\n\t\t\t\t};\r\n\r\n\t\t\t\twizard.displayContextFn = function () {\r\n\t\t\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.ForceOpenObjectsGrid, details);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction initWizardContextDescription(wizard, selectedObjects, firstObject, typeDisplayName) {\r\n\t\tconst single = selectedObjects.length === 1;\r\n\t\tconst multi = selectedObjects.length > 1;\r\n\r\n\t\tif (single) {\r\n\t\t\twizard.contextDescription = i18n.getFirstNotEmpty([firstObject._displayName, firstObject._name, firstObject.Title, firstObject.title], '_');\r\n\t\t\twizard.contextDescription = wizard.contextDescription === '_' ? '' : wizard.contextDescription;\r\n\t\t} else if (multi) {\r\n\t\t\twizard.contextDescription = typeDisplayName + ' [' + selectedObjects.length + ']';\r\n\t\t}\r\n\t}\r\n\r\n\tfunction updateWizardAfterDataModelLoad(wizardMode, isService, data, entityName, typeName, wizard, widgetId, wizardView, customHeader) {\r\n\t\treturn function (dataModel) {\r\n\t\t\tif (wizard.resultPage) {\r\n\t\t\t\twizard.resultPage.dataModel = dataModel;\r\n\t\t\t}\r\n\t\t\twizard.pages.forEach(function (page) {\r\n\t\t\t\tpage.loadSource = function (sourceName) {\r\n\t\t\t\t\tdataModelService.reloadSourceByPath(sourceName, dataModel, widgetId);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tpage.dataModel = dataModel;\r\n\t\t\t});\r\n\r\n\t\t\tif (!data.ServiceOperation && !data.DataDefinition) {\r\n\t\t\t\tconst finishButton = wizard.pages[wizard.pages.length - 1].buttons.finish;\r\n\t\t\t\tconst lastFinishCallback = finishButton.callback;\r\n\t\t\t\tlet afterLastFinishCallback = function () {\r\n\t\t\t\t\tif (wizardMode !== mx.SolutionBuilderAgent.WizardMode.Default) {\r\n\t\t\t\t\t\tcloseWizard(customHeader || data.Name, dataModel, wizardView);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\twizard.finishDefer.resolve();\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (wizardMode !== mx.SolutionBuilderAgent.WizardMode.Default) {\r\n\t\t\t\t\tafterLastFinishCallback = createSaveCallbackForCreateEditWizard(\r\n\t\t\t\t\t\tdata,\r\n\t\t\t\t\t\tentityName,\r\n\t\t\t\t\t\tdataModel,\r\n\t\t\t\t\t\twidgetId,\r\n\t\t\t\t\t\twizardView,\r\n\t\t\t\t\t\tisService,\r\n\t\t\t\t\t\ttypeName,\r\n\t\t\t\t\t\tcustomHeader,\r\n\t\t\t\t\t\tfinishButton,\r\n\t\t\t\t\t\twizard\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tfinishButton.callback = function () {\r\n\t\t\t\t\treturn lastFinishCallback().then(afterLastFinishCallback);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tlet wizardHeaderText;\r\n\t\t\tif (customHeader) {\r\n\t\t\t\twizardHeaderText = customHeader;\r\n\t\t\t} else {\r\n\t\t\t\tlet contextDescription, wizardName;\r\n\r\n\t\t\t\tif (data.DataDefinition) {\r\n\t\t\t\t\tcontextDescription = data.ClassDisplayName;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontextDescription = wizard.contextDescription;\r\n\t\t\t\t}\r\n\r\n\t\t\t\twizardName = i18n.getFirstNotEmpty([wizardView && wizardView.displayName, wizardView && wizardView.name], contextDescription);\r\n\r\n\t\t\t\tif (data.DataDefinition && !wizardView.displayName) {\r\n\t\t\t\t\twizardView.displayName = data.Title || data.Name;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (contextDescription) {\r\n\t\t\t\t\tconst contextDescriptionTemplate =\r\n\t\t\t\t\t\twizardMode === mx.SolutionBuilderAgent.WizardMode.Default && !data.DataDefinition\r\n\t\t\t\t\t\t\t? '' + contextDescription + ''\r\n\t\t\t\t\t\t\t: contextDescription;\r\n\t\t\t\t\tif (wizardName && contextDescription !== wizardName) {\r\n\t\t\t\t\t\twizardHeaderText = i18n.getFormatted('shell.wizard.headerTemplate', wizardName, contextDescriptionTemplate);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\twizardHeaderText = i18n.getFormatted('shell.wizard.emptyHeaderTemplate', contextDescription);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\twizardHeaderText = i18n.getFormatted('shell.wizard.emptyHeaderTemplate', wizardName);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\twizard: wizard,\r\n\t\t\t\tdataModel: dataModel,\r\n\t\t\t\tnonVisualTemplate: data.Template.NonVisualTemplate,\r\n\t\t\t\twizardHeaderText: wizardHeaderText,\r\n\t\t\t};\r\n\t\t};\r\n\t}\r\n\r\n\tfunction createSaveCallbackForCreateEditWizard(data, entityName, dataModel, widgetId, wizardView, isService, typeName, customHeader, finishButton, wizard) {\r\n\t\tconst entity = dataModel[entityName];\r\n\r\n\t\tif (isService) {\r\n\t\t\treturn function () {\r\n\t\t\t\treturn externalServiceManager.updateEntity(typeName, 'new', entity).then(function () {\r\n\t\t\t\t\tcloseWizard(customHeader || data.Name, dataModel, wizardView, false, finishButton.successSubmitMessage);\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t}\r\n\t\treturn function () {\r\n\t\t\twizard.confirm = false;\r\n\t\t\treturn contentWidgetService.updateDialogData(widgetId, entity).then(\r\n\t\t\t\tfunction (data) {\r\n\t\t\t\t\tcloseWizard(customHeader || data.Name, dataModel, wizardView, false, finishButton.successSubmitMessage);\r\n\t\t\t\t\treturn objectMapper.mapItem(data && data.Entity);\r\n\t\t\t\t},\r\n\t\t\t\tfunction (error) {\r\n\t\t\t\t\tif (concurrencyTrackingService.isUpdateConflict(error)) {\r\n\t\t\t\t\t\twizard.confirm = true;\r\n\t\t\t\t\t\tshowObjectChangedNotification('', entity, entityName, widgetId, entity.$$initialEntity, wizard);\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t} else if (concurrencyTrackingService.isDeleted(error)) {\r\n\t\t\t\t\t\tshowObjectDeletedNotification('', wizard);\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn $q.reject(error);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t};\r\n\t}\r\n\r\n\tfunction showObjectDeletedNotification(userName, wizard) {\r\n\t\tuserName = userName || '';\r\n\r\n\t\tconcurrencyTrackingService.showObjectDeletedNotification(userName, wizard.wrapView.name, wizard.wrapView).then(function (answer) {\r\n\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.SearchPageDataChanged);\r\n\r\n\t\t\tif (answer === 'close') {\r\n\t\t\t\tforceCloseWizard(wizard.wrapView.id);\r\n\t\t\t} else {\r\n\t\t\t\tsetObjectDeleted(wizard);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction showObjectChangedNotification(userName, entity, entityName, widgetId, initialEntity, wizard) {\r\n\t\tif (!wizard.confirm) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\twizard.confirm = false;\r\n\r\n\t\tconcurrencyTrackingService\r\n\t\t\t.showObjectChangedNotification(userName || '', wizard.wrapView.name, {\r\n\t\t\t\tview: wizard.wrapView,\r\n\t\t\t\tentityName: entityName,\r\n\t\t\t\tstartEntityValue: initialEntity,\r\n\t\t\t\tfinishEntityValue: dataModelService.serializeObject(entity),\r\n\t\t\t\twidgetId: widgetId,\r\n\t\t\t\tobjectId: entity.ID,\r\n\t\t\t\tmergeDisabled: wizard.mergeDisabled,\r\n\t\t\t})\r\n\t\t\t.then(function (data) {\r\n\t\t\t\tswitch (data.answer) {\r\n\t\t\t\t\tcase 'merge':\r\n\t\t\t\t\t\t_.merge(entity, data.entity);\r\n\t\t\t\t\t\tif (data.save) {\r\n\t\t\t\t\t\t\twizard.finishWizard();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\twizard.confirm = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'reload':\r\n\t\t\t\t\t\treloadWizard(wizard.wrapView.id, wizard);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'cancel':\r\n\t\t\t\t\t\tif (wizard.mergeDisabled) {\r\n\t\t\t\t\t\t\tsetWizardOutdated(wizard);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\twizard.confirm = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'no-changes':\r\n\t\t\t\t\t\twizard.confirm = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/* for dialogs as wizard */\r\n\tfunction setWizardOutdated(wizard) {\r\n\t\twizard.allWizardPages[wizard.allWizardPages.length - 1].buttons.finish.isDisabled = true;\r\n\t\twizard.showWarning = true;\r\n\t\twizard.warningMessage = i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyObjectOutdated');\r\n\t\twizard.warningMessageButtonLabel = i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyConfirmYes');\r\n\t\twizard.warningMessageButtonHandler = function () {\r\n\t\t\treloadWizard(wizard.wrapView.id, wizard);\r\n\t\t};\r\n\t}\r\n\r\n\tfunction setObjectDeleted(wizard) {\r\n\t\twizard.allWizardPages[wizard.allWizardPages.length - 1].buttons.finish.isDisabled = true;\r\n\t\twizard.errors = [\r\n\t\t\t{\r\n\t\t\t\tmessage: i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyObjectDeleted'),\r\n\t\t\t\ttype: 'warning',\r\n\t\t\t\tactive: true,\r\n\t\t\t},\r\n\t\t];\r\n\t}\r\n\r\n\tfunction reloadWizard(viewId, wizard) {\r\n\t\tconst originalOptions = wizard.context.originalOptions;\r\n\t\tsidePanelService.closeView(viewId);\r\n\r\n\t\tconst newView = getWizardView(originalOptions);\r\n\t\tsidePanelService.addView(newView).catch(mx.logCatch);\r\n\t}\r\n\r\n\tfunction forceCloseWizard(viewId) {\r\n\t\tsidePanelService.closeView(viewId);\r\n\t}\r\n\r\n\tfunction closeWizard(name, dataModel, wizardView, fullScreenMode, successSubmitMessage) {\r\n\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.SearchPageDataChanged);\r\n\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.ObjectDataChanged, {\r\n\t\t\taffectedObjectIds: dataModel.Context && dataModel.Context.ObjectIds,\r\n\t\t\thideDetails: dataModel.Context && dataModel.Context.__hideDetails,\r\n\t\t});\r\n\r\n\t\tif (wizardView?.startedFromAction?.purpose === mx.shell.ActionPurpose.Delete) {\r\n\t\t\twizardView.locals.selectedObjects.forEach(function (object) {\r\n\t\t\t\teventService.dispatchEvent(mx.shell.EventCodes.ObjectRemovedByWizard, {\r\n\t\t\t\t\tEntityType: object['Sys-Entity'] || object._type || object.type,\r\n\t\t\t\t\tId: object.ID || object._id || object.id,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (typeof successSubmitMessage !== 'boolean' || successSubmitMessage !== false) {\r\n\t\t\tconst actionTitle = (wizardView && (wizardView.displayName || wizardView.name)) || name;\r\n\t\t\tconst message = successSubmitMessage || i18n.getFormatted('solutionBuilderAgent.actions.wizard.success', actionTitle);\r\n\r\n\t\t\t// if it's main wizard (not extra-wizard)\r\n\t\t\tif (wizardView?.locals?.wizard?.name === name) {\r\n\t\t\t\tnotificationService.success(message);\r\n\t\t\t}\r\n\t\t}\r\n\t\teventService.dispatchEvent(mx.shell.EventCodes.WizardPostAction, dataModel.Context);\r\n\t\t// TODO: NGR: this function was called twice. to be investigated\r\n\t\t//sidePanelService.closeView(wizardView && wizardView.locals && wizardView.locals.view);\r\n\t\tif (fullScreenMode !== undefined) {\r\n\t\t\tsideLayoutService.switchFullScreenMode(fullScreenMode);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getDefaultContext(widgetId, actionId, actionName) {\r\n\t\treturn {\r\n\t\t\tWidgetId: widgetId,\r\n\t\t\tObject: {\r\n\t\t\t\tId: '',\r\n\t\t\t\tType: '',\r\n\t\t\t\tDisplayName: '',\r\n\t\t\t},\r\n\t\t\tObjectIds: [],\r\n\t\t\tObjectReference: [],\r\n\t\t\tObjectReferences: [],\r\n\t\t\tActionId: actionId,\r\n\t\t\tActionName: actionName,\r\n\t\t};\r\n\t}\r\n\r\n\tfunction createWizardPage(widgetId, index, view, buttons, sharedWizardData) {\r\n\t\treturn new WizardPage({\r\n\t\t\tid: widgetId + '_page_' + index,\r\n\t\t\twidgetId,\r\n\t\t\torderNum: index + 1,\r\n\t\t\ttitle: view.Title,\r\n\t\t\tkey: view.Key,\r\n\t\t\twizardStepId: view.Id,\r\n\t\t\ttemplate: view.Template,\r\n\t\t\theader: view.Header,\r\n\t\t\tcontroller: pagesCommonController,\r\n\t\t\tbuttons: buttons,\r\n\t\t\tsharedWizardData: sharedWizardData,\r\n\t\t});\r\n\t}\r\n\r\n\tfunction createFinishButton(wizardData, wizardView, widgetId, finishTitle, wizardMode, page, isVisible, callback) {\r\n\t\tconst serviceOperation = wizardData.ServiceOperation;\r\n\t\tconst dataDefinition = wizardData.DataDefinition;\r\n\r\n\t\tconst finishButtonTitle =\r\n\t\t\tserviceOperation || dataDefinition\r\n\t\t\t\t? finishTitle || i18n.get('solutionBuilderAgent.wizards.finish')\r\n\t\t\t\t: wizardMode !== mx.SolutionBuilderAgent.WizardMode.Default\r\n\t\t\t\t? i18n.get('solutionBuilderAgent.common.save_btn')\r\n\t\t\t\t: i18n.get('solutionBuilderAgent.common.close_btn');\r\n\r\n\t\tconst finishButton = new WizardButton(finishButtonTitle, isVisible);\r\n\t\tlet mainCallback;\r\n\t\tconst submitCallback = function () {\r\n\t\t\tcallback(finishButton.successSubmitMessage);\r\n\t\t};\r\n\r\n\t\tif (serviceOperation) {\r\n\t\t\tmainCallback = function () {\r\n\t\t\t\treturn dataModelService\r\n\t\t\t\t\t.reloadSourceByPath('SubmitData', page.dataModel, widgetId, getActionContextHeader(page.dataModel.Context))\r\n\t\t\t\t\t.then(submitCallback)\r\n\t\t\t\t\t.catch((customError) => {\r\n\t\t\t\t\t\tif (typeof customError === 'string') {\r\n\t\t\t\t\t\t\treturn $q.reject(false);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst msg = i18n.get('shell.mx-shell-error-message.default-description');\r\n\t\t\t\t\t\tnotificationService.error(msg);\r\n\t\t\t\t\t\treturn $q.reject({ data: msg });\r\n\t\t\t\t\t});\r\n\t\t\t};\r\n\t\t} else if (dataDefinition) {\r\n\t\t\tmainCallback = function () {\r\n\t\t\t\tsubmitCallback();\r\n\t\t\t\treturn page.dataModel.DataDefinition[dataDefinition];\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tmainCallback = function () {};\r\n\t\t}\r\n\t\tfinishButton.callback = function () {\r\n\t\t\treturn !!wizardView && wizardView.locals && wizardView.locals.originalOptions && wizardView.locals.originalOptions.checkActionAvailability\r\n\t\t\t\t? wizardView.locals.originalOptions.checkActionAvailability(wizardView.locals.selectedObjects).then(function (available) {\r\n\t\t\t\t\t\tif (available) {\r\n\t\t\t\t\t\t\treturn mainCallback();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tnotificationService.error(i18n.get('solutionBuilderAgent.actions.actionUnavailable'));\r\n\t\t\t\t\t\treturn $q.reject(true);\r\n\t\t\t\t })\r\n\t\t\t\t: $q.when(mainCallback());\r\n\t\t};\r\n\t\treturn finishButton;\r\n\t}\r\n\r\n\tfunction getActionContextHeader(context) {\r\n\t\treturn context && actionCoRuService.getActionContextHeader(context.ActionId, context.ObjectIds);\r\n\t}\r\n\r\n\tfunction createCancelButton(wizardData, wizardView, wizardMode) {\r\n\t\tconst isVisible = wizardData.ServiceOperation || wizardData.DataDefinition || wizardMode !== mx.SolutionBuilderAgent.WizardMode.Default;\r\n\r\n\t\tconst cancelButton = new WizardButton(i18n.get('solutionBuilderAgent.wizards.cancel'), isVisible);\r\n\r\n\t\tcancelButton.callback = function () {\r\n\t\t\treturn $q.when();\r\n\t\t};\r\n\t\treturn cancelButton;\r\n\t}\r\n\r\n\tfunction initWizard(wizardData, wizardView, widgetId, finishTitle, wizardMode) {\r\n\t\tconst sharedWizardData = {};\r\n\t\tconst pages = [];\r\n\t\tconst steps = [];\r\n\t\tlet resultPage, currentPage;\r\n\r\n\t\tif (Array.isArray(wizardData.Template.Views)) {\r\n\t\t\tconst views = wizardData.Template.Views.sort(function (a, b) {\r\n\t\t\t\treturn (a.Position || 0) - (b.Position || 0);\r\n\t\t\t});\r\n\r\n\t\t\tconst resultView = _.find(views, { Type: mx.SolutionBuilderAgent.ContentWidgetViewType.ResultWizardPage });\r\n\r\n\t\t\tif (resultView) {\r\n\t\t\t\tconst wizardButtons = {\r\n\t\t\t\t\tfinish: new WizardButton(i18n.get('solutionBuilderAgent.common.close_btn')),\r\n\t\t\t\t\tcancel: {},\r\n\t\t\t\t};\r\n\r\n\t\t\t\tresultPage = createWizardPage(widgetId, views.length, resultView, wizardButtons, sharedWizardData);\r\n\t\t\t}\r\n\r\n\t\t\tviews\r\n\t\t\t\t.filter((view) => view.Type !== mx.SolutionBuilderAgent.ContentWidgetViewType.ResultWizardPage)\r\n\t\t\t\t.forEach(function (view, index, views) {\r\n\t\t\t\t\tconst previousView = views[index - 1];\r\n\t\t\t\t\tconst nextView = views[index + 1];\r\n\t\t\t\t\tconst position = index + 1;\r\n\r\n\t\t\t\t\tconst wizardButtons = {};\r\n\r\n\t\t\t\t\tconst page = createWizardPage(widgetId, index, view, wizardButtons, sharedWizardData);\r\n\t\t\t\t\tconst finishResult = function (successSubmitMessage) {\r\n\t\t\t\t\t\tcloseWizard(wizardData.Name, page.dataModel, wizardView, undefined, successSubmitMessage);\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\twizardButtons.finish = createFinishButton(wizardData, wizardView, widgetId, finishTitle, wizardMode, page, position === views.length, finishResult);\r\n\t\t\t\t\twizardButtons.back = new WizardButton('<< ' + (previousView ? previousView.Title : i18n.get('solutionBuilderAgent.wizards.back')), position > 1);\r\n\t\t\t\t\twizardButtons.next = new WizardButton((nextView ? nextView.Title : i18n.get('solutionBuilderAgent.wizards.next')) + ' >>', position < views.length);\r\n\t\t\t\t\twizardButtons.cancel = createCancelButton(wizardData, wizardView, wizardMode);\r\n\r\n\t\t\t\t\tpages.push(page);\r\n\r\n\t\t\t\t\tsteps.push(\r\n\t\t\t\t\t\tnew WizardRoadmapStep({\r\n\t\t\t\t\t\t\tid: view.Id,\r\n\t\t\t\t\t\t\torderNum: position,\r\n\t\t\t\t\t\t\ttitle: view.Title,\r\n\t\t\t\t\t\t\tkey: view.Key,\r\n\t\t\t\t\t\t\tdescription: view.Description,\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tif (index === 0) {\r\n\t\t\t\t\t\tcurrentPage = page;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn new Wizard({\r\n\t\t\tid: wizardData.Id,\r\n\t\t\tname: wizardData.Name,\r\n\t\t\tpages: pages,\r\n\t\t\troadmap: new WizardRoadmap({\r\n\t\t\t\ttitle: wizardView ? wizardView.displayName : wizardData.Name,\r\n\t\t\t\tsteps: steps,\r\n\t\t\t}),\r\n\t\t\tresultPage: resultPage,\r\n\t\t\tcurrentPage: currentPage,\r\n\t\t\twizardMode: wizardMode,\r\n\t\t\tconfirm: true,\r\n\t\t\tserviceOperation: wizardData.ServiceOperation,\r\n\t\t\twizardView: wizardView,\r\n\t\t});\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nexport default class StylesItem {\r\n\tconstructor(options) {\r\n\t\toptions = options || {};\r\n\r\n\t\tObject.defineProperty(this, 'class', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.class || '',\r\n\t\t});\r\n\t\tObject.defineProperty(this, 'name', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.name || '',\r\n\t\t});\r\n\t\tObject.defineProperty(this, 'tags', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: options.tags || [],\r\n\t\t});\r\n\t\tObject.defineProperty(this, '__type', {\r\n\t\t\twritable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: 'mx.designer.StylesItem',\r\n\t\t});\r\n\t}\r\n\r\n\ttoString() {\r\n\t\treturn this.class;\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nexport const systemStyles = [\r\n\t{\r\n\t\tclass: 'hint',\r\n\t\tname: 'Small Text',\r\n\t\ttags: ['literal'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-label',\r\n\t\tname: 'Label',\r\n\t\ttags: ['literal'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mainMessage',\r\n\t\tname: 'Main Message',\r\n\t\ttags: ['literal'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-headline',\r\n\t\tname: 'Headline',\r\n\t\ttags: ['literal'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-headline-larger',\r\n\t\tname: 'Headline Larger',\r\n\t\ttags: ['literal'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-title-hint',\r\n\t\tname: 'Title Hint',\r\n\t\ttags: ['literal'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-title',\r\n\t\tname: 'Title',\r\n\t\ttags: ['literal'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-subhead',\r\n\t\tname: 'Sub header',\r\n\t\ttags: ['literal'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-warning',\r\n\t\tname: 'Warning',\r\n\t\ttags: ['literal'],\r\n\t},\r\n\t{\r\n\t\tclass: 'incident-status',\r\n\t\tname: 'Incident status container',\r\n\t\ttags: ['div'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-border',\r\n\t\tname: 'Bordered Block',\r\n\t\ttags: ['div', 'image'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-border-active',\r\n\t\tname: 'Active Bordered Block',\r\n\t\ttags: ['div', 'image'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-fade-bottom',\r\n\t\tname: 'Faded Bottom',\r\n\t\ttags: ['div', 'image'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-image-center-cover',\r\n\t\tname: 'Center and Cover',\r\n\t\ttags: ['image'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-no-padding',\r\n\t\tname: 'Reduce containers margins',\r\n\t\ttags: ['div'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-table-cell',\r\n\t\tname: 'Table Cell',\r\n\t\ttags: ['div'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-button mx-sb-button--active',\r\n\t\tname: 'Active Button',\r\n\t\ttags: ['button', 'link'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-button',\r\n\t\tname: 'Button',\r\n\t\ttags: ['button', 'link'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-content-color-link',\r\n\t\tname: 'Content colour 1-line Link',\r\n\t\ttags: ['literal'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-quick-link-kb-preview',\r\n\t\tname: 'Quick Link for KB Preview',\r\n\t\ttags: ['button'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-quick-link-card',\r\n\t\tname: 'Quick Link as Card',\r\n\t\ttags: ['button'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-quick-link-title',\r\n\t\tname: 'Quick Link as Title',\r\n\t\ttags: ['button'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-code',\r\n\t\tname: 'Input controls code style',\r\n\t\ttags: ['input'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-big-quick-link-without-description',\r\n\t\tname: 'Big Quick Link without description',\r\n\t\ttags: ['button'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-quick-link-1-line-title',\r\n\t\tname: 'Quick Link just with 1-line title',\r\n\t\ttags: ['button'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-monotextline',\r\n\t\tname: 'MonoTextLine',\r\n\t\ttags: ['literal'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-chip',\r\n\t\tname: 'Chip',\r\n\t\ttags: ['literal'],\r\n\t},\r\n\t{\r\n\t\tclass: 'mx-sb-3lines',\r\n\t\tname: 'Text: 3 lines max',\r\n\t\ttags: ['literal'],\r\n\t},\r\n];\r\n","import StylesItem from '../model/styles/mx-styles-item';\r\nimport { systemStyles } from '../model/styles/system-styles';\r\n\r\n/**\r\n * @ngdoc service\r\n * @name mx.designer.StylesService\r\n * @module mx.designer\r\n *\r\n * @description\r\n * A service provides methods for retrieving styles, allowed to use in layout designer properties\r\n *\r\n */\r\nexport default class StylesService {\r\n\tstatic $inject = ['mx.sb.WorkSpaceLoader.Service'];\r\n\tconstructor(workspaceLoaderService) {\r\n\t\tthis.workspaceLoaderService = workspaceLoaderService;\r\n\t}\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.StylesService#getStylesByTag\r\n\t *\r\n\t * @description\r\n\t * Returns available styles by tag\r\n\t * @param {string} tag - string mask to searching appropriate css classes.\r\n\t * @returns {StylesItem[]} result - an array of style items\r\n\t */\r\n\tgetStylesByTag(tag) {\r\n\t\tconst data = this.loadClasses();\r\n\t\treturn data.filter((item) => item.tags.includes(tag));\r\n\t}\r\n\r\n\tloadClasses() {\r\n\t\treturn systemStyles.concat(this.workspaceLoaderService.getCustomStyles()).map((item) => new StylesItem(item));\r\n\t}\r\n\r\n\tregisterStyles(styleConfig) {\r\n\t\tthis.workspaceLoaderService.registerStyles(styleConfig);\r\n\t}\r\n}\r\n","import DetailsView from '../../Pandora/model/details-view';\r\nimport WizardView from '../../Pandora/model/wizard/wizard-view';\r\nimport { ContentWidgetDialogAction, ContentWidgetType } from '../model/enumerations';\r\nimport { TrackOptions } from '../../../Telemetry/telemetry.contracts';\r\nimport { SchemaService } from './schema-service';\r\nimport ContentWidgetService from './content-widget-service';\r\nimport { EventCodes } from '../../../App/model/event-codes';\r\nimport { EventService } from '../../../App/services/event-service';\r\n\r\nexport interface TrackViewTelemetryProps {\r\n\teventName: string;\r\n\tview: DetailsView | WizardView;\r\n\tpropsModifier?: (props: TrackOptions) => TrackOptions;\r\n}\r\n\r\nexport class AgentTelemetryService {\r\n\tstatic $inject = ['mx.SolutionBuilderAgent.ContentWidgetService', 'mx.SolutionBuilderAgent.SchemaService', 'mx.shell.EventService'];\r\n\r\n\tconstructor(\r\n\t\tprivate readonly contentWidgetService: ReturnType,\r\n\t\tprivate readonly schemaService: SchemaService,\r\n\t\tprivate readonly eventService: EventService\r\n\t) {}\r\n\r\n\tpublic init() {\r\n\t\tthis.eventService.subscribeGlobal(EventCodes.TrackViewTelemetry, (e, { eventName, view, propsModifier }: TrackViewTelemetryProps) => {\r\n\t\t\tthis.trackViewTelemetry(eventName, view, propsModifier);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate async trackViewTelemetry(eventName: string, view: DetailsView | WizardView, propsModifier?: TrackViewTelemetryProps['propsModifier']) {\r\n\t\ttry {\r\n\t\t\tif (!view) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tlet trackProps = await this.getTelemetryInfoFromView(eventName, view);\r\n\t\t\tif (propsModifier) {\r\n\t\t\t\ttrackProps = propsModifier(trackProps);\r\n\t\t\t}\r\n\t\t\tthis.eventService.dispatchEvent(EventCodes.TrackTelemetry, { ...trackProps });\r\n\t\t} catch (e) {\r\n\t\t\t//do nothing\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async getTelemetryInfoFromView(eventName: string, view: DetailsView | WizardView) {\r\n\t\tconst widgetType = this.contentWidgetService.getWidgetType(view);\r\n\t\tconst widgetId = this.contentWidgetService.getWidgetIdFromView(view);\r\n\r\n\t\tlet viewName = 'View';\r\n\r\n\t\tconst trackProps: TrackOptions = {\r\n\t\t\teventName,\r\n\t\t\tsender: widgetId,\r\n\t\t\tsenderTitle: widgetId,\r\n\t\t\tmx42_uux_view_source: view.telemetrySource || 'Other',\r\n\t\t};\r\n\r\n\t\tif (widgetType === ContentWidgetType.ObjectDetails || widgetType === ContentWidgetType.Dialog) {\r\n\t\t\tconst dialogView = view as DetailsView;\r\n\t\t\tviewName =\r\n\t\t\t\tdialogView.dialogType === ContentWidgetDialogAction.New ? 'Create dialog' : dialogView.dialogType === ContentWidgetDialogAction.Edit ? 'Edit dialog' : 'Preview';\r\n\r\n\t\t\tconst typeInfo = await this.schemaService.getType(dialogView.context._type as string);\r\n\r\n\t\t\tif (dialogView.dialogType === ContentWidgetDialogAction.New) {\r\n\t\t\t\ttrackProps.contextId = null;\r\n\t\t\t\ttrackProps.contextTitle = null;\r\n\t\t\t} else {\r\n\t\t\t\ttrackProps.contextId = dialogView.context._id ? ([dialogView.context._id] as string[]) : null;\r\n\t\t\t\tconst contextTitle = (dialogView.context?._displayName || dialogView.context?._name) as string | undefined;\r\n\t\t\t\ttrackProps.contextTitle = contextTitle ? [contextTitle] : null;\r\n\t\t\t}\r\n\r\n\t\t\ttrackProps.contextTypeId = typeInfo?.Id ? [typeInfo?.Id] : null;\r\n\t\t\ttrackProps.contextTypeTitle = typeInfo?.InternalName ? [typeInfo?.InternalName] : null;\r\n\t\t\tif (dialogView.widgetName) {\r\n\t\t\t\ttrackProps.senderTitle = dialogView.widgetName;\r\n\t\t\t}\r\n\t\t} else if (widgetType === ContentWidgetType.Wizard) {\r\n\t\t\tconst wizardView = view as WizardView;\r\n\t\t\tviewName = 'Wizard';\r\n\t\t\tconst targets = wizardView.actionContext;\r\n\r\n\t\t\tconst typesInfo = await Promise.all(\r\n\t\t\t\ttargets\r\n\t\t\t\t\t.map((target) => target._type)\r\n\t\t\t\t\t.filter((value, index, array) => array.indexOf(value) === index)\r\n\t\t\t\t\t.map((type) => this.schemaService.getType(type))\r\n\t\t\t);\r\n\t\t\ttrackProps.contextId = targets.map((target) => target._id);\r\n\t\t\ttrackProps.contextTitle = targets.map((target) => target._displayName || (target._name as string));\r\n\r\n\t\t\ttrackProps.contextTypeId = typesInfo.map((typeInfo) => typeInfo?.Id as string);\r\n\t\t\ttrackProps.contextTypeTitle = typesInfo.map((typeInfo) => typeInfo?.InternalName as string);\r\n\r\n\t\t\tif (wizardView.name) {\r\n\t\t\t\ttrackProps.senderTitle = wizardView.name;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttrackProps.eventName = trackProps.eventName.replace('{viewName}', viewName);\r\n\r\n\t\treturn trackProps;\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nimport ActionCoRuService from './action-coru-service.js';\r\nimport ApiTokenService from './api-token.service.js';\r\nimport CacheService from './cache-service.js';\r\nimport ColumnDefinitionService from './column-definition-service.js';\r\nimport ConcurrencyTrackingService from './concurrency-tracking-service.js';\r\nimport ContentWidgetService from './content-widget-service.js';\r\nimport DataModelDescriptorService from './control-descriptor-service.js';\r\nimport DashboardWidgetDataService from './dashboard-data-service.js';\r\nimport DataModelService from './data-model-service.js';\r\nimport { DataQueryService } from './data-query-service.js';\r\nimport { FilterExpressionService } from './filter-expression-service.ts';\r\nimport { DataService } from './data-service.js';\r\nimport { DeepLinkingService } from './deep-linking-service.js';\r\nimport designerOpener from './designer-opener-service.js';\r\nimport LocalizationModeHelper from './dialog-localization-mode-helper.js';\r\nimport { DialogOpenerService } from './dialog-opener-service.js';\r\nimport { EmbeddedViewService } from './embedded-view-service.js';\r\nimport { EntityService } from './entity-service.ts';\r\nimport { ExternalServiceManager } from './external-service-manager.js';\r\nimport HelpService from './help-service.js';\r\nimport JournalService from './journal-service.js';\r\nimport HolidaysService from './mx-holidays-service.js';\r\nimport MixedActionHelper from './mx-mixed-action-helper.js';\r\nimport TranslationService from './mx-translation-service.js';\r\nimport ViewHelpService from './mx-view-help-service.js';\r\n\r\nimport BasePreprocessorFactory from './preprocessors/mx-base-preprocessor.js';\r\nimport StructurePreprocessorFactory from './preprocessors/ms-structure-preprocessor.js';\r\nimport ColumnDefinitionPreprocessorFactory from './preprocessors/mx-column-definition-preprocessor.js';\r\nimport DateRangePreprocessorFactory from './preprocessors/mx-date-range-preprocessor.js';\r\nimport QuickFilterPreprocessorFactory from './preprocessors/mx-quick-filter-preprocessor.js';\r\nimport ServiceRequestParamsPreprocessorFactory from './preprocessors/mx-service-request-params-preprocessor.js';\r\nimport SortingPreprocessorFactory from './preprocessors/mx-sorting-preprocessor.js';\r\nimport SortingGridPreprocessorFactory from './preprocessors/mx-sorting-grid-preprocessor.js';\r\nimport PagingPreprocessorFactory from './preprocessors/mx-paging-preprocessor.js';\r\nimport SearchPreprocessorFactory from './preprocessors/mx-search-preprocessor.js';\r\nimport GroupingPreprocessorFactory from './preprocessors/mx-grouping-preprocessor.js';\r\nimport ClientQueryExecutorFactory from './preprocessors/mx-client-query-executor.js';\r\nimport DataQueryExecutorFactory from './preprocessors/mx-data-query-executor.js';\r\nimport ODataQueryExecutorFactory from './preprocessors/mx-odata-query-executor.js';\r\n\r\nimport { SchemaService } from './schema-service';\r\nimport { SchemaServiceEnums } from './schema-service-enums.js';\r\nimport SearchQueryService from './search-query-service.js';\r\nimport { WidgetManager } from './widget-manager.js';\r\nimport WizardService from './wizard-service.js';\r\nimport StylesService from './mx-styles-service';\r\nimport { AgentTelemetryService } from './agent-telemetry-service';\r\n\r\nangular\r\n\t.module('mx.SolutionBuilderAgent')\r\n\t.service('mx.SolutionBuilderAgent.ActionCoRuService', ActionCoRuService)\r\n\t.service('mx.SolutionBuilderAgent.ApiTokenService', ApiTokenService)\r\n\t.service('mx.SolutionBuilderAgent.CacheService', CacheService)\r\n\t.service('mx.SolutionBuilderAgent.mxColumnDefinitionService', ColumnDefinitionService)\r\n\t.service('mx.SolutionBuilderAgent.ConcurrencyTrackingService', ConcurrencyTrackingService)\r\n\t.service('mx.SolutionBuilderAgent.ContentWidgetService', ContentWidgetService)\r\n\t.service('mx.SolutionBuilderAgent.ControlDescriptorService', DataModelDescriptorService)\r\n\t.service('mx.SolutionBuilderAgent.DashboardWidgetDataService', DashboardWidgetDataService)\r\n\t.service('mx.SolutionBuilderAgent.DataModelService', DataModelService)\r\n\t.service('mx.SolutionBuilderAgent.DataQueryService', DataQueryService)\r\n\t.service('mx.SolutionBuilderAgent.FilterExpressionService', FilterExpressionService)\r\n\t.service('mx.SolutionBuilderAgent.DataService', DataService)\r\n\t.service('mx.SolutionBuilderAgent.DeepLinkingService', DeepLinkingService)\r\n\t.service('mx.SolutionBuilderAgent.designerOpener', designerOpener)\r\n\t.service('mx.SolutionBuilderAgent.mxLocalizationModeHelper', LocalizationModeHelper)\r\n\t.service('mx.SolutionBuilderAgent.DialogOpenerService', DialogOpenerService)\r\n\t.service('mx.SolutionBuilderAgent.EmbeddedViewService', EmbeddedViewService)\r\n\t.service('mx.SolutionBuilderAgent.EntityService', EntityService)\r\n\t.service('mx.SolutionBuilderAgent.ExternalServiceManager', ExternalServiceManager)\r\n\t.service('mx.SolutionBuilderAgent.HelpService', HelpService)\r\n\t.service('mx.SolutionBuilderAgent.JournalService', JournalService)\r\n\t.service('mx.SolutionBuilderAgent.HolidaysService', HolidaysService)\r\n\t.service('mx.SolutionBuilderAgent.MixedActionHelper', MixedActionHelper)\r\n\t.service('mx.SolutionBuilderAgent.TranslationService', TranslationService)\r\n\t.service('mx.SolutionBuilderAgent.ViewHelpService', ViewHelpService)\r\n\r\n\t.factory('mx.SolutionBuilderAgent.BasePreprocessor', BasePreprocessorFactory)\r\n\t.factory('mx.SolutionBuilderAgent.StructurePreprocessor', StructurePreprocessorFactory)\r\n\t.factory('mx.SolutionBuilderAgent.ColumnDefinitionPreprocessor', ColumnDefinitionPreprocessorFactory)\r\n\t.factory('mx.SolutionBuilderAgent.DateRangePreprocessor', DateRangePreprocessorFactory)\r\n\t.factory('mx.SolutionBuilderAgent.QuickFilterPreprocessor', QuickFilterPreprocessorFactory)\r\n\t.factory('mx.SolutionBuilderAgent.ServiceRequestParamsPreprocessor', ServiceRequestParamsPreprocessorFactory)\r\n\t.factory('mx.SolutionBuilderAgent.SortingPreprocessor', SortingPreprocessorFactory)\r\n\t.factory('mx.SolutionBuilderAgent.SortingGridPreprocessor', SortingGridPreprocessorFactory)\r\n\t.factory('mx.SolutionBuilderAgent.PagingPreprocessor', PagingPreprocessorFactory)\r\n\t.factory('mx.SolutionBuilderAgent.SearchPreprocessor', SearchPreprocessorFactory)\r\n\t.factory('mx.SolutionBuilderAgent.GroupingPreprocessor', GroupingPreprocessorFactory)\r\n\t.factory('mx.SolutionBuilderAgent.ClientQueryExecutor', ClientQueryExecutorFactory)\r\n\t.factory('mx.SolutionBuilderAgent.DataQueryExecutor', DataQueryExecutorFactory)\r\n\t.factory('mx.SolutionBuilderAgent.ODataQueryExecutor', ODataQueryExecutorFactory)\r\n\r\n\t.service('mx.SolutionBuilderAgent.SchemaService', SchemaService)\r\n\t.service('mx.SolutionBuilderAgent.SchemaService.Enums', SchemaServiceEnums)\r\n\t.service('mx.SolutionBuilderAgent.SearchQueryService', SearchQueryService)\r\n\t.service('mx.SolutionBuilderAgent.WidgetManager', WidgetManager)\r\n\t.service('mx.SolutionBuilderAgent.WizardService', WizardService)\r\n\t.service('mx.SolutionBuilderAgent.StylesService', StylesService)\r\n\t.service('mx.SolutionBuilderAgent.AgentTelemetryService', AgentTelemetryService);\r\n","'use strict';\r\n\r\nimport agentModule from './module';\r\n\r\nimport './actions';\r\nimport './components';\r\nimport './layouts';\r\nimport './model';\r\nimport './services';\r\n\r\nexport default agentModule;\r\n","import i0 from './PandoraComponents/mx-attachments/mx-attachment.html';\r\nimport i1 from './PandoraComponents/mx-attachments/mx-attachments.html';\r\nimport i2 from './PandoraComponents/mx-attachments/mx-image-template.html';\r\nimport i3 from './PandoraComponents/mx-button/mx-button.html';\r\nimport i4 from './PandoraComponents/mx-checkbox/mx-checkbox.html';\r\nimport i5 from './PandoraComponents/mx-choice/mx-choice.html';\r\nimport i6 from './PandoraComponents/mx-color-picker/mx-color-picker.html';\r\nimport i7 from './PandoraComponents/mx-currency/mx-currency.html';\r\nimport i8 from './PandoraComponents/mx-datasource-paging-panel/mx-datasource-paging-panel.html';\r\nimport i9 from './PandoraComponents/mx-datasource-search-panel/mx-datasource-search-panel.html';\r\nimport i10 from './PandoraComponents/mx-date-time-picker/mx-date-time.html';\r\nimport i11 from './PandoraComponents/mx-dropdown-menu/mx-dropdown-menu.html';\r\nimport i12 from './PandoraComponents/mx-file-uploader/mx-file-uploader.html';\r\nimport i13 from './PandoraComponents/mx-form-errors/mx-form-errors.html';\r\nimport i20 from './PandoraComponents/mx-grid/mx-grid-column-filters/mx-grid-column-filter.html';\r\nimport i21 from './PandoraComponents/mx-grid/mx-grid-edit-form-field.html';\r\nimport i22 from './PandoraComponents/mx-grid/mx-grid-edit-form.html';\r\nimport i23 from './PandoraComponents/mx-grid/mx-grid-gridmenu-item.html';\r\nimport i24 from './PandoraComponents/mx-grid/mx-grid-gridmenu.html';\r\nimport i25 from './PandoraComponents/mx-grid/mx-grid-header-cell.html';\r\nimport i26 from './PandoraComponents/mx-grid/mx-grid-menu-button.html';\r\nimport i27 from './PandoraComponents/mx-grid/mx-grid-pager.html';\r\nimport i28 from './PandoraComponents/mx-grid/mx-grid-search.html';\r\nimport i29 from './PandoraComponents/mx-grid/mx-grid-viewport.html';\r\nimport i30 from './PandoraComponents/mx-grid/mx-grid.html';\r\nimport i32 from './PandoraComponents/mx-icon-picker/mx-icon-picker-dropdown.html';\r\nimport i33 from './PandoraComponents/mx-icon-picker/mx-icon-picker.html';\r\nimport i34 from './PandoraComponents/mx-image-preview/mx-image-preview.html';\r\nimport i35 from './PandoraComponents/mx-item-chooser/mx-item-chooser-grid-template.html';\r\nimport i36 from './PandoraComponents/mx-item-chooser/mx-item-chooser-list-template.html';\r\nimport i37 from './PandoraComponents/mx-item-chooser/mx-item-chooser.html';\r\nimport i38 from './PandoraComponents/mx-numeric-edit/mx-numeric-edit.html';\r\nimport i42 from './PandoraComponents/mx-rating/mx-rating.html';\r\nimport i43 from './PandoraComponents/mx-repeater/mx-repeater.html';\r\nimport i44 from './PandoraComponents/mx-search-input/mx-search-input.html';\r\nimport i45 from './PandoraComponents/mx-stepper/mx-stepper.html';\r\nimport i46 from './PandoraComponents/mx-tabs/mx-tabs.html';\r\nimport i47 from './PandoraComponents/mx-text-area/mx-text-area.html';\r\nimport i49 from './PandoraComponents/mx-treeview/mx-treeview.html';\r\nimport i51 from './Pandora/components/mx-action/mx-action.html';\r\nimport i52 from './Pandora/components/mx-actions-dropdown/mx-actions-dropdown.html';\r\nimport i53 from './Pandora/components/mx-command-palette/mx-command-palette.html';\r\nimport i54 from './Pandora/components/mx-common-actions/mx-common-actions.html';\r\nimport i55 from './Pandora/components/mx-extra-panel/mx-extra-panel.html';\r\nimport i56 from './Pandora/components/mx-horizontal-action-list/mx-horizontal-action-list.html';\r\nimport i57 from './Pandora/components/mx-main-content-zone/mx-main-content-zone.html';\r\nimport i62 from './Pandora/components/mx-shell-avatar/mx-shell-avatar.html';\r\nimport i63 from './Pandora/components/mx-shell-background-processes/mx-shell-background-processes.html';\r\nimport i66 from './Pandora/components/mx-shell-left-sidebar/mx-shell-left-sidebar.html';\r\nimport i69 from './Pandora/components/mx-shell-operation-monitor/mx-shell-operation-monitor.html';\r\nimport i70 from './Pandora/components/mx-shell-search/mx-shell-search.html';\r\nimport i71 from './Pandora/components/mx-shell-sidebar/mx-shell-sidebar.html';\r\nimport i75 from './Pandora/components/mx-shell-toolbar/mx-shell-toolbar.html';\r\nimport i76 from './Pandora/components/mx-shell-user-menu/mx-shell-user-menu.html';\r\nimport i77 from './Pandora/components/mx-side-layout/mx-side-layout.html';\r\nimport i78 from './Pandora/components/mx-toolbar-actions/mx-toolbar-actions.html';\r\nimport i79 from './Pandora/components/mx-wizard/mx-wizard-roadmap.html';\r\nimport i80 from './Pandora/components/mx-wizard/mx-wizard.html';\r\nimport i85 from './Pandora/layouts/page-not-found/404.html';\r\nimport i87 from './Pandora/layouts/unauthorized/401.html';\r\nimport i91 from './PandoraSolutionBuilderAgent/components/mx-audience-info/mx-audience-info.html';\r\nimport i94 from './PandoraSolutionBuilderAgent/components/mx-call-service-button/mx-call-service-button.html';\r\nimport i95 from './PandoraSolutionBuilderAgent/components/mx-carousel/mx-carousel.html';\r\nimport i96 from './PandoraSolutionBuilderAgent/components/mx-charts/mx-charts.html';\r\nimport i97 from './PandoraSolutionBuilderAgent/components/mx-concurrency-merge/mx-concurrency-merge.html';\r\nimport i98 from './PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-boolean.html';\r\nimport i99 from './PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-date.html';\r\nimport i100 from './PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-enum-reference.html';\r\nimport i101 from './PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-expression.html';\r\nimport i102 from './PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-number.html';\r\nimport i103 from './PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-object-reference.html';\r\nimport i104 from './PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-object-references.html';\r\nimport i105 from './PandoraSolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-string.html';\r\nimport i106 from './PandoraSolutionBuilderAgent/components/mx-condition-builder/mx-condition-group.html';\r\nimport i107 from './PandoraSolutionBuilderAgent/components/mx-condition-builder/mx-condition.html';\r\nimport i108 from './PandoraSolutionBuilderAgent/components/mx-condition-builder/mx-conditions-builder.html';\r\nimport i109 from './PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view--no-filtered-data.html';\r\nimport i110 from './PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view--only-filtered.html';\r\nimport i111 from './PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-board.html';\r\nimport i112 from './PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-calendar.html';\r\nimport i113 from './PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-grid.html';\r\nimport i114 from './PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-list.html';\r\nimport i115 from './PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-tiles.html';\r\nimport i116 from './PandoraSolutionBuilderAgent/components/mx-content-widget-view/list/mx-search-page-custom-form.html';\r\nimport i118 from './PandoraSolutionBuilderAgent/components/mx-custom-content-widget/mx-custom-content-widget.html';\r\nimport i119 from './PandoraSolutionBuilderAgent/components/mx-dashboard-editor/mx-dashboard-editor.html';\r\nimport i120 from './PandoraSolutionBuilderAgent/components/mx-data-control-panel/mx-data-control-panel.html';\r\nimport i121 from './PandoraSolutionBuilderAgent/components/mx-data-control-settings-panel/mx-data-control-settings-panel.html';\r\nimport i122 from './PandoraSolutionBuilderAgent/components/mx-datasource-order-panel/mx-datasource-order-panel.html';\r\nimport i131 from './PandoraSolutionBuilderAgent/components/mx-grid/file-selection-tab.html';\r\nimport i132 from './PandoraSolutionBuilderAgent/components/mx-grouping-board/mx-grouping-board.html';\r\nimport i133 from './PandoraSolutionBuilderAgent/components/mx-image-picker/mx-image-picker.html';\r\nimport i134 from './PandoraSolutionBuilderAgent/components/mx-image-view/mx-image-view.html';\r\nimport i135 from './PandoraSolutionBuilderAgent/components/mx-journal/mx-journal.html';\r\nimport i136 from './PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-favourites-items-panel/mx-favourites-items-panel.html';\r\nimport i137 from './PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-recent-items-panel/mx-recent-items-panel.html';\r\nimport i138 from './PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-view-link/mx-view-link.html';\r\nimport i139 from './PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-view-links-panel/mx-view-links-panel.html';\r\nimport i140 from './PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-widgets-panel/mx-widgets-panel.html';\r\nimport i141 from './PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-widgets-panel/widgets/mx-widget-navigation-item.html';\r\nimport i142 from './PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-widgets-panel/widgets/mx-widget-navigation.html';\r\nimport i144 from './PandoraSolutionBuilderAgent/components/mx-localization-editor/mx-localization-editor-form.html';\r\nimport i145 from './PandoraSolutionBuilderAgent/components/mx-localization-editor/mx-localization-editor.html';\r\nimport i146 from './PandoraSolutionBuilderAgent/components/mx-object-image/mx-object-image.html';\r\nimport i147 from './PandoraSolutionBuilderAgent/components/mx-object-rating/mx-object-rating.html';\r\nimport i148 from './PandoraSolutionBuilderAgent/components/mx-property-binding-mapper/mx-property-binding-mapper.html';\r\nimport i151 from './PandoraSolutionBuilderAgent/components/mx-quick-start-panel/mx-quick-start-page-template.html';\r\nimport i152 from './PandoraSolutionBuilderAgent/components/mx-quick-start-panel/mx-quick-start-panel.html';\r\nimport i155 from './PandoraSolutionBuilderAgent/components/mx-search-query-builder/mx-line-search-query-group.html';\r\nimport i158 from './PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-boolean.html';\r\nimport i159 from './PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-date.html';\r\nimport i160 from './PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-decimal.html';\r\nimport i161 from './PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-enum-reference.html';\r\nimport i162 from './PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-expression.html';\r\nimport i163 from './PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-float.html';\r\nimport i164 from './PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-object-reference.html';\r\nimport i165 from './PandoraSolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-string.html';\r\nimport i166 from './PandoraSolutionBuilderAgent/components/mx-search-query-condition/mx-line-search-query-condition.html';\r\nimport i167 from './PandoraSolutionBuilderAgent/components/mx-search-query-condition/mx-search-query-condition-operator.html';\r\nimport i168 from './PandoraSolutionBuilderAgent/components/mx-search-query-condition/mx-search-query-condition.html';\r\nimport i170 from './PandoraSolutionBuilderAgent/components/mx-setting-viewhelp-editor/mx-setting-viewhelp-editor.html';\r\nimport i171 from './PandoraSolutionBuilderAgent/components/mx-side-panel/mx-side-panel-tab-body.html';\r\nimport i172 from './PandoraSolutionBuilderAgent/components/mx-side-panel/mx-side-panel-tab-header.html';\r\nimport i174 from './PandoraSolutionBuilderAgent/components/mx-side-panel/mx-side-panel.html';\r\nimport i175 from './PandoraSolutionBuilderAgent/components/mx-supported-widget-types/mx-supported-widget-types.html';\r\nimport i177 from './PandoraSolutionBuilderAgent/components/mx-translation-editor/mx-translation-editor.html';\r\nimport i178 from './PandoraSolutionBuilderAgent/components/mx-treeview/mx-multi-fragment-treeview.html';\r\nimport i179 from './PandoraSolutionBuilderAgent/components/mx-view-group-by/mx-view-group-by-items.html';\r\nimport i180 from './PandoraSolutionBuilderAgent/components/mx-view-group-by/mx-view-group-by.html';\r\nimport i181 from './PandoraSolutionBuilderAgent/components/wizard/mx-wizard-view.html';\r\nimport i182 from './PandoraSolutionBuilderAgent/layouts/context-selection-view/context-selection-view.html';\r\nimport i187 from './PandoraSolutionBuilderAgent/layouts/global-search/global-search.html';\r\nimport i188 from './PandoraSolutionBuilderAgent/layouts/help-article-page/help-article-page.html';\r\nimport i189 from './PandoraSolutionBuilderAgent/layouts/help-article-page/help-article-popup.html';\r\nimport i190 from './PandoraSolutionBuilderAgent/layouts/hierarchy-view/hierarchy-view-tree-items.html';\r\nimport i191 from './PandoraSolutionBuilderAgent/layouts/hierarchy-view/hierarchy-view.html';\r\nimport i192 from './PandoraSolutionBuilderAgent/layouts/image-selection-view/image-selection-view.html';\r\n\r\nangular.module('mx.components').run([\r\n\t'$templateCache',\r\n\tfunction ($templateCache) {\r\n\t\t$templateCache.put('mx-attachments/mx-attachment.html', i0);\r\n\t\t$templateCache.put('mx-attachments/mx-attachments.html', i1);\r\n\t\t$templateCache.put('mx-attachments/mx-image-template.html', i2);\r\n\t\t$templateCache.put('mx-button/mx-button.html', i3);\r\n\t\t$templateCache.put('mx-checkbox/mx-checkbox.html', i4);\r\n\t\t$templateCache.put('mx-choice/mx-choice.html', i5);\r\n\t\t$templateCache.put('mx-color-picker/mx-color-picker.html', i6);\r\n\t\t$templateCache.put('mx-currency/mx-currency.html', i7);\r\n\t\t$templateCache.put('mx-datasource-paging-panel/mx-datasource-paging-panel.html', i8);\r\n\t\t$templateCache.put('mx-datasource-search-panel/mx-datasource-search-panel.html', i9);\r\n\t\t$templateCache.put('mx-date-time-picker/mx-date-time.html', i10);\r\n\t\t$templateCache.put('mx-dropdown-menu/mx-dropdown-menu.html', i11);\r\n\t\t$templateCache.put('mx-file-uploader/mx-file-uploader.html', i12);\r\n\t\t$templateCache.put('mx-form-errors/mx-form-errors.html', i13);\r\n\t\t$templateCache.put('mx-grid/mx-grid-column-filters/mx-grid-column-filter.html', i20);\r\n\t\t$templateCache.put('mx-grid/mx-grid-edit-form-field.html', i21);\r\n\t\t$templateCache.put('mx-grid/mx-grid-edit-form.html', i22);\r\n\t\t$templateCache.put('mx-grid/mx-grid-gridmenu-item.html', i23);\r\n\t\t$templateCache.put('mx-grid/mx-grid-gridmenu.html', i24);\r\n\t\t$templateCache.put('mx-grid/mx-grid-header-cell.html', i25);\r\n\t\t$templateCache.put('mx-grid/mx-grid-menu-button.html', i26);\r\n\t\t$templateCache.put('mx-grid/mx-grid-pager.html', i27);\r\n\t\t$templateCache.put('mx-grid/mx-grid-search.html', i28);\r\n\t\t$templateCache.put('mx-grid/mx-grid-viewport.html', i29);\r\n\t\t$templateCache.put('mx-grid/mx-grid.html', i30);\r\n\t\t$templateCache.put('mx-icon-picker/mx-icon-picker-dropdown.html', i32);\r\n\t\t$templateCache.put('mx-icon-picker/mx-icon-picker.html', i33);\r\n\t\t$templateCache.put('mx-image-preview/mx-image-preview.html', i34);\r\n\t\t$templateCache.put('mx-item-chooser/mx-item-chooser-grid-template.html', i35);\r\n\t\t$templateCache.put('mx-item-chooser/mx-item-chooser-list-template.html', i36);\r\n\t\t$templateCache.put('mx-item-chooser/mx-item-chooser.html', i37);\r\n\t\t$templateCache.put('mx-numeric-edit/mx-numeric-edit.html', i38);\r\n\t\t$templateCache.put('mx-rating/mx-rating.html', i42);\r\n\t\t$templateCache.put('mx-repeater/mx-repeater.html', i43);\r\n\t\t$templateCache.put('mx-search-input/mx-search-input.html', i44);\r\n\t\t$templateCache.put('mx-stepper/mx-stepper.html', i45);\r\n\t\t$templateCache.put('mx-tabs/mx-tabs.html', i46);\r\n\t\t$templateCache.put('mx-text-area/mx-text-area.html', i47);\r\n\t\t$templateCache.put('mx-treeview/mx-treeview.html', i49);\r\n\t},\r\n]);\r\n\r\nangular.module('mx.shell').run([\r\n\t'$templateCache',\r\n\tfunction ($templateCache) {\r\n\t\t$templateCache.put('components/mx-action/mx-action.html', i51);\r\n\t\t$templateCache.put('components/mx-actions-dropdown/mx-actions-dropdown.html', i52);\r\n\t\t$templateCache.put('components/mx-command-palette/mx-command-palette.html', i53);\r\n\t\t$templateCache.put('components/mx-common-actions/mx-common-actions.html', i54);\r\n\t\t$templateCache.put('components/mx-extra-panel/mx-extra-panel.html', i55);\r\n\t\t$templateCache.put('components/mx-horizontal-action-list/mx-horizontal-action-list.html', i56);\r\n\t\t$templateCache.put('components/mx-main-content-zone/mx-main-content-zone.html', i57);\r\n\t\t$templateCache.put('components/mx-shell-avatar/mx-shell-avatar.html', i62);\r\n\t\t$templateCache.put('components/mx-shell-background-processes/mx-shell-background-processes.html', i63);\r\n\t\t$templateCache.put('components/mx-shell-left-sidebar/mx-shell-left-sidebar.html', i66);\r\n\t\t$templateCache.put('components/mx-shell-operation-monitor/mx-shell-operation-monitor.html', i69);\r\n\t\t$templateCache.put('components/mx-shell-search/mx-shell-search.html', i70);\r\n\t\t$templateCache.put('components/mx-shell-sidebar/mx-shell-sidebar.html', i71);\r\n\t\t$templateCache.put('components/mx-shell-toolbar/mx-shell-toolbar.html', i75);\r\n\t\t$templateCache.put('components/mx-shell-user-menu/mx-shell-user-menu.html', i76);\r\n\t\t$templateCache.put('components/mx-side-layout/mx-side-layout.html', i77);\r\n\t\t$templateCache.put('components/mx-toolbar-actions/mx-toolbar-actions.html', i78);\r\n\t\t$templateCache.put('components/mx-wizard/mx-wizard-roadmap.html', i79);\r\n\t\t$templateCache.put('components/mx-wizard/mx-wizard.html', i80);\r\n\t\t$templateCache.put('layouts/page-not-found/404.html', i85);\r\n\t\t$templateCache.put('layouts/unauthorized/401.html', i87);\r\n\t},\r\n]);\r\n\r\nangular.module('mx.SolutionBuilderAgent').run([\r\n\t'$templateCache',\r\n\tfunction ($templateCache) {\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-audience-info/mx-audience-info.html', i91);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-call-service-button/mx-call-service-button.html', i94);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-carousel/mx-carousel.html', i95);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-charts/mx-charts.html', i96);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-concurrency-merge/mx-concurrency-merge.html', i97);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-boolean.html', i98);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-date.html', i99);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-enum-reference.html', i100);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-expression.html', i101);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-number.html', i102);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-object-reference.html', i103);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-object-references.html', i104);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-condition-builder/by-type/mx-condition-string.html', i105);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-condition-builder/mx-condition-group.html', i106);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-condition-builder/mx-condition.html', i107);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-condition-builder/mx-conditions-builder.html', i108);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view--no-filtered-data.html', i109);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view--only-filtered.html', i110);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-board.html', i111);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-calendar.html', i112);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-grid.html', i113);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-list.html', i114);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-content-widget-view/list/mx-content-widget-view-tiles.html', i115);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-content-widget-view/list/mx-search-page-custom-form.html', i116);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-custom-content-widget/mx-custom-content-widget.html', i118);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-dashboard-editor/mx-dashboard-editor.html', i119);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-data-control-panel/mx-data-control-panel.html', i120);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-data-control-settings-panel/mx-data-control-settings-panel.html', i121);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-datasource-order-panel/mx-datasource-order-panel.html', i122);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-grid/file-selection-tab.html', i131);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-grouping-board/mx-grouping-board.html', i132);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-image-picker/mx-image-picker.html', i133);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-image-view/mx-image-view.html', i134);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-journal/mx-journal.html', i135);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-left-side-panel/mx-favourites-items-panel/mx-favourites-items-panel.html', i136);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-left-side-panel/mx-recent-items-panel/mx-recent-items-panel.html', i137);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-left-side-panel/mx-view-link/mx-view-link.html', i138);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-left-side-panel/mx-view-links-panel/mx-view-links-panel.html', i139);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-left-side-panel/mx-widgets-panel/mx-widgets-panel.html', i140);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-left-side-panel/mx-widgets-panel/widgets/mx-widget-navigation-item.html', i141);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-left-side-panel/mx-widgets-panel/widgets/mx-widget-navigation.html', i142);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-localization-editor/mx-localization-editor-form.html', i144);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-localization-editor/mx-localization-editor.html', i145);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-object-image/mx-object-image.html', i146);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-object-rating/mx-object-rating.html', i147);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-property-binding-mapper/mx-property-binding-mapper.html', i148);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-quick-start-panel/mx-quick-start-page-template.html', i151);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-quick-start-panel/mx-quick-start-panel.html', i152);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-search-query-builder/mx-line-search-query-group.html', i155);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-boolean.html', i158);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-date.html', i159);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-decimal.html', i160);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-enum-reference.html', i161);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-expression.html', i162);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-float.html', i163);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-object-reference.html', i164);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-search-query-condition/by-type/mx-search-query-condition-string.html', i165);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-search-query-condition/mx-line-search-query-condition.html', i166);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-search-query-condition/mx-search-query-condition-operator.html', i167);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-search-query-condition/mx-search-query-condition.html', i168);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-setting-viewhelp-editor/mx-setting-viewhelp-editor.html', i170);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-side-panel/mx-side-panel-tab-body.html', i171);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-side-panel/mx-side-panel-tab-header.html', i172);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-side-panel/mx-side-panel.html', i174);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-supported-widget-types/mx-supported-widget-types.html', i175);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-translation-editor/mx-translation-editor.html', i177);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-treeview/mx-multi-fragment-treeview.html', i178);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-view-group-by/mx-view-group-by-items.html', i179);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/mx-view-group-by/mx-view-group-by.html', i180);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/components/wizard/mx-wizard-view.html', i181);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/layouts/context-selection-view/context-selection-view.html', i182);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/layouts/global-search/global-search.html', i187);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/layouts/help-article-page/help-article-page.html', i188);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/layouts/help-article-page/help-article-popup.html', i189);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/layouts/hierarchy-view/hierarchy-view-tree-items.html', i190);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/layouts/hierarchy-view/hierarchy-view.html', i191);\r\n\t\t$templateCache.put('workspaces/SolutionBuilderAgent/layouts/image-selection-view/image-selection-view.html', i192);\r\n\t},\r\n]);\r\n","// Module\nvar code = \"\\r\\n\\r\\n
\\r\\n\\t
\\r\\n\\t\\timage\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\t\\r\\n\\r\\n\\t
\\r\\n\\t\\tfile_pdf\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\tinsert_drive_file\\r\\n\\t
\\r\\n
\\r\\n\\r\\n
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\tcancel\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\tget_app\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\tdelete\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\tcomment\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\t\\r\\n\\t\\t\\t{{ ::vm.file.name }} {{ ::vm.size ? '(' + vm.size + ')' : '' }}\\r\\n\\t\\t\\r\\n\\t\\r\\n\\t\\t\\t{{ vm.file.comment ? vm.file.comment : ' '}}\\r\\n\\t\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t{{::vm.file.uploadedOn ? (vm.file.uploadedOn | date: 'shortDate') : vm.i18n.new }}\\r\\n\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\tperson_outline\\r\\n\\t\\t\\t{{ ::vm.file.uploadedBy }}\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\\r\\n\\r\\n\\t\\t{{ ::vm.i18n.drop_here }}\\r\\n\\r\\n\\r\\n
\\r\\n\\t
\\r\\n\\t
{{ ::vm.i18n.upload }}
\\r\\n\\t
{{ ::vm.i18n.drop_attachments }}
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\tinfo_outline\\r\\n\\t\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\t{{vm.isInfoBoxExpanded ? 'expand_less' : 'expand_more'}}\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t
0 || !vm.isInitMode && vm.multiUpload\\\" ng-class=\\\"{'mx-attachments-header-limited': vm.fileLimitsMessage && !vm.readOnly}\\\">\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t{{::vm.i18nCommon.sort_by}}:\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tbackup\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\t\\r\\n\\t{{vm.label}}\\r\\n\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n\\t
{{::vm.hintPlainText}}
\\r\\n\\t\\r\\n\\t\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n
\\r\\n\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t
{{::vm.hintPlainText}}
\\r\\n\\r\\n\\t
\\r\\n\\t\\tclear\\r\\n\\t
\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t
{{vm.display==='symbol' ? vm.currencySymbol: vm.currencyCode}}
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\t
{{::vm.hintPlainText}}
\\r\\n\\t\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\tchevron_left\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\tchevron_right\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n
\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t
:
\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\tAM
\\r\\n\\t\\t\\t\\tPM\\r\\n\\t\\t
\\r\\n\\t\\t\\r\\n \\t
\\r\\n\\r\\n\\t
{{::vm.hintPlainText}}
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\t\\r\\n\\t
{{::vm.hintPlainText}}
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t{{vm.icon || 'more_vert'}}\\r\\n\\t\\r\\n\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t{{::item.label}}\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t{{::item.label || \\\"\\\"}}\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
    \\r\\n\\t\\t
  • \\r\\n\\t\\t\\t

     {{:: file.name}}

    \\r\\n\\t\\t\\t

    X

    \\r\\n\\t\\t
  • \\r\\n\\t
\\r\\n\\t\\r\\n\\t\\tattachment\\r\\n\\t\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n \\t{{vm.errorMessage.type}}\\r\\n\\t
\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\t\\t{{vm.errorMessage.actionButton.label}}\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\tkeyboard_arrow_left\\r\\n\\t\\tkeyboard_arrow_right\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\tsearch_drop_down\\r\\n\\r\\n\\t\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\tsearch\\r\\n\\r\\n\\t\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\tclose\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t{{::col.displayName}}\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t 1\\\" no-label=\\\"true\\\" mx-at-id=\\\"filter-operator-picker\\\" ng-model=\\\"colFilter.operatorOnForm\\\" items=\\\"colFilter.operators\\\" item-title-field=\\\"name\\\" item-id-field=\\\"value\\\">\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\tclose\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t{{ colFilter.validationMessage }}\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\tclear\\r\\n\\t\\t\\t\\t\\t\\t\\t{{:: 'components.common.clear' | mxi18n}}\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t{{:: 'components.common.apply' | mxi18n}}\\r\\n\\t\\t\\t\\t\\t\\t\\tkeyboard_arrow_right\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n\\r\\n
\\r\\n\\t\\r\\n\\t\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n
\\r\\n\\t\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t
    \\r\\n\\t\\t\\t\\t
  • \\r\\n\\t\\t\\t\\t
  • \\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t\\tfilter_none\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t{{ col.displayName CUSTOM_FILTERS }}\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t \\r\\n\\t\\t\\t \\r\\n\\t\\t\\t \\r\\n\\t\\t\\t\\t{{col.sort.priority + 1}}\\r\\n\\t\\t\\t \\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\t \\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
{{grid.appScope.title}}\\r\\n\\t
\\r\\n\\t
{{'components.grid.add' | mxi18n}}\\r\\n\\t
\\r\\n\\t
0 ? 'mx-grid-actions-item-active': 'mx-grid-actions-item-disabled']\\\" ng-show=\\\"grid.appScope.showRemoveButton && !grid.appScope.title\\\" ng-click=\\\"grid.appScope.removeRow(grid)\\\" aria-haspopup=\\\"false\\\">{{'components.grid.remove' | mxi18n}}\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\tfile_download\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\t
0 ? 'mx-grid-top-right-icons': 'mx-grid-top-right-icons-disabled']\\\" ng-show=\\\"grid.appScope.showRemoveButton && grid.appScope.title\\\" ng-click=\\\"grid.appScope.removeRow(grid)\\\" aria-haspopup=\\\"false\\\">\\r\\n\\t\\t 0 ? 'mx-grid-actions-icon-active': 'mx-grid-actions-icon-disabled']\\\">\\r\\n\\t\\t\\tdelete\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\tadd\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t

{{'components.common.noData' | mxi18n}}

\\r\\n\\t
\\r\\n\\r\\n\\t

\\r\\n\\t\\t{{::icon.categoryName}}\\r\\n\\t

\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t{{::icon.name}}\\r\\n\\t
\\r\\n\\r\\n\\t
vm.__limit\\\" class=\\\"mx-loading\\\" style=\\\"width:100%; clear:both;\\\">
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t
{{::vm.hintPlainText}}
\\r\\n\\r\\n\\t
\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\t\\r\\n\\t\\t{{'components.mx-image-preview.title' | mxi18n}}\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\\"\\\"\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\t{{'components.mx-image-preview.close' | mxi18n}}\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t
{{::item.name}}
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\tdone\\r\\n\\t\\t\\t{{::item.name}}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\t{{:: vm.options.icon || 'apps'}}\\r\\n\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\t\\r\\n\\t\\r\\n\\t
{{::vm.hintPlainText}}
\\r\\n\\t\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\t\\r\\n\\t\\r\\n\\t
\\r\\n\\t\\tclear\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n
\\r\\n\\t
\\r\\n\\r\\n\\t\\t\\t= 0\\\" class=\\\"step-icon\\\" ng-src=\\\"{{::__$vm.imgHost + step.Icon}}\\\" title=\\\"{{step.Status}}\\\">\\r\\n\\t\\t\\t{{step.Icon || 'not_interested'}}\\r\\n\\t\\t\\tinfo\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t{{$index+1}}\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t{{step.Icon || 'not_interested'}}\\r\\n\\t\\t\\t\\t\\t= 0\\\" class=\\\"step-circle-icon\\\" ng-src=\\\"{{::__$vm.imgHost + step.Icon}}\\\" title=\\\"{{step.Status}}\\\">\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
{{step.Title}}
\\r\\n\\t\\t\\t\\t
{{step.statusText }}
\\r\\n\\t\\t\\t\\t
{{step.descriptionText}}
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\tclear\\r\\n\\t\\t
{{step.detailsText}}
\\r\\n\\t\\t
    0\\\">\\r\\n\\t\\t\\t
  • \\r\\n\\t\\t\\t\\t{{childStep.previewText}}\\r\\n\\t\\t\\t
  • \\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{::__$tab.title}}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{__$tab.count.length}}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\t\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\t{{vm.isFullscreen ? 'fullscreen_exit' : 'fullscreen'}}\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t\\r\\n\\t
{{::vm.hintPlainText}}
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t
{{::__$vm.i18n.addItem}}
\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\r\\n\\r\\n\\t
\\r\\n
\";\n// Exports\nexport default code;","// Module\nvar code = \"
0\\\" align=\\\"right\\\">{{vm._count}}
\\r\\n\\r\\n\\t\\r\\n\\t
{{:: vm.action.title}}
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n\\t\\r\\n\\t\\t{{::vm.icon}}\\r\\n\\t\\t
{{:: 'shell.common.more' | mxi18n}}
\\r\\n\\t
\\r\\n\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{::action.icon}}\\r\\n\\t\\t\\t\\t{{::action.title}}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\tsearch\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{:: item.displayType}}: \\r\\n\\t\\t\\t\\t\\t{{:: item.icon}}\\r\\n\\t\\t\\t\\t\\t{{:: item.mainTitle}}\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t{{:: item.title}}\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n\\tclose\\r\\n\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t{{:: action.title}}\\r\\n\\t\\t\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\tmore_horiz\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\t
\\r\\n\\t\\t

{{:: 'shell.mx-horizontal-action-list.title' | mxi18n}}

\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t{{:: action.title}}\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t{{:: vm.alternativeAbbreviation}}\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t
0\\\">\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\tsettings\\r\\n\\t\\t\\t\\t\\t\\t

{{item.operationName}}

\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
{{:: 'shell.mx-shell-background-processes.started' | mxi18n}}
\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
{{:: 'shell.mx-shell-background-processes.finished' | mxi18n}}
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t
{{:: 'shell.mx-shell-background-processes.status' | mxi18n}}
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
{{:: 'shell.mx-shell-background-processes.canceling' | mxi18n}}
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t\\t{{:: 'shell.common.cancel' | mxi18n}}\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t

{{:: 'shell.mx-shell-background-processes.no-operations' | mxi18n}}

\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\tclose\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t 1\\\" ng-show=\\\"!vm.NavigationManager.collapsedState && !vm.NavigationManager.__navAnimationInProgress\\\" md-stretch-tabs=\\\"always\\\" class=\\\"flex mx-shell-nav--tabs\\\" md-selected=\\\"vm.leftSidebarService.currentPanelIndex\\\" md-swipe-content=\\\"false\\\" md-no-pagination=\\\"true\\\" role=\\\"none\\\" md-navigation-hint=\\\"\\\" tabindex=\\\"-1\\\" md-border-bottom>\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{::panel.icon}}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
0\\\" ng-click=\\\"vm.openBackgroundProcesses()\\\" tabindex=\\\"-1\\\">\\r\\n\\t\\t{{ 100 > vm.service.trackedProcessesCount ? vm.service.trackedProcessesCount : '99+'}}\\r\\n\\t
\\r\\n\\t\\r\\n\\t\\tondemand_video\\r\\n\\t\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n\\r\\n\\tsearch\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\t

\\r\\n\\t\\t\\t\\t{{vm.sidebarService.view.name}}\\r\\n\\t\\t\\t

\\r\\n\\t\\t\\t{{ ::vm.hintKey }}\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{ vm.sidebarService.isPinnedOpen ? 'unpin' : 'pin' }}\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tclose\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\t{{:: button.icon}}\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\t\\r\\n\\t\\tmenu\\r\\n\\t\\r\\n\\r\\n\\t
\\r\\n\\t
\\r\\n\\r\\n\\t

\\r\\n\\t\\t{{vm.ToolbarManager.title}}\\r\\n\\t

\\r\\n\\r\\n\\t\\r\\n\\t\\t{{'shell.mx-shell-toolbar.ariaHelpLinkText' | mxi18n}}\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t
\\r\\n\\t
\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t
    \\r\\n\\t\\t
  • \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tfeedback\\r\\n\\t\\t\\t\\r\\n\\t\\t
  • \\r\\n\\t
\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t

\\r\\n\\t\\t\\t\\t\\t{{:: vm.ToolbarManager.firstName}} {{:: vm.ToolbarManager.lastName}}\\r\\n\\t\\t\\t\\t

\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{:: vm.ToolbarManager.email}}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{::item.icon}}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{::item.label}}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t 0\\\">\\r\\n\\t\\t\\t\\t\\t{{::item.label}}\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t{{::item2.icon}}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{{::item2.label}}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
    \\r\\n\\t\\t
  • \\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t
  • \\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
1}\\\">\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\tblock\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t{{vm.wizardInvalidMessage}}\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t

{{vm.wizard.currentPage.header}}

\\r\\n\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t

{{:: 'shell.page-not-found.header' | mxi18n}}

\\r\\n\\r\\n\\t\\t

{{:: 'shell.page-not-found.info' | mxi18n}}

\\r\\n\\t\\t

{{vm.attemptUrl}}

\\r\\n\\r\\n\\t\\t\\\"404\\r\\n\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t

Unauthorized

\\r\\n\\r\\n\\t\\t

We're sorry, but you are not authorized to view this page. Either no authentication was provided or it was invalid.

\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t\\r\\n\\t\\r\\n\\t\\r\\n
\\r\\n\\r\\n
\\r\\n\\t\\r\\n\\t\\r\\n\\t\\r\\n\\t\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\t
\\r\\n\\t
\\r\\n\\t{{::vm.icon}}\\r\\n\\t\\r\\n\\t{{::vm.label}}\\r\\n\\t\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t\\\"{{::vm.noRequiredData}}\\\"\\r\\n\\t{{::vm.noRequiredData}}\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\tclear\\r\\n\\t\\t\\t{{::vm.chartsI18n.removeChart}} \\r\\n\\t\\t
\\r\\n\\t\\t({{::vm.chartsI18n.addLater}})\\r\\n\\t
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\t\\r\\n\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t\\t
{{::vm.i18n.mergeConcurrencyConflicts}}
\\r\\n\\t\\t\\t
{{::vm.decideMessage}}
\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\r\\n\\t
\\r\\n
\\r\\n\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n\\t 1\\\" items=\\\"vm.modes\\\" ng-model=\\\"vm.mode\\\" item-title-field=\\\"title\\\" item-id-field=\\\"id\\\" label=\\\"{{::vm.i18n.dateType}}\\\">\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n
\\r\\n
\";\n// Exports\nexport default code;","// Module\nvar code = \"0\\\" items=\\\"vm.condition.__enumeration\\\" ng-model=\\\"vm.condition.value\\\" ng-required=\\\"true\\\" item-title-field=\\\"title\\\" item-id-field=\\\"value\\\">\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n
\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n
\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n
\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t{{vm.group.logicOperatorTitle}}\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tadd_box\\r\\n\\t\\t\\t\\t{{:: 'solutionBuilderAgent.components.mx-search-query-group.addCondition' | mxi18n}}\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t{{:: property.Title}}\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\tlibrary_add\\r\\n\\t\\t\\t{{'solutionBuilderAgent.components.mx-search-query-group.group' | mxi18n}}\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\tclear\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t{{'solutionBuilderAgent.components.mx-search-query-group.addSomeConditions' | mxi18n}}\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t{{vm.condition.logicOperatorTitle}}\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t{{vm.condition.expanded ? 'keyboard_arrow_up' : 'keyboard_arrow_down'}}\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t{{vm.condition.name}}\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t 0\\\">\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{vm.condition.operatorTitle}}\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t{{:: operator.title }}\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{vm.condition.displayValue}}\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tclear\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t\\t1 && !vm.condition.unconfigurableValue\\\" label=\\\"{{::vm.i18n.valueType}}\\\" items=\\\"vm.condition.valueTypes\\\" ng-model=\\\"vm.condition.valueTypeValue\\\" item-title-field=\\\"title\\\" item-id-field=\\\"value\\\">\\r\\n\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\tdelete\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\tadd\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t0\\\" label=\\\"Select Attribute\\\" items=\\\"vm.attributes\\\" ng-model=\\\"vm.condition.value\\\" item-title-field=\\\"Title\\\" item-id-field=\\\"AttributeId\\\">\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tadd_box\\r\\n\\t\\t\\t\\t{{:: 'solutionBuilderAgent.components.mx-search-query-group.addCondition' | mxi18n}}\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t{{:: property.Title}}\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t{{'solutionBuilderAgent.components.mx-conditions-builder.notFound' | mxi18n}}\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\tlibrary_add\\r\\n\\t\\t\\t{{'solutionBuilderAgent.components.mx-search-query-group.group' | mxi18n}}\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t{{'solutionBuilderAgent.components.mx-search-query-group.addSomeConditions' | mxi18n}}\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t{{'solutionBuilderAgent.components.mx-content-widget-view.searchDidNotMatchAnyRecords' | mxi18n}}\\r\\n\\t\\r\\n\\t\\t{{'solutionBuilderAgent.components.mx-search-state.clearFilters' | mxi18n}}\\r\\n\\t\\r\\n
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t{{'solutionBuilderAgent.components.mx-content-widget-view.enterSearchParametersToLoadData' | mxi18n}} {{'solutionBuilderAgent.common.or_label' | mxi18n}}\\r\\n\\t{{'solutionBuilderAgent.common.showAll' | mxi18n}} \\r\\n
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t{{::'solutionBuilderAgent.common.technicalPreview' | mxi18n}}\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n
\\r\\n\\t
\\r\\n
\\r\\n\\r\\n
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\t\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t\\r\\n\\t\\tsettings\\r\\n\\t\\r\\n\\t
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n
\\r\\n\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\t{{'solutionBuilderAgent.components.mx-dashboard-editor.resetDefault' | mxi18n}}\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t{{'solutionBuilderAgent.components.mx-dashboard-editor.revertToCustom' | mxi18n}}\\r\\n\\t\\t\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t{{::widget.params.icon || 'widgets'}}\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
{{::widget.params.title || widget.id}}
\\r\\n\\t\\t\\t\\t

{{::widget.params.description}}

\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t add \\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n\\t\\r\\n\\t\\tadd\\r\\n\\t\\r\\n\\r\\n\\t 1\\\" icon=\\\"add\\\" items=\\\"vm.addButtonItems\\\" mx-at-id=\\\"create-menu\\\" aria-hidden=\\\"true\\\" role=\\\"none\\\" tabindex=\\\"-1\\\">\\r\\n\\r\\n\\t
= 1\\\" class=\\\"mx-search-page--toolbar-divider\\\" aria-hidden=\\\"true\\\">
\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\trefresh\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\t{{vm.navigationService.currentItem.favourite ? 'star' : 'star_border'}}\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\tfilter_small\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\tfilter_list\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\tfile_download\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\tmore_vert\\r\\n\\t\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t

{{::'solutionBuilderAgent.components.mx-data-control-settings-panel.title' | mxi18n}}

\\r\\n\\t\\t
\\r\\n\\t\\t\\t{{::'solutionBuilderAgent.common.configure' | mxi18n}}\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t
1\\\" mx-at-id=\\\"view-info-panel\\\">\\r\\n\\t\\t
{{::'solutionBuilderAgent.common.view' | mxi18n}}
\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t{{ ::vm.getIconName(viewInfo.Type) }}\\r\\n\\t\\t\\t\\t\\t{{::viewInfo.Title}}\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n\\t
1\\\">\\r\\n\\t\\t
\\r\\n\\t\\t\\t{{::'solutionBuilderAgent.components.mx-data-control-settings-panel.itemsPerPage' | mxi18n}}\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t{{ ::size }}\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t{{::'solutionBuilderAgent.components.mx-data-control-settings-panel.rowStyle' | mxi18n}}\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{::'solutionBuilderAgent.components.mx-data-control-settings-panel.density' | mxi18n}}:\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t{{ ::height.title }}\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t
{{::'solutionBuilderAgent.components.mx-content-widget-view-grid.intervalError' | mxi18n}}
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n\\t
0\\\">\\r\\n\\t\\t
\\r\\n\\t\\t\\t
{{::'solutionBuilderAgent.components.mx-data-control-settings-panel.columns' | mxi18n}}
\\r\\n\\t\\t\\t{{::'solutionBuilderAgent.components.mx-dashboard-editor.resetDefault' | mxi18n}}\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\tsearch\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n\\r\\n\\t\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n\\t
0\\\">\\r\\n\\t\\t
\\r\\n\\t\\t\\t{{::'solutionBuilderAgent.components.mx-data-control-settings-panel.columns' | mxi18n}}\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n\\t
0\\\">\\r\\n\\t\\t
\\r\\n\\t\\t\\tCustom tile\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\tShow properties:\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\t\\r\\n\\r\\n\\r\\n\\t\\r\\n\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t{{::'solutionBuilderAgent.components.mx-data-control-settings-panel.groupBy' | mxi18n}}\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t{{::'solutionBuilderAgent.components.mx-data-control-settings-panel.calendarExtraDimensionTitle' | mxi18n}}\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\t\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n\\r\\n\\t{{'sort_' + vm.direction}}\\r\\n\\t\\r\\n\\t\\t{{vm.direction==='asc' ? 'keyboard_arrow_up' : 'keyboard_arrow_down'}}\\r\\n\\t\\r\\n\\r\\n
\\r\\n\\t\\r\\n
\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t

\\r\\n\\t\\t\\t\\treorder\\r\\n\\t\\t\\t\\t{{:: column.title}}\\r\\n\\t\\t\\t

\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{column.__folded ? 'unfold_more' : 'last_page' }}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tclose\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t{{::vm.i18n.pickAnImage}}\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t
{{vm.value}}\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t{{vm.value}}\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t
{{}}
\\r\\n\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n
\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\tY\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{'solutionBuilderAgent.components.journal.send_button_label' | mxi18n}}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tattachment\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tattachment\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t{{'solutionBuilderAgent.components.journal.write_your_comment' | mxi18n}}\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t
    \\r\\n\\t\\t\\t
  • \\r\\n\\t\\t\\t\\tinsert_drive_file\\r\\n\\t\\t\\t\\t{{::file.DisplayString}}\\r\\n\\t\\t\\t
  • \\r\\n\\t\\t
\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t{{'solutionBuilderAgent.components.journal.no-entries-so-far' | mxi18n}}\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t 0\\\" ignore-readonly=\\\"true\\\" tabindex=\\\"-1\\\" aria-hidden=\\\"true\\\">\\r\\n\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t{{::item.subject}}\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t{{::item.__created | date:'short'}}\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\texpand_less\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{'solutionBuilderAgent.components.journal.load_more_items' | mxi18n}}\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n\\r\\n
\\r\\n\\t{{:: 'solutionBuilderAgent.components.mx-recent-items-panel.inProgress' | mxi18n}}\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\t
\\r\\n\\t\\t{{:: 'solutionBuilderAgent.components.mx-recent-items-panel.recentItems' | mxi18n}}\\r\\n\\t
\\r\\n\\tdelete_sweep\\r\\n
\\r\\n\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t{{::vm.item.title}}\\r\\n\\t
\\r\\n\\r\\n\\t
    \\r\\n\\r\\n\\t\\t
  • \\r\\n\\t\\t\\t\\r\\n\\t\\t
  • \\r\\n\\r\\n\\t
\\r\\n
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t \\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t
    \\r\\n\\t\\t\\t\\t
  • \\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
  • \\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t
\\r\\n
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t

\\r\\n\\t\\t\\t{{:: vm.title}}\\r\\n\\t\\t

\\r\\n\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\\"\\\"\\r\\n\\t\\t\\t\\t\\\"\\\"\\r\\n\\t\\t\\t\\t 1\\\" flag1=\\\"{{:: baseLang.subLanguages[0].flagSrc}}\\\" flag2=\\\"{{:: baseLang.subLanguages[1].flagSrc}}\\\">\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{:: !baseLang.isBaseLanguageInGroup && baseLang.subLanguages.length===1 ? baseLang.subLanguages[0].title : baseLang.title}}\\r\\n\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t
1 || baseLang.subLanguages.length === 1 && (baseLang.isBaseLanguageInGroup || !vm._isEmpty(baseLang.subLanguages[0].translation.value))\\\">\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{:: 'solutionBuilderAgent.components.mx-localization-editor.specifyRegion' | mxi18n}}\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\tclear\\r\\n\\t\\t\\t\\t\\t\\t\\t{{:: 'solutionBuilderAgent.common.remove' | mxi18n}}\\r\\n\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t

\\r\\n\\t\\t\\t\\t{{'solutionBuilderAgent.components.mx-localization-editor.edit_localized_value' | mxi18n}}\\r\\n\\t\\t\\t

\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tclose\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\\r\\n
\\r\\n\\t\\r\\n\\t\\r\\n\\t 0\\\">\\r\\n\\t\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n
\\r\\n\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n\\t{{vm.summary}}\\r\\n\\t{{vm.ariaSummary}}\\\"\\r\\n\\r\\n
\\r\\n\\t\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\r\\n\\r\\n\\t\\r\\n\\r\\n\\r\\n\\t\\r\\n
\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"0\\\" ng-class=\\\"{'no-padding': !vm.needPaging, 'two-lines-mode': vm.twoLinesMode}\\\" data=\\\"vm.carouselPages\\\" body-field-name=\\\"body\\\" subject-field-name=\\\"title\\\" data-visual-type=\\\"edit-control\\\" parent-control=\\\"vm\\\" hide-paging=\\\"true\\\" disable-paging=\\\"{{vm.showAll}}\\\">\\r\\n\\r\\n
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
{{::vm.bigItem[vm.titleFieldName]}}
\\r\\n\\t\\t\\t\\tclose\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t{{'solutionBuilderAgent.components.mx-search-query-group.operator' + vm.parent.logicalOperatorTitle | mxi18n}}\\r\\n\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t{{'solutionBuilderAgent.components.mx-search-query-condition.is' | mxi18n}}\\r\\n\\t\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n \\r\\n\\t\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n \\r\\n\\t\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n \\r\\n\\t\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{'solutionBuilderAgent.components.mx-search-query-condition.operator' + vm.parent.logicalOperatorTitle | mxi18n}}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{vm.condition.__property.Title || vm.condition.__property.Name}}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t\\r\\n\\t\\t{{vm.operator.name}}\\r\\n\\t\\r\\n\\t\\r\\n\\t\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t{{'solutionBuilderAgent.components.mx-search-query-condition.operator' + vm.parent.logicalOperatorTitle | mxi18n}}\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t{{vm.operatorInfo.withoutParams ? 'keyboard_arrow_right' : vm.condition.__expanded ? 'keyboard_arrow_up' : 'keyboard_arrow_down'}}\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t{{vm.isExpression ? ('solutionBuilderAgent.components.mx-conditions-builder.expression' | mxi18n) : (vm.condition.__property.Title || vm.condition.__property.Name)}}\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{'solutionBuilderAgent.components.mx-search-query-condition.notInitializedCondition' | mxi18n}}\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tclear\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t
\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t{{'shell.mx-side-panel.ARIA-closeKeyHint' | mxi18n}}\\r\\n\\r\\n\\t
\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n\\t\\r\\n\\t\\tarrow_back\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\r\\n\\t
\\r\\n\\t\\t{{vm.view.headerTitle || ''}}\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\trefresh\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t{{vm.sideLayoutService.fullScreenMode ? 'fullscreen_exit' : 'fullscreen'}}\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t{{vm.view.favourite ? 'star' : 'star_border'}}\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\thelp_outline\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t0\\\">\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t-\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\tclose\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\r\\n\\t
\\r\\n\\t
\\r\\n\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\\r\\n
\\r\\n\\t\\r\\n\\t\\r\\n\\t 0\\\">\\r\\n\\t\\r\\n
\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\r\\n\\t\\r\\n
\";\n// Exports\nexport default code;","// Module\nvar code = \"
  • \\r\\n\\r\\n\\t\\r\\n\\t\\tplay_arrow\\r\\n\\t\\r\\n\\t\\r\\n\\t\\t{{:: (group.DisplayString || '['+vm.i18n.get('solutionBuilderAgent.common.not_defined')+']') + ' ('+group.Count+')' }}\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n
  • \";\n// Exports\nexport default code;","// Module\nvar code = \"

    \\r\\n\\t{{'solutionBuilderAgent.group_by.group_by' | mxi18n}}:\\r\\n

    \\r\\n\\r\\n
    \\r\\n\\t
    \\r\\n\\t\\t{{:: col.Title}}\\r\\n\\t\\tclose\\r\\n\\t\\t\\r\\n\\t
    \\r\\n\\r\\n\\t\\r\\n\\r\\n\\t
    \\r\\n
    \\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
    \\r\\n\\t\\r\\n\\t\\t
    \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t
    \\r\\n\\t
    \\r\\n
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    \\r\\n\\t
    \\r\\n\\t\\t

    \\r\\n\\t\\t\\t{{vm.view.displayName}}\\r\\n\\t\\t

    \\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
    \\r\\n\\r\\n\\t
    \\r\\n\\t
    {{vm.mxContextService.selectedObjectsLoadingProgress}}%
    \\r\\n\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t

    \\r\\n\\t\\t\\t\\t{{ sO._displayName}}\\r\\n\\t\\t\\t

    \\r\\n\\t\\t
    \\r\\n\\t
    \\r\\n\\r\\n\\t
    vm.maxItemsToShow && !vm.mxContextService.selectedObjectsLoading && !vm.isMultiFragment\\\" class=\\\"md-padding\\\">\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
    \\r\\n
    \\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
    \\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n
    \\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n\\thelp_outline\\r\\n\\r\\n\\t\\r\\n\\t\\tclose\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\r\\n\\t\\t
    \\r\\n\\r\\n\\t\\t\\t
    \\r\\n\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
    \\r\\n\\t\\t
    \\r\\n\\r\\n\\t
    \\r\\n
    \\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
  • \\r\\n\\t\\r\\n\\t\\t{{node._expanded ? 'remove_circle_outline' : 'add_circle_outline' }}\\r\\n\\t\\r\\n\\t\\r\\n\\t\\t{{:: node.DisplayString}}\\r\\n\\t\\r\\n\\t
    \\r\\n\\t
      0\\\" ng-init=\\\"__treeLevel = node.children\\\" ng-include=\\\"'workspaces/SolutionBuilderAgent/layouts/hierarchy-view/hierarchy-view-tree-items.html'\\\">\\r\\n\\t
    \\r\\n
  • \\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\t\\t
    \\r\\n\\r\\n\\t\\t\\t
    \\r\\n\\t\\t\\t\\tsearch\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
    \\r\\n\\r\\n\\t\\t\\t
    \\r\\n\\t\\t\\t\\t
      \\r\\n\\t\\t\\t\\t
    \\r\\n\\t\\t\\t
    \\r\\n\\t\\t
    \\r\\n\\t\\r\\n\\r\\n\\t
    \\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
    \\r\\n\\r\\n
    \\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"
    \\r\\n\\r\\n\\t
    \\r\\n\\t\\t
    \\r\\n\\r\\n\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
    \\r\\n\\r\\n\\t\\t\\t\\t\\t

    {{::vm.i18n.selected}}

    \\r\\n\\t\\t\\t\\t\\t

    {{vm.selectedImage || vm.i18n.noImageSelected}}

    \\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t{{::vm.i18nCommon.size + ':'}} {{vm.seletedImageSize}} {{::vm.i18n.bytes}}\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
    \\r\\n\\t\\t\\t
    \\r\\n\\r\\n\\t\\t\\t
    \\r\\n\\t\\t\\t
    \\r\\n\\r\\n\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t
    \\r\\n\\r\\n\\t\\t\\t\\t\\t\\t
    \\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t{{pf.name}}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\r\\n\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{folder.name}}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{item.name}}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t
    \\r\\n\\r\\n\\t\\t\\t\\t\\t
    \\r\\n\\r\\n\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t

    {{::category.name}}

    \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{::item.icon.name}}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t
    \\r\\n\\r\\n\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t
    \\r\\n\\r\\n\\t\\t\\t\\t\\t\\t
    \\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t
    \\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t
    \\r\\n\\t\\t\\t
    \\r\\n\\t\\t
    \\r\\n\\t
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n\\t\\r\\n\\t\\r\\n\\t\\r\\n\\t\\r\\n
    \\r\\n\";\n// Exports\nexport default code;","'use strict';\r\n\r\nexport default class MxExtensionGalleryService {\r\n\tstatic $inject = ['mx.shell.RoutingService', 'mx.SolutionBuilderAgent.ApiTokenService'];\r\n\r\n\tconstructor(routingService, apiTokenService) {\r\n\t\tthis.routingService = routingService;\r\n\t\tthis.apiTokenService = apiTokenService;\r\n\t}\r\n\r\n\tasync goToExtensionGallery() {\r\n\t\tconst accessToken = await this.apiTokenService.generateAccessToken('myGallery', {\r\n\t\t\tExtensionGallery: true,\r\n\t\t});\r\n\t\tthis.routingService.goToUrl(`https://extensions.matrix42.com#access_token=${accessToken}&target=${encodeURIComponent(window.location.origin)}`, false);\r\n\t}\r\n}\r\n","'use strict';\r\nimport MxExtensionGalleryService from './mx-extension-gallery.service';\r\n\r\nexport default angular\r\n\t.module('mx.sb.ExtensionGallery', [\r\n\t\t/*'mx.shell', 'mx.SolutionBuilderAgent'*/\r\n\t])\r\n\t.run([\r\n\t\t'mx.shell.RoutingService',\r\n\t\t'mx.sb.ExtensionGalleryService',\r\n\t\tfunction (routingService, extensionGalleryService) {\r\n\t\t\tconst extensionGalleryRouteName = 'extension-gallery';\r\n\r\n\t\t\troutingService.$transitions.onStart({}, async (transition) => {\r\n\t\t\t\tif (transition.to().name === extensionGalleryRouteName) {\r\n\t\t\t\t\textensionGalleryService.goToExtensionGallery();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tconst extensionGalleryRoute = routingService.createRoutingItem({\r\n\t\t\t\tname: extensionGalleryRouteName,\r\n\t\t\t\tpath: extensionGalleryRouteName,\r\n\t\t\t});\r\n\r\n\t\t\troutingService.addItems([extensionGalleryRoute]);\r\n\t\t},\r\n\t])\r\n\t.service('mx.sb.ExtensionGalleryService', MxExtensionGalleryService).name;\r\n","'use strict';\r\n\r\nexport class PushNotificationsService {\r\n\tstatic $inject = [\r\n\t\t'$rootScope',\r\n\t\t'mx.shell.AuthService',\r\n\t\t'mx.shell.UserProfileService',\r\n\t\t'mx.shell.EventService',\r\n\t\t'mx.SolutionBuilderAgent.Http',\r\n\t\t'mx.shell.ToolbarManager',\r\n\t\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n\t\t'mx.shell.Config',\r\n\t\t'mx.SolutionBuilderAgent.EntityService',\r\n\t\t'mx.shell.AuthBehaviorProviderService',\r\n\t];\r\n\r\n\tconstructor($rootScope, authService, userProfileService, eventService, http, toolbarManager, contentWidgetService, mxConfig, entityService, authBehaviorProviderService) {\r\n\t\tObject.assign(this, {\r\n\t\t\t$rootScope,\r\n\t\t\tauthService,\r\n\t\t\tuserProfileService,\r\n\t\t\teventService,\r\n\t\t\thttp,\r\n\t\t\ttoolbarManager,\r\n\t\t\tcontentWidgetService,\r\n\t\t\tmxConfig,\r\n\t\t\tentityService,\r\n\t\t\tauthBehaviorProviderService,\r\n\t\t});\r\n\r\n\t\tthis.unreadNotifications = 0;\r\n\t\tthis.notifications = [];\r\n\t\tthis._isPushHubEnabled = false;\r\n\t\tthis._userTags = [];\r\n\r\n\t\tthis._notificationsUpdatedHandlers = [];\r\n\r\n\t\tthis._serviceWorkerScript = 'workers/push-notifications-sw.js';\r\n\t\tthis._serviceWorkerScope = './';\r\n\t}\r\n\r\n\tisSupported() {\r\n\t\treturn 'serviceWorker' in navigator && 'Notification' in window && 'PushManager' in window;\r\n\t}\r\n\r\n\tisActivated() {\r\n\t\treturn this.isSupported() && this.hasPermissions();\r\n\t}\r\n\r\n\tisDenied() {\r\n\t\treturn window.Notification?.permission === 'denied';\r\n\t}\r\n\r\n\tisRequestPermissionsNeeded() {\r\n\t\treturn this.isSupported() && this._isPushHubEnabled && !this.isActivated() && !this.isDenied();\r\n\t}\r\n\r\n\tisEnabledInProfile() {\r\n\t\treturn this._userTags.length > 0;\r\n\t}\r\n\r\n\tisEnabledByUser() {\r\n\t\treturn this.hasPermissions() && this.isEnabledInProfile();\r\n\t}\r\n\r\n\thasPermissions() {\r\n\t\treturn window.Notification?.permission === 'granted';\r\n\t}\r\n\r\n\tasync activate() {\r\n\t\tlet hasPermissions = this.hasPermissions();\r\n\t\tif (!hasPermissions) {\r\n\t\t\thasPermissions = (await window.Notification.requestPermission()) === 'granted';\r\n\t\t}\r\n\r\n\t\tif (hasPermissions) {\r\n\t\t\tawait this._initPushNotifications();\r\n\t\t}\r\n\r\n\t\treturn hasPermissions;\r\n\t}\r\n\r\n\tasync init() {\r\n\t\ttry {\r\n\t\t\tthis._profile = await this.userProfileService.get();\r\n\t\t\tthis._sessionExpirationTime = await this.authService.getSessionExpirationTime();\r\n\t\t\tthis._pushHubConfig = await this._loadPushHubConfig();\r\n\t\t} catch (error) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._isPushHubEnabled = this._pushHubConfig && typeof this._pushHubConfig === 'object';\r\n\r\n\t\tif (!this.isSupported()) {\r\n\t\t\tif (this._isPushHubEnabled) {\r\n\t\t\t\tthis._userTags = await this._getUserTags(this._profile.id);\r\n\t\t\t}\r\n\t\t\tawait this._initUI();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.authBehaviorProviderService.onBeforeSessionDestroy(() => this._unsubscribe());\r\n\t\tthis.authBehaviorProviderService.onSessionExpired(() => this._unsubscribe());\r\n\r\n\t\tthis.eventService.subscribeGlobal(mx.SolutionBuilderAgent.Events.ObjectDataChanged, async (e, { view }) => {\r\n\t\t\tif (!view) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst widgetId = this.contentWidgetService.getWidgetIdFromView(view);\r\n\t\t\tif (this._profile.profileDialogId === widgetId) {\r\n\t\t\t\tawait this._checkSubscription(true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.sw = await this._initServiceWorker();\r\n\t\tthis._subscribeToWorkerMessages();\r\n\t\tawait this._initPushHub();\r\n\t}\r\n\r\n\tasync _checkSubscription(forceTagsReload = false) {\r\n\t\tif (this._subscribedUserId && (this._subscribedUserId !== this._profile.id || !this._isPushHubEnabled)) {\r\n\t\t\tawait this._unsubscribe();\r\n\t\t}\r\n\r\n\t\tif (this._isPushHubEnabled) {\r\n\t\t\tif (forceTagsReload || this._subscribedUserId !== this._profile.id) {\r\n\t\t\t\tthis._userTags = await this._getUserTags(this._profile.id);\r\n\t\t\t}\r\n\t\t\tif (!this.isEnabledByUser() && this._subscribedUserId) {\r\n\t\t\t\tawait this._unsubscribe();\r\n\t\t\t}\r\n\r\n\t\t\tif (this.isEnabledByUser() && (!this._subscribedUserId || forceTagsReload)) {\r\n\t\t\t\tawait this._subscribe(this._profile.id, this._userTags);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tawait this._initUI();\r\n\t}\r\n\r\n\tasync _getNotifications() {\r\n\t\treturn (\r\n\t\t\t(await this._sendMessage(\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: 'get-notifications',\r\n\t\t\t\t},\r\n\t\t\t\ttrue\r\n\t\t\t)) || []\r\n\t\t);\r\n\t}\r\n\r\n\taddNotificationsUpdatedHandler(handler) {\r\n\t\treturn this._addHandler(handler, this._notificationsUpdatedHandlers);\r\n\t}\r\n\r\n\tasync removeAllNotifications() {\r\n\t\treturn this._sendMessage({\r\n\t\t\ttype: 'remove-all-notifications',\r\n\t\t});\r\n\t}\r\n\r\n\tasync removeNotification(id) {\r\n\t\treturn this._sendMessage({\r\n\t\t\ttype: 'remove-notification',\r\n\t\t\tvalue: id,\r\n\t\t});\r\n\t}\r\n\r\n\tasync setNotificationsRead() {\r\n\t\treturn this._sendMessage({\r\n\t\t\ttype: 'notifications-read',\r\n\t\t});\r\n\t}\r\n\r\n\t_addHandler(handler, handlersArray = []) {\r\n\t\tif (typeof handler !== 'function') {\r\n\t\t\tconsole.error('handler is not a function');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\thandlersArray.push(handler);\r\n\r\n\t\treturn () => {\r\n\t\t\tconst index = handlersArray.indexOf(handler);\r\n\t\t\tif (index >= 0) {\r\n\t\t\t\thandlersArray.splice(index, 1);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t_subscribeToWorkerMessages() {\r\n\t\tnavigator.serviceWorker.addEventListener('message', (event) => {\r\n\t\t\tconst data = event.data;\r\n\t\t\tswitch (data.type) {\r\n\t\t\t\tcase 'notifications_updated':\r\n\t\t\t\t\tthis._onNotificationsUpdated(event.data.value);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'push_hub_ready':\r\n\t\t\t\t\tthis._initPushNotifications(event.data.value.subscribedUserId, event.data.value.subscribedUserTags);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'subscription_status':\r\n\t\t\t\t\tthis._onSubscriptionStatusUpdated(event.data.value.subscribedUserId, event.data.value.subscribedUserTags);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tasync _initPushHub() {\r\n\t\tthis._sendMessage({\r\n\t\t\ttype: 'init_push_hub',\r\n\t\t\tvalue: {\r\n\t\t\t\tsessionExpirationTime: this._sessionExpirationTime,\r\n\t\t\t\tpushHubConfig: this._pushHubConfig,\r\n\t\t\t\tbasePath: mx.shell.config.basePath,\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync _initPushNotifications(subscribedUserId, subscribedUserTags) {\r\n\t\tthis._subscribedUserId = subscribedUserId;\r\n\t\tif (this._subscribedUserId === this._profile.id) {\r\n\t\t\tthis._userTags = subscribedUserTags;\r\n\t\t}\r\n\t\tawait this._checkSubscription();\r\n\r\n\t\tif (this._isPushHubEnabled && this.isEnabledByUser()) {\r\n\t\t\tconst notifications = await this._getNotifications();\r\n\t\t\tawait this._onNotificationsUpdated(notifications);\r\n\t\t}\r\n\t}\r\n\r\n\tasync _onSubscriptionStatusUpdated(subscribedUserId, subscribedUserTags) {\r\n\t\tthis._subscribedUserId = subscribedUserId;\r\n\t\tif (this._subscribedUserId === this._profile.id) {\r\n\t\t\tthis._userTags = subscribedUserTags;\r\n\t\t}\r\n\t\tawait this._initUI();\r\n\t}\r\n\r\n\tasync _initUI() {\r\n\t\tthis.toolbarManager.setPushNotificationsEnabled(this._isPushHubEnabled && this.isEnabledInProfile());\r\n\t\tthis.$rootScope.$evalAsync();\r\n\t}\r\n\r\n\tasync _initServiceWorker() {\r\n\t\tconst registerSW = await navigator.serviceWorker.register(this._serviceWorkerScript, {\r\n\t\t\tscope: this._serviceWorkerScope,\r\n\t\t});\r\n\t\tawait navigator.serviceWorker.ready;\r\n\t\tconst serviceWorker = registerSW.installing || registerSW.waiting || registerSW.active;\r\n\t\tif (!serviceWorker) {\r\n\t\t\tconsole.error('service-worker registration error');\r\n\t\t}\r\n\r\n\t\tconst waitServiceWorkerActivated = async (serviceWorker) => {\r\n\t\t\tif (serviceWorker.state !== 'activated') {\r\n\t\t\t\tawait new Promise((resolve) => {\r\n\t\t\t\t\tserviceWorker.addEventListener('statechange', function (e) {\r\n\t\t\t\t\t\tif (e.target.state === 'activated') {\r\n\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\t\tawait waitServiceWorkerActivated(serviceWorker);\r\n\t\tif (navigator.serviceWorker.controller !== serviceWorker) {\r\n\t\t\tserviceWorker.postMessage({ type: 'claim_me' });\r\n\t\t\tawait new Promise((resolve) => {\r\n\t\t\t\tnavigator.serviceWorker.addEventListener('controllerchange', resolve);\r\n\t\t\t});\r\n\t\t}\r\n\t\tnavigator.serviceWorker.addEventListener('controllerchange', async () => {\r\n\t\t\tawait waitServiceWorkerActivated(navigator.serviceWorker.controller);\r\n\t\t\tthis.sw = navigator.serviceWorker.controller;\r\n\t\t\tawait this._initPushHub();\r\n\t\t});\r\n\t\treturn serviceWorker;\r\n\t}\r\n\r\n\tasync _subscribe(userId, userTags) {\r\n\t\tconst subscribed = await this._sendMessage(\r\n\t\t\t{\r\n\t\t\t\ttype: 'subscribe',\r\n\t\t\t\tvalue: {\r\n\t\t\t\t\tuserId: userId,\r\n\t\t\t\t\tuserTags: userTags,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\ttrue\r\n\t\t);\r\n\t\tif (subscribed) {\r\n\t\t\tthis._subscribedUserId = userId;\r\n\t\t}\r\n\t\treturn subscribed;\r\n\t}\r\n\r\n\tasync _unsubscribe() {\r\n\t\tawait this._sendMessage(\r\n\t\t\t{\r\n\t\t\t\ttype: 'unsubscribe',\r\n\t\t\t},\r\n\t\t\ttrue\r\n\t\t);\r\n\t\tthis._subscribedUserId = null;\r\n\t}\r\n\r\n\tasync _sendMessage(message, waitForAnswer = false) {\r\n\t\tif (!this.sw) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst messageChannel = new MessageChannel();\r\n\r\n\t\tconst waitPromise = waitForAnswer\r\n\t\t\t? new Promise((resolve, reject) => {\r\n\t\t\t\t\tmessageChannel.port1.onmessage = (event) => {\r\n\t\t\t\t\t\tif (event.data.error) {\r\n\t\t\t\t\t\t\treject(event.data.error);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tresolve(event.data);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t })\r\n\t\t\t: Promise.resolve();\r\n\r\n\t\tthis.sw.postMessage(message, [messageChannel.port2]);\r\n\r\n\t\treturn waitPromise;\r\n\t}\r\n\r\n\tasync _onNotificationsUpdated(notifications) {\r\n\t\tthis.notifications = await this._prepareNotifications(notifications);\r\n\t\tthis.unreadNotifications = this.notifications.reduce((unread, notification) => unread + (notification.read ? 0 : 1), 0);\r\n\t\tthis._notificationsUpdatedHandlers.forEach((handler) => handler(this.notifications));\r\n\t}\r\n\r\n\tasync _prepareNotifications(notifications) {\r\n\t\tconst notificationTypes = await this._getNotificationTypes();\r\n\r\n\t\tnotifications.forEach((notification) => {\r\n\t\t\tconst type = notificationTypes[notification.event] || {};\r\n\r\n\t\t\tObject.assign(notification, {\r\n\t\t\t\tcolor: (type.color || '').replace(/^0xff/i, '#') || '#0399d7',\r\n\t\t\t\ticon: type.icon || 'message',\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tnotifications.sort((a, b) => b.received - a.received);\r\n\r\n\t\treturn notifications;\r\n\t}\r\n\r\n\tasync _getNotificationTypes() {\r\n\t\tif (this._notificationsTypes) {\r\n\t\t\treturn this._notificationsTypes;\r\n\t\t}\r\n\t\tconst picker = await this.entityService.getEnumeration('SPSPushNotificationEventPickupType');\r\n\t\tthis._notificationsTypes = (picker.Values || []).reduce((aggregator, value) => {\r\n\t\t\taggregator[value.InternalName] = {\r\n\t\t\t\tcolor: value.Color,\r\n\t\t\t\ticon: value.Icon,\r\n\t\t\t};\r\n\t\t\treturn aggregator;\r\n\t\t}, {});\r\n\t\treturn this._notificationsTypes;\r\n\t}\r\n\r\n\tasync _getUserTags(userId) {\r\n\t\tconst userTags = await this.http.get(`api/pushnotifications/tags/${userId}`);\r\n\t\tif (userTags.join(',').length >= 8000) {\r\n\t\t\tconsole.error('There are too many tags for push subscription. Azure supports not more than 8000 symbols');\r\n\t\t}\r\n\t\treturn userTags;\r\n\t}\r\n\r\n\tasync _loadPushHubConfig() {\r\n\t\treturn this.http.get(`/api/pushNotifications/pushServiceInfo`);\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nexport class PushNotificationsPanelService {\r\n\tstatic $inject = ['mx.shell.SidebarService', 'mx.shell.View', 'mx.internationalization'];\r\n\r\n\tconstructor(sidebarService, MxView, i18n) {\r\n\t\tthis.sidebarService = sidebarService;\r\n\t\tthis.i18n = i18n;\r\n\r\n\t\tthis._view = new MxView({\r\n\t\t\tid: 'push_notifications_panel',\r\n\t\t\tname: i18n.get('solutionBuilderAgent.push-notifications.pushNotifications'),\r\n\t\t\ttemplate: '',\r\n\t\t});\r\n\t}\r\n\r\n\ttogglePanel() {\r\n\t\tif (this._isPanelOpened()) {\r\n\t\t\tthis.closePanel();\r\n\t\t} else {\r\n\t\t\tthis.openPanel();\r\n\t\t}\r\n\t}\r\n\r\n\topenPanel() {\r\n\t\tif (this._isPanelOpened()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.sidebarService.open(this._view);\r\n\t}\r\n\r\n\tclosePanel() {\r\n\t\tthis.sidebarService.close();\r\n\t}\r\n\r\n\t_isPanelOpened() {\r\n\t\treturn this.sidebarService.view && this.sidebarService.view.id === this._view.id;\r\n\t}\r\n}\r\n","'use strict';\r\nimport template from './mx-push-notifications-monitor.component.html';\r\n\r\nexport class PushNotificationsMonitorController {\r\n\tstatic $inject = ['mx.sb.PushNotifications.NotificationsService', 'mx.sb.PushNotifications.PanelService', 'mx.internationalization', '$scope'];\r\n\r\n\tconstructor(pushNotificationsService, pushNotificationsPanelService, i18n, $scope) {\r\n\t\tthis.pushNotificationsService = pushNotificationsService;\r\n\t\tthis.pushNotificationsPanelService = pushNotificationsPanelService;\r\n\t\tthis.i18n = i18n.get('solutionBuilderAgent.push-notifications');\r\n\t\tthis.$scope = $scope;\r\n\r\n\t\tObject.defineProperty(this, 'hasAlert', {\r\n\t\t\tget: () => this.pushNotificationsService.isRequestPermissionsNeeded() || this.pushNotificationsService.isDenied() || !this.pushNotificationsService.isSupported(),\r\n\t\t});\r\n\t}\r\n\r\n\t$onInit() {\r\n\t\tthis._unsubscribe = this.pushNotificationsService.addNotificationsUpdatedHandler((notifications) => this._onNotificationsUpdated(notifications));\r\n\t\tthis._onNotificationsUpdated(this.pushNotificationsService.notifications);\r\n\t}\r\n\r\n\t$onDestroy() {\r\n\t\tthis._unsubscribe();\r\n\t}\r\n\r\n\t_onNotificationsUpdated() {\r\n\t\tthis.$scope.$evalAsync();\r\n\t}\r\n}\r\n\r\nexport default {\r\n\ttemplate: template,\r\n\tcontrollerAs: 'vm',\r\n\tcontroller: PushNotificationsMonitorController,\r\n};\r\n","// Module\nvar code = \"
    \\r\\n\\t
    0\\\" ng-click=\\\"vm.pushNotificationsPanelService.togglePanel()\\\" tabindex=\\\"-1\\\" mx-at-id=\\\"mx-notifications-monitor--amount\\\">\\r\\n\\t\\t{{ 100 > vm.pushNotificationsService.unreadNotifications ? vm.pushNotificationsService.unreadNotifications : '99+'}}\\r\\n\\t
    \\r\\n\\r\\n\\t\\r\\n\\t\\tnotifications_active\\r\\n\\t\\tnotifications_off\\r\\n\\t\\r\\n
    \\r\\n\";\n// Exports\nexport default code;","'use strict';\r\nimport template from './mx-push-notifications-panel.component.html';\r\n\r\nexport class PushNotificationsPanelController {\r\n\tstatic $inject = [\r\n\t\t'mx.sb.PushNotifications.NotificationsService',\r\n\t\t'mx.internationalization',\r\n\t\t'$scope',\r\n\t\t'mx.SolutionBuilderAgent.WidgetManager',\r\n\t\t'mx.shell.RoutingService',\r\n\t\t'mx.shell.SidePanelService',\r\n\t];\r\n\r\n\tconstructor(pushNotificationsService, i18n, $scope, widgetManager, routingService, sidePanelService) {\r\n\t\tObject.assign(this, { pushNotificationsService, i18n, $scope, widgetManager, routingService, sidePanelService });\r\n\r\n\t\tthis.actions = this.initActions();\r\n\t\tthis.browsersHelpInfo = this.getBrowsersHelpInfo();\r\n\t}\r\n\r\n\t$onInit() {\r\n\t\tthis._unsubscribe = this.pushNotificationsService.addNotificationsUpdatedHandler((notifications) => this._onNotificationsUpdated(notifications));\r\n\t\tthis._onNotificationsUpdated(this.pushNotificationsService.notifications);\r\n\t}\r\n\r\n\t$onDestroy() {\r\n\t\tthis._unsubscribe();\r\n\t}\r\n\r\n\tinitActions() {\r\n\t\tconst vm = this;\r\n\t\treturn [\r\n\t\t\t{\r\n\t\t\t\tname: 'delete_all',\r\n\t\t\t\ttitle: this.i18n.get('shell.common.delete_all'),\r\n\t\t\t\ticon: 'delete',\r\n\t\t\t\tenabled: true,\r\n\t\t\t\tcontroller: function () {\r\n\t\t\t\t\tvm.pushNotificationsService.removeAllNotifications();\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t];\r\n\t}\r\n\r\n\tgetBrowsersHelpInfo() {\r\n\t\tconst agent = window.navigator.userAgent;\r\n\t\tconst notSupportedI18n = `${this.i18n.get('solutionBuilderAgent.push-notifications.browserIsNotSupported')}`;\r\n\t\tconst browsers = [\r\n\t\t\t{\r\n\t\t\t\tname: 'Chrome',\r\n\t\t\t\tisCurrent: agent.indexOf('Chrome') > -1 && agent.indexOf('Edg/') === -1,\r\n\t\t\t\tlink: 'https://support.google.com/chrome/answer/3220216',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'Firefox',\r\n\t\t\t\tisCurrent: agent.indexOf('Firefox') > -1,\r\n\t\t\t\tlink: 'https://support.mozilla.org/en-US/kb/push-notifications-firefox',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'Edge',\r\n\t\t\t\tisCurrent: agent.indexOf('Edg/') > -1,\r\n\t\t\t\tlink: 'https://answers.microsoft.com/en-us/edge/forum/edge_issue-edge_win10/turn-on-off-microsoft-edge-pop-up-notifications/1e804ae0-788d-46b0-a414-739231e8eaa3',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'Internet Explorer',\r\n\t\t\t\tisCurrent: agent.indexOf('MSIE ') > -1 || !!agent.match(/Trident.*rv:11\\./),\r\n\t\t\t\tlink: '',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: 'Safari',\r\n\t\t\t\tisCurrent: agent.indexOf('Safari') > -1 && agent.indexOf('Chrome') === -1,\r\n\t\t\t\tlink: '',\r\n\t\t\t},\r\n\t\t];\r\n\t\tconst currentBrowser = browsers.find((b) => b.isCurrent);\r\n\r\n\t\tlet resHtml = '
      ';\r\n\t\tif (currentBrowser) {\r\n\t\t\tresHtml += `
    • \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t${currentBrowser.name}\r\n\t\t\t\t\t\t(${this.i18n.get('solutionBuilderAgent.push-notifications.currentBrowser')}) :\r\n\t\t\t\t\t\t${currentBrowser.link ? `
      ${currentBrowser.link}` : notSupportedI18n}\r\n\t\t\t\t\t
      \r\n\t\t\t\t
    • `;\r\n\t\t}\r\n\t\tbrowsers.forEach((b) => {\r\n\t\t\tif (b !== currentBrowser) {\r\n\t\t\t\tresHtml += `
    • \r\n\t\t\t\t\t${b.name}:\r\n\t\t\t\t\t${b.link ? `
      ${b.link}` : notSupportedI18n}\r\n\t\t\t\t
    • `;\r\n\t\t\t}\r\n\t\t});\r\n\t\tresHtml += '
    ';\r\n\r\n\t\treturn resHtml;\r\n\t}\r\n\r\n\tasync activate() {\r\n\t\tawait this.pushNotificationsService.activate();\r\n\t\tthis.$scope.$evalAsync();\r\n\t}\r\n\r\n\t_onNotificationsUpdated(notifications) {\r\n\t\tif (this.pushNotificationsService.unreadNotifications > 0) {\r\n\t\t\tthis.pushNotificationsService.setNotificationsRead();\r\n\t\t}\r\n\t\tthis.viewData = this._prepareViewData(notifications);\r\n\t\tthis.groups = this._groupNotificationsByTime(notifications);\r\n\t\tthis.$scope.$evalAsync();\r\n\t}\r\n\r\n\t_groupNotificationsByTime(notifications) {\r\n\t\tconst groups = [];\r\n\t\tconst groupsObj = {};\r\n\r\n\t\tnotifications.forEach((notification) => {\r\n\t\t\tconst timeAgo = Date.now() - notification.received < 3000000 ? this.i18n.get('components.common.recently') : this.i18n.formatDate(notification.received, 'timeAgo');\r\n\r\n\t\t\tif (groupsObj[timeAgo]) {\r\n\t\t\t\tgroupsObj[timeAgo].notifications.push(notification);\r\n\t\t\t} else {\r\n\t\t\t\tconst newGroup = {\r\n\t\t\t\t\ttitle: timeAgo,\r\n\t\t\t\t\tnotifications: [notification],\r\n\t\t\t\t};\r\n\t\t\t\tgroupsObj[timeAgo] = newGroup;\r\n\t\t\t\tgroups.push(newGroup);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groups;\r\n\t}\r\n\r\n\t_prepareViewData(notifications) {\r\n\t\treturn notifications.reduce((viewData, notification) => {\r\n\t\t\tviewData[notification.id] = {\r\n\t\t\t\tdate: this.i18n.formatDate(notification.received, 'MMM D, YYYY LT'),\r\n\t\t\t};\r\n\r\n\t\t\tif (notification.url) {\r\n\t\t\t\tviewData[notification.id].onClick = () => this.routingService.goToUrl(notification.url, true);\r\n\t\t\t} else if (notification.objectId && notification.entityType) {\r\n\t\t\t\tviewData[notification.id].onClick = async () => {\r\n\t\t\t\t\tlet view;\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tview = await this.widgetManager.getPreviewView({\r\n\t\t\t\t\t\t\t_id: notification.objectId,\r\n\t\t\t\t\t\t\t_type: notification.entityType,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\tmx.noLogCatchMessage(e);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (view) {\r\n\t\t\t\t\t\tthis.sidePanelService.addView(view);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.routingService.goToUrl(`/object-details/${notification.entityType}/${notification.objectId}/`, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn viewData;\r\n\t\t}, {});\r\n\t}\r\n}\r\n\r\nexport default {\r\n\ttemplate: template,\r\n\tcontrollerAs: 'vm',\r\n\tcontroller: PushNotificationsPanelController,\r\n};\r\n","// Module\nvar code = \"
    \\r\\n\\t
    \\r\\n\\t\\t
    \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t
    \\r\\n\\t\\t

    {{'solutionBuilderAgent.push-notifications.permissionsNeededMsg' | mxi18n }}

    \\r\\n\\t\\t
    \\r\\n\\t
    \\r\\n\\r\\n\\t
    \\r\\n\\t\\t

    {{'solutionBuilderAgent.push-notifications.deniedTitle' | mxi18n }}

    \\r\\n\\t\\t

    {{'solutionBuilderAgent.push-notifications.deniedMsg' | mxi18n }}

    \\r\\n\\t\\t
    \\r\\n\\t
    \\r\\n\\r\\n\\t
    \\r\\n\\t\\t

    {{'solutionBuilderAgent.push-notifications.notSupportedTitle' | mxi18n }}

    \\r\\n\\t\\t

    \\r\\n\\t\\t
    \\r\\n\\t
    \\r\\n\\r\\n\\t
    \\r\\n\\t\\t

    {{'components.common.noData' | mxi18n }}

    \\r\\n\\t
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n\\t\\r\\n\\r\\n\\t
    \\r\\n\\t\\t
    \\r\\n\\r\\n\\t\\t\\t

    {{:: group.title}}

    \\r\\n\\r\\n\\t\\t\\t
    \\r\\n\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t{{::notif.icon || 'message'}}\\r\\n\\t\\t\\t\\t\\t

    {{:: notif.title}}

    \\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\tclose\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t
    {{:: vm.viewData[notif.id].date}}
    \\r\\n\\t\\t\\t\\t\\t
    {{:: notif.body}}
    \\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
    \\r\\n\\t\\t\\t
    \\r\\n\\r\\n\\t\\t
    \\r\\n\\t
    \\r\\n
    \\r\\n\";\n// Exports\nexport default code;","'use strict';\r\n\r\nimport { PushNotificationsService } from './push-notifications.service';\r\nimport { PushNotificationsPanelService } from './mx-push-notifications-panel/mx-push-notifications-panel.service';\r\nimport PushNotificationsMonitorComponent from './mx-push-notifications-monitor/mx-push-notifications-monitor.component';\r\nimport PushNotificationsPanelComponent from './mx-push-notifications-panel/mx-push-notifications-panel.component';\r\n\r\nexport default angular\r\n\t.module('mx.sb.PushNotifications', [\r\n\t\t/*'mx.shell', 'mx.SolutionBuilderAgent'*/\r\n\t])\r\n\t.service('mx.sb.PushNotifications.NotificationsService', PushNotificationsService)\r\n\t.service('mx.sb.PushNotifications.PanelService', PushNotificationsPanelService)\r\n\t.component('mxPushNotificationsMonitor', PushNotificationsMonitorComponent)\r\n\t.component('mxPushNotificationsPanel', PushNotificationsPanelComponent).name;\r\n","import { ContentWidgetDialogPurpose } from '../../../model/enumerations';\r\nimport template from './dialog-view.component.html';\r\nimport { EventCodes } from '../../../../../App/model/event-codes';\r\n\r\nexport const MxDialogViewComponent = {\r\n\tbindings: {\r\n\t\tview: '<',\r\n\t},\r\n\tcontroller: MxSolutionBuilderAgentEditCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n};\r\n\r\nMxSolutionBuilderAgentEditCtrl.$inject = [\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.DetailsView',\r\n\t'mx.shell.SidePanelService',\r\n\t'mx.internationalization',\r\n\t'mx.SolutionBuilderAgent.DialogOpenerService',\r\n\t'mx.shell.UserProfileService',\r\n\t'$scope',\r\n];\r\n\r\nfunction MxSolutionBuilderAgentEditCtrl(eventService, MxDetailsView, sidePanelService, i18n, dialogOpener, userProfile, $scope) {\r\n\tconst vm = this;\r\n\tconst defaultDoneLabel = i18n.get('shell.common.done');\r\n\tvm.sidePanelService = sidePanelService;\r\n\r\n\tvm.loaded = false;\r\n\r\n\tuserProfile.get().then(function (user) {\r\n\t\tvm.user = user;\r\n\t});\r\n\r\n\tvm.openNewDialog = function () {\r\n\t\tswitch (vm.view.dialogType) {\r\n\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetDialogAction.Preview:\r\n\t\t\t\tdialogOpener.openNewDialog('PDRContentWidgetTypeObjectDetails');\r\n\t\t\t\tbreak;\r\n\t\t\tcase mx.SolutionBuilderAgent.ContentWidgetDialogAction.Edit:\r\n\t\t\t\tdialogOpener.openNewDialog('PDRContentWidgetTypeDialog');\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t};\r\n\r\n\tvm.$onInit = () => {\r\n\t\tvm.contentWidgetId = vm.view.widgetId;\r\n\t\tvm.objectId = vm.view.context?._id || 'new';\r\n\t\tvm.dialogType = vm.view.dialogType;\r\n\r\n\t\tvm.isEditableDialog =\r\n\t\t\tvm.view.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.Edit || vm.view.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.New;\r\n\t\tvm.enableConcurrencyTracking = vm.view.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.Edit;\r\n\r\n\t\tsetDoneButtonLabel(defaultDoneLabel);\r\n\t\tvm.isSaveVisible = vm._isSaveVisible = vm.isEditableDialog && vm.view.purpose !== ContentWidgetDialogPurpose.CreateOnly;\r\n\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.SolutionBuilderAgent.Events.ViewDataLoaded,\r\n\t\t\tfunction (e, view) {\r\n\t\t\t\tif (view === vm.view) {\r\n\t\t\t\t\tvm.loaded = true;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\t};\r\n\r\n\tvm.saveAndClose = saveAndClose;\r\n\tvm.save = save;\r\n\tvm.cancel = cancel;\r\n\r\n\tvm.hideSaveButton = hideSaveButton;\r\n\tvm.setDoneButtonLabel = setDoneButtonLabel;\r\n\r\n\treturn vm;\r\n\r\n\tfunction setDoneButtonLabel(label) {\r\n\t\tvm.doneLabel = typeof label === 'string' && label ? label : defaultDoneLabel;\r\n\t}\r\n\r\n\tfunction hideSaveButton(value) {\r\n\t\tvm._isSaveHidden = Boolean(value);\r\n\t\tvm.isSaveVisible = vm._isSaveVisible && !vm._isSaveHidden;\r\n\t}\r\n\r\n\tfunction cancel() {\r\n\t\ttrackTelemetry('cancel clicked');\r\n\r\n\t\tif (sidePanelService.isViewUnsafeForClosing(vm.view)) {\r\n\t\t\tvar dialogConfig = {\r\n\t\t\t\tid: 'ActionOnSafeCancelDialog',\r\n\t\t\t\ttitle: i18n.get('shell.mx-side-panel-service.unsavedData'),\r\n\t\t\t\tactions: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: 'cancel',\r\n\t\t\t\t\t\tnotForSave: true,\r\n\t\t\t\t\t\ttitle: i18n.get('shell.mx-side-panel-service.doNothing'),\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: 'close',\r\n\t\t\t\t\t\ttitle: i18n.get('solutionBuilderAgent.services.side-panel-service.close'),\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: 'save-and-close',\r\n\t\t\t\t\t\tnotForSave: true,\r\n\t\t\t\t\t\tdisabled: vm.view.saveDisabled,\r\n\t\t\t\t\t\ttitle: i18n.get('solutionBuilderAgent.services.side-panel-service.save-and-close'),\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t};\r\n\r\n\t\t\treturn {\r\n\t\t\t\texecute: sidePanelService.showConfirmationDialog(dialogConfig).then(function (answer) {\r\n\t\t\t\t\tif (answer === 'close') {\r\n\t\t\t\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.DialogActionExecuted, {\r\n\t\t\t\t\t\t\tview: sidePanelService.currentView,\r\n\t\t\t\t\t\t\taction: 0,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else if (answer === 'save-and-close') {\r\n\t\t\t\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.DialogActionExecuted, {\r\n\t\t\t\t\t\t\tview: sidePanelService.currentView,\r\n\t\t\t\t\t\t\taction: 2,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}),\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\treturn {\r\n\t\t\t\texecute: eventService.dispatchEvent(mx.SolutionBuilderAgent.Events.DialogActionExecuted, {\r\n\t\t\t\t\tview: sidePanelService.currentView,\r\n\t\t\t\t\taction: 0,\r\n\t\t\t\t}),\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tfunction trackTelemetry(eventName) {\r\n\t\ttry {\r\n\t\t\teventService.dispatchEvent(EventCodes.TrackViewTelemetry, { eventName: `{viewName} ${eventName}`, view: vm.view });\r\n\t\t} catch (e) {\r\n\t\t\t//do nothing\r\n\t\t}\r\n\t}\r\n\r\n\tfunction save() {\r\n\t\ttrackTelemetry('save clicked');\r\n\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.DialogActionExecuted, {\r\n\t\t\tview: vm.view,\r\n\t\t\taction: 1,\r\n\t\t});\r\n\t}\r\n\r\n\tfunction saveAndClose() {\r\n\t\ttrackTelemetry('done clicked');\r\n\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.DialogActionExecuted, {\r\n\t\t\tview: vm.view,\r\n\t\t\taction: 2,\r\n\t\t});\r\n\t}\r\n}\r\n","// Module\nvar code = \"
    \\r\\n\\r\\n\\t
    0 && !vm.view.hideActions || !vm.view.hideHeaderTitle\\\" class=\\\"mx-dialog-view--header\\\">\\r\\n\\t\\t
    \\r\\n\\t\\t\\t{{vm.view.displayName}}\\r\\n\\t\\t
    \\r\\n\\t\\t.\\r\\n\\r\\n\\t\\t 0 && !vm.view.hideActions\\\" class=\\\"mx-side-panel-details-view-actions\\\" actions=\\\"vm.view.__actions\\\" context=\\\"vm.view.context\\\" view=\\\"vm.view\\\">\\r\\n\\t\\t\\r\\n\\t
    \\r\\n\\r\\n\\t
    \\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
    \\r\\n\\r\\n\\t
    \\r\\n\\t\\t{{'shell.common.cancel' | mxi18n}}\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t{{'shell.common.save' | mxi18n}}\\r\\n\\t\\t\\r\\n\\r\\n\\r\\n\\t\\t{{ vm.doneLabel }}\\r\\n\\t\\t\\r\\n\\t
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n\\t

    \\r\\n\\t\\t{{'solutionBuilderAgent.noDesignedLayout.message' | mxi18n}}
    \\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{'solutionBuilderAgent.noDesignedLayout.linkText' | mxi18n}}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t

    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\";\n// Exports\nexport default code;","'use strict';\r\n\r\nexport class DialogFactory {\r\n\tstatic $inject = ['mx.shell.DetailsView', 'mx.SolutionBuilderAgent.ContentWidgetService'];\r\n\tconstructor(DetailsView, contentWidgetService) {\r\n\t\tthis.contentWidgetService = contentWidgetService;\r\n\t\tthis.DetailsView = DetailsView;\r\n\t\tthis.previewUiActionGroup = ['is_printable'];\r\n\t\tthis.dialogsActionGroup = [];\r\n\t}\r\n\r\n\t_createDialog(context, view, options) {\r\n\t\tconst dialogView = new this.DetailsView({\r\n\t\t\tid: options.id || context._id, //TODO: check the using and refactor view.id and view.type\r\n\t\t\ttype: context._type,\r\n\t\t\tname: context._name,\r\n\t\t\tdisplayName: context._displayName, // || i18n.get('solutionBuilderAgent.common.edit'),\r\n\t\t\tcontext: context,\r\n\r\n\t\t\ttemplate: '',\r\n\r\n\t\t\twidgetId: view.Id,\r\n\t\t\twidgetName: view.Name,\r\n\t\t\tmergeDisabled: view.MergeDisabled,\r\n\t\t\theaderIcon: view.EntityIcon,\r\n\t\t\theaderColor: view.EntityColor,\r\n\t\t\theaderTitle: view.EntityDisplayName,\r\n\t\t\thideHeaderTitle: view.HideHeaderTitle,\r\n\t\t\tpurpose: view.Purpose,\r\n\r\n\t\t\tdialogType: options.dialogType,\r\n\t\t\talwaysFullScreen: options.alwaysFullScreen,\r\n\t\t\tisRefreshable: options.isRefreshable,\r\n\t\t\tpresetFields: options.presetFields,\r\n\r\n\t\t\thideActions: options.hideActions,\r\n\t\t\tisSingleView: options.isSingleView,\r\n\t\t\treadOnly: options.readOnly,\r\n\r\n\t\t\tuiActionGroup: options.uiActionGroup,\r\n\r\n\t\t\tdialogInsteadOfPreview: options.dialogInsteadOfPreview,\r\n\r\n\t\t\tcontrollerParams: options.controllerParams,\r\n\t\t\tselectedObjects: options.selectedObjects,\r\n\r\n\t\t\tlocals: {\r\n\t\t\t\tcontext: context,\r\n\t\t\t\tentityDisplayName: view.EntityDisplayName,\r\n\r\n\t\t\t\touterContext: options.outerContext,\r\n\t\t\t\twidgetId: view.Id,\r\n\r\n\t\t\t\thideActions: options.hideActions,\r\n\t\t\t\tisSingleView: options.isSingleView,\r\n\t\t\t\treadOnly: options.readOnly,\r\n\t\t\t},\r\n\t\t});\r\n\t\tthis.contentWidgetService.setViewUrl(dialogView, view.Id, context);\r\n\r\n\t\tdialogView.locals.view = dialogView;\r\n\t\treturn dialogView;\r\n\t}\r\n\r\n\t_getUiActionGroups(objectType) {\r\n\t\t// TODO: Remove or rework when localizaion of service-based dialogs is implemented.\r\n\t\tconst groups = this.dialogsActionGroup.slice();\r\n\r\n\t\tif (objectType.indexOf('service_') !== 0) {\r\n\t\t\tgroups.push('localizable_view');\r\n\t\t}\r\n\r\n\t\treturn groups;\r\n\t}\r\n\r\n\tcreatePreview(context, view, options = {}) {\r\n\t\tObject.assign(options, {\r\n\t\t\tdialogType: mx.SolutionBuilderAgent.ContentWidgetDialogAction.Preview,\r\n\t\t\talwaysFullScreen: false,\r\n\t\t\tisRefreshable: true,\r\n\t\t\tuiActionGroup: this.previewUiActionGroup,\r\n\t\t});\r\n\t\treturn this._createDialog(context, view, options);\r\n\t}\r\n\r\n\tcreateEditDialog(context, view, options = {}) {\r\n\t\tObject.assign(options, {\r\n\t\t\tdialogType: mx.SolutionBuilderAgent.ContentWidgetDialogAction.Edit,\r\n\t\t\talwaysFullScreen: true,\r\n\t\t\tisRefreshable: true,\r\n\t\t\tuiActionGroup: this._getUiActionGroups(context._type),\r\n\t\t});\r\n\t\treturn this._createDialog(context, view, options);\r\n\t}\r\n\r\n\tcreateNewDialog(context, view, options = {}) {\r\n\t\tObject.assign(options, {\r\n\t\t\tdialogType: mx.SolutionBuilderAgent.ContentWidgetDialogAction.New,\r\n\t\t\talwaysFullScreen: true,\r\n\t\t\tuiActionGroup: this._getUiActionGroups(context._type),\r\n\t\t});\r\n\t\treturn this._createDialog(context, view, options);\r\n\t}\r\n}\r\n","'use strict';\r\nimport template from './dialog-content.html';\r\n\r\nexport const MxDialogContentComponent = {\r\n\tbindings: {\r\n\t\tcontentWidgetId: '=?',\r\n\t\tobjectId: '=?',\r\n\t\tview: '=?',\r\n\t\tenableConcurrencyTracking: '=?',\r\n\t\tdialogType: '=?',\r\n\t\textraContext: '=?',\r\n\t\tmergeDisabled: '<',\r\n\t},\r\n\tcontroller: MxCommonDialogContentCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n};\r\n\r\nMxCommonDialogContentCtrl.$inject = [\r\n\t'$scope',\r\n\t'$element',\r\n\t'$q',\r\n\t'$timeout',\r\n\t'mx.shell.EventService',\r\n\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n\t'mx.shell.SidePanelService',\r\n\t'mx.SolutionBuilderAgent.ConcurrencyTrackingService',\r\n\t'mx.shell.NotificationService',\r\n\t'mx.internationalization',\r\n\t'mx.SolutionBuilderAgent.designerOpener',\r\n\t'mx.app.DeviceService',\r\n\t'mx.shell.ActionProviderService',\r\n\t'mx.SolutionBuilderAgent.ExternalServiceManager',\r\n\t'mx.shell.AppsService',\r\n\t'mx.shell.ObjectMapper',\r\n\t'mx.SolutionBuilderAgent.mxColumnDefinitionService',\r\n\t'mx.SolutionBuilderAgent.DataModelService',\r\n\t'mx.SolutionBuilderAgent.SchemaService',\r\n\t'mx.SolutionBuilderAgent.DeepLinkingService',\r\n];\r\n\r\nexport function MxCommonDialogContentCtrl(\r\n\t$scope,\r\n\t$element,\r\n\t$q,\r\n\t$timeout,\r\n\teventService,\r\n\tcontentWidgetService,\r\n\tsidePanelService,\r\n\tconcurrencyTrackingService,\r\n\tnotificationService,\r\n\ti18n,\r\n\tdesignerOpener,\r\n\tdeviceService,\r\n\tactionProviderService,\r\n\texternalServiceManager,\r\n\tappService,\r\n\tobjectMapper,\r\n\tdataQueryService,\r\n\tdataModelService,\r\n\tschemaService,\r\n\tdeepLinkingService\r\n) {\r\n\tconst vm = this;\r\n\tlet defaultErrorMessage, statusDisabled;\r\n\tlet viewOptions = deepLinkingService.parseViewOptionsFromUrl();\r\n\r\n\tlet formReadOnly = false;\r\n\tlet reloadPageOnSave = false;\r\n\r\n\tObject.defineProperty(vm, 'formReadOnly', {\r\n\t\tget: function () {\r\n\t\t\treturn formReadOnly;\r\n\t\t},\r\n\t\tset: function (value) {\r\n\t\t\tformReadOnly = value;\r\n\r\n\t\t\tvm.updateFormStatus();\r\n\t\t},\r\n\t});\r\n\r\n\tvm.setFormReadOnly = function () {\r\n\t\tvm.readOnly = true; // this flag is set to mxForm.readOnly what is fired mxForm.onReadOnlyChanged and set value to formReadOnly\r\n\t};\r\n\r\n\tvm.subscriptions = [];\r\n\tvm.isDeleted = false;\r\n\r\n\tvm.dialogContainerViews = viewOptions && viewOptions.viewId ? [viewOptions.viewId] : undefined;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tif (vm.view.readOnly || (vm.view.parentView && vm.view.parentView.readOnly) || vm.view.dialogInsteadOfPreview) {\r\n\t\t\tvm.setFormReadOnly();\r\n\t\t}\r\n\t\tvm.entity = {};\r\n\t\tvm.entityName = undefined;\r\n\t\tvm.loaded = false;\r\n\t\tvm.errors = [];\r\n\t\tvm.onViewSubmit = onViewSubmit;\r\n\t\tvm.close = closeDialog;\r\n\t\tvm.confirm = true;\r\n\t\tvm.showWarning = false;\r\n\r\n\t\tvm.disabled = false;\r\n\t\tvm.reloadObject = reloadObject;\r\n\r\n\t\tvm.warningMessage = i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyObjectOutdated');\r\n\t\tvm.warningMessageButtonLabel = i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyConfirmYes');\r\n\t\tvm.warningMessageButtonHandler = function () {\r\n\t\t\treloadObject();\r\n\t\t};\r\n\r\n\t\tdefaultErrorMessage = i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.object-not-saved');\r\n\r\n\t\tstatusDisabled = false;\r\n\r\n\t\tif (!vm.contentWidgetId) {\r\n\t\t\tthrow new Error(i18n.get('solutionBuilderAgent.layouts.errors.content_widget_not_provided'));\r\n\t\t}\r\n\r\n\t\tif (!vm.objectId) {\r\n\t\t\tthrow new Error(i18n.get('solutionBuilderAgent.layouts.errors.object_identifier_is_not_provided'));\r\n\t\t}\r\n\r\n\t\tvm.objectDetailsMode = vm.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.Preview;\r\n\t\tvm.contextWidgetType = vm.objectDetailsMode ? mx.SolutionBuilderAgent.ContentWidgetType.ObjectDetails : mx.SolutionBuilderAgent.ContentWidgetType.Dialog;\r\n\r\n\t\tif (\r\n\t\t\t!vm.objectDetailsMode &&\r\n\t\t\tvm.enableConcurrencyTracking &&\r\n\t\t\tvm.objectId.toLowerCase() !== 'new' &&\r\n\t\t\tvm.dialogType !== mx.SolutionBuilderAgent.ContentWidgetDialogAction.New &&\r\n\t\t\t!externalServiceManager.isService(vm.entityName || vm.view.context._type)\r\n\t\t) {\r\n\t\t\tvm.subscriptions.push(subscribeConcurrency());\r\n\t\t}\r\n\r\n\t\tif (vm.view && vm.view.finishDefer) {\r\n\t\t\tvm.view.finishDefer.promise.catch(mx.logCatch).finally(function () {\r\n\t\t\t\tstopEditing();\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\tvm.disableSaveActions = function () {\r\n\t\tstatusDisabled = true;\r\n\t\tvm.formIsLoading = true;\r\n\t\tvm.updateFormStatus();\r\n\t};\r\n\r\n\tvm.enableSaveActions = function () {\r\n\t\tstatusDisabled = false;\r\n\t\tvm.formIsLoading = false;\r\n\t\tvm.updateFormStatus();\r\n\t};\r\n\r\n\tvm.setValidationStatus = function (isFormValid) {\r\n\t\tvm.isFormValid = isFormValid;\r\n\t\tvm.updateFormStatus();\r\n\t};\r\n\r\n\tvm.updateFormStatus = function () {\r\n\t\tvm.view.saveDisabled = statusDisabled || vm.formReadOnly || !vm.isFormValid;\r\n\t};\r\n\r\n\tvar _confirmationDialog = {};\r\n\tObject.defineProperty(vm, 'confirmationDialog', {\r\n\t\tget: function () {\r\n\t\t\treturn _confirmationDialog;\r\n\t\t},\r\n\t\tset: function (value) {\r\n\t\t\t_confirmationDialog = value;\r\n\t\t},\r\n\t});\r\n\r\n\tvar onChangeConfirmationDialogResultHandlers = [];\r\n\tvm.onChangeConfirmationDialogResult = function (callBack) {\r\n\t\tif (typeof callBack === 'function') {\r\n\t\t\tonChangeConfirmationDialogResultHandlers.push(callBack);\r\n\t\t}\r\n\t};\r\n\r\n\tObject.defineProperty(vm, 'confirmationDialogResult', {\r\n\t\tset: function (value) {\r\n\t\t\tonChangeConfirmationDialogResultHandlers.forEach(function (callback) {\r\n\t\t\t\tcallback(value);\r\n\t\t\t});\r\n\t\t},\r\n\t});\r\n\r\n\tvar eventDialogActionExecuted = eventService.subscribeTo(\r\n\t\tmx.SolutionBuilderAgent.Events.DialogActionExecuted,\r\n\t\tfunction (eventObj, params) {\r\n\t\t\tif (params.view === vm.view) {\r\n\t\t\t\tif (params.action === 0) {\r\n\t\t\t\t\tcloseDialog();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar enableConfirmationDialog =\r\n\t\t\t\t\t\tvm.confirmationDialog.enabled &&\r\n\t\t\t\t\t\t!(\r\n\t\t\t\t\t\t\tvm.confirmationDialog.disabledWhenNoChanges &&\r\n\t\t\t\t\t\t\tvm.view.context.$$initialEntity === dataModelService.serializeObject(dataModelService.cleanFromEmptyOptionalDataDefinition(vm.view.context))\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\tif (enableConfirmationDialog && Array.isArray(vm.confirmationDialog.actions) && vm.confirmationDialog.actions.length > 0) {\r\n\t\t\t\t\t\tvar dialogConfig = {\r\n\t\t\t\t\t\t\tid: 'ActionOnPreSaveDialog',\r\n\t\t\t\t\t\t\ttitle: vm.confirmationDialog.title,\r\n\t\t\t\t\t\t\tmessage: vm.confirmationDialog.message,\r\n\t\t\t\t\t\t\tactions: [],\r\n\t\t\t\t\t\t\tnotSaved: true,\r\n\t\t\t\t\t\t\tbuttonsInActionZone: true,\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tdialogConfig.actions = vm.confirmationDialog.actions\r\n\t\t\t\t\t\t\t.sort(function (a, b) {\r\n\t\t\t\t\t\t\t\treturn (a.position || 0) - (b.position || 0);\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t.map(function (item) {\r\n\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\tid: item.name,\r\n\t\t\t\t\t\t\t\t\ttitle: item.title,\r\n\t\t\t\t\t\t\t\t\tnotForSave: item.notSave,\r\n\t\t\t\t\t\t\t\t\tisConfirmButton: item.isConfirmButton,\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tsidePanelService.showConfirmationDialog(dialogConfig).then(function (answer) {\r\n\t\t\t\t\t\t\tvm.confirmationDialogResult = answer;\r\n\t\t\t\t\t\t\tvar button = _.find(vm.confirmationDialog.actions, { name: answer });\r\n\t\t\t\t\t\t\tif (button === undefined || !button.notSave) {\r\n\t\t\t\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t\t\t\tonViewSubmit(params.action === 2, params.view);\r\n\t\t\t\t\t\t\t\t}, 400);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tonViewSubmit(params.action === 2, params.view);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t$scope\r\n\t);\r\n\r\n\tvm.subscriptions.push(eventDialogActionExecuted);\r\n\r\n\tvar objectDataDeleted = eventService.subscribeTo(\r\n\t\tmx.SolutionBuilderAgent.Events.ObjectDataDeleted,\r\n\t\tfunction (eventObj, data) {\r\n\t\t\tif (data && Array.isArray(data.affectedObjectIds)) {\r\n\t\t\t\tvar closeCurrentView = data.affectedObjectIds.some(function (value) {\r\n\t\t\t\t\treturn vm.objectId.toLowerCase() === value.toLowerCase();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (closeCurrentView && sidePanelService.currentView !== vm.view) {\r\n\t\t\t\t\tcloseDialog();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t$scope\r\n\t);\r\n\r\n\tvm.subscriptions.push(objectDataDeleted);\r\n\r\n\t$element.on('$destroy', function () {\r\n\t\tstopEditing();\r\n\t\t$scope.$destroy();\r\n\t});\r\n\r\n\tObject.defineProperties(vm, {\r\n\t\tviewIsDirty: {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn vm.view.dirty;\r\n\t\t\t},\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tif (vm.view.dirty !== newValue) {\r\n\t\t\t\t\tvm.view.dirty = newValue;\r\n\t\t\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.ViewDirtyStatusChanged, vm.view);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t},\r\n\t\treloadPageOnSave: {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn reloadPageOnSave;\r\n\t\t\t},\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\treloadPageOnSave = newValue;\r\n\t\t\t},\r\n\t\t},\r\n\t});\r\n\r\n\treturn vm;\r\n\r\n\tfunction subscribeConcurrency() {\r\n\t\treturn concurrencyTrackingService.subscribe(vm.objectId, {\r\n\t\t\tchange: function (objectId, userId, username) {\r\n\t\t\t\tif (vm.confirm) {\r\n\t\t\t\t\tshowObjectChangedNotification(username, false);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdelete: function (objectId, userId, username) {\r\n\t\t\t\tvm.isDeleted = true;\r\n\t\t\t\tshowObjectDeletedNotification(username);\r\n\t\t\t},\r\n\t\t\tsubscribe: function (userName) {\r\n\t\t\t\tnotificationService.info(\r\n\t\t\t\t\ti18n.getFormatted(\r\n\t\t\t\t\t\t'solutionBuilderAgent.layouts.dialog.dialog-content.concurrencySubscribed',\r\n\t\t\t\t\t\tuserName || i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyUnknownUser'),\r\n\t\t\t\t\t\tgetDisplayName() || i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyConfirmDefaultItemName')\r\n\t\t\t\t\t)\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t\tunsubscribe: function (userName) {\r\n\t\t\t\tnotificationService.info(\r\n\t\t\t\t\ti18n.getFormatted(\r\n\t\t\t\t\t\t'solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyUnsubscribed',\r\n\t\t\t\t\t\tuserName || i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyUnknownUser'),\r\n\t\t\t\t\t\tgetDisplayName() || i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyConfirmDefaultItemName')\r\n\t\t\t\t\t)\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t\texist: function (userNames) {\r\n\t\t\t\tvar msg =\r\n\t\t\t\t\tuserNames.length === 1\r\n\t\t\t\t\t\t? i18n.getFormatted(\r\n\t\t\t\t\t\t\t\t'solutionBuilderAgent.layouts.dialog.dialog-content.concurrencySubscriptionExist',\r\n\t\t\t\t\t\t\t\tuserNames[0] || i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyUnknownUser'),\r\n\t\t\t\t\t\t\t\tgetDisplayName() || i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyConfirmDefaultItemName')\r\n\t\t\t\t\t\t )\r\n\t\t\t\t\t\t: i18n.getFormatted(\r\n\t\t\t\t\t\t\t\t'solutionBuilderAgent.layouts.dialog.dialog-content.concurrencySubscriptionsExist',\r\n\t\t\t\t\t\t\t\tuserNames.length,\r\n\t\t\t\t\t\t\t\tgetDisplayName() || i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyConfirmDefaultItemName')\r\n\t\t\t\t\t\t );\r\n\r\n\t\t\t\tnotificationService.info(msg);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction callFunctions(names) {\r\n\t\tif (!names.length) {\r\n\t\t\treturn $q.when();\r\n\t\t}\r\n\t\treturn $q.all(\r\n\t\t\tnames.map(function (m) {\r\n\t\t\t\treturn dataModelService.reloadSourceByPath(m, vm.entity, vm.contentWidgetId);\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tfunction onViewSubmit(saveAndClose) {\r\n\t\tvm.confirm = false;\r\n\t\tvar isNew = vm.entity[vm.entityName].IsNew; // Name\r\n\r\n\t\tvar savingFunctionNames = vm.widget.extensions.Sources.filter(function (w) {\r\n\t\t\treturn w.OnSaving;\r\n\t\t}).map(function (m) {\r\n\t\t\treturn m.Name;\r\n\t\t});\r\n\t\tvar savedFunctionNames = vm.widget.extensions.Sources.filter(function (w) {\r\n\t\t\treturn w.OnSaved;\r\n\t\t}).map(function (m) {\r\n\t\t\treturn m.Name;\r\n\t\t});\r\n\t\tvm.disableSaveActions();\r\n\r\n\t\treturn callFunctions(savingFunctionNames).then(\r\n\t\t\tfunction () {\r\n\t\t\t\treturn (\r\n\t\t\t\t\texternalServiceManager.isService(vm.widget.entity)\r\n\t\t\t\t\t\t? externalServiceManager.updateEntity(vm.widget.entity, vm.objectId, vm.entity[vm.entityName]).then(function (objectId) {\r\n\t\t\t\t\t\t\t\tvm.objectId = objectId;\r\n\t\t\t\t\t\t\t\tif (vm.entity === 'service_6886d8dc-51f8-e611-9382-f079595b3ec7') {\r\n\t\t\t\t\t\t\t\t\tschemaService.clearClasses();\r\n\t\t\t\t\t\t\t\t} else if (vm.entity === 'service_7b83787c-81f7-e611-9382-f079595b3ec7') {\r\n\t\t\t\t\t\t\t\t\tschemaService.clearTypes();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\tentity: vm.entity[vm.entityName],\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t })\r\n\t\t\t\t\t\t: $q\r\n\t\t\t\t\t\t\t\t.when(null, function () {\r\n\t\t\t\t\t\t\t\t\tvm.entity[vm.entityName].ID = vm.objectId;\r\n\t\t\t\t\t\t\t\t\treturn contentWidgetService.updateDialogData(vm.widget.id, vm.entity[vm.entityName]);\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t.then(function (data) {\r\n\t\t\t\t\t\t\t\t\tif (vm.view && vm.view.context) {\r\n\t\t\t\t\t\t\t\t\t\tvm.view.context._displayName = data.Entity['Sys-DisplayName'] || data.Entity['Sys-Name'];\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tif (isNew) {\r\n\t\t\t\t\t\t\t\t\t\tvm.objectId = data.Entity.ID;\r\n\t\t\t\t\t\t\t\t\t\tvm.name = data.Entity['Sys-Name'] || data.Entity['Sys-DisplayName'];\r\n\t\t\t\t\t\t\t\t\t\tif (vm.view && vm.view.context) {\r\n\t\t\t\t\t\t\t\t\t\t\tvm.view.context._name = vm.name;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\t\t\t\tdeviceService.screenDesktop() === true &&\r\n\t\t\t\t\t\t\t\t\t\t\t(vm.widget.entity === 'PDRContentWidgetTypeDialog' ||\r\n\t\t\t\t\t\t\t\t\t\t\t\tvm.widget.entity === 'PDRContentWidgetTypeList' ||\r\n\t\t\t\t\t\t\t\t\t\t\t\tvm.widget.entity === 'PDRContentWidgetTypeObjectDetails' ||\r\n\t\t\t\t\t\t\t\t\t\t\t\tvm.widget.entity === 'PDRContentWidgetTypeWizard' ||\r\n\t\t\t\t\t\t\t\t\t\t\t\tvm.widget.entity === 'PDRContentWidgetTypeEmail' ||\r\n\t\t\t\t\t\t\t\t\t\t\t\tvm.widget.entity === 'PDRContentWidgetTypeLandingPage')\r\n\t\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.NewWidgetCreated, vm.objectId);\r\n\t\t\t\t\t\t\t\t\t\t\tactionProviderService.getActions(true).then(function () {\r\n\t\t\t\t\t\t\t\t\t\t\t\teventService.dispatchEvent(mx.shell.EventCodes.NavigationReload);\r\n\t\t\t\t\t\t\t\t\t\t\t\tdesignerOpener.open(vm.widget.entity, vm.objectId);\r\n\t\t\t\t\t\t\t\t\t\t\t\tnotificationService.info(i18n.get('solutionBuilderAgent.services.contentWidget.popusBlocking'));\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t} else if (vm.widget.entity === 'PDRNavigationItemType') {\r\n\t\t\t\t\t\t\t\t\t\t\teventService.dispatchEvent(mx.shell.EventCodes.NavigationReload);\r\n\t\t\t\t\t\t\t\t\t\t} else if (vm.widget.entity === 'PDRActionType') {\r\n\t\t\t\t\t\t\t\t\t\t\tactionProviderService.getActions(true).then(function () {\r\n\t\t\t\t\t\t\t\t\t\t\t\teventService.dispatchEvent(mx.shell.EventCodes.NavigationReload);\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (!saveAndClose) {\r\n\t\t\t\t\t\t\t\t\t\t\tvm.subscriptions.push(subscribeConcurrency());\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t_.merge(vm.entity[vm.entityName], data.Entity);\r\n\r\n\t\t\t\t\t\t\t\t\t\tswitch (vm.widget.entity) {\r\n\t\t\t\t\t\t\t\t\t\t\tcase 'PDRDataQueryType':\r\n\t\t\t\t\t\t\t\t\t\t\t\tdataQueryService.removeFromCache(vm.objectId);\r\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\tcase 'SPSGlobalConfigurationType': {\r\n\t\t\t\t\t\t\t\t\t\t\t\tconst administrationSettingsDialogId = '7f02b055-475a-cd03-c022-08d3c0535c55';\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (vm.widget.id === administrationSettingsDialogId) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\teventService.dispatchEvent(mx.shell.EventCodes.NavigationReload);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tif (vm.widget.entity === 'PDRApplicationType') {\r\n\t\t\t\t\t\t\t\t\t\tappService.reloadApplications();\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tcallFunctions(savedFunctionNames).then(function () {});\r\n\r\n\t\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\t\tentity: objectMapper.mapItem(vm.entity[vm.entityName]),\r\n\t\t\t\t\t\t\t\t\t\tnewEntityType: data.Entity && vm.widget.entity !== data.Entity['Sys-Entity'] ? data.Entity['Sys-Entity'] : undefined,\r\n\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t).then(\r\n\t\t\t\t\tfunction (entityData) {\r\n\t\t\t\t\t\tif (vm.reloadPageOnSave) {\r\n\t\t\t\t\t\t\twindow.location.reload();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst entity = entityData.entity;\r\n\t\t\t\t\t\tvm.view.context = entity;\r\n\r\n\t\t\t\t\t\tvar newEntityType = entityData.newEntityType;\r\n\t\t\t\t\t\tnotificationService.success(i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.object-saved'));\r\n\t\t\t\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.SearchPageDataChanged, {\r\n\t\t\t\t\t\t\taffectedEntity: entity,\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (newEntityType) {\r\n\t\t\t\t\t\t\tvar oldEntityType = vm.entityName;\r\n\t\t\t\t\t\t\tvm.widget.entity = newEntityType;\r\n\t\t\t\t\t\t\tentity['Sys-Entity'] = newEntityType;\r\n\t\t\t\t\t\t\tentity._type = newEntityType;\r\n\r\n\t\t\t\t\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.ObjectTypeChanged, {\r\n\t\t\t\t\t\t\t\tobjectId: vm.objectId,\r\n\t\t\t\t\t\t\t\tentityType: oldEntityType,\r\n\t\t\t\t\t\t\t\tnewEntityType: newEntityType,\r\n\t\t\t\t\t\t\t\tdisplayName: entity['Sys-DisplayName'],\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.ObjectDataChanged, {\r\n\t\t\t\t\t\t\taffectedObjectIds: [vm.objectId],\r\n\t\t\t\t\t\t\tview: vm.view,\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (saveAndClose) {\r\n\t\t\t\t\t\t\tsubmitDialog(entity);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tif (isNew && !vm.view.context) {\r\n\t\t\t\t\t\t\t\tvm.view.context = objectMapper.mapItem(entity);\r\n\t\t\t\t\t\t\t\tvm.view.context._type = vm.view.context._type || vm.entityName || vm.view.type;\r\n\t\t\t\t\t\t\t\tvm.view.context._displayName = vm.view.context._name;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tvar newDialogType;\r\n\t\t\t\t\t\t\tif (vm.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.New) {\r\n\t\t\t\t\t\t\t\tnewDialogType = mx.SolutionBuilderAgent.ContentWidgetDialogAction.Edit;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (vm.view) {\r\n\t\t\t\t\t\t\t\t// if \"save\" button was clicked then finishDefer should will be resolved in any way\r\n\t\t\t\t\t\t\t\t// even if \"cancel\" button is clicked after \"save\"\r\n\t\t\t\t\t\t\t\t// for this case finishDefer is replaced for new defer\r\n\t\t\t\t\t\t\t\t// if finishDefer is rejected from side-panel (closeView) then saved entity will be re resolved to savedDefer\r\n\t\t\t\t\t\t\t\tif (!vm.view.savedDefer) {\r\n\t\t\t\t\t\t\t\t\tvm.view.savedDefer = vm.view.finishDefer;\r\n\t\t\t\t\t\t\t\t\tvm.view.finishDefer = $q.defer();\r\n\t\t\t\t\t\t\t\t\tvm.view.finishDefer.promise.catch(mx.logCatch).finally(function () {\r\n\t\t\t\t\t\t\t\t\t\tvm.view.savedDefer.resolve(entity);\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tvm.view.isRefreshable = true;\r\n\r\n\t\t\t\t\t\t\t\tif (newDialogType || newEntityType) {\r\n\t\t\t\t\t\t\t\t\teventService.dispatchEvent(mx.shell.EventCodes.RefreshCurrentView, {\r\n\t\t\t\t\t\t\t\t\t\tview: vm.view,\r\n\t\t\t\t\t\t\t\t\t\tnewDialogType: newDialogType,\r\n\t\t\t\t\t\t\t\t\t\tnewEntityType: newEntityType,\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\treloadObject();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvm.enableSaveActions();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfunction (error) {\r\n\t\t\t\t\t\tif (concurrencyTrackingService.isUpdateConflict(error)) {\r\n\t\t\t\t\t\t\tshowObjectChangedNotification('', saveAndClose);\r\n\t\t\t\t\t\t} else if (concurrencyTrackingService.isDeleted(error)) {\r\n\t\t\t\t\t\t\tvm.isDeleted = true;\r\n\t\t\t\t\t\t\tshowObjectDeletedNotification();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tvar errorData = error && error.data;\r\n\t\t\t\t\t\t\tvar errorMsg = (errorData && error.data.Message) || (typeof errorData === 'string' && errorData);\r\n\t\t\t\t\t\t\tvm.errors = [errorMsg || defaultErrorMessage];\r\n\t\t\t\t\t\t\tvm.enableSaveActions();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t\tfunction () {\r\n\t\t\t\tvm.enableSaveActions();\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tfunction getDisplayName() {\r\n\t\treturn vm.name || vm.view.name || '';\r\n\t}\r\n\r\n\tfunction showObjectDeletedNotification(userName) {\r\n\t\tuserName = userName || '';\r\n\r\n\t\tconcurrencyTrackingService.showObjectDeletedNotification(userName, getDisplayName(), vm.view).then(function (answer) {\r\n\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.SearchPageDataChanged);\r\n\r\n\t\t\tif (answer === 'close') {\r\n\t\t\t\tcloseDialog(vm.view);\r\n\t\t\t} else {\r\n\t\t\t\tsetObjectDeleted();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction showObjectChangedNotification(userName = '', saveAndClose = false) {\r\n\t\tvm.confirm = false;\r\n\t\tvar entity = vm.entity[vm.entityName];\r\n\r\n\t\tconcurrencyTrackingService\r\n\t\t\t.showObjectChangedNotification(userName || '', getDisplayName(), {\r\n\t\t\t\tview: vm.view,\r\n\t\t\t\tentityName: vm.entityName,\r\n\t\t\t\tstartEntityValue: entity.$$initialEntity,\r\n\t\t\t\tfinishEntityValue: dataModelService.serializeObject(dataModelService.cleanFromEmptyOptionalDataDefinition(entity)),\r\n\t\t\t\twidgetId: vm.widget.id,\r\n\t\t\t\tobjectId: vm.objectId,\r\n\t\t\t})\r\n\t\t\t.then(function (data) {\r\n\t\t\t\tswitch (data.answer) {\r\n\t\t\t\t\tcase 'merge':\r\n\t\t\t\t\t\t_.merge(vm.entity[vm.entityName], data.entity);\r\n\t\t\t\t\t\tif (data.save) {\r\n\t\t\t\t\t\t\tonViewSubmit(false, vm.view);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tvm.confirm = true;\r\n\t\t\t\t\t\t\tvm.enableSaveActions();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'reload':\r\n\t\t\t\t\t\treloadObject();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'cancel':\r\n\t\t\t\t\t\tif (vm.view.mergeDisabled) {\r\n\t\t\t\t\t\t\tsetObjectOutdated();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tvm.confirm = true;\r\n\t\t\t\t\t\t\tvm.enableSaveActions();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'no-changes':\r\n\t\t\t\t\t\tif (saveAndClose) {\r\n\t\t\t\t\t\t\tsubmitDialog(entity);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tvm.confirm = true;\r\n\t\t\t\t\t\t\tvm.enableSaveActions();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tfunction setObjectOutdated() {\r\n\t\tvm.formIsLoading = false;\r\n\t\tvm.showWarning = true;\r\n\t\tvm.warningMessage = i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyObjectOutdated');\r\n\t\tvm.setFormReadOnly();\r\n\t}\r\n\r\n\tfunction setObjectDeleted() {\r\n\t\tvm.formIsLoading = false;\r\n\t\tvm.errors = [\r\n\t\t\t{\r\n\t\t\t\tmessage: i18n.get('solutionBuilderAgent.layouts.dialog.dialog-content.concurrencyObjectDeleted'),\r\n\t\t\t\ttype: 'warning',\r\n\t\t\t\tactive: true,\r\n\t\t\t},\r\n\t\t];\r\n\t\tvm.setFormReadOnly();\r\n\t}\r\n\r\n\tfunction reloadObject() {\r\n\t\teventService.dispatchEvent(mx.shell.EventCodes.RefreshCurrentView, {\r\n\t\t\tview: vm.view,\r\n\t\t});\r\n\t}\r\n\r\n\tfunction unsubscribeFromEvents() {\r\n\t\tvm.subscriptions.forEach(function (unsubscribe) {\r\n\t\t\tunsubscribe();\r\n\t\t});\r\n\r\n\t\tvm.subscriptions = [];\r\n\t}\r\n\r\n\tfunction stopEditing() {\r\n\t\tunsubscribeFromEvents();\r\n\t}\r\n\r\n\tfunction submitDialog(entity) {\r\n\t\tif (vm.view) {\r\n\t\t\tif (vm.view.finishDefer) {\r\n\t\t\t\tvm.view.finishDefer.resolve(entity);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction closeDialog() {\r\n\t\tif (vm.view) {\r\n\t\t\tif (vm.view.finishDefer) {\r\n\t\t\t\tvm.view.finishDefer.reject(mx.noLogCatchMessage('close dialog'));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","// Module\nvar code = \"\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\";\n// Exports\nexport default code;","'use strict';\r\n\r\nimport template from './mx-dialog-container.html';\r\n\r\nexport const MxDialogContainerComponent = {\r\n\tbindings: {\r\n\t\tcontentWidgetId: '=?',\r\n\t\tobjectId: '=?',\r\n\t\tview: '=?',\r\n\t\tonValidationChanged: '&',\r\n\t\tdialogType: '=?',\r\n\t\tpreviewObject: ' -1) {\r\n\t\t\t\tvm.parentMxWizard.__externalValidators.splice(idx, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t\tfreeDataSourceDefer.resolve(true);\r\n\t\tlocalizationModeHelper.destroyCustomEditorInstances();\r\n\t};\r\n\r\n\t// Localization mode\r\n\tvar _openLocalozationDialog;\r\n\teventService.subscribeTo(\r\n\t\tmx.shell.EventCodes.SwitchLocalizationMode,\r\n\t\tfunction (_, incommingParams) {\r\n\t\t\tif (vm.view !== incommingParams.view) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (incommingParams.view.__localizationModeEnabled) {\r\n\t\t\t\t(vm.entity && (vm.entity['Sys-IsNew'] || vm.entity.__localizationDataLoaded)\r\n\t\t\t\t\t? $q.when(vm.entity)\r\n\t\t\t\t\t: contentWidgetService.getDialogData(vm.widget.id, vm.objectId, vm.context._archived, true, makeContextParams()).then(function (res) {\r\n\t\t\t\t\t\t\treturn res.entity;\r\n\t\t\t\t\t })\r\n\t\t\t\t).then(function (entity) {\r\n\t\t\t\t\tvm.entity.__localizationDataLoaded = true;\r\n\r\n\t\t\t\t\tlocalizationModeHelper.enableMode($element);\r\n\r\n\t\t\t\t\tvar localizableModels = [];\r\n\t\t\t\t\tvar _localizableModelsCollector = function (fieldName) {\r\n\t\t\t\t\t\tlocalizableModels.push('vm.dataModel.' + entity['Sys-Entity'] + '.' + key.slice(0, -3) + '.' + fieldName);\r\n\t\t\t\t\t};\r\n\t\t\t\t\tfor (var key in entity) {\r\n\t\t\t\t\t\t// If Key ends with \"-CI\"\r\n\t\t\t\t\t\tif (entity.hasOwnProperty(key) && key.lastIndexOf('-CI') + 3 === key.length && entity[key].fields) {\r\n\t\t\t\t\t\t\tvm.entity[key] = entity[key];\r\n\t\t\t\t\t\t\t// if it has 'Rows' key - it's for `ClassColumns` but we need just for `ClassBases`\r\n\t\t\t\t\t\t\tif (!entity[key].Rows) {\r\n\t\t\t\t\t\t\t\tentity[key].fields.forEach(_localizableModelsCollector);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlocalizationModeHelper.applyStylesForControls($element, localizableModels);\r\n\r\n\t\t\t\t\t_openLocalozationDialog = function (event) {\r\n\t\t\t\t\t\t_handleLocalizationDialogAppearance(event, _prepareLocalizedResult, localizableModels, entity, vm.entity);\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// Handle events\r\n\t\t\t\t\t$(localizationModeHelper.dialogSelector)[0].addEventListener('click', _openLocalozationDialog, true);\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\t$(localizationModeHelper.dialogSelector)[0].removeEventListener('click', _openLocalozationDialog, true);\r\n\t\t\t\tlocalizationModeHelper.disableMode($element);\r\n\t\t\t}\r\n\t\t},\r\n\t\t$scope\r\n\t);\r\n\r\n\treturn vm;\r\n\r\n\tfunction setDialogType() {\r\n\t\tvar isNewObject = !vm.objectId || vm.objectId === 'new';\r\n\t\tvar typeDependsFromViews = !isNewObject && vm.entityName && vm.objectId && (vm.previewObject || vm.context._previewMode);\r\n\r\n\t\treturn (typeDependsFromViews ? widgetManager.getPreviews(vm.entityName) : $q.when(null)).then(function (previews) {\r\n\t\t\tif (previews && previews.length) {\r\n\t\t\t\tvm.objectDetailsMode = true;\r\n\t\t\t\tvm.dialogType = mx.SolutionBuilderAgent.ContentWidgetDialogAction.Preview;\r\n\t\t\t} else {\r\n\t\t\t\tvm.objectDetailsMode = vm.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.Preview;\r\n\t\t\t\tif (isNewObject) {\r\n\t\t\t\t\tvm.dialogType = mx.SolutionBuilderAgent.ContentWidgetDialogAction.New;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvm.dialogType = vm.dialogType || mx.SolutionBuilderAgent.ContentWidgetDialogAction.Edit;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction initWidget() {\r\n\t\tif (vm.entityName) {\r\n\t\t\tvar entityNameIsId = /^[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i.test(vm.entityName);\r\n\t\t\treturn schemaService.getType(vm.entityName, entityNameIsId).then(reInitWidget);\r\n\t\t} else {\r\n\t\t\treturn loadWidget();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction reInitWidget(entityInfo) {\r\n\t\tchangeEntityName(entityInfo ? entityInfo.InternalName : null);\r\n\r\n\t\tif (vm.watchEntityData) {\r\n\t\t\t$scope.$watch(\r\n\t\t\t\t'vm.entityDataModel',\r\n\t\t\t\tfunction (newData) {\r\n\t\t\t\t\tif (newData) {\r\n\t\t\t\t\t\tvm.entityData = JSON.stringify(vm.entityName ? newData[vm.entityName] : newData);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\ttrue\r\n\t\t\t);\r\n\t\t}\r\n\t\tvm.viewParameters = { dataModel: vm.entityDataModel };\r\n\r\n\t\treturn widgetManager.getSortedViews(vm.entityName).then(function (views) {\r\n\t\t\tvar firstView;\r\n\t\t\tif (!vm.contentWidgetId) {\r\n\t\t\t\tfirstView = findSuitableView(views);\r\n\t\t\t\tif (firstView) {\r\n\t\t\t\t\tvm.contentWidgetId = firstView.Id;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t//vm.showNoFormMessage = true;\r\n\t\t\t\t\tthrow new Error(i18n.get('solutionBuilderAgent.components.mx-dialog-container.noDialogFound'));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (vm.view && firstView) {\r\n\t\t\t\tvm.view.headerTitle = firstView.EntityDisplayName;\r\n\t\t\t\tvm.view.headerIcon = firstView.EntityIcon;\r\n\t\t\t\tvm.view.headerColor = firstView.EntityColor;\r\n\t\t\t\tvm.view.purpose = firstView.Purpose;\r\n\r\n\t\t\t\tif (vm.view.locals) {\r\n\t\t\t\t\tvm.view.locals.widgetId = vm.contentWidgetId;\r\n\t\t\t\t\tvm.view.locals.entityDisplayName = firstView.EntityDisplayName;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn loadWidget();\r\n\t\t});\r\n\t}\r\n\r\n\tfunction findSuitableView(views) {\r\n\t\treturn widgetManager.filterViews(views, vm.dialogType)[0];\r\n\t}\r\n\r\n\tfunction changeEntityName(newValue) {\r\n\t\tif (typeof entityWatcher === 'function') {\r\n\t\t\tentityWatcher();\r\n\t\t}\r\n\t\tvm.entityName = newValue;\r\n\t\t$scope.$evalAsync(function () {\r\n\t\t\tentityWatcher = $scope.$watch('vm.entityName', onDialogEssentialsChanged);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction onDialogEssentialsChanged(newValue, oldValue) {\r\n\t\tif (newValue !== oldValue) {\r\n\t\t\tvm.contentWidgetId = null;\r\n\t\t\t// vm.objectId = 'new';\r\n\t\t\tinitWidget();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction registerHotkeys() {\r\n\t\tkeyboardNavigationService.registerKey([\r\n\t\t\t{\r\n\t\t\t\tkey: 'alt+shift+right',\r\n\t\t\t\thint: '⇧+→',\r\n\t\t\t\tdescription: i18n.get('solutionBuilderAgent.components.mx-dialog-container.next'),\r\n\t\t\t\tcallback: function () {\r\n\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t$('.mx-dialog-content--inner > md-tabs md-tab-item.md-active:visible:first').next().click();\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkey: 'alt+shift+left',\r\n\t\t\t\thint: '⇧+←',\r\n\t\t\t\tdescription: i18n.get('solutionBuilderAgent.components.mx-dialog-container.previous'),\r\n\t\t\t\tcallback: function () {\r\n\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t$('.mx-dialog-content--inner > md-tabs md-tab-item.md-active:visible:first').prev().click();\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t]);\r\n\t}\r\n\r\n\tfunction loadWidget() {\r\n\t\treturn $q.all([loadData(), loadTemplate()]).then(function (data) {\r\n\t\t\tconst entityData = data[0];\r\n\t\t\treturn onLoadEntity(entityData.entity, vm.widget.extensions, entityData.isService);\r\n\t\t}, handleDialogError);\r\n\t}\r\n\r\n\tasync function handleDialogError(e) {\r\n\t\tif (\r\n\t\t\te.message?.indexOf(i18n.get('solutionBuilderAgent.components.mx-dialog-container.noDialogFound')) > -1 ||\r\n\t\t\te === mx.warnCatchMessage('User has no permissions for necessary application (or application is not found)')\r\n\t\t) {\r\n\t\t\tcontentWidgetService.checkViewUnavailableReasons(vm.entityName, vm.dialogType).then(\r\n\t\t\t\tfunction () {\r\n\t\t\t\t\tvm.showNoDataMessage = true;\r\n\t\t\t\t\tvm.errorMessage = e;\r\n\t\t\t\t},\r\n\t\t\t\tfunction (error) {\r\n\t\t\t\t\tvm.showNoDataMessage = true;\r\n\t\t\t\t\tvm.errorMessage = error.message || error;\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t\treturn;\r\n\t\t} else if (e?.key === 'Matrix42.Pandora.BizLogic.ContentWidget.ObjectIsDeleted') {\r\n\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.ObjectDataDeleted, { affectedObjectIds: [vm.objectId] });\r\n\t\t}\r\n\r\n\t\tconsole.error(e.message || e);\r\n\t\tvm.showNoDataMessage = true;\r\n\t\tvm.errorMessage = e.message || e;\r\n\t\tvm.errorTitle = e.title;\r\n\t}\r\n\r\n\tfunction loadTemplate() {\r\n\t\treturn contentWidgetService.getHtml(vm.contentWidgetId, vm.objectId === 'new').then(function (widgetData) {\r\n\t\t\tif (widgetData && widgetData.Template.Views && widgetData.Entity) {\r\n\t\t\t\tvar extensions = widgetData.Template.DataModelExtensions ? JSON.parse(widgetData.Template.DataModelExtensions) || {} : {};\r\n\r\n\t\t\t\tvm.widget = {\r\n\t\t\t\t\tid: widgetData.Id,\r\n\t\t\t\t\tentity: widgetData.Entity,\r\n\t\t\t\t\textensions: extensions,\r\n\t\t\t\t\tnonVisualTemplate: widgetData.Template.NonVisualTemplate,\r\n\t\t\t\t\tviews: widgetData.Template.Views.sort(function (view1, view2) {\r\n\t\t\t\t\t\treturn (view1.Position || 0) - (view2.Position || 0);\r\n\t\t\t\t\t}),\r\n\t\t\t\t\thelpSourceType: widgetData.HelpSourceType || 0,\r\n\t\t\t\t\thelpValue: widgetData.HelpValue || '',\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (Array.isArray(vm.availableViews) && vm.availableViews.length > 0) {\r\n\t\t\t\t\tvar filteredViews = vm.widget.views.filter(function (r, i) {\r\n\t\t\t\t\t\t// We have to always show 1st view for `Create New Dialog` (not necessary for `Edit Dialog`)\r\n\t\t\t\t\t\t// because it may contains Mandatory input-fields without which Dialog couldn't be submitted.\r\n\t\t\t\t\t\t// PBI: #120379\r\n\t\t\t\t\t\treturn vm.availableViews.indexOf(r.Id) >= 0 || (vm.objectId === 'new' && i === 0);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tif (filteredViews.length > 0) {\r\n\t\t\t\t\t\tvm.widget.views = filteredViews;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!vm.view) {\r\n\t\t\t\t\tvm.view = {\r\n\t\t\t\t\t\tid: vm.widget.id,\r\n\t\t\t\t\t\tentity: vm.widget.entity,\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.isSingleView = Boolean(vm.isSingleView);\r\n\t\t\t\tif (!vm.isSingleView) {\r\n\t\t\t\t\t// take from locals (quickLink) or from parent objectDetails\r\n\t\t\t\t\tvm.isSingleView = Boolean(vm.view.isSingleView || (vm.view.locals && vm.view.locals.isSingleView) || (vm.view.parentView && vm.view.parentView.isSingleView));\r\n\t\t\t\t\t// or if we have only one view (could be [0] or any other view - from deeplinking)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.view.tabs = vm.widget.views.sort((a, b) => {\r\n\t\t\t\t\tif (a.Position !== b.Position) {\r\n\t\t\t\t\t\treturn a.Position - b.Position;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn a.Key === b.Key ? 0 : a.Key > b.Key ? 1 : -1;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (Array.isArray(vm.view.tabs) && vm.view.tabs.length) {\r\n\t\t\t\t\tvm.view.selectedTab = vm.view.tabs[0];\r\n\r\n\t\t\t\t\tif (vm.isSingleView || vm.widget.views.length === 1) {\r\n\t\t\t\t\t\tvm.view.tabs.forEach(function (tab) {\r\n\t\t\t\t\t\t\ttab.visible = false;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvm.view.tabs.forEach((tab) => {\r\n\t\t\t\t\t\ttab.serviceContextInfo = {\r\n\t\t\t\t\t\t\twidgetId: vm.contentWidgetId,\r\n\t\t\t\t\t\t\tviewName: tab.Key,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (vm.view.correspondingUrl) {\r\n\t\t\t\t\tvar extObj = {};\r\n\t\t\t\t\tif (vm.view.hideActions) {\r\n\t\t\t\t\t\textObj.ext = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (vm.isSingleView) {\r\n\t\t\t\t\t\textObj.std = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (vm.view.readOnly) {\r\n\t\t\t\t\t\textObj.nda = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (Object.keys(extObj).length) {\r\n\t\t\t\t\t\tcontentWidgetService.extendCorrespondingUrl(vm.view, extObj);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.view.helpSourceType = vm.widget.helpSourceType;\r\n\t\t\t\tvm.view.helpValue = vm.widget.helpValue;\r\n\t\t\t} else {\r\n\t\t\t\treturn $q.reject('Data for widget id=' + vm.contentWidgetId + ' was not found');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction loadData() {\r\n\t\tvm.loaded = false;\r\n\t\treturn contentWidgetService.getWidgetInfoById(vm.contentWidgetId).then(function (widgetInfo) {\r\n\t\t\tif (!widgetInfo) {\r\n\t\t\t\tthrow new Error(i18n.get('solutionBuilderAgent.components.mx-dialog-container.noDialogFound'));\r\n\t\t\t}\r\n\r\n\t\t\tvar isService = externalServiceManager.isService(widgetInfo.Entity);\r\n\t\t\treturn (isService ? getServiceEntity(widgetInfo.Entity) : getGenericEntity(widgetInfo.Entity)).then(function (entity) {\r\n\t\t\t\tentity.IsNew = entity['Sys-IsNew'];\r\n\r\n\t\t\t\tif (vm.view && i18n.isNotEmpty(entity._displayName)) {\r\n\t\t\t\t\tif (!vm.view.name) {\r\n\t\t\t\t\t\tvm.view.name = entity._displayName || '';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvm.view.displayName = vm.view.displayName || '';\r\n\r\n\t\t\t\t\tif (entity._displayName && entity._displayName !== vm.view.displayName) {\r\n\t\t\t\t\t\tvm.view.displayName = entity._displayName;\r\n\t\t\t\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.ObjectDisplayNameChanged, {\r\n\t\t\t\t\t\t\tobjectId: vm.objectId,\r\n\t\t\t\t\t\t\tentityType: vm.entityName,\r\n\t\t\t\t\t\t\tdisplayName: vm.view.displayName,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tentity: entity,\r\n\t\t\t\t\tisService: isService,\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction makeContextParams() {\r\n\t\tvar context = {};\r\n\t\tif (vm.view && vm.view.startedFromAction) {\r\n\t\t\tcontext['mx-action-name'] = vm.view.startedFromAction.name;\r\n\t\t}\r\n\t\treturn context;\r\n\t}\r\n\r\n\tfunction getGenericEntity(entityName) {\r\n\t\tchangeEntityName(entityName);\r\n\t\tif (vm.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.New) {\r\n\t\t\treturn contentWidgetService\r\n\t\t\t\t.getNewDialogData(vm.contentWidgetId, vm.view && vm.view.controllerParams, vm.view && vm.view.selectedObjects, makeContextParams())\r\n\t\t\t\t.then(function (object) {\r\n\t\t\t\t\tvm.objectId = object.entity._id;\r\n\t\t\t\t\tvm.displayStrings = object.displayStrings;\r\n\t\t\t\t\treturn angular.merge(object.entity, vm.entity);\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\treturn contentWidgetService.getDialogData(vm.contentWidgetId, vm.objectId, vm.context._archived, false, makeContextParams()).then(function (object) {\r\n\t\t\t\tvm.displayStrings = object.displayStrings;\r\n\t\t\t\treturn object.entity;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getServiceEntity(entityName) {\r\n\t\treturn externalServiceManager.getEntity(entityName, vm.objectId).then(function (data) {\r\n\t\t\tchangeEntityName(data.entityName); // Name\r\n\t\t\treturn data.object;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction reloadDialogData() {\r\n\t\treturn loadData().then(function (entityData) {\r\n\t\t\treturn onLoadEntity(entityData.entity, vm.widget.extensions, entityData.isService);\r\n\t\t}, handleDialogError);\r\n\t}\r\n\r\n\tfunction prepareContext(entity) {\r\n\t\tconst presetFields = $.extend(true, {}, vm.presetFields || {});\r\n\t\tvar presetContext = presetFields.Context || {};\r\n\t\tdelete presetFields.Context;\r\n\t\t$.extend(true, entity, presetFields);\r\n\r\n\t\tvar ctx = {\r\n\t\t\tWidgetId: vm.widget.id,\r\n\t\t\tOuterContext: vm.view && vm.view.locals && vm.view.locals.outerContext,\r\n\t\t};\r\n\t\tctx[mx.SolutionBuilderAgent.DataModelSystemProperty.Shared] = contextService.val('ApplicationSharedContext');\r\n\r\n\t\tif (vm.view) {\r\n\t\t\tif (vm.view.startedFromAction) {\r\n\t\t\t\tctx.ActionName = vm.view.startedFromAction.name;\r\n\t\t\t}\r\n\r\n\t\t\tvar item =\r\n\t\t\t\tArray.isArray(vm.view.selectedObjects) && vm.view.selectedObjects.length > 0\r\n\t\t\t\t\t? vm.view.selectedObjects[0]\r\n\t\t\t\t\t: vm.view.context && vm.view.context._id\r\n\t\t\t\t\t? vm.view.context\r\n\t\t\t\t\t: { _id: '', _type: '', _displayName: '' };\r\n\r\n\t\t\tctx.Object = $.extend(true, item, {\r\n\t\t\t\tId: item._id,\r\n\t\t\t\tType: item._type,\r\n\t\t\t\tDisplayName: item._displayName,\r\n\t\t\t});\r\n\t\t}\r\n\t\t$.extend(true, ctx, presetContext);\r\n\r\n\t\treturn ctx;\r\n\t}\r\n\r\n\tfunction onLoadEntity(entity, dataModelExtensions, isService) {\r\n\t\tvar context = prepareContext(entity);\r\n\t\treturn dataModelService\r\n\t\t\t.loadDialogDataModel(vm.entityName, entity, context, dataModelExtensions, freeDataSourceDefer.promise, isService)\r\n\t\t\t.then(function (filledObject) {\r\n\t\t\t\tvm.entityDataModel = filledObject;\r\n\t\t\t\tvm.entity = vm.entityDataModel[vm.entityName];\r\n\r\n\t\t\t\tif (vm.mxForm && vm.entity && !vm.entity.IsNew && vm.entity._archived) {\r\n\t\t\t\t\t// To support legacy code it is used form.readOnly.\r\n\t\t\t\t\t// Should be used dialog.readOnly instead of mxFrom.readonly here, and all components should use dialog.readOnly flag (dialogs tree instead of one mxForm)\r\n\t\t\t\t\tvm.mxForm.setExternalReadOnly(true, 'mxDialogContainerIsArchived');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tObject.defineProperty(vm.entity, '$$initialEntity', {\r\n\t\t\t\t\tenumerable: false,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tvalue: dataModelService.serializeObject(dataModelService.cleanFromEmptyOptionalDataDefinition(vm.entity)),\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvm.name = vm.entityDataModel[vm.entityName]._name; // Name\r\n\t\t\t\tvm.entityDataModel.entityName = dataModelExtensions.entityName;\r\n\r\n\t\t\t\tif (vm.view) {\r\n\t\t\t\t\tif (i18n.isNotEmpty(vm.name) || !vm.view.name) {\r\n\t\t\t\t\t\tvm.view.name = vm.name;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvm.view.context = vm.entityDataModel[vm.entityName];\r\n\t\t\t\t\tif (vm.view.locals && vm.view.locals.selectedObjects && vm.view.locals.selectedObjects.length === 1) {\r\n\t\t\t\t\t\tvm.view.locals.selectedObjects[0] = vm.view.context;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then(function () {\r\n\t\t\t\tif (vm.widget.views.length === 1 || vm.isSingleView) {\r\n\t\t\t\t\tvm.singleView = vm.widget.views[0];\r\n\t\t\t\t\tvm.singleViewServiceContextInfo = vm.view.tabs[0]?.serviceContextInfo;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.showNoFormMessage = vm.widget.views.length === 0;\r\n\t\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.ViewDataLoaded, vm.view);\r\n\t\t\t\tif (Boolean(vm.view.__localizationModeEnabled) === true) {\r\n\t\t\t\t\t$(localizationModeHelper.dialogSelector)[0].removeEventListener('click', _openLocalozationDialog, true);\r\n\t\t\t\t\tlocalizationModeHelper.disableMode($element);\r\n\t\t\t\t\teventService.dispatchEvent(mx.shell.EventCodes.SwitchLocalizationMode, { view: vm.view });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar isManualActionCalculationEnabled = (vm.widget.nonVisualTemplate || '').indexOf('= 0;\r\n\t\t\t\tif (!isManualActionCalculationEnabled) {\r\n\t\t\t\t\tsidePanelActionsService.calculateViewActions(vm.view);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.loaded = true;\r\n\r\n\t\t\t\t$scope.$applyAsync(function () {\r\n\t\t\t\t\t$element.find('.mx-dialog-content').trigger('focus');\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\tfunction _handleLocalizationDialogAppearance(event, dialogSavedCallback, localizableModels, sourceEntity, entityToBeSaved) {\r\n\t\tvar controlElm = localizationModeHelper.preventUsualControlHandler(event, localizableModels);\r\n\t\tif (controlElm) {\r\n\t\t\tvar modelInfo = localizationModeHelper.getModelInfoFromElement(controlElm);\r\n\t\t\tvar entityClass = modelInfo.modelPath[3];\r\n\t\t\tlocalizationModeHelper\r\n\t\t\t\t.openLocalizationDialog(\r\n\t\t\t\t\tcontrolElm,\r\n\t\t\t\t\tsourceEntity[entityClass][modelInfo.fieldKey],\r\n\t\t\t\t\tsourceEntity[entityClass + '-CI'],\r\n\t\t\t\t\tentityToBeSaved[entityClass][modelInfo.fieldKey]\r\n\t\t\t\t)\r\n\t\t\t\t.then(function (params) {\r\n\t\t\t\t\tdialogSavedCallback(params.localizedField, entityToBeSaved, modelInfo.fieldKey, entityClass, params.currentLang);\r\n\t\t\t\t}, angular.noop);\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfunction _prepareLocalizedResult(localizedField, entityToBeSaved, fieldKey, entityClass, currentLang) {\r\n\t\tentityToBeSaved['Sys-AllCulturesLoaded'] = true;\r\n\r\n\t\tvar object = entityToBeSaved[entityClass];\r\n\t\tvar objectCI = entityToBeSaved[entityClass + '-CI'];\r\n\r\n\t\tif (objectCI) {\r\n\t\t\tlocalizationModeHelper.applyTranslations(localizedField, fieldKey, objectCI);\r\n\t\t}\r\n\r\n\t\tobject[fieldKey] = localizationModeHelper.getValueWithFallback(localizedField, currentLang);\r\n\t}\r\n}\r\n","// Module\nvar code = \"
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\t
    \\r\\n\\r\\n\\t\\t
    -1 && vm.useExternalTabManager\\\" mx-service-context=\\\"vm.entityDataModel\\\" mx-service-context-info=\\\"tab.serviceContextInfo\\\">\\r\\n\\t\\t\\t -1\\\" view=\\\"tab\\\" data-parameters=\\\"vm.entityDataModel\\\" class=\\\"layout-column\\\">\\r\\n\\t\\t
    \\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{::tab.Title}}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t -1\\\" view=\\\"tab\\\" data-parameters=\\\"vm.entityDataModel\\\" class=\\\"layout-column\\\">\\r\\n\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t
    \\r\\n\\t\\t\\t
    \\r\\n\\t\\t
    \\r\\n\\r\\n\\t
    \\r\\n\\r\\n\\t
    \\r\\n\\t\\t\\r\\n\\t
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\t\\r\\n\\t\\r\\n\\t\\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n\\t{{'solutionBuilderAgent.components.mx-dialog-container.noDialogFound' | mxi18n}}\\r\\n
    \\r\\n\\r\\n\";\n// Exports\nexport default code;","'use strict';\r\n\r\nexport const MxDialogManager = {\r\n\trequire: {\r\n\t\tmxCommonDialogContentCtrl: '?^mxCommonDialogContent',\r\n\t\tmxDialogViewCtrl: '?^mxDialogView',\r\n\t},\r\n\tbindings: {\r\n\t\ttriggerDataReload: '<',\r\n\t\tviewsToHide: '<',\r\n\t\tconfirmationDialogEnabled: '@?',\r\n\t\tconfirmationDialogDisabledWhenNoChanges: '@?',\r\n\t\tconfirmationDialogTitle: '@?',\r\n\t\tconfirmationDialogMessage: '@?',\r\n\t\tconfirmationDialogActions: ' tab.visible);\r\n\t\t}\r\n\t};\r\n\r\n\tvm.reloadApplicationOnSaveChangeHandler = function (reload) {\r\n\t\tif (reload !== undefined) {\r\n\t\t\tdialogContentCtrl.reloadPageOnSave = reload === 'true';\r\n\t\t\tdialogViewCtrl.hideSaveButton(reload === 'true');\r\n\t\t\tdialogViewCtrl.setDoneButtonLabel(reload === 'true' && i18n.get('solutionBuilderAgent.layouts.dialog.dialog-manager.saveAndReloadApplication'));\r\n\t\t}\r\n\t};\r\n\r\n\tvm.triggerDataReloadChangeHandler = function onTriggerDataReloadChanged(reload) {\r\n\t\tif (reload && typeof dialogContentCtrl.reloadObject === 'function') {\r\n\t\t\tdialogContentCtrl.reloadObject();\r\n\t\t}\r\n\t};\r\n\r\n\tvm.confirmationDialogEnabledChangeHandler = function (value) {\r\n\t\tif (value !== undefined) {\r\n\t\t\tdialogContentCtrl.confirmationDialog.enabled = value === 'true';\r\n\t\t}\r\n\t};\r\n\r\n\tvm.confirmationDialogDisabledWhenNoChangesChangeHandler = function (value) {\r\n\t\tif (value !== undefined) {\r\n\t\t\tdialogContentCtrl.confirmationDialog.disabledWhenNoChanges = value === 'true';\r\n\t\t}\r\n\t};\r\n\r\n\tvm.confirmationDialogTitleChangeHandler = function (value) {\r\n\t\tif (value !== undefined) {\r\n\t\t\tdialogContentCtrl.confirmationDialog.title = value;\r\n\t\t}\r\n\t};\r\n\r\n\tvm.confirmationDialogMessageChangeHandler = function (value) {\r\n\t\tif (value !== undefined) {\r\n\t\t\tdialogContentCtrl.confirmationDialog.message = value;\r\n\t\t}\r\n\t};\r\n}\r\n","'use strict';\r\nimport { MxDialogViewComponent } from './dialog-view/dialog-view.component';\r\nimport { DialogFactory } from './dialog-factory';\r\nimport { MxDialogContentComponent } from './dialog-content/dialog-content';\r\nimport { MxDialogContainerComponent } from './mx-dialog-container/mx-dialog-container';\r\nimport { MxDialogManager } from './mx-dialog-manager/mx-dialog-manager';\r\n\r\nexport default angular\r\n\t.module('mx.sb.DialogView', [\r\n\t\t/*'mx.shell', 'mx.SolutionBuilderAgent'*/\r\n\t])\r\n\t.component('mxDialogView', MxDialogViewComponent)\r\n\t.component('mxCommonDialogContent', MxDialogContentComponent)\r\n\t.component('mxDialogContainer', MxDialogContainerComponent)\r\n\t.component('mxDialogManager', MxDialogManager)\r\n\t.service('mx.sb.DialogView.DialogFactory', DialogFactory).name;\r\n","'use strict';\r\n\r\nexport default class BasePreprocessor {\r\n\tconstructor() {\r\n\t\tObject.defineProperties(this, {\r\n\t\t\tchangedHandlers: {\r\n\t\t\t\twritable: true,\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: [],\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\taddChangedHandler(handler) {\r\n\t\tif (typeof handler === 'function') {\r\n\t\t\tthis.changedHandlers.push(handler);\r\n\t\t}\r\n\t}\r\n\r\n\tchanged() {\r\n\t\tthis.changedHandlers.forEach(function (handler) {\r\n\t\t\thandler();\r\n\t\t});\r\n\t}\r\n\r\n\tinit() {\r\n\t\t//to init default values from attributes\r\n\t}\r\n\r\n\tinitPersonalization() {\r\n\t\t//to load personalization values.\r\n\t}\r\n}\r\n","'use strict';\r\nimport BasePreprocessor from './BasePreprocessor';\r\n\r\nexport default class ColumnSearchPreprocessor extends BasePreprocessor {\r\n\tconstructor($q, searchQueryService) {\r\n\t\tsuper();\r\n\t\tthis.$q = $q;\r\n\t\tthis.searchQueryService = searchQueryService;\r\n\r\n\t\tthis._conditions = {\r\n\t\t\tConditions: [],\r\n\t\t\tGroups: [],\r\n\t\t\tLogicalOperator: mx.SolutionBuilderAgent.SearchQueryLogicalOperator.AND,\r\n\t\t};\r\n\r\n\t\tObject.defineProperty(this, 'conditions', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn this._conditions;\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tinit(executor) {\r\n\t\tthis.executor = executor;\r\n\r\n\t\tObject.defineProperty(this, 'columnsObject', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn executor.notPersonalizedColumns || {};\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tsetColumnConditions(newConditions) {\r\n\t\tif (!Array.isArray(newConditions) || angular.equals(this._conditions, newConditions)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\treturn this.$q\r\n\t\t\t.all(\r\n\t\t\t\tnewConditions.map(function (con) {\r\n\t\t\t\t\treturn this.searchQueryService.createConditionByColumn(con.field, this.executor.dataQuery).then(function (condition) {\r\n\t\t\t\t\t\tcondition.operator = con.operator;\r\n\t\t\t\t\t\tcondition.value = con.value;\r\n\r\n\t\t\t\t\t\treturn condition;\r\n\t\t\t\t\t});\r\n\t\t\t\t}, this)\r\n\t\t\t)\r\n\t\t\t.then(\r\n\t\t\t\tfunction (conditions) {\r\n\t\t\t\t\tthis._conditions.Conditions = conditions;\r\n\r\n\t\t\t\t\tif (this.executor.preprocessors.pagingPreprocessor) {\r\n\t\t\t\t\t\tthis.executor.preprocessors.pagingPreprocessor.page = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.changed();\r\n\t\t\t\t}.bind(this)\r\n\t\t\t);\r\n\t}\r\n}\r\nColumnSearchPreprocessor.$inject = ['$q', 'mx.SolutionBuilderAgent.SearchQueryService'];\r\n","'use strict';\r\nimport BasePreprocessor from './BasePreprocessor';\r\n\r\nexport default class PagingPreprocessor extends BasePreprocessor {\r\n\tconstructor(personalizationService) {\r\n\t\tsuper();\r\n\t\tthis.personalizationService = personalizationService;\r\n\r\n\t\tObject.defineProperty(this, 'page', {\r\n\t\t\tenumerable: true,\r\n\t\t\tget() {\r\n\t\t\t\treturn this._page;\r\n\t\t\t},\r\n\t\t\tset: this.setPage,\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'pageSize', {\r\n\t\t\tenumerable: true,\r\n\t\t\tget() {\r\n\t\t\t\treturn this._pageSize;\r\n\t\t\t},\r\n\t\t\tset: this.setPageSize,\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'pageSizes', {\r\n\t\t\tenumerable: true,\r\n\t\t\tget() {\r\n\t\t\t\treturn this._pageSizes;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'firstItemNumber', {\r\n\t\t\tenumerable: true,\r\n\t\t\tget() {\r\n\t\t\t\treturn this._firstItemNumber;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'lastItemNumber', {\r\n\t\t\tenumerable: true,\r\n\t\t\tget() {\r\n\t\t\t\treturn this._lastItemNumber;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'firstPage', {\r\n\t\t\tenumerable: true,\r\n\t\t\tget() {\r\n\t\t\t\treturn this._firstPage;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'lastPage', {\r\n\t\t\tenumerable: true,\r\n\t\t\tget() {\r\n\t\t\t\treturn this._lastPage;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'totalItems', {\r\n\t\t\tenumerable: true,\r\n\t\t\tget() {\r\n\t\t\t\treturn this._totalItems;\r\n\t\t\t},\r\n\t\t\tset(totalItems) {\r\n\t\t\t\tthis._totalItems = totalItems;\r\n\t\t\t\tthis._countProperties();\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tinit(executor, config) {\r\n\t\tvar pageSize = config.pageSize,\r\n\t\t\tpageSizes = config.pageSizes;\r\n\r\n\t\tthis._page = 0;\r\n\t\tthis._totalItems = 0;\r\n\t\tthis._pageSizes = Array.isArray(pageSizes) ? pageSizes : [20];\r\n\t\tthis._pageSize = pageSize || pageSizes[0];\r\n\t\tthis._executor = executor;\r\n\r\n\t\tthis._countProperties();\r\n\t}\r\n\r\n\tinitPersonalization(personalizationKey) {\r\n\t\tthis.personalizationKey = personalizationKey;\r\n\r\n\t\treturn this.personalizationService.getPageSize().then(\r\n\t\t\tfunction (personalizedPageSize) {\r\n\t\t\t\tif (!isNaN(personalizedPageSize)) {\r\n\t\t\t\t\tthis._pageSize = personalizedPageSize;\r\n\t\t\t\t\tthis._countProperties();\r\n\t\t\t\t}\r\n\t\t\t}.bind(this)\r\n\t\t);\r\n\t}\r\n\r\n\tsetPage(newPage) {\r\n\t\tnewPage = parseInt(newPage);\r\n\r\n\t\tif (isNaN(newPage) || this._page === newPage || (this._page < newPage && this.lastPage) || (this._page > newPage && this.firstPage)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._page = newPage;\r\n\t\tthis._countProperties();\r\n\r\n\t\tthis.changed();\r\n\t}\r\n\r\n\tsetPageSize(newPageSize) {\r\n\t\tnewPageSize = parseInt(newPageSize);\r\n\t\tif (!isNaN(newPageSize) && this._pageSize !== newPageSize) {\r\n\t\t\tthis._pageSize = newPageSize;\r\n\t\t\tthis._page = 0;\r\n\t\t\tthis._countProperties();\r\n\t\t\tthis.personalizationService.savePageSize(this._pageSize);\r\n\t\t\tthis.changed();\r\n\t\t}\r\n\t}\r\n\r\n\tnextPage() {\r\n\t\tthis.page++;\r\n\t}\r\n\r\n\tprevPage() {\r\n\t\tthis.page--;\r\n\t}\r\n\r\n\t_countProperties() {\r\n\t\tthis._firstItemNumber = this._page * this._pageSize + 1;\r\n\t\tthis._lastItemNumber = this._firstItemNumber + this._pageSize - 1;\r\n\r\n\t\tthis._checkFirstLastPage();\r\n\t}\r\n\r\n\t_checkFirstLastPage() {\r\n\t\tif (this._totalItems > 0 && this._lastItemNumber > this._totalItems) {\r\n\t\t\tthis._lastItemNumber = this._totalItems;\r\n\t\t}\r\n\r\n\t\tthis._firstPage = this._page === 0;\r\n\t\tthis._lastPage = this._totalItems === this._lastItemNumber;\r\n\t}\r\n}\r\nPagingPreprocessor.$inject = ['mx.SolutionBuilderAgent.PersonalizationService'];\r\n","'use strict';\r\nimport MxEnum from '../../../../Utils/MxEnum';\r\n\r\nconst DataQueryEnums = {\r\n\tColumnAlignmentsEnum: new MxEnum({\r\n\t\tLeft: 0,\r\n\t\tCenter: 1,\r\n\t\tRight: 2,\r\n\t}),\r\n\tColumnSortingEnum: new MxEnum({\r\n\t\tNone: 0,\r\n\t\tAscending: 1,\r\n\t\tDescending: 2,\r\n\t\tDisabled: 4,\r\n\t}),\r\n\tColumnTitleTypeEnum: new MxEnum({\r\n\t\tIndividualDisplayString: 0,\r\n\t\tFromExpression: 1,\r\n\t\tNoTitle: 2,\r\n\t}),\r\n\tColumnDisplayTypeEnum: new MxEnum({\r\n\t\tVisible: 0,\r\n\t\tInvisibleByDefault: 1,\r\n\t\tNone: 2,\r\n\t\tHidden: 3,\r\n\t}),\r\n\tDisplayImageEnum: new MxEnum({\r\n\t\tNone: 0,\r\n\t\tImage: 1,\r\n\t\tImageWithText: 2,\r\n\t}),\r\n\tColorTypeEnum: new MxEnum({\r\n\t\tNone: 0,\r\n\t\tCellText: 1,\r\n\t\tCellBackground: 2,\r\n\t\tRowText: 3,\r\n\t\tRowBackground: 4,\r\n\t}),\r\n\tColumnSearchTypeEnum: new MxEnum({\r\n\t\tYes: 0,\r\n\t\tNo: 1,\r\n\t\tAutomaticallyDefined: 2,\r\n\t}),\r\n};\r\n\r\nexport default DataQueryEnums;\r\n","'use strict';\r\nimport BasePreprocessor from './BasePreprocessor';\r\nimport DataQueryEnums from '../DataQueryEnumerations';\r\n\r\nconst ColumnSortingEnum = DataQueryEnums.ColumnSortingEnum;\r\n\r\nexport default class SortingPreprocessor extends BasePreprocessor {\r\n\tconstructor(personalizationService) {\r\n\t\tsuper();\r\n\r\n\t\tthis.personalizationService = personalizationService;\r\n\r\n\t\tObject.defineProperty(this, 'sortedColumns', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn this._sortedColumns;\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tinit(executor) {\r\n\t\tObject.defineProperties(this, {\r\n\t\t\tcolumns: {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn executor.columns || [];\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tsortableColumns: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn this.columns.filter(function (column) {\r\n\t\t\t\t\t\treturn column.Sorting !== ColumnSortingEnum.Disabled;\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tconst sortedColumnsConfig = [];\r\n\t\tthis.sortableColumns.forEach(function (column) {\r\n\t\t\tif (column.Sorting !== ColumnSortingEnum.None) {\r\n\t\t\t\tsortedColumnsConfig.push({\r\n\t\t\t\t\tname: column.Name,\r\n\t\t\t\t\tsorting: column.Sorting,\r\n\t\t\t\t\tpriority: column.SortingPriority,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._sortedColumns = this._applySortToColumns(sortedColumnsConfig);\r\n\r\n\t\tthis._defaultSorting = this.sortableColumns.reduce((defaultSorting, column) => {\r\n\t\t\tdefaultSorting[column.Name] = {\r\n\t\t\t\tsorting: column.Sorting,\r\n\t\t\t\tpriority: column.SortingPriority,\r\n\t\t\t};\r\n\t\t\treturn defaultSorting;\r\n\t\t}, {});\r\n\t}\r\n\r\n\tenableSingleColumnMode() {\r\n\t\tthis.singleColumnMode = true;\r\n\t}\r\n\r\n\tinitPersonalization(personalizationKey) {\r\n\t\tthis.personalizationKey = personalizationKey;\r\n\r\n\t\tif (personalizationKey) {\r\n\t\t\treturn this.personalizationService.getGridPersonalization(personalizationKey).then(\r\n\t\t\t\tfunction (personalization) {\r\n\t\t\t\t\tif (typeof personalization !== 'object' || !Object.keys(personalization).length) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar sortedColumnsConfig = [];\r\n\r\n\t\t\t\t\tthis.columns.forEach(function (column) {\r\n\t\t\t\t\t\tif (personalization[column.Name] && typeof personalization[column.Name].Sorting === 'number') {\r\n\t\t\t\t\t\t\tsortedColumnsConfig.push({\r\n\t\t\t\t\t\t\t\tname: column.Name,\r\n\t\t\t\t\t\t\t\tsorting: personalization[column.Name].Sorting,\r\n\t\t\t\t\t\t\t\tpriority: personalization[column.Name].SortingPriority,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (sortedColumnsConfig.length) {\r\n\t\t\t\t\t\tthis._sortedColumns = this._applySortToColumns(sortedColumnsConfig);\r\n\t\t\t\t\t}\r\n\t\t\t\t}.bind(this)\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tsetSort(sortedColumnsConfig) {\r\n\t\tthis._sortedColumns = this._applySortToColumns(sortedColumnsConfig);\r\n\r\n\t\tif (this.personalizationKey) {\r\n\t\t\tvar sortingPersonalization = this.sortableColumns\r\n\t\t\t\t.filter(function (column) {\r\n\t\t\t\t\treturn this._defaultSorting[column.Name].sorting !== column.Sorting || this._defaultSorting[column.Name].priority !== column.SortingPriority;\r\n\t\t\t\t}, this)\r\n\t\t\t\t.map(function (column) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tname: column.Name,\r\n\t\t\t\t\t\tsorting: column.Sorting,\r\n\t\t\t\t\t\tpriority: column.SortingPriority,\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\tthis.personalizationService.savePersonalizedSorting(sortingPersonalization, this.personalizationKey);\r\n\t\t}\r\n\t\tthis.changed();\r\n\t}\r\n\r\n\t_isColumnSortable(columnName) {\r\n\t\treturn this.sortableColumns.some((column) => column.Name === columnName);\r\n\t}\r\n\r\n\t_checkSortedConfig(sortedColumnsConfig) {\r\n\t\tif (!Array.isArray(sortedColumnsConfig)) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tsortedColumnsConfig = sortedColumnsConfig.filter((column) => {\r\n\t\t\treturn column.name && this._isColumnSortable(column.name) && (column.sorting === ColumnSortingEnum.Ascending || column.sorting === ColumnSortingEnum.Descending);\r\n\t\t});\r\n\r\n\t\tif (!this.singleColumnMode) {\r\n\t\t\treturn sortedColumnsConfig;\r\n\t\t}\r\n\r\n\t\tif (sortedColumnsConfig.length > 1) {\r\n\t\t\tsortedColumnsConfig = [sortedColumnsConfig[0]];\r\n\t\t} else if (sortedColumnsConfig.length === 0 && this.sortableColumns.length) {\r\n\t\t\tsortedColumnsConfig = [\r\n\t\t\t\t{\r\n\t\t\t\t\tname: this.sortableColumns[0].Name,\r\n\t\t\t\t\tsorting: ColumnSortingEnum.Ascending,\r\n\t\t\t\t\tpriority: this.sortableColumns[0].Priority,\r\n\t\t\t\t},\r\n\t\t\t];\r\n\t\t}\r\n\r\n\t\treturn sortedColumnsConfig;\r\n\t}\r\n\r\n\t_applySortToColumns(sortedColumnsConfig) {\r\n\t\tvar sorted = [];\r\n\t\tsortedColumnsConfig = this._checkSortedConfig(sortedColumnsConfig);\r\n\t\tthis.sortableColumns.forEach(function (column) {\r\n\t\t\tvar sortedColumn = _.find(sortedColumnsConfig, ['name', column.Name]);\r\n\t\t\tif (!sortedColumn) {\r\n\t\t\t\tif (column.Sorting === ColumnSortingEnum.Ascending || column.Sorting === ColumnSortingEnum.Descending) {\r\n\t\t\t\t\tcolumn.Sorting = ColumnSortingEnum.None;\r\n\t\t\t\t\tcolumn.SortingPriority = 0;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcolumn.Sorting = sortedColumn.sorting;\r\n\t\t\t\tcolumn.SortingPriority = sortedColumn.priority;\r\n\t\t\t\tif (column.Sorting !== ColumnSortingEnum.None) {\r\n\t\t\t\t\tsorted.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, this);\r\n\r\n\t\tsorted.sort(function (columnA, columnB) {\r\n\t\t\treturn columnA.SortingPriority - columnB.SortingPriority;\r\n\t\t});\r\n\r\n\t\treturn sorted;\r\n\t}\r\n}\r\nSortingPreprocessor.$inject = ['mx.SolutionBuilderAgent.PersonalizationService'];\r\n","'use strict';\r\n\r\nBaseRequesterClassFactory.$inject = ['$q', 'mx.sb.Agent.DataQuery.Row', 'mx.sb.Agent.DataQuery.DataQueryDefinition'];\r\nexport default function BaseRequesterClassFactory($q, DataQueryRow, DataQueryDefinition) {\r\n\t/**\r\n\t * @ngdoc Class\r\n\t * @name mx.sb.Agent.DataQuery.BaseRequester\r\n\t *\r\n\t * @description\r\n\t * Class Base Requester\r\n\t *\r\n\t */\r\n\r\n\tfunction BaseRequester(dataQuery) {\r\n\t\tthis.setDataQuery(dataQuery);\r\n\r\n\t\tthis.options = {};\r\n\r\n\t\tthis.supportedPreprocessors = {\r\n\t\t\tsearch: false,\r\n\t\t\tpaging: false,\r\n\t\t\tsorting: false,\r\n\t\t\tcolumnSearch: false,\r\n\t\t\tadvanceSearch: false,\r\n\t\t};\r\n\t}\r\n\r\n\tBaseRequester.prototype = {\r\n\t\tsetDataQuery: function (dataQuery) {\r\n\t\t\tif (!(dataQuery instanceof DataQueryDefinition)) {\r\n\t\t\t\tthrow Error('Wrong format of DataQuery');\r\n\t\t\t}\r\n\r\n\t\t\tthis.dataQuery = dataQuery;\r\n\t\t},\r\n\r\n\t\tgetEntityTypes: async function () {\r\n\t\t\treturn [];\r\n\t\t},\r\n\r\n\t\tupdateOptions: function (options) {\r\n\t\t\tangular.extend(this.options, options);\r\n\t\t},\r\n\r\n\t\tload: function (/*preprocessors, dataQuery*/) {\r\n\t\t\treturn $q.when({\r\n\t\t\t\titems: [],\r\n\t\t\t\ttotalItems: 0,\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tgetTotalItems: function () {\r\n\t\t\treturn $q.when(0);\r\n\t\t},\r\n\r\n\t\tcreateEntity: function (entityType) {\r\n\t\t\treturn $q.when({\r\n\t\t\t\t_type: entityType,\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tcreateRow: function (entity) {\r\n\t\t\tvar row = new DataQueryRow(entity, {}, this._getDisplayEntity.bind(this));\r\n\t\t\treturn row.initProperties(this.dataQuery.Columns).then(function () {\r\n\t\t\t\treturn row;\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t_getDisplayEntity: function (rawEntity, displayEntity /*, changedColumns*/) {\r\n\t\t\treturn $q.when(displayEntity);\r\n\t\t},\r\n\r\n\t\tentitiesEqualityFunction: function (entityA, entityB) {\r\n\t\t\treturn entityA === entityB;\r\n\t\t},\r\n\r\n\t\taddRows: function (rows) {\r\n\t\t\tif (Array.isArray(this.rows)) {\r\n\t\t\t\tthis.rows.splice.apply(this.rows, [0, 0].concat(rows));\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/*\r\n\t\tif export is needed - implement function exportData.\r\n\r\n\t\texportData: function(/!*requestOptions*!/) {\r\n\t\t\treturn this.$q.when([]);\r\n\t\t}*/\r\n\t};\r\n\r\n\treturn BaseRequester;\r\n}\r\n","'use strict';\r\n\r\nClientDataRequesterClassFactory.$inject = [\r\n\t'$q',\r\n\t'mx.SolutionBuilderAgent.EntityService',\r\n\t'mx.sb.Agent.DataQuery.BaseRequester',\r\n\t'mx.sb.Agent.DataQuery.Enums',\r\n\t'mx.sb.Agent.DataQuery.FilterOperatorsFactory',\r\n];\r\nexport default function ClientDataRequesterClassFactory($q, entityService, BaseRequester, DataQueryEnums, filterOperatorsFactory) {\r\n\tvar ColumnSortingEnum = DataQueryEnums.ColumnSortingEnum;\r\n\r\n\t/**\r\n\t * @ngdoc Class\r\n\t * @name mx.sb.Agent.DataQuery.ClientDataRequester\r\n\t *\r\n\t * @description\r\n\t * Class DataDefinition Requester\r\n\t */\r\n\r\n\tfunction ClientDataRequester(dataQuery) {\r\n\t\tBaseRequester.call(this, dataQuery);\r\n\r\n\t\tthis.options = {};\r\n\r\n\t\tthis.supportedPreprocessors = {\r\n\t\t\tsearch: true,\r\n\t\t\tpaging: true,\r\n\t\t\tsorting: true,\r\n\t\t\tcolumnSearch: true,\r\n\t\t\tadvanceSearch: true,\r\n\t\t};\r\n\t}\r\n\r\n\tClientDataRequester.prototype = angular.extend(Object.create(BaseRequester.prototype), {\r\n\t\tload: function (preprocessors) {\r\n\t\t\treturn this._prepareData(preprocessors).then(function (dataItems) {\r\n\t\t\t\tvar totalItems = dataItems.length;\r\n\r\n\t\t\t\tif (preprocessors && preprocessors.pagingPreprocessor) {\r\n\t\t\t\t\tpreprocessors.pagingPreprocessor.totalItems = totalItems;\r\n\t\t\t\t\tvar firstItemNumber = preprocessors.pagingPreprocessor.firstItemNumber - 1;\r\n\t\t\t\t\tvar lastItemNumber = preprocessors.pagingPreprocessor.lastItemNumber;\r\n\r\n\t\t\t\t\tdataItems = dataItems.slice(firstItemNumber, lastItemNumber);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tdataItems: dataItems,\r\n\t\t\t\t\ttotalItems: totalItems,\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tgetTotalItems: function (preprocessors) {\r\n\t\t\treturn this._prepareData(preprocessors).then(function (dataItems) {\r\n\t\t\t\treturn dataItems.length;\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tgetEntityTypes: async function () {\r\n\t\t\treturn [\r\n\t\t\t\t{\r\n\t\t\t\t\t_displayName: '',\r\n\t\t\t\t\t_type: 'ClientStaticObject',\r\n\t\t\t\t\t_itemType: 'ClientStatic',\r\n\t\t\t\t},\r\n\t\t\t];\r\n\t\t},\r\n\r\n\t\t_getDisplayEntity: function (rawEntity, displayEntity, changedColumns) {\r\n\t\t\treturn $q\r\n\t\t\t\t.all(\r\n\t\t\t\t\tchangedColumns.map(function (column) {\r\n\t\t\t\t\t\tif (column.RawValuePropertyName) {\r\n\t\t\t\t\t\t\tdisplayEntity[column.Name + '_Value'] = rawEntity[column.RawValuePropertyName];\r\n\r\n\t\t\t\t\t\t\tif (column.IsEnum) {\r\n\t\t\t\t\t\t\t\treturn column.getEnumValueTitle(rawEntity[column.RawValuePropertyName]).then(function (enumTitle) {\r\n\t\t\t\t\t\t\t\t\tdisplayEntity[column.Name] = enumTitle;\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t} else if (column.IsPickup) {\r\n\t\t\t\t\t\t\t\treturn entityService.getFragmentDescriptorsInBatch(column.ReferenceTo, rawEntity[column.RawValuePropertyName]).then(function (objDetails) {\r\n\t\t\t\t\t\t\t\t\tdisplayEntity[column.Name] = objDetails && objDetails.DisplayString;\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tswitch (column.AttributeValueType) {\r\n\t\t\t\t\t\t\t\tcase mx.shell.ObjectPropertyType.Boolean.name:\r\n\t\t\t\t\t\t\t\t\tdisplayEntity[column.Name] = Boolean(rawEntity[column.RawValuePropertyName]);\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\t\tdisplayEntity[column.Name] = rawEntity[column.RawValuePropertyName];\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t)\r\n\t\t\t\t.then(function () {\r\n\t\t\t\t\treturn displayEntity;\r\n\t\t\t\t});\r\n\t\t},\r\n\r\n\t\t_getRows: function () {\r\n\t\t\tvar dataQuery = this.dataQuery;\r\n\r\n\t\t\tif (this.rows && this.rows.length === this.options.items.length && this._items === this.options.items && this._dataQuery && this._dataQuery === dataQuery) {\r\n\t\t\t\treturn $q.when(this._getFilteredRows(this.rows));\r\n\t\t\t}\r\n\r\n\t\t\tthis._items = this.options.items;\r\n\t\t\tthis._dataQuery = dataQuery;\r\n\r\n\t\t\treturn $q\r\n\t\t\t\t.all(\r\n\t\t\t\t\tthis.options.items.map(function (rawEntity) {\r\n\t\t\t\t\t\treturn this.createRow(rawEntity);\r\n\t\t\t\t\t}, this)\r\n\t\t\t\t)\r\n\t\t\t\t.then(\r\n\t\t\t\t\tfunction (rows) {\r\n\t\t\t\t\t\tthis.rows = rows;\r\n\t\t\t\t\t\treturn this._getFilteredRows(rows);\r\n\t\t\t\t\t}.bind(this)\r\n\t\t\t\t);\r\n\t\t},\r\n\r\n\t\t_getFilteredRows: function (rows) {\r\n\t\t\tif (!this.options.hideItemFieldName) {\r\n\t\t\t\treturn rows;\r\n\t\t\t}\r\n\t\t\treturn rows.filter(function (row) {\r\n\t\t\t\treturn row.getEntity()[this.options.hideItemFieldName] !== true;\r\n\t\t\t}, this);\r\n\t\t},\r\n\r\n\t\t_keywordFilter: function (item, keyword) {\r\n\t\t\tif (!keyword) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tkeyword = keyword.toLowerCase();\r\n\r\n\t\t\treturn this.dataQuery.Columns.filter(function (column) {\r\n\t\t\t\treturn column.IsKeyword;\r\n\t\t\t}).some(function (kColumn) {\r\n\t\t\t\treturn this._isItemMatchCondition(item, {\r\n\t\t\t\t\tproperty: kColumn.Name,\r\n\t\t\t\t\tvalue: [keyword],\r\n\t\t\t\t\toperator: filterOperatorsFactory.operators.Contains.value,\r\n\t\t\t\t});\r\n\t\t\t}, this);\r\n\t\t},\r\n\r\n\t\t_queryGroupFilter: function (item, group) {\r\n\t\t\tvar res = false;\r\n\t\t\tif (group.LogicalOperator === mx.SolutionBuilderAgent.SearchQueryLogicalOperator.AND) {\r\n\t\t\t\tres = group.Conditions.every(function (condition) {\r\n\t\t\t\t\treturn this._isItemMatchCondition(item, condition);\r\n\t\t\t\t}, this);\r\n\t\t\t\tif (!res) {\r\n\t\t\t\t\treturn res;\r\n\t\t\t\t}\r\n\t\t\t\tres = group.Groups.every(function (group) {\r\n\t\t\t\t\treturn this._queryGroupFilter(item, group);\r\n\t\t\t\t}, this);\r\n\t\t\t} else if (group.LogicalOperator === mx.SolutionBuilderAgent.SearchQueryLogicalOperator.OR) {\r\n\t\t\t\tres = group.Conditions.some(function (condition) {\r\n\t\t\t\t\treturn this._isItemMatchCondition(item, condition);\r\n\t\t\t\t}, this);\r\n\t\t\t\tif (res) {\r\n\t\t\t\t\treturn res;\r\n\t\t\t\t}\r\n\t\t\t\tres = group.Groups.some(function (group) {\r\n\t\t\t\t\treturn this._queryGroupFilter(item, group);\r\n\t\t\t\t}, this);\r\n\t\t\t} else {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t},\r\n\r\n\t\t_normalizeValue: function (value, column) {\r\n\t\t\tif (value === null || typeof value === 'undefined') {\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\r\n\t\t\tif (column.IsEnum || column.IsPickup) {\r\n\t\t\t\treturn value.toString().toLowerCase();\r\n\t\t\t}\r\n\r\n\t\t\tvar type = column.AttributeValueType;\r\n\r\n\t\t\tswitch (type) {\r\n\t\t\t\tcase mx.shell.ObjectPropertyType.String.name:\r\n\t\t\t\tcase mx.shell.ObjectPropertyType.Guid.name:\r\n\t\t\t\tcase mx.shell.ObjectPropertyType.Text.name:\r\n\t\t\t\t\treturn value.toString().toLowerCase();\r\n\t\t\t\tcase mx.shell.ObjectPropertyType.Boolean.name:\r\n\t\t\t\t\tif (typeof value === 'string') {\r\n\t\t\t\t\t\tif (value === 'true') {\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t} else if (value === 'false') {\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn Boolean(value);\r\n\t\t\t\tcase mx.shell.ObjectPropertyType.Currency.name:\r\n\t\t\t\t\treturn value; //TODO: parseInt ?\r\n\t\t\t\tcase mx.shell.ObjectPropertyType.Date.name:\r\n\t\t\t\t\tvar parsed = Date.parse(value);\r\n\t\t\t\t\treturn isNaN(parsed) ? 0 : parsed;\r\n\t\t\t\tcase mx.shell.ObjectPropertyType.Integer.name:\r\n\t\t\t\t\treturn parseInt(value);\r\n\t\t\t\tcase mx.shell.ObjectPropertyType.Float.name:\r\n\t\t\t\tcase mx.shell.ObjectPropertyType.Long.name:\r\n\t\t\t\tcase mx.shell.ObjectPropertyType.Decimal.name:\r\n\t\t\t\t\treturn parseFloat(value);\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn typeof value === 'string' ? value.toLowerCase() : value;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_isItemMatchCondition: function (item, condition) {\r\n\t\t\tvar operator = filterOperatorsFactory.getOperatorByValue(condition.operator);\r\n\t\t\tvar column = this.dataQuery.Columns.filter(function (column) {\r\n\t\t\t\treturn column.Name === condition.property;\r\n\t\t\t})[0];\r\n\t\t\tif (!column) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (column.IsEnum) {\r\n\t\t\t\treturn operator.fn(item[column.Name + '_Value'], condition.value);\r\n\t\t\t} else {\r\n\t\t\t\tvar itemValue = this._normalizeValue(item[condition.property], column);\r\n\t\t\t\tvar conditionValues = condition.value.map(function (value) {\r\n\t\t\t\t\treturn this._normalizeValue(value, column);\r\n\t\t\t\t}, this);\r\n\r\n\t\t\t\treturn operator.fn(itemValue, conditionValues);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_prepareData: function (preprocessors) {\r\n\t\t\treturn this._getRows().then(\r\n\t\t\t\tfunction (rows) {\r\n\t\t\t\t\tvar filters = [];\r\n\r\n\t\t\t\t\tif (!preprocessors) {\r\n\t\t\t\t\t\treturn $q.when(rows);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (preprocessors.searchPreprocessor) {\r\n\t\t\t\t\t\tfilters.push({\r\n\t\t\t\t\t\t\tfn: this._keywordFilter,\r\n\t\t\t\t\t\t\targs: [preprocessors.searchPreprocessor.keyword],\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (preprocessors.columnSearchPreprocessor || preprocessors.advanceSearchPreprocessor) {\r\n\t\t\t\t\t\tvar group = {\r\n\t\t\t\t\t\t\tConditions: [],\r\n\t\t\t\t\t\t\tGroups: [],\r\n\t\t\t\t\t\t\tLogicalOperator: mx.SolutionBuilderAgent.SearchQueryLogicalOperator.AND,\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tif (preprocessors.columnSearchPreprocessor) {\r\n\t\t\t\t\t\t\tgroup.Groups.push(preprocessors.columnSearchPreprocessor.conditions);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (preprocessors.advanceSearchPreprocessor) {\r\n\t\t\t\t\t\t\tgroup.Groups.push(preprocessors.advanceSearchPreprocessor.conditions);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfilters.push({\r\n\t\t\t\t\t\t\tfn: this._queryGroupFilter,\r\n\t\t\t\t\t\t\targs: [group],\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\trows = rows.filter(function (item) {\r\n\t\t\t\t\t\treturn filters.every(function (filter) {\r\n\t\t\t\t\t\t\tvar args = (filter.args || []).slice();\r\n\t\t\t\t\t\t\targs.unshift(item);\r\n\t\t\t\t\t\t\treturn filter.fn.apply(this, args);\r\n\t\t\t\t\t\t}, this);\r\n\t\t\t\t\t}, this);\r\n\r\n\t\t\t\t\treturn this._sortItems(rows, preprocessors);\r\n\t\t\t\t}.bind(this)\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\t_sortItems: function (items, preprocessors) {\r\n\t\t\tif (!preprocessors.sortingPreprocessor) {\r\n\t\t\t\treturn $q.when(items);\r\n\t\t\t}\r\n\t\t\tvar sortedColumns = preprocessors.sortingPreprocessor.sortedColumns;\r\n\r\n\t\t\t// In source data enum titles can be not present by default, and only value is present\r\n\t\t\t// But sorting should be done by enum-title\r\n\t\t\t// So, if sorting is performed by enum-column then\r\n\t\t\t// it is necessary to load enumTitle for all items before sorting will be performed\r\n\t\t\treturn this._checkEnums(items, sortedColumns).then(function () {\r\n\t\t\t\titems.sort(function (itemA, itemB) {\r\n\t\t\t\t\tvar i = 0,\r\n\t\t\t\t\t\tcompare = 0;\r\n\r\n\t\t\t\t\twhile (i < sortedColumns.length && compare === 0) {\r\n\t\t\t\t\t\tvar column = sortedColumns[i];\r\n\t\t\t\t\t\tvar sortField = column.Name;\r\n\r\n\t\t\t\t\t\tif (column.SortingExpression) {\r\n\t\t\t\t\t\t\tsortField = sortField + '_Order';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvar valueA = itemA[sortField],\r\n\t\t\t\t\t\t\tvalueB = itemB[sortField];\r\n\t\t\t\t\t\tif ((typeof valueA === 'undefined' || valueA === null) && typeof valueB !== 'undefined' && valueB !== null) {\r\n\t\t\t\t\t\t\tcompare = 1;\r\n\t\t\t\t\t\t} else if (typeof valueA !== 'undefined' && valueA !== null && (typeof valueB === 'undefined' || valueB === null)) {\r\n\t\t\t\t\t\t\tcompare = -1;\r\n\t\t\t\t\t\t} else if ((typeof valueA === 'undefined' || valueA === null) && (typeof valueB === 'undefined' || valueB === null)) {\r\n\t\t\t\t\t\t\tcompare = 0;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tcompare = valueA > valueB ? 1 : valueA === valueB ? 0 : -1;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (column.Sorting === ColumnSortingEnum.Descending) {\r\n\t\t\t\t\t\t\tcompare = compare * -1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\ti++;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn compare;\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn items;\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t_checkEnums: function (items, sortedColumns) {\r\n\t\t\treturn $q.all(\r\n\t\t\t\tsortedColumns.map(function (column) {\r\n\t\t\t\t\tif (!column.IsEnum) {\r\n\t\t\t\t\t\treturn $q.when();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar valuePropertyName = column.Name + '_Value';\r\n\r\n\t\t\t\t\tvar allEnumTitlesPresent = items.every(function (item) {\r\n\t\t\t\t\t\treturn item[valuePropertyName] === null || typeof item[column.Name] !== 'undefined';\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (allEnumTitlesPresent) {\r\n\t\t\t\t\t\treturn $q.when();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn column.getEnumValues();\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t},\r\n\t});\r\n\r\n\treturn ClientDataRequester;\r\n}\r\n","DataDefinitionRequesterFactory.$inject = [\r\n\t'$q',\r\n\t'mx.SolutionBuilderAgent.DataQueryService',\r\n\t'mx.SolutionBuilderAgent.SchemaService',\r\n\t'mx.shell.ObjectMapper',\r\n\t'mx.sb.Agent.DataQuery.BaseRequester',\r\n\t'mx.sb.Agent.DataQuery.DataDefinitionRequestOptions',\r\n\t'mx.sb.Agent.DataQuery.Enums',\r\n];\r\n\r\nexport default function DataDefinitionRequesterFactory($q, dataQueryService, schemaService, objectMapper, BaseRequester, DataDefinitionRequestOptions, DataQueryEnums) {\r\n\tconst ColumnSortingEnum = DataQueryEnums.ColumnSortingEnum;\r\n\r\n\t/**\r\n\t * @ngdoc Class\r\n\t * @name mx.sb.Agent.DataQuery.DataDefinitionRequester\r\n\t *\r\n\t * @description\r\n\t * Class DataDefinition Requester\r\n\t *\r\n\t */\r\n\r\n\tfunction DataDefinitionRequester(dataQuery) {\r\n\t\tBaseRequester.call(this, dataQuery);\r\n\t\tthis.schemaService = schemaService;\r\n\r\n\t\tthis.options = new DataDefinitionRequestOptions();\r\n\r\n\t\tthis.supportedPreprocessors = {\r\n\t\t\tsearch: true,\r\n\t\t\tpaging: true,\r\n\t\t\tsorting: true,\r\n\t\t\tcolumnSearch: true,\r\n\t\t\tadvanceSearch: true,\r\n\t\t};\r\n\t}\r\n\r\n\tDataDefinitionRequester.prototype = angular.extend(Object.create(BaseRequester.prototype), {\r\n\t\tload: function (preprocessors) {\r\n\t\t\tif (this.options.returnNoItems) {\r\n\t\t\t\treturn $q.when({\r\n\t\t\t\t\tdataItems: [],\r\n\t\t\t\t\ttotalItems: 0,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\treturn dataQueryService.getRelationItemsWithTotalCount(this.prepareRequest(preprocessors)).then(({ items, totalCount }) => {\r\n\t\t\t\treturn $q.all(items.map((rawEntity) => this.createRow(objectMapper.mapItem(rawEntity)))).then((rows) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdataItems: rows,\r\n\t\t\t\t\t\ttotalItems: totalCount,\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tgetEntityTypes: async function () {\r\n\t\t\tconst types = await this.schemaService.getTypeItems(undefined, this.dataQuery.SchemaClassName);\r\n\t\t\treturn types.map((entityType) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\t_displayName: entityType.DisplayName,\r\n\t\t\t\t\t_type: entityType.Name,\r\n\t\t\t\t\t_itemType: 'CI',\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t_getDisplayEntity: function (rawEntity) {\r\n\t\t\treturn $q.when(rawEntity);\r\n\t\t},\r\n\r\n\t\tapplyPreprocessors(request, preprocessors) {\r\n\t\t\tif (preprocessors) {\r\n\t\t\t\tif (preprocessors.searchPreprocessor) {\r\n\t\t\t\t\trequest.search = preprocessors.searchPreprocessor.keyword;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (preprocessors.sortingPreprocessor) {\r\n\t\t\t\t\tvar sortedColumns = preprocessors.sortingPreprocessor.sortedColumns;\r\n\r\n\t\t\t\t\tif (!Array.isArray(sortedColumns) || !sortedColumns.length) {\r\n\t\t\t\t\t\trequest.orderBy = '';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\trequest.orderBy = sortedColumns.reduce(function (accumulator, column, index) {\r\n\t\t\t\t\t\t\tvar direction = column.Sorting === ColumnSortingEnum.Ascending ? 'asc' : 'desc';\r\n\t\t\t\t\t\t\treturn accumulator + (index > 0 ? ',' : '') + column.Name + ' ' + direction;\r\n\t\t\t\t\t\t}, '');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (preprocessors.pagingPreprocessor) {\r\n\t\t\t\t\trequest.pageNumber = preprocessors.pagingPreprocessor.page + 1; //TODO: refactor dataQueryService.getRelationsItems and remove \" + 1 \";\r\n\t\t\t\t\trequest.pageSize = preprocessors.pagingPreprocessor.pageSize;\r\n\t\t\t\t}\r\n\r\n\t\t\t\trequest.additionalFilter = {\r\n\t\t\t\t\tConditions: [],\r\n\t\t\t\t\tGroups: [],\r\n\t\t\t\t\tLogicalOperator: mx.SolutionBuilderAgent.SearchQueryLogicalOperator.AND,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (preprocessors.columnSearchPreprocessor) {\r\n\t\t\t\t\trequest.additionalFilter.Groups.push(preprocessors.columnSearchPreprocessor.conditions);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (preprocessors.advanceSearchPreprocessor) {\r\n\t\t\t\t\trequest.additionalFilter.Groups.push(preprocessors.advanceSearchPreprocessor.conditions);\r\n\t\t\t\t\tif (preprocessors.advanceSearchPreprocessor.filters.length) {\r\n\t\t\t\t\t\trequest.filters = request.filters.length > 0 ? request.filters + ',' : request.filters;\r\n\t\t\t\t\t\trequest.filters += preprocessors.advanceSearchPreprocessor.filters.join(',');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn request;\r\n\t\t},\r\n\r\n\t\tprepareRequest: function (preprocessors) {\r\n\t\t\tconst request = {\r\n\t\t\t\tfilter: this.options.filter,\r\n\t\t\t\tallowedTypes: this.options.allowedTypes,\r\n\r\n\t\t\t\tentityClassName: this.options.entityClassName,\r\n\t\t\t\trelationName: this.options.relationName,\r\n\t\t\t\taddedRelations: this.options.objectIDs,\r\n\t\t\t\tremovedRelations: this.options.excludedIDs,\r\n\t\t\t\tuseObjectId: this.options.useObjectId,\r\n\r\n\t\t\t\tdataQueryName: this.options.columnDefinition,\r\n\r\n\t\t\t\tfilters: this.options.filters || '',\r\n\t\t\t\tfragmentId: this.options.fragmentId,\r\n\t\t\t\tarchived: this.options.archived,\r\n\r\n\t\t\t\tcolumns: this.dataQuery.Columns.filter((column) => column.visible)\r\n\t\t\t\t\t.map((column) => column.Name)\r\n\t\t\t\t\t.join(','),\r\n\r\n\t\t\t\tlookupFor: this.options.lookupFor,\r\n\t\t\t\tresetFilter: this.options.resetFilter,\r\n\t\t\t};\r\n\r\n\t\t\tthis.applyPreprocessors(request, preprocessors);\r\n\r\n\t\t\treturn request;\r\n\t\t},\r\n\r\n\t\tgetTotalItems: function (preprocessors) {\r\n\t\t\tconst request = this.prepareRequest(preprocessors);\r\n\t\t\tdelete request.pageNumber;\r\n\t\t\tdelete request.pageSize;\r\n\r\n\t\t\t//TODO: getRelationItemsCount doesn't support filters\r\n\t\t\treturn dataQueryService.getRelationItemsCount(request);\r\n\t\t},\r\n\r\n\t\texportData: function (preprocessors) {\r\n\t\t\tconst preprocessorsForExport = Object.assign({}, preprocessors);\r\n\t\t\tdelete preprocessorsForExport.pagingPreprocessor;\r\n\t\t\treturn dataQueryService.exportRelationItems(this.prepareRequest(preprocessorsForExport));\r\n\t\t},\r\n\r\n\t\t//TODO: remove it and use _id for all data types\r\n\t\tentitiesEqualityFunction: function (itemA, itemB) {\r\n\t\t\treturn (itemA && itemB && itemA.Id === itemB.Id) || itemA === itemB;\r\n\t\t},\r\n\r\n\t\tloadEntityById: function (itemId) {\r\n\t\t\tconst request = this.prepareRequest();\r\n\t\t\tdelete request.addedRelations;\r\n\t\t\tdelete request.removedRelations;\r\n\t\t\tdelete request.lookupFor;\r\n\r\n\t\t\trequest.objectId = itemId;\r\n\r\n\t\t\treturn dataQueryService.getRelationItems(request).then(\r\n\t\t\t\tfunction (items) {\r\n\t\t\t\t\tif (items.length) {\r\n\t\t\t\t\t\treturn objectMapper.mapItem(items[0]);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn $q.reject();\r\n\t\t\t\t\t}\r\n\t\t\t\t}.bind(this)\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\tisEntityCorrect: function (entity) {\r\n\t\t\tif (!this.options.correctEntityFilter) {\r\n\t\t\t\treturn $q.resolve(true);\r\n\t\t\t}\r\n\t\t\tconst request = this.prepareRequest();\r\n\t\t\tdelete request.addedRelations;\r\n\t\t\tdelete request.removedRelations;\r\n\t\t\tdelete request.lookupFor;\r\n\r\n\t\t\trequest.filter = this.options.correctEntityFilter;\r\n\t\t\trequest.objectId = entity._id;\r\n\r\n\t\t\treturn dataQueryService\r\n\t\t\t\t.getRelationItems(request)\r\n\t\t\t\t.then(\r\n\t\t\t\t\tfunction (items) {\r\n\t\t\t\t\t\treturn items && items.length === 1;\r\n\t\t\t\t\t}.bind(this)\r\n\t\t\t\t)\r\n\t\t\t\t.catch(function () {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t});\r\n\t\t},\r\n\t});\r\n\r\n\treturn DataDefinitionRequester;\r\n}\r\n","RelationsRequesterFactory.$inject = ['mx.sb.Agent.DataQuery.DataDefinitionRequester', 'mx.SolutionBuilderAgent.DataQueryService', 'mx.shell.ObjectMapper'];\r\n\r\nexport function RelationsRequesterFactory(DataDefinitionRequester, dataQueryService, objectMapper) {\r\n\t/**\r\n\t * @ngdoc Class\r\n\t * @name mx.sb.Agent.DataQuery.RelationsRequester\r\n\t *\r\n\t * @description\r\n\t * Class Relations Requester\r\n\t *\r\n\t */\r\n\r\n\tfunction RelationsRequester(dataQuery) {\r\n\t\tDataDefinitionRequester.call(this, dataQuery);\r\n\t\tthis.options = {};\r\n\t}\r\n\r\n\tRelationsRequester.prototype = angular.extend(Object.create(DataDefinitionRequester.prototype), {\r\n\t\tprepareRequest: function (preprocessors) {\r\n\t\t\tconst request = {\r\n\t\t\t\tentityClassName: this.options.relation?.relationsConfig.referenceFrom,\r\n\t\t\t\trelationName: this.options.relation?.relationsConfig.attributeFrom,\r\n\t\t\t\tfragmentId: this.options.relation?.fragmentId,\r\n\t\t\t\taddedRelations: this.options.relation?.addedRelations,\r\n\t\t\t\tremovedRelations: this.options.relation?.removedRelations,\r\n\r\n\t\t\t\tdataQueryName: this.options.columnDefinition,\r\n\t\t\t\tfilter: this.options.filter,\r\n\t\t\t\tallowedTypes: this.options.allowedTypes,\r\n\t\t\t\tarchived: this.options.archived,\r\n\t\t\t\tfilters: this.options.filters || '',\r\n\r\n\t\t\t\tcolumns: this.dataQuery.Columns.filter((column) => column.visible)\r\n\t\t\t\t\t.map((column) => column.Name)\r\n\t\t\t\t\t.join(','),\r\n\t\t\t};\r\n\r\n\t\t\tthis.applyPreprocessors(request, preprocessors);\r\n\r\n\t\t\treturn request;\r\n\t\t},\r\n\r\n\t\tloadEntityById: async function (itemId) {\r\n\t\t\tconst request = this.prepareRequest();\r\n\t\t\tdelete request.addedRelations;\r\n\t\t\tdelete request.removedRelations;\r\n\t\t\tdelete request.relationName;\r\n\r\n\t\t\trequest.entityClassName = this.options.relation.relationsConfig.referenceTo;\r\n\t\t\trequest.objectId = itemId;\r\n\r\n\t\t\tconst items = await dataQueryService.getRelationItems(request);\r\n\t\t\tif (items.length) {\r\n\t\t\t\treturn objectMapper.mapItem(items[0]);\r\n\t\t\t} else {\r\n\t\t\t\tthrow new Error('Entity cannot be loaded for current DataQuery');\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tisEntityCorrect: async function (entity) {\r\n\t\t\tif (!this.options.correctEntityFilter) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tconst request = this.prepareRequest();\r\n\t\t\tdelete request.addedRelations;\r\n\t\t\tdelete request.removedRelations;\r\n\r\n\t\t\trequest.filter = this.options.correctEntityFilter;\r\n\t\t\trequest.objectId = entity._id;\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconst items = await dataQueryService.getRelationItems(request);\r\n\t\t\t\treturn items?.length === 1;\r\n\t\t\t} catch (e) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t},\r\n\t});\r\n\r\n\treturn RelationsRequester;\r\n}\r\n","DataDefinitionQueryOptionsFactory.$inject = [];\r\nexport default function DataDefinitionQueryOptionsFactory() {\r\n\tfunction DataDefinitionRequestOptions(options = {}) {\r\n\t\tconst availableOptions = [\r\n\t\t\t'entityClassName',\r\n\t\t\t'objectIDs',\r\n\t\t\t'excludedIDs',\r\n\t\t\t'useObjectId',\r\n\t\t\t'columnDefinition',\r\n\t\t\t'filter',\r\n\t\t\t'correctEntityFilter',\r\n\t\t\t'allowedTypes',\r\n\t\t\t'relationName',\r\n\t\t\t'archived',\r\n\t\t\t'fragmentId',\r\n\t\t\t'lookupFor',\r\n\t\t\t'resetFilter',\r\n\t\t\t'returnNoItems',\r\n\t\t];\r\n\r\n\t\tavailableOptions.forEach((option) => {\r\n\t\t\tlet optionValue = options[option];\r\n\t\t\tObject.defineProperty(this, option, {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn optionValue;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\toptionValue = newValue;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tObject.freeze(this);\r\n\t}\r\n\r\n\treturn DataDefinitionRequestOptions;\r\n}\r\n","'use strict';\r\n\r\nMultiFragmentRequesterClassFactory.$inject = [\r\n\t'$q',\r\n\t'mx.SolutionBuilderAgent.DataQueryService',\r\n\t'mx.shell.ObjectMapper',\r\n\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n\t'mx.SolutionBuilderAgent.Http',\r\n\t'mx.shell.DownloadHelpService',\r\n\t'mx.sb.Agent.DataQuery.ClientDataRequester',\r\n\t'mx.sb.Agent.DataQuery.Row',\r\n\t'mx.sb.Agent.DataQuery.Enums',\r\n];\r\nexport default function MultiFragmentRequesterClassFactory(\r\n\t$q,\r\n\tdataQueryService,\r\n\tobjectMapper,\r\n\tcontentWidgetService,\r\n\thttp,\r\n\tdownloadHelpService,\r\n\tClientDataRequester,\r\n\tDataQueryRow,\r\n\tDataQueryEnums\r\n) {\r\n\t/**\r\n\t * @ngdoc Class\r\n\t * @name mx.sb.Agent.DataQuery.MultiFragmentRequester\r\n\t *\r\n\t * @description\r\n\t * Class DataDefinition Requester\r\n\t *\r\n\t */\r\n\r\n\tfunction MultiFragmentRequester(dataQuery) {\r\n\t\tClientDataRequester.call(this, dataQuery);\r\n\r\n\t\tthis.options = {};\r\n\t}\r\n\r\n\tMultiFragmentRequester.prototype = angular.extend(Object.create(ClientDataRequester.prototype), {\r\n\t\t_loadExpressions: function (rawEntity, displayEntity, changedColumns) {\r\n\t\t\tvar queryColumns = changedColumns.filter(function (column) {\r\n\t\t\t\treturn column.HasQuery;\r\n\t\t\t});\r\n\r\n\t\t\tvar expressions = queryColumns\r\n\t\t\t\t.map(function (column) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tName: column.Name,\r\n\t\t\t\t\t\tExpression: column.Expression,\r\n\t\t\t\t\t\tValues: column.ExpressionDependencies.map(function (fieldName) {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\tKey: fieldName,\r\n\t\t\t\t\t\t\t\tValue: rawEntity[fieldName],\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t};\r\n\t\t\t\t})\r\n\t\t\t\t.filter(function (expression) {\r\n\t\t\t\t\t//TODO: server side should be fixed to work with null values and then this filter should be removed\r\n\t\t\t\t\treturn expression.Values.filter(function (value) {\r\n\t\t\t\t\t\treturn value.Value !== null;\r\n\t\t\t\t\t}).length;\r\n\t\t\t\t});\r\n\r\n\t\t\treturn (\r\n\t\t\t\texpressions.length > 0\r\n\t\t\t\t\t? dataQueryService\r\n\t\t\t\t\t\t\t.executeMultiFragmentExpressions({\r\n\t\t\t\t\t\t\t\texpressions: expressions,\r\n\t\t\t\t\t\t\t\tclassName: this.options.entityClassName,\r\n\t\t\t\t\t\t\t\ttypeName: this.options.entityName, //TODO: need to get entityName from DataModel by property\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t.then(\r\n\t\t\t\t\t\t\t\tfunction (results) {\r\n\t\t\t\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tfunction () {\r\n\t\t\t\t\t\t\t\t\treturn [];\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t: $q.when([])\r\n\t\t\t).then(function (results) {\r\n\t\t\t\treturn changedColumns.filter(function (column) {\r\n\t\t\t\t\tvar result = _.find(results, { Name: column.Name });\r\n\t\t\t\t\tif (result) {\r\n\t\t\t\t\t\tdisplayEntity[column.Name] = result.DisplayString;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t} else if (column.IsSingleColumn && rawEntity.hasOwnProperty(column.Name) && typeof rawEntity[column.Name] !== 'undefined') {\r\n\t\t\t\t\t\tdisplayEntity[column.Name] = rawEntity[column.Name];\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t_getDisplayEntity: function (rawEntity, displayEntity, changedColumns) {\r\n\t\t\tvar defer = $q.defer();\r\n\r\n\t\t\t//Steps to get display entity for Columns with Expressions in multifragment-grid:\r\n\t\t\t// 1. loadExpression from server for this column\r\n\t\t\t// 3. if loadExpression doesn't return value for column, this column is SingleColumn and rawValue has 'column.Name' property => use rawValue\r\n\t\t\t// 4. check enums and pickers display names\r\n\r\n\t\t\tthis._loadExpressions(rawEntity, displayEntity, changedColumns).then(function (simpleChangedColumns) {\r\n\t\t\t\tClientDataRequester.prototype._getDisplayEntity\r\n\t\t\t\t\t.call(this, rawEntity, displayEntity, simpleChangedColumns)\r\n\t\t\t\t\t.then(function (displayEntity) {\r\n\t\t\t\t\t\tdefer.resolve(displayEntity);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch(function (e) {\r\n\t\t\t\t\t\tdefer.reject(e);\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\treturn defer.promise;\r\n\t\t},\r\n\r\n\t\t_getRows: function () {\r\n\t\t\tvar dataQuery = this.dataQuery;\r\n\r\n\t\t\tif (\r\n\t\t\t\tthis.rows &&\r\n\t\t\t\tthis.rows.length === this.options.items.length &&\r\n\t\t\t\tthis._items === this.options.items &&\r\n\t\t\t\tthis._dataQuery &&\r\n\t\t\t\tthis._dataQuery === dataQuery &&\r\n\t\t\t\tthis.options.objectId === this._objectId\r\n\t\t\t) {\r\n\t\t\t\treturn $q.when(this._getFilteredRows(this.rows));\r\n\t\t\t}\r\n\r\n\t\t\tthis._items = this.options.items;\r\n\t\t\tthis._dataQuery = dataQuery;\r\n\t\t\tthis._objectId = this.options.objectId;\r\n\r\n\t\t\tvar promise =\r\n\t\t\t\tdataQuery.Id && this.options.objectId && this.options.objectId !== 'new'\r\n\t\t\t\t\t? dataQueryService.getMultiFragmentData(dataQuery.Id, this.options.objectId)\r\n\t\t\t\t\t: $q.resolve([]);\r\n\r\n\t\t\treturn promise.then(\r\n\t\t\t\tfunction (items /*, response*/) {\r\n\t\t\t\t\tvar displayEntities = {};\r\n\r\n\t\t\t\t\titems.forEach(function (item) {\r\n\t\t\t\t\t\tdisplayEntities[item.Id] = objectMapper.mapItem(item);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn $q\r\n\t\t\t\t\t\t.all(\r\n\t\t\t\t\t\t\tthis.options.items.map(function (rawEntity) {\r\n\t\t\t\t\t\t\t\tvar row = new DataQueryRow(rawEntity, displayEntities[rawEntity.ID], this._getDisplayEntity.bind(this));\r\n\t\t\t\t\t\t\t\treturn row.initProperties(dataQuery.Columns).then(function () {\r\n\t\t\t\t\t\t\t\t\treturn row;\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}, this)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.then(\r\n\t\t\t\t\t\t\tfunction (rows) {\r\n\t\t\t\t\t\t\t\tthis.rows = rows;\r\n\t\t\t\t\t\t\t\treturn this._getFilteredRows(rows);\r\n\t\t\t\t\t\t\t}.bind(this)\r\n\t\t\t\t\t\t);\r\n\t\t\t\t}.bind(this)\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\tcreateEntity: function (entityClassName) {\r\n\t\t\treturn contentWidgetService.getNewFragment(entityClassName);\r\n\t\t},\r\n\r\n\t\tgetEntityTypes: async function () {\r\n\t\t\treturn [\r\n\t\t\t\t{\r\n\t\t\t\t\t_displayName: '',\r\n\t\t\t\t\t_type: this.dataQuery.SchemaClassName,\r\n\t\t\t\t\t_itemType: 'multifragment',\r\n\t\t\t\t},\r\n\t\t\t];\r\n\t\t},\r\n\r\n\t\texportData: function (preprocessors) {\r\n\t\t\tvar request = {\r\n\t\t\t\tDataQueryId: this.dataQuery.Id,\r\n\t\t\t\tClientTimeOffset: new Date().getTimezoneOffset(),\r\n\t\t\t\tObjectId: this.options.objectId,\r\n\t\t\t\tColumns: this.dataQuery.Columns.filter((column) => column.visible)\r\n\t\t\t\t\t.map((column) => column.Name)\r\n\t\t\t\t\t.join(','),\r\n\t\t\t\tKeyword: preprocessors?.searchPreprocessor?.keyword,\r\n\t\t\t\tActiveFilter: preprocessors?.columnSearchPreprocessor?.conditions,\r\n\t\t\t\tOrderBy: (preprocessors?.sortingPreprocessor?.sortedColumns || []).reduce(\r\n\t\t\t\t\t(accum, column, i) => accum + (i > 0 ? ',' : '') + column.Name + ' ' + (column.Sorting === DataQueryEnums.ColumnSortingEnum.Ascending ? 'asc' : 'desc'),\r\n\t\t\t\t\t''\r\n\t\t\t\t),\r\n\t\t\t};\r\n\r\n\t\t\tvar headers = {\r\n\t\t\t\tresponseType: 'arraybuffer',\r\n\t\t\t};\r\n\r\n\t\t\treturn http.post('api/DataObject/ExportObjectFragments', request, headers, {}, false, true).then(function (response) {\r\n\t\t\t\treturn downloadHelpService.downloadContent(response, response.data);\r\n\t\t\t});\r\n\t\t},\r\n\t});\r\n\r\n\treturn MultiFragmentRequester;\r\n}\r\n","'use strict';\r\n\r\nServiceRequesterClassFactory.$inject = [\r\n\t'$q',\r\n\t'mx.SolutionBuilderAgent.DataQueryService',\r\n\t'mx.SolutionBuilderAgent.ExternalServiceManager',\r\n\t'mx.SolutionBuilderAgent.Http',\r\n\t'mx.shell.DownloadHelpService',\r\n\r\n\t'mx.sb.Agent.DataQuery.ClientDataRequester',\r\n];\r\nexport default function ServiceRequesterClassFactory(\r\n\t$q,\r\n\tdataQueryService,\r\n\texternalServiceManager,\r\n\thttp,\r\n\tdownloadHelpService,\r\n\r\n\tClientDataRequester\r\n) {\r\n\t/**\r\n\t * @ngdoc Class\r\n\t * @name mx.sb.Agent.DataQuery.ServiceRequester\r\n\t *\r\n\t * @description\r\n\t * Class DataDefinition Requester\r\n\t *\r\n\t */\r\n\r\n\tfunction ServiceRequester(dataQuery) {\r\n\t\tClientDataRequester.call(this, dataQuery);\r\n\r\n\t\tthis.options = {};\r\n\r\n\t\tthis.supportedPreprocessors = {\r\n\t\t\tsearch: true,\r\n\t\t\tpaging: true,\r\n\t\t\tsorting: true,\r\n\t\t\tcolumnSearch: true,\r\n\t\t\tadvanceSearch: true,\r\n\t\t};\r\n\t}\r\n\r\n\tServiceRequester.prototype = angular.extend(Object.create(ClientDataRequester.prototype), {\r\n\t\tsetDataQuery: function (dataQuery) {\r\n\t\t\tClientDataRequester.prototype.setDataQuery(dataQuery);\r\n\t\t\tthis._executeOptions = externalServiceManager.getListExecuteOptions(this.dataQuery, mx.SolutionBuilderAgent.SupportedOperations.ReadObjectsByODataQuery);\r\n\r\n\t\t\tvar preFunc = this._executeOptions.typeInfo.MakeExpression();\r\n\r\n\t\t\tthis.expressionFunctions = {};\r\n\t\t\tdataQuery.Columns.forEach(function (column) {\r\n\t\t\t\tif (!column.Expression || !column.Expression.match(/[^\\w$_]/g)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.expressionFunctions[column.Name] = preFunc(column.Expression);\r\n\t\t\t}, this);\r\n\t\t},\r\n\r\n\t\tentitiesEqualityFunction: function (entityA, entityB) {\r\n\t\t\tvar identifier = this._executeOptions.typeInfo.Identifier;\r\n\t\t\tif (identifier) {\r\n\t\t\t\treturn (entityA && entityB && entityA[identifier] === entityB[identifier]) || entityA === entityB;\r\n\t\t\t} else {\r\n\t\t\t\treturn entityA === entityB;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_loadExpressions: function (rawEntity, displayEntity, changedColumns) {\r\n\t\t\tchangedColumns.forEach(function (column) {\r\n\t\t\t\tif (typeof this.expressionFunctions[column.Name] !== 'function') {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tdisplayEntity[column.Name] = this.expressionFunctions[column.Name](rawEntity);\r\n\t\t\t}, this);\r\n\r\n\t\t\treturn $q.when();\r\n\t\t},\r\n\r\n\t\t_getDisplayEntity: function (rawEntity, displayEntity, changedColumns) {\r\n\t\t\tvar defer = $q.defer();\r\n\r\n\t\t\tthis._loadExpressions(rawEntity, displayEntity, changedColumns).finally(function () {\r\n\t\t\t\tchangedColumns = changedColumns.filter(function (column) {\r\n\t\t\t\t\treturn !column.HasQuery;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tClientDataRequester.prototype._getDisplayEntity\r\n\t\t\t\t\t.call(this, rawEntity, displayEntity, changedColumns)\r\n\t\t\t\t\t.then(function (displayEntity) {\r\n\t\t\t\t\t\tdefer.resolve(displayEntity);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch(function (e) {\r\n\t\t\t\t\t\tdefer.reject(e);\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\treturn defer.promise;\r\n\t\t},\r\n\t});\r\n\r\n\treturn ServiceRequester;\r\n}\r\n","'use strict';\r\n\r\nDataQueryColumnFactory.$inject = ['$q', 'mx.shell.Config', 'mx.SolutionBuilderAgent.EntityService', 'mx.sb.Agent.DataQuery.Enums', 'mx.sb.Agent.DataQuery.ColumnFiltersFactory'];\r\nexport default function DataQueryColumnFactory($q, configService, entityService, DataQueryEnums, columnFiltersFactory) {\r\n\tconst simpleExpression = /^\\[(\\w*)]$|^(\\w*)$/;\r\n\tconst regAsql = /^(?:(T)\\((\\w+)\\)|(\\w+))(?:\\.\\w+)+\\w+$|^(S)ubquery\\(/gi;\r\n\tconst regSubqueryParams = /base\\.(\\w+)/gi;\r\n\r\n\t/**\r\n\t * @ngdoc Class\r\n\t * @name mx.sb.Agent.DataQuery.Column\r\n\t *\r\n\t * @description\r\n\t * Class DataQueryColumn\r\n\t *\r\n\t * @param {Object} columnDefinition - attributes of column\r\n\t *\r\n\t */\r\n\tfunction DataQueryColumn(columnDefinition) {\r\n\t\tconst { ColumnAlignmentsEnum, ColumnSortingEnum, ColumnTitleTypeEnum, ColumnDisplayTypeEnum, ColumnSearchTypeEnum } = DataQueryEnums;\r\n\r\n\t\tlet position,\r\n\t\t\tsorting,\r\n\t\t\tsortingPriority,\r\n\t\t\ttitle,\r\n\t\t\ttitleType,\r\n\t\t\twidth,\r\n\t\t\tdisplayType,\r\n\t\t\tisDisplay,\r\n\t\t\tisLoading,\r\n\t\t\tattributeValueType,\r\n\t\t\tgroupingIsAvailable,\r\n\t\t\tisEnum,\r\n\t\t\tisPickup,\r\n\t\t\tvisible,\r\n\t\t\texpressionResult,\r\n\t\t\tenumeration,\r\n\t\t\tenumerationAsObject,\r\n\t\t\tisSingleColumn;\r\n\r\n\t\tattributeValueType = columnDefinition.AttributeValueType || mx.shell.ObjectPropertyType.String.name;\r\n\r\n\t\ttitleType = ColumnTitleTypeEnum.containsValue(columnDefinition.TitleType) ? columnDefinition.TitleType : ColumnAlignmentsEnum.IndividualDisplayString;\r\n\r\n\t\ttitle = titleType === ColumnTitleTypeEnum.NoTitle ? '' : columnDefinition.Title || '';\r\n\r\n\t\tdisplayType = ColumnDisplayTypeEnum.containsValue(columnDefinition.DisplayType) ? columnDefinition.DisplayType : ColumnDisplayTypeEnum.Visible;\r\n\r\n\t\tisDisplay = displayType !== ColumnDisplayTypeEnum.Hidden && displayType !== ColumnDisplayTypeEnum.None;\r\n\t\tisLoading = displayType !== ColumnDisplayTypeEnum.Hidden;\r\n\t\tvisible = isDisplay && displayType !== ColumnDisplayTypeEnum.InvisibleByDefault;\r\n\r\n\t\tgroupingIsAvailable = attributeValueType !== mx.shell.ObjectPropertyType.Date.name && attributeValueType !== mx.shell.ObjectPropertyType.Boolean.name;\r\n\r\n\t\tisEnum = (Boolean(columnDefinition.ReferenceTo) && attributeValueType === mx.shell.ObjectPropertyType.Integer.name) || Array.isArray(columnDefinition.Enumeration);\r\n\t\tisPickup = Boolean(columnDefinition.ReferenceTo) && attributeValueType === mx.shell.ObjectPropertyType.Guid.name;\r\n\r\n\t\tcolumnDefinition.Expression = typeof columnDefinition.Expression === 'string' ? columnDefinition.Expression : '';\r\n\t\tisSingleColumn = !isEnum && !isPickup && !columnDefinition.Expression.match(regAsql);\r\n\r\n\t\texpressionResult = this.checkExpression(columnDefinition.Expression);\r\n\r\n\t\tObject.defineProperties(this, {\r\n\t\t\tAlignment: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: ColumnAlignmentsEnum.containsValue(columnDefinition.Alignment) ? columnDefinition.Alignment : ColumnAlignmentsEnum.Left,\r\n\t\t\t},\r\n\t\t\tAttributeSearchValueType: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: attributeValueType,\r\n\t\t\t},\r\n\t\t\tAttributeValueType: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: columnDefinition.AttributeValueType || mx.shell.ObjectPropertyType.String.name,\r\n\t\t\t},\r\n\t\t\tValueType: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: columnDefinition.ValueType,\r\n\t\t\t},\r\n\t\t\tType: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: columnDefinition.Type,\r\n\t\t\t},\r\n\t\t\tExpression: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: columnDefinition.Expression || '',\r\n\t\t\t},\r\n\t\t\tHasQuery: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: expressionResult.hasQuery,\r\n\t\t\t},\r\n\t\t\tExpressionDependencies: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: expressionResult.expressionDependencies,\r\n\t\t\t},\r\n\t\t\tExpressionType: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: expressionResult.expressionType,\r\n\t\t\t},\r\n\t\t\tExpressionClassName: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: expressionResult.expressionClassName,\r\n\t\t\t},\r\n\t\t\tRawValuePropertyName: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: expressionResult.rawValuePropertyName,\r\n\t\t\t},\r\n\t\t\tTargetAttributePaths: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: Array.isArray(columnDefinition.TargetAttributePaths) ? columnDefinition.TargetAttributePaths : [],\r\n\t\t\t},\r\n\t\t\tSearchExpression: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: columnDefinition.SearchExpression || '',\r\n\t\t\t},\r\n\t\t\tSortingExpression: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: columnDefinition.SortingExpression || '',\r\n\t\t\t},\r\n\t\t\tFormat: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\twritable: true,\r\n\t\t\t\tvalue: columnDefinition.Format || (attributeValueType === mx.shell.ObjectPropertyType.Date.name ? 'short' : ''),\r\n\t\t\t},\r\n\t\t\tId: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: columnDefinition.Id || '',\r\n\t\t\t},\r\n\t\t\tIsSystem: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: Boolean(columnDefinition.IsSystem),\r\n\t\t\t},\r\n\t\t\tRequired: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: Boolean(columnDefinition.Required),\r\n\t\t\t},\r\n\t\t\tName: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\twritable: true,\r\n\t\t\t\tvalue: columnDefinition.Name || '',\r\n\t\t\t},\r\n\t\t\tReferenceTo: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: columnDefinition.ReferenceTo,\r\n\t\t\t},\r\n\t\t\tReferenceFilter: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: columnDefinition.ReferenceFilter,\r\n\t\t\t},\r\n\t\t\tEnumeration: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn enumeration;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (value) {\r\n\t\t\t\t\tif (Array.isArray(value)) {\r\n\t\t\t\t\t\tenumeration = value;\r\n\t\t\t\t\t\tenumerationAsObject = {};\r\n\t\t\t\t\t\tenumeration.forEach(function (item) {\r\n\t\t\t\t\t\t\tenumerationAsObject[item.value] = item;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tEnumerationAsObject: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn enumerationAsObject;\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tColorScript: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: columnDefinition.ColorScript,\r\n\t\t\t},\r\n\t\t\tColorType: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: columnDefinition.ColorType,\r\n\t\t\t},\r\n\t\t\tColor: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: columnDefinition.Color,\r\n\t\t\t},\r\n\t\t\tDisplayImage: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: columnDefinition.DisplayImage,\r\n\t\t\t},\r\n\t\t\tImageScript: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: columnDefinition.ImageScript,\r\n\t\t\t},\r\n\t\t\tIsAvailableInSearch: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: isDisplay && columnDefinition.SearchDisplayType !== ColumnSearchTypeEnum.No,\r\n\t\t\t},\r\n\t\t\tReadOnly: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: columnDefinition.ReadOnly,\r\n\t\t\t},\r\n\t\t\tIsArray: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: columnDefinition.IsArray,\r\n\t\t\t},\r\n\t\t\tTitle: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: title,\r\n\t\t\t},\r\n\t\t\tScale: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: columnDefinition.Scale,\r\n\t\t\t},\r\n\t\t\tTitleType: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: titleType,\r\n\t\t\t},\r\n\t\t\tDisplayType: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: displayType,\r\n\t\t\t},\r\n\t\t\tIsDisplay: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: isDisplay,\r\n\t\t\t},\r\n\t\t\tIsLoading: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: isLoading,\r\n\t\t\t},\r\n\t\t\tIsEnum: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: isEnum,\r\n\t\t\t},\r\n\t\t\tIsPickup: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: isPickup,\r\n\t\t\t},\r\n\t\t\tIsSingleColumn: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: isSingleColumn,\r\n\t\t\t},\r\n\t\t\tIsKeyword: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\twritable: true,\r\n\t\t\t\tvalue: Boolean(columnDefinition.IsKeyword),\r\n\t\t\t},\r\n\t\t\tGroupingIsAvailable: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\twritable: true,\r\n\t\t\t\tvalue: groupingIsAvailable,\r\n\t\t\t},\r\n\r\n\t\t\t// Configurable attributes\r\n\t\t\tWidth: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn width;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (value) {\r\n\t\t\t\t\tvalue = parseInt(value);\r\n\t\t\t\t\twidth = !isNaN(value) && value >= 0 ? value : 0;\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tPosition: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn position;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (value) {\r\n\t\t\t\t\tvalue = parseInt(value);\r\n\t\t\t\t\tposition = !isNaN(value) && value >= 0 ? value : 0;\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tSorting: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn sorting;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (value) {\r\n\t\t\t\t\tif (ColumnSortingEnum.containsValue(value)) {\r\n\t\t\t\t\t\tsorting = value;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsorting = ColumnSortingEnum.None;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tSortingPriority: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn sortingPriority;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (value) {\r\n\t\t\t\t\tvalue = parseInt(value);\r\n\t\t\t\t\tsortingPriority = !isNaN(value) && value >= 0 ? value : 0;\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tAriaHidden: {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tvalue: false,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tthis.visible = visible; //TODO: move definition from grid\r\n\t\tthis.Width = columnDefinition.Width;\r\n\t\tthis.Position = columnDefinition.Position;\r\n\t\tthis.Sorting = columnDefinition.Sorting;\r\n\t\tthis.SortingPriority = columnDefinition.SortingPriority;\r\n\t\tthis.Enumeration = columnDefinition.Enumeration;\r\n\r\n\t\tthis.filter = columnFiltersFactory.initColumnFilter(this);\r\n\t}\r\n\r\n\tDataQueryColumn.prototype = {\r\n\t\tgetEnumValues: function () {\r\n\t\t\tif (!this.IsEnum) {\r\n\t\t\t\treturn $q.when([]);\r\n\t\t\t}\r\n\t\t\tif (this.Enumeration) {\r\n\t\t\t\treturn $q.when(this.Enumeration);\r\n\t\t\t}\r\n\t\t\tthis._enumItemsLoader =\r\n\t\t\t\tthis._enumItemsLoader ||\r\n\t\t\t\tentityService.getEnumerationValues(this.ReferenceTo, this.ReferenceFilter).then(\r\n\t\t\t\t\tfunction (enumeration) {\r\n\t\t\t\t\t\tthis.Enumeration = enumeration.map(function (item) {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\ttitle: item.DisplayString,\r\n\t\t\t\t\t\t\t\thidden: item.Hidden,\r\n\t\t\t\t\t\t\t\tvalue: item.Value,\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\treturn this.Enumeration;\r\n\t\t\t\t\t}.bind(this)\r\n\t\t\t\t);\r\n\r\n\t\t\treturn this._enumItemsLoader;\r\n\t\t},\r\n\t\tgetEnumValueTitle: function (value) {\r\n\t\t\treturn this.getEnumValues().then(\r\n\t\t\t\tfunction () {\r\n\t\t\t\t\treturn (this.EnumerationAsObject[value] || {}).title;\r\n\t\t\t\t}.bind(this)\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\tcheckExpression: function (expression) {\r\n\t\t\tvar expressionResult = {\r\n\t\t\t\thasQuery: false,\r\n\t\t\t};\r\n\r\n\t\t\tvar match = simpleExpression.exec(expression);\r\n\t\t\tif (match) {\r\n\t\t\t\texpressionResult.rawValuePropertyName = match[1] || match[2];\r\n\t\t\t\treturn expressionResult;\r\n\t\t\t} else {\r\n\t\t\t\texpressionResult.hasQuery = true;\r\n\t\t\t}\r\n\r\n\t\t\texpressionResult.expressionDependencies = [];\r\n\r\n\t\t\tvar result = regAsql.exec(expression);\r\n\t\t\tif (result) {\r\n\t\t\t\texpressionResult.hasQuery = true;\r\n\r\n\t\t\t\tvar expType = result[1] || result[4];\r\n\t\t\t\texpressionResult.expressionType = expType ? expType.toLocaleUpperCase() : 'D';\r\n\t\t\t\tregAsql.lastIndex = 0;\r\n\r\n\t\t\t\t// 'T': T(PDRActionClassBase).Name\r\n\t\t\t\t// 'D': Action.Name\r\n\t\t\t\t// 'S': Subquery(...)\r\n\t\t\t\tswitch (expressionResult.expressionType) {\r\n\t\t\t\t\tcase 'T':\r\n\t\t\t\t\t\texpressionResult.expressionClassName = result[2];\r\n\t\t\t\t\t\texpressionResult.expressionDependencies.push(expression.split('.')[1]);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'D':\r\n\t\t\t\t\t\texpressionResult.expressionDependencies.push(result[3]);\r\n\t\t\t\t\t\texpressionResult.rawValuePropertyName = result[3];\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tvar param;\r\n\t\t\t\t\t\twhile ((param = regSubqueryParams.exec(expression)) !== null) {\r\n\t\t\t\t\t\t\texpressionResult.expressionDependencies.push(param[1]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn expressionResult;\r\n\t\t},\r\n\t};\r\n\r\n\treturn DataQueryColumn;\r\n}\r\n","DataQueryDefinitionFactory.$inject = [\r\n\t'$q',\r\n\t'mx.sb.Agent.DataQuery.Column',\r\n\t'mx.SolutionBuilderAgent.ExternalServiceManager',\r\n\t'mx.SolutionBuilderAgent.SchemaService',\r\n\t'mx.SolutionBuilderAgent.EntityService',\r\n];\r\nexport default function DataQueryDefinitionFactory($q, DataQueryColumn, externalServiceManager, schemaService, entityService) {\r\n\t/**\r\n\t * @ngdoc Class\r\n\t * @name mx.sb.Agent.DataQuery.DataQueryDefinition\r\n\t *\r\n\t * @description\r\n\t * Class DataQueryDefinition\r\n\t *\r\n\t * @param {Object} options - attributes of data query\r\n\t *\r\n\t */\r\n\tfunction DataQueryDefinition(options) {\r\n\t\tthis.filterChangeHandlers = [];\r\n\r\n\t\tangular.extend(this, options);\r\n\r\n\t\tif (this.Service) {\r\n\t\t\tthis.serviceInfo = externalServiceManager.parseServiceInfo(this.ServiceInfo);\r\n\t\t\tthis.executeOptions = externalServiceManager.getListExecuteOptions(this, mx.SolutionBuilderAgent.SupportedOperations.ReadObjectsByODataQuery, entityService);\r\n\t\t}\r\n\r\n\t\tthis._debouncedNotifyFilterChanged = $.debounce(1000, () => this._notifyFilterChanged());\r\n\r\n\t\tthis.initColumns(options);\r\n\t}\r\n\r\n\tDataQueryDefinition.prototype = {\r\n\t\tinitColumns: function (options) {\r\n\t\t\toptions.Columns = Array.isArray(options.Columns) ? options.Columns : [];\r\n\r\n\t\t\tthis._setKeywordOption(options.Columns);\r\n\r\n\t\t\tthis.Columns = options.Columns.map(function (columnDefinition) {\r\n\t\t\t\tcolumnDefinition = angular.copy(columnDefinition);\r\n\r\n\t\t\t\tif (this.Service) {\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tcolumnDefinition.ReferenceTo &&\r\n\t\t\t\t\t\tcolumnDefinition.AttributeValueType === mx.shell.ObjectPropertyType.Integer.name &&\r\n\t\t\t\t\t\tthis.serviceInfo.Enums[columnDefinition.ReferenceTo]\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tcolumnDefinition.ReferenceTo = 'service_' + options.Service + '_' + columnDefinition.ReferenceTo;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst column = new DataQueryColumn(columnDefinition);\r\n\t\t\t\tcolumn.filter.addChangeHandler(this._onFilterChange.bind(this));\r\n\r\n\t\t\t\treturn column;\r\n\t\t\t}, this).sort(function compareNumbers(a, b) {\r\n\t\t\t\treturn (a.Position || 0) - (b.Position || 0);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t_onFilterChange(filter, urgent) {\r\n\t\t\tif (this._internalChange) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (urgent) {\r\n\t\t\t\tthis._notifyFilterChanged();\r\n\t\t\t} else {\r\n\t\t\t\tthis._debouncedNotifyFilterChanged();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_notifyFilterChanged() {\r\n\t\t\tconst columnWithFilters = this.Columns.filter((column) => column.filter.hasValue());\r\n\t\t\tconst newFilter = columnWithFilters.map((column) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tvalue: column.filter.value,\r\n\t\t\t\t\toperator: column.filter.operator,\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tif (!angular.equals(newFilter, this._previousFilter)) {\r\n\t\t\t\tthis._previousFilter = newFilter;\r\n\t\t\t\tthis.filterChangeHandlers.forEach((handler) => handler(columnWithFilters));\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\taddFilterChangeHandler(handler) {\r\n\t\t\tif (typeof handler === 'function') {\r\n\t\t\t\tthis.filterChangeHandlers.push(handler);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tclearAllFilters() {\r\n\t\t\tthis._internalChange = true;\r\n\t\t\tthis.Columns.forEach((column) => column.filter.clearFilter());\r\n\t\t\tthis._internalChange = false;\r\n\r\n\t\t\tthis._notifyFilterChanged();\r\n\t\t},\r\n\r\n\t\t_setKeywordOption: function (colsDef) {\r\n\t\t\tvar hasKeywordsFields = colsDef.some(function (column) {\r\n\t\t\t\treturn column.IsKeyword;\r\n\t\t\t});\r\n\r\n\t\t\tif (!hasKeywordsFields) {\r\n\t\t\t\tcolsDef.forEach(function (column) {\r\n\t\t\t\t\tcolumn.IsKeyword = column.AttributeValueType === mx.shell.ObjectPropertyType.String.name;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetColumnByName: function (name) {\r\n\t\t\treturn this.Columns.find(function (it) {\r\n\t\t\t\treturn it.Name === name;\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tgetPropertyPath: function (columnName) {\r\n\t\t\tvar path = [];\r\n\r\n\t\t\tvar column = this.getColumnByName(columnName);\r\n\t\t\tif (!column) {\r\n\t\t\t\treturn path;\r\n\t\t\t}\r\n\r\n\t\t\tif (column.TargetAttributePaths.length) {\r\n\t\t\t\treturn column.TargetAttributePaths;\r\n\t\t\t}\r\n\r\n\t\t\tif (!column.HasQuery) {\r\n\t\t\t\tif (!this.Service) {\r\n\t\t\t\t\tpath.push(this.SchemaClassName);\r\n\t\t\t\t}\r\n\t\t\t\tpath.push(column.RawValuePropertyName);\r\n\t\t\t} else if (column.ExpressionType === 'T') {\r\n\t\t\t\tpath.push(column.ExpressionClassName);\r\n\t\t\t\tpath.push(column.ExpressionDependencies[0]);\r\n\t\t\t}\r\n\r\n\t\t\treturn path;\r\n\t\t},\r\n\r\n\t\tgetRecordTypeDisplayString: function () {\r\n\t\t\tif (this.SchemaClassName) {\r\n\t\t\t\treturn schemaService.getClassInfo(this.SchemaClassName).then(function (info) {\r\n\t\t\t\t\treturn info.DisplayName;\r\n\t\t\t\t});\r\n\t\t\t} else if (this.Service) {\r\n\t\t\t\treturn this.executeOptions.typeInfo.GetTypeDisplayNamePromise();\r\n\t\t\t}\r\n\t\t\treturn $q.when();\r\n\t\t},\r\n\r\n\t\t//TODO: move to Requester\r\n\t\tisExportSupported: function () {\r\n\t\t\tvar serviceInfoOperationsExists = this.ServiceInfo && this.ServiceInfo.Operations && this.ServiceInfo.Operations.length > 0;\r\n\t\t\tvar operationsExists = this.ServiceInfo.Operations[0];\r\n\t\t\tif (serviceInfoOperationsExists && operationsExists) {\r\n\t\t\t\treturn _.get(operationsExists, 'RequestContract.UsedTypes.RequestContract.Descriptor.export.Type', '') === 'BoolType';\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t},\r\n\t};\r\n\r\n\treturn DataQueryDefinition;\r\n}\r\n","'use strict';\r\n\r\nDataQueryExecutorFactory.$inject = [\r\n\t'$q',\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n\t'mx.shell.EventService',\r\n\t'$mdUtil',\r\n\t'mx.sb.Agent.DataQuery.ColumnSearchPreprocessor',\r\n\t'mx.sb.Agent.DataQuery.PagingPreprocessor',\r\n\t'mx.sb.Agent.DataQuery.SearchPreprocessor',\r\n\t'mx.sb.Agent.DataQuery.SortingPreprocessor',\r\n\t'mx.sb.Agent.DataQuery.AdvanceSearchPreprocessor',\r\n\t'mx.shell.ActionManagerService',\r\n\t'mx.sb.Agent.DataQuery.Row',\r\n\t'mx.sb.Agent.DataQuery.BaseRequester',\r\n\t'mx.sb.Agent.DataQuery.DataQueryDefinition',\r\n];\r\nexport default function DataQueryExecutorFactory(\r\n\t$q,\r\n\tpersonalizationService,\r\n\teventService,\r\n\t$mdUtil,\r\n\tColumnSearchPreprocessor,\r\n\tPagingPreprocessor,\r\n\tSearchPreprocessor,\r\n\tSortingPreprocessor,\r\n\tAdvanceSearchPreprocessor,\r\n\tactionManagerService,\r\n\tDataQueryRow,\r\n\tBaseRequester,\r\n\tDataQueryDefinition\r\n) {\r\n\tconst preprocessorConstructors = {\r\n\t\tpaging: PagingPreprocessor,\r\n\t\tsorting: SortingPreprocessor,\r\n\t\tsearch: SearchPreprocessor,\r\n\t\tcolumnSearch: ColumnSearchPreprocessor,\r\n\t\tadvanceSearch: AdvanceSearchPreprocessor,\r\n\t};\r\n\r\n\t/**\r\n\t * @ngdoc Class\r\n\t * @name mx.sb.Agent.DataQuery.Executor\r\n\t *\r\n\t * @description\r\n\t * Executor of DataQuery\r\n\t *\r\n\t */\r\n\r\n\tfunction DataQueryExecutor() {\r\n\t\tthis.loading = null;\r\n\t\tthis.$q = $q;\r\n\t\tthis.personalizationService = personalizationService;\r\n\t\tthis.eventService = eventService;\r\n\r\n\t\tthis._allSelectedRows = [];\r\n\t\tthis._selectedRowsOnPage = [];\r\n\t\tthis.allSelectedRows = this._allSelectedRows.slice();\r\n\t\tthis.selectedRowsOnPage = this._selectedRowsOnPage.slice();\r\n\t\tthis.selectedEntitiesOnPage = [];\r\n\t\tthis.allSelectedEntities = [];\r\n\t\tthis.selectionHandlers = [];\r\n\t\tthis.rowChangeHandlers = [];\r\n\r\n\t\tthis.debouncedLoadItems = $mdUtil.debounce(this.loadItems.bind(this), 100);\r\n\t\tthis.dataItems = [];\r\n\t}\r\n\r\n\tDataQueryExecutor.prototype = {\r\n\t\t/**\r\n\t\t * @ngdoc method\r\n\t\t * @name mx.sb.Agent.DataQuery.Executor.init\r\n\t\t *\r\n\t\t * @params\r\n\t\t *\r\n\t\t * @description\r\n\t\t * Initialization of DataQueryExecutor\r\n\t\t *\r\n\t\t */\r\n\t\tinit: async function (dataQuery, requester, options) {\r\n\t\t\tif (!(dataQuery instanceof DataQueryDefinition)) {\r\n\t\t\t\tthrow Error('Wrong format of DataQuery');\r\n\t\t\t}\r\n\r\n\t\t\tif (!(requester instanceof BaseRequester)) {\r\n\t\t\t\tthrow Error('Wrong format of Requester');\r\n\t\t\t}\r\n\r\n\t\t\tthis._requester = requester;\r\n\t\t\tawait this.setDataQuery(dataQuery);\r\n\t\t\treturn this.initPreprocessors(options.preprocessors);\r\n\t\t},\r\n\r\n\t\tsetDataQuery: async function (dataQuery) {\r\n\t\t\tthis.dataQuery = dataQuery;\r\n\t\t\tthis._requester.setDataQuery(dataQuery);\r\n\t\t\tthis.allEntityTypes = await this._requester.getEntityTypes();\r\n\t\t\tthis.columns = dataQuery.Columns;\r\n\t\t\tthis.notPersonalizedColumns = {};\r\n\t\t\tthis.columns.forEach(function (column) {\r\n\t\t\t\tthis.notPersonalizedColumns[column.Name] = angular.copy(column);\r\n\t\t\t}, this);\r\n\r\n\t\t\tthis.sortColumnsByPosition();\r\n\t\t\t//TODO: check sorting\r\n\r\n\t\t\tthis.dataQuery.addFilterChangeHandler(this._onColumnFiltersChanged.bind(this));\r\n\t\t\treturn this._reinitRowsWithNewColumns();\r\n\t\t},\r\n\r\n\t\t_reinitRowsWithNewColumns: function () {\r\n\t\t\tthis.dataItems.map(function (row) {\r\n\t\t\t\treturn row.initProperties(this.columns);\r\n\t\t\t}, this);\r\n\t\t},\r\n\r\n\t\tupdateRequestOptions: function (options) {\r\n\t\t\tthis._requester.updateOptions(options);\r\n\t\t\treturn (\r\n\t\t\t\ttypeof this._requester.exportData === 'function'\r\n\t\t\t\t\t? actionManagerService.isExportAllAvailable(this._requester.allowedTypes, this.dataQuery.SchemaClassName)\r\n\t\t\t\t\t: $q.when(false)\r\n\t\t\t).then(\r\n\t\t\t\tfunction (available) {\r\n\t\t\t\t\tthis.isExportSupported = available;\r\n\t\t\t\t}.bind(this)\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\tinitPreprocessors: function (preprocessorsConfig) {\r\n\t\t\tpreprocessorsConfig = preprocessorsConfig || {};\r\n\r\n\t\t\tthis.preprocessors = {};\r\n\r\n\t\t\tObject.keys(preprocessorsConfig).forEach(function (name) {\r\n\t\t\t\tif (!this._requester.supportedPreprocessors[name] || !(typeof preprocessorsConfig[name] === 'object' && preprocessorsConfig[name].enabled)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst preprocessorFactory = preprocessorConstructors[name];\r\n\t\t\t\tif (!preprocessorFactory) {\r\n\t\t\t\t\tmx.console.warn('unknown preprocessor: ' + name);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst preprocessor = preprocessorFactory();\r\n\t\t\t\tthis.preprocessors[name + 'Preprocessor'] = preprocessor;\r\n\t\t\t\tpreprocessor.init(this, preprocessorsConfig[name]);\r\n\t\t\t\tpreprocessor.addChangedHandler(this.debouncedLoadItems);\r\n\t\t\t}, this);\r\n\t\t},\r\n\r\n\t\tinitPersonalization: function (personalizationKey) {\r\n\t\t\tif (!personalizationKey) {\r\n\t\t\t\treturn this.$q.when();\r\n\t\t\t}\r\n\t\t\tthis.personalizationKey = personalizationKey;\r\n\r\n\t\t\tconst preprocessorPromises = Object.keys(this.preprocessors).map(function (preprocessorKey) {\r\n\t\t\t\treturn this.preprocessors[preprocessorKey].initPersonalization(this.personalizationKey);\r\n\t\t\t}, this);\r\n\r\n\t\t\tthis.unsubscribers = this.unsubscribers || [];\r\n\r\n\t\t\tconst off = this.eventService.subscribeGlobal(\r\n\t\t\t\tmx.SolutionBuilderAgent.Events.GridPersonalizationSaved,\r\n\t\t\t\tfunction (e, data) {\r\n\t\t\t\t\tif (data && data.contextKey === this.personalizationKey) {\r\n\t\t\t\t\t\tthis.hasPersonalization = typeof data.personalization === 'object' && Object.keys(data.personalization).length;\r\n\t\t\t\t\t}\r\n\t\t\t\t}.bind(this)\r\n\t\t\t);\r\n\t\t\tthis.unsubscribers.push(off);\r\n\r\n\t\t\treturn this.$q.all([this.personalizationService.getGridPersonalization(this.personalizationKey)].concat(preprocessorPromises)).then(\r\n\t\t\t\tfunction (res) {\r\n\t\t\t\t\tconst personalization = res[0];\r\n\t\t\t\t\tthis.hasPersonalization = typeof personalization === 'object' && Object.keys(personalization).length;\r\n\t\t\t\t\tthis.applyColumnPersonalization(res[0]);\r\n\t\t\t\t}.bind(this)\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\tonDestroy: async function () {\r\n\t\t\tif (Array.isArray(this.unsubscribers)) {\r\n\t\t\t\tthis.unsubscribers.forEach((u) => u());\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tapplyColumnPersonalization: function (personalization) {\r\n\t\t\tthis.columns.forEach(function (column) {\r\n\t\t\t\tif (personalization[column.Name]) {\r\n\t\t\t\t\tconst columnPersonalization = personalization[column.Name];\r\n\r\n\t\t\t\t\tcolumn.Width = typeof columnPersonalization.Width !== 'undefined' ? columnPersonalization.Width : column.Width;\r\n\t\t\t\t\tcolumn.Position = typeof columnPersonalization.__personalizedPosition !== 'undefined' ? columnPersonalization.__personalizedPosition : column.Position; //__personalizedPosition - to support legacy code\r\n\t\t\t\t\tcolumn.visible = typeof columnPersonalization.visible !== 'undefined' ? columnPersonalization.visible : column.visible;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.sortColumnsByPosition();\r\n\t\t},\r\n\r\n\t\tresetPersonalization: function () {\r\n\t\t\tthis.personalizationService.saveGridPersonalization({}, this.personalizationKey);\r\n\r\n\t\t\tthis.columns.forEach(function (column) {\r\n\t\t\t\tcolumn.Width = this.notPersonalizedColumns[column.Name].Width;\r\n\t\t\t\tcolumn.Position = this.notPersonalizedColumns[column.Name].Position;\r\n\t\t\t\tcolumn.visible = this.notPersonalizedColumns[column.Name].visible;\r\n\t\t\t}, this);\r\n\r\n\t\t\tthis.sortColumnsByPosition();\r\n\r\n\t\t\tthis.dataQuery.columns = this.columns = this.columns.slice(); //TODO: to reload mx-grid.columns.!!! another way?\r\n\t\t},\r\n\r\n\t\tsortColumnsByPosition: function () {\r\n\t\t\tthis.columns.sort(function (a, b) {\r\n\t\t\t\treturn (a.Position || 0) - (b.Position || 0);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tchangeColumnsPositions: function (positionConfig) {\r\n\t\t\tthis.columns.forEach(function (column) {\r\n\t\t\t\tconst position = parseInt(positionConfig[column.Name]);\r\n\t\t\t\tcolumn.Position = !isNaN(position) && position >= 0 ? position : column.Position;\r\n\t\t\t});\r\n\r\n\t\t\tthis.sortColumnsByPosition();\r\n\r\n\t\t\tif (this.personalizationKey) {\r\n\t\t\t\tthis.personalizationService.savePersonalizedColumnPosition(\r\n\t\t\t\t\tthis.columns.map(function (column) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tname: column.Name,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tthis.personalizationKey\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tchangeColumnSize: function (columnName, size) {\r\n\t\t\tthis.columns.some(function (column) {\r\n\t\t\t\tif (column.Name === columnName) {\r\n\t\t\t\t\tcolumn.Width = size;\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tif (this.personalizationKey) {\r\n\t\t\t\tthis.personalizationService.savePersonalizedColumnSize({ name: columnName }, size, this.personalizationKey);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tchangeColumnVisibility: function (columnName, visibility) {\r\n\t\t\tthis.columns.some(function (column) {\r\n\t\t\t\tif (column.Name === columnName) {\r\n\t\t\t\t\tcolumn.visible = visibility;\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tif (this.personalizationKey) {\r\n\t\t\t\tthis.personalizationService.setColumnVisibility(this.personalizationKey, columnName, visibility);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\trowsEqualityFunction: function (rowA, rowB) {\r\n\t\t\tif (!rowA || !rowB) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn this._requester.entitiesEqualityFunction(rowA.getEntity(), rowB.getEntity());\r\n\t\t},\r\n\r\n\t\tloadItems: function () {\r\n\t\t\tthis.loading = true;\r\n\t\t\tconst loadItemsPromise = this._requester.load(this.preprocessors).then((res) => {\r\n\t\t\t\tif (this._latestLoadItemsPromise !== loadItemsPromise) {\r\n\t\t\t\t\treturn this._latestLoadItemsPromise;\r\n\t\t\t\t}\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t\tthis._setItems(res.dataItems, isNaN(res.totalItems) ? -1 : res.totalItems);\r\n\t\t\t});\r\n\r\n\t\t\tthis._latestLoadItemsPromise = loadItemsPromise;\r\n\t\t\treturn loadItemsPromise;\r\n\t\t},\r\n\r\n\t\tresetItems: function () {\r\n\t\t\tthis.loading = false;\r\n\t\t\tthis._setItems([], 0);\r\n\t\t},\r\n\r\n\t\t_setItems: function (dataItems, totalCount) {\r\n\t\t\tthis.dataItems = dataItems;\r\n\t\t\tif (this.preprocessors.pagingPreprocessor) {\r\n\t\t\t\tthis.preprocessors.pagingPreprocessor.totalItems = totalCount;\r\n\t\t\t}\r\n\t\t\tthis.syncSelectedItems();\r\n\t\t},\r\n\r\n\t\tcreateEntity: function (entityType, itemType) {\r\n\t\t\treturn this._requester.createEntity(entityType, itemType).then(function (entity) {\r\n\t\t\t\tentity.$IsNewRow = true;\r\n\t\t\t\treturn entity;\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tcreateRow: function (entity) {\r\n\t\t\treturn this._requester.createRow(entity).then(function (row) {\r\n\t\t\t\trow.$IsNewRow = true;\r\n\t\t\t\treturn row;\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\taddRows: function (rows) {\r\n\t\t\tif (!Array.isArray(rows)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst dataItems = this.dataItems.slice();\r\n\t\t\trows.forEach(function (row) {\r\n\t\t\t\tdataItems.unshift(row);\r\n\t\t\t});\r\n\r\n\t\t\tif (this.preprocessors.pagingPreprocessor) {\r\n\t\t\t\tif (this.preprocessors.pagingPreprocessor.pageSize < dataItems.length) {\r\n\t\t\t\t\tconst diff = dataItems.length - this.preprocessors.pagingPreprocessor.pageSize;\r\n\t\t\t\t\tdataItems.splice(dataItems.length - diff, diff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.preprocessors.pagingPreprocessor.totalItems >= 0) {\r\n\t\t\t\t\tthis.preprocessors.pagingPreprocessor.totalItems += rows.length;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis._requester.addRows(rows);\r\n\t\t\tthis.dataItems = dataItems;\r\n\t\t},\r\n\r\n\t\taddEntitiesAsNewRows: async function (entities) {\r\n\t\t\tthis.loading = true;\r\n\t\t\tconst createdRows = await Promise.all(entities.map((entity) => this.createRow(entity)));\r\n\t\t\tthis.addRows(createdRows);\r\n\t\t\tthis.loading = false;\r\n\t\t\treturn createdRows;\r\n\t\t},\r\n\r\n\t\tgetTotalItems: function () {\r\n\t\t\tthis.totalLoading = true;\r\n\t\t\treturn this._requester.getTotalItems(this.preprocessors, this.dataQuery).then(\r\n\t\t\t\tfunction (totalItems) {\r\n\t\t\t\t\tthis.totalLoading = false;\r\n\t\t\t\t\tif (this.preprocessors.pagingPreprocessor) {\r\n\t\t\t\t\t\tthis.preprocessors.pagingPreprocessor.totalItems = totalItems;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn totalItems;\r\n\t\t\t\t}.bind(this)\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\texportData: function () {\r\n\t\t\tthis.exporting = true;\r\n\t\t\treturn (this.isExportSupported ? this._requester.exportData(this.preprocessors, this.dataQuery) : this.$q.when(null)).then(\r\n\t\t\t\tfunction () {\r\n\t\t\t\t\tthis.exporting = false;\r\n\t\t\t\t}.bind(this)\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\tsyncSelectedItems: function () {\r\n\t\t\tconst newSelectedRowsOnPage = [];\r\n\t\t\tthis._allSelectedRows.forEach(function (selectedRow, index) {\r\n\t\t\t\tthis.dataItems.some(function (item) {\r\n\t\t\t\t\tif (this.rowsEqualityFunction(item, selectedRow)) {\r\n\t\t\t\t\t\tthis._allSelectedRows[index] = item;\r\n\t\t\t\t\t\tnewSelectedRowsOnPage.push(item);\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}, this);\r\n\t\t\t}, this);\r\n\t\t\tthis.changePageSelection(newSelectedRowsOnPage);\r\n\t\t},\r\n\r\n\t\tchangeSelection: function (allSelectedRows) {\r\n\t\t\tthis._allSelectedRows = allSelectedRows;\r\n\t\t\tthis.syncSelectedItems();\r\n\t\t},\r\n\r\n\t\tchangePageSelection: function (newSelectedRowsOnPage) {\r\n\t\t\tnewSelectedRowsOnPage = Array.isArray(newSelectedRowsOnPage) ? newSelectedRowsOnPage : [];\r\n\t\t\tthis.dataItems.forEach(function (item) {\r\n\t\t\t\tconst selectedIndex = this._allSelectedRows.indexOf(item);\r\n\r\n\t\t\t\tif (newSelectedRowsOnPage.indexOf(item) >= 0 && selectedIndex < 0) {\r\n\t\t\t\t\tthis._allSelectedRows.push(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (newSelectedRowsOnPage.indexOf(item) < 0 && selectedIndex >= 0) {\r\n\t\t\t\t\tthis._allSelectedRows.splice(selectedIndex, 1);\r\n\t\t\t\t}\r\n\t\t\t}, this);\r\n\r\n\t\t\tthis._selectedRowsOnPage = newSelectedRowsOnPage;\r\n\r\n\t\t\tthis.selectedRowsOnPage = this._selectedRowsOnPage.slice();\r\n\t\t\tthis.allSelectedRows = this._allSelectedRows.slice();\r\n\r\n\t\t\tthis.selectedEntitiesOnPage = this.selectedRowsOnPage.map(function (row) {\r\n\t\t\t\treturn row.getEntity();\r\n\t\t\t});\r\n\t\t\tthis.allSelectedEntities = this.allSelectedRows.map(function (row) {\r\n\t\t\t\treturn row.getEntity();\r\n\t\t\t});\r\n\t\t\tthis.allEntitiesSelected = this.allSelectedEntities.length === this.preprocessors.pagingPreprocessor?.totalItems;\r\n\t\t\tthis.allEntitiesOnPageSelected = this.selectedEntitiesOnPage.length === this.dataItems.length;\r\n\r\n\t\t\tthis.selectionHandlers.forEach(function (handler) {\r\n\t\t\t\thandler({\r\n\t\t\t\t\tallSelectedRows: this.allSelectedRows,\r\n\t\t\t\t\tselectedRowsOnPage: this.selectedRowsOnPage,\r\n\t\t\t\t\tselectedEntitiesOnPage: this.selectedEntitiesOnPage,\r\n\t\t\t\t\tallSelectedEntities: this.allSelectedEntities,\r\n\t\t\t\t\tallEntitiesSelected: this.allEntitiesSelected,\r\n\t\t\t\t\tallEntitiesOnPageSelected: this.allEntitiesOnPageSelected,\r\n\t\t\t\t});\r\n\t\t\t}, this);\r\n\t\t},\r\n\r\n\t\ttoggleRowSelection: function (row) {\r\n\t\t\tconst selectedIndex = this._allSelectedRows.indexOf(row);\r\n\r\n\t\t\tif (selectedIndex >= 0) {\r\n\t\t\t\tthis._allSelectedRows.splice(selectedIndex, 1);\r\n\t\t\t} else {\r\n\t\t\t\tthis._allSelectedRows.push(row);\r\n\t\t\t}\r\n\r\n\t\t\tthis.syncSelectedItems();\r\n\t\t},\r\n\r\n\t\tselectRow: function (row) {\r\n\t\t\tconst selectedIndex = this._allSelectedRows.indexOf(row);\r\n\r\n\t\t\tif (selectedIndex < 0) {\r\n\t\t\t\tthis.toggleRowSelection(row);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tselectEntireDataset: async function () {\r\n\t\t\tthis.loading = true;\r\n\t\t\tconst preprocessors = Object.assign({}, this.preprocessors);\r\n\t\t\tdelete preprocessors.pagingPreprocessor;\r\n\r\n\t\t\tconst items = (await this._requester.load(preprocessors)).dataItems;\r\n\t\t\tthis.changeSelection(items);\r\n\t\t\tthis.loading = false;\r\n\t\t},\r\n\r\n\t\tresetSelection: function () {\r\n\t\t\tthis.changeSelection([]);\r\n\t\t},\r\n\r\n\t\taddSelectionHandler: function (handler) {\r\n\t\t\tif (typeof handler === 'function') {\r\n\t\t\t\tthis.selectionHandlers.push(handler);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tloadEntityById: function (itemId) {\r\n\t\t\treturn typeof this._requester.loadEntityById === 'function' ? this._requester.loadEntityById(itemId) : $q.reject();\r\n\t\t},\r\n\r\n\t\tisEntityCorrect: function (entity) {\r\n\t\t\treturn typeof this._requester.isEntityCorrect === 'function' ? this._requester.isEntityCorrect(entity) : $q.resolve(true);\r\n\t\t},\r\n\r\n\t\tsetEntity: function (row, newEntity) {\r\n\t\t\tif (!(row instanceof DataQueryRow)) {\r\n\t\t\t\treturn $q.reject('Wrong format of row');\r\n\t\t\t}\r\n\r\n\t\t\treturn row.setEntity(newEntity).then(\r\n\t\t\t\tfunction () {\r\n\t\t\t\t\tif (this.dataItems.indexOf(row) >= 0) {\r\n\t\t\t\t\t\tthis.rowChangeHandlers.forEach(function (handler) {\r\n\t\t\t\t\t\t\thandler(row);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}.bind(this)\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\taddRowChangeHandler: function (handler) {\r\n\t\t\tif (typeof handler === 'function') {\r\n\t\t\t\tthis.rowChangeHandlers.push(handler);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tclearAllFilters: function () {\r\n\t\t\tthis.dataQuery.clearAllFilters();\r\n\t\t},\r\n\r\n\t\t_onColumnFiltersChanged: function (columns) {\r\n\t\t\tif (this.preprocessors.columnSearchPreprocessor) {\r\n\t\t\t\tthis.preprocessors.columnSearchPreprocessor.setColumnConditions(\r\n\t\t\t\t\tcolumns.map((column) => ({\r\n\t\t\t\t\t\tfield: column.Name,\r\n\t\t\t\t\t\toperator: column.filter.operator,\r\n\t\t\t\t\t\tvalue: column.filter.value,\r\n\t\t\t\t\t}))\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t},\r\n\t};\r\n\r\n\treturn DataQueryExecutor;\r\n}\r\n","'use strict';\r\nimport DataQueryEnums from './DataQueryEnumerations';\r\nconst DisplayImageEnum = DataQueryEnums.DisplayImageEnum;\r\n\r\nDataQueryRowClassFactory.$inject = ['$q', '$mdUtil'];\r\n\r\nexport default function DataQueryRowClassFactory($q, $mdUtil) {\r\n\tfunction DataQueryRow(entity, displayEntity, displayEntityGetter) {\r\n\t\tthis._entity = entity || {};\r\n\t\tthis._notChangedEntity = angular.copy(this._entity);\r\n\r\n\t\tthis._displayEntity = displayEntity || {};\r\n\r\n\t\tthis._changedColumns = [];\r\n\r\n\t\tthis._debouncedDisplayEntityGetter = $mdUtil.debounce(\r\n\t\t\tfunction () {\r\n\t\t\t\tvar changedColumns = this._changedColumns;\r\n\t\t\t\tvar defer = this._displayEntityDefer;\r\n\t\t\t\tdelete this._displayEntityDefer;\r\n\r\n\t\t\t\tif (typeof displayEntityGetter === 'function') {\r\n\t\t\t\t\tdisplayEntityGetter(this._entity, this._displayEntity, changedColumns)\r\n\t\t\t\t\t\t.then(function (displayEntity) {\r\n\t\t\t\t\t\t\tdefer.resolve(displayEntity);\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch(function () {\r\n\t\t\t\t\t\t\tdefer.reject();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdefer.resolve(this._displayEntity);\r\n\t\t\t\t}\r\n\t\t\t}.bind(this),\r\n\t\t\t400\r\n\t\t);\r\n\t}\r\n\r\n\tDataQueryRow.prototype = {\r\n\t\tgetEntity: function () {\r\n\t\t\treturn this._entity;\r\n\t\t},\r\n\r\n\t\tsetEntity: function (newEntity) {\r\n\t\t\tvar changedColumns;\r\n\r\n\t\t\tif (newEntity !== this._entity) {\r\n\t\t\t\tchangedColumns = this._columns;\r\n\t\t\t} else {\r\n\t\t\t\tchangedColumns = this._columns.filter(function (column) {\r\n\t\t\t\t\tif (column.RawValuePropertyName) {\r\n\t\t\t\t\t\treturn newEntity[column.RawValuePropertyName] !== this._notChangedEntity[column.RawValuePropertyName];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}, this);\r\n\t\t\t}\r\n\r\n\t\t\tObject.keys(newEntity).forEach(function (key) {\r\n\t\t\t\tthis._entity[key] = newEntity[key];\r\n\t\t\t}, this);\r\n\r\n\t\t\tthis._notChangedEntity = angular.copy(this._entity);\r\n\r\n\t\t\treturn this._updateDisplayEntity(changedColumns);\r\n\t\t},\r\n\r\n\t\tinitProperties: function (columns) {\r\n\t\t\tthis._columns = columns;\r\n\r\n\t\t\treturn this._loadDefaultDisplayValues().then(\r\n\t\t\t\tfunction () {\r\n\t\t\t\t\tcolumns.forEach(function (column) {\r\n\t\t\t\t\t\tthis._initProperty(column);\r\n\t\t\t\t\t}, this);\r\n\t\t\t\t}.bind(this)\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\t_updateDisplayEntity: function (changedColumns) {\r\n\t\t\tif (!this._displayEntityDefer) {\r\n\t\t\t\tthis._displayEntityDefer = $q.defer();\r\n\t\t\t\tthis._changedColumns = [];\r\n\r\n\t\t\t\tthis._displayEntityPromise = this._displayEntityDefer.promise.then(\r\n\t\t\t\t\tfunction (displayEntity) {\r\n\t\t\t\t\t\tthis._displayEntity = displayEntity;\r\n\t\t\t\t\t}.bind(this)\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tchangedColumns.forEach(function (column) {\r\n\t\t\t\tif (this._changedColumns.indexOf(column) < 0) {\r\n\t\t\t\t\tthis._changedColumns.push(column);\r\n\t\t\t\t}\r\n\t\t\t}, this);\r\n\r\n\t\t\tif (this._changedColumns.length) {\r\n\t\t\t\tthis._debouncedDisplayEntityGetter();\r\n\t\t\t\treturn this._displayEntityPromise;\r\n\t\t\t} else {\r\n\t\t\t\treturn $q.when(this._displayEntity);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_normalizeRawValue: function (value, column) {\r\n\t\t\tswitch (column.AttributeValueType) {\r\n\t\t\t\tcase mx.shell.ObjectPropertyType.Boolean.name:\r\n\t\t\t\t\treturn Boolean(value);\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetEntityValue: function (field) {\r\n\t\t\treturn this[field + '_Value'];\r\n\t\t},\r\n\r\n\t\tgetEntityDisplayValue: function (field) {\r\n\t\t\treturn this[field];\r\n\t\t},\r\n\r\n\t\tsetEntityValue: function (field, value, displayValue) {\r\n\t\t\tvar column = this._columns.filter(function (column) {\r\n\t\t\t\treturn column.Name === field;\r\n\t\t\t})[0];\r\n\r\n\t\t\tif (column) {\r\n\t\t\t\treturn this._setEntityValue(column, value, displayValue);\r\n\t\t\t} else {\r\n\t\t\t\treturn $q.reject('column with Name = ' + field + ' was not found');\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_setEntityValue: function (column, value, displayValue) {\r\n\t\t\t// if property name of raw object was not defined then it is impossible to change raw entity\r\n\t\t\t// and there is no sense to change displayEntity\r\n\t\t\tif (typeof column.RawValuePropertyName === 'undefined') {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvalue = this._normalizeRawValue(value, column);\r\n\r\n\t\t\tif (this._entity[column.RawValuePropertyName] === value) {\r\n\t\t\t\tif (column.IsSingleColumn && this._entity[column.RawValuePropertyName] !== this._displayEntity[column.Name]) {\r\n\t\t\t\t\tthis._displayEntity[column.Name] = this._entity[column.RawValuePropertyName];\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis._entity[column.RawValuePropertyName] = value;\r\n\r\n\t\t\tthis._notChangedEntity = angular.copy(this._entity);\r\n\r\n\t\t\tif (displayValue) {\r\n\t\t\t\tthis._displayEntity[column.Name + '_Value'] = value;\r\n\t\t\t\tthis._displayEntity[column.Name] = displayValue;\r\n\r\n\t\t\t\treturn $q.resolve(this._displayEntity);\r\n\t\t\t} else {\r\n\t\t\t\treturn this._updateDisplayEntity([column]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_rawValueHasChangedCalcValue: function (propertyName) {\r\n\t\t\t//check if rawEntity has calc-filed for property 'propertyName'\r\n\t\t\treturn typeof this._entity[propertyName + mx.SolutionBuilderAgent.DataModelCalculatedProperty.prototype.constants.calcValueSuffix] === 'object';\r\n\t\t},\r\n\r\n\t\t_loadDefaultDisplayValues: function () {\r\n\t\t\t// Try to get displayValues for all columns in cases:\r\n\t\t\t// 1. if column doesn't have current displayValue - ex. can be used for enums in dynamic-grid\r\n\t\t\t// 2. if calc-property for column.RawValuePropertyName was created - then property of RawEntity could be modified, so it should be reloaded\r\n\t\t\t// 3. if calc-property for column.Name was created - then grid should use this calc-property and not from expressions, so it should be reloaded\r\n\t\t\tvar columns = this._columns.filter(function (column) {\r\n\t\t\t\treturn (\r\n\t\t\t\t\ttypeof this._displayEntity[column.Name] === 'undefined' ||\r\n\t\t\t\t\t(column.RawValuePropertyName && this._rawValueHasChangedCalcValue(column.RawValuePropertyName)) ||\r\n\t\t\t\t\t(!column.RawValuePropertyName && this._rawValueHasChangedCalcValue(column.Name))\r\n\t\t\t\t);\r\n\t\t\t}, this);\r\n\r\n\t\t\treturn this._updateDisplayEntity(columns);\r\n\t\t},\r\n\r\n\t\t_initProperty: function (column) {\r\n\t\t\tvar valuePropertyName = column.Name + '_Value';\r\n\r\n\t\t\tObject.defineProperty(this, column.Name, {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn this._displayEntity[column.Name];\r\n\t\t\t\t},\r\n\t\t\t\tset: function (value) {\r\n\t\t\t\t\tif (column.IsSingleColumn) {\r\n\t\t\t\t\t\tthis._setEntityValue(column, value, value);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(this, valuePropertyName, {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\tif (column.IsSingleColumn) {\r\n\t\t\t\t\t\treturn this._displayEntity[column.Name];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn this._displayEntity[valuePropertyName];\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tset: function (value) {\r\n\t\t\t\t\tthis._setEntityValue(column, value, column.IsSingleColumn ? value : undefined);\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (column.SortingExpression) {\r\n\t\t\t\tvar orderColumnName = column.Name + '_Order';\r\n\t\t\t\tObject.defineProperty(this, orderColumnName, {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn this._displayEntity[orderColumnName];\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (value) {\r\n\t\t\t\t\t\tthis._displayEntity[orderColumnName] = value;\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (column.DisplayImage === DisplayImageEnum.Image || column.DisplayImage === DisplayImageEnum.ImageWithText) {\r\n\t\t\t\tconst imageColumnName = column.Name + '_Image';\r\n\t\t\t\tObject.defineProperty(this, imageColumnName, {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn this._displayEntity[imageColumnName];\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (value) {\r\n\t\t\t\t\t\tthis._displayEntity[imageColumnName] = value;\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\t};\r\n\r\n\treturn DataQueryRow;\r\n}\r\n","'use strict';\r\n\r\nexport class BaseFilter {\r\n\tconstructor({ i18n, configService, filterOperatorsFactory }) {\r\n\t\tObject.assign(this, { i18n, configService, filterOperatorsFactory });\r\n\t\tthis.allOperators = this.filterOperatorsFactory.operators;\r\n\t}\r\n\r\n\tinit(column) {\r\n\t\tObject.defineProperty(this, '_column', { enumerable: false, value: column });\r\n\t\tthis.operatorOnForm = this.operators[0].value;\r\n\t\tthis.setDefault();\r\n\t\tthis.value = this.getNewValue();\r\n\t\tthis.operator = this.operatorOnForm;\r\n\t}\r\n\r\n\tgetOperatorTitle() {\r\n\t\treturn this.operators.filter((operator) => operator.value === this.operator)[0].name;\r\n\t}\r\n\r\n\tgetOperatorLabel() {\r\n\t\tconst operator = this.operators.filter((operator) => operator.value === this.operator)[0];\r\n\t\treturn operator.label || operator.name;\r\n\t}\r\n\r\n\tsetDefault() {\r\n\t\tthis.value = undefined;\r\n\t}\r\n\r\n\tgetNewValue() {\r\n\t\treturn [this.inlineValue || ''];\r\n\t}\r\n\r\n\tupdateTitle() {\r\n\t\tthis.title = this.value || '';\r\n\t}\r\n\r\n\tclearFilter() {\r\n\t\tthis.setDefault();\r\n\t\tthis.applyFilter(true);\r\n\t}\r\n\r\n\tapplyFilter(urgent) {\r\n\t\tif (!this.isValueChanged() && this.operator === this.operatorOnForm) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tthis.value = this.getNewValue();\r\n\t\tthis.operator = this.operatorOnForm;\r\n\t\tthis.operatorTitle = this.getOperatorTitle();\r\n\t\tthis.operatorLabel = this.getOperatorLabel();\r\n\t\tthis.updateTitle();\r\n\t\tif (typeof this.changeHandler === 'function') {\r\n\t\t\tthis.changeHandler(this, urgent);\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tisValueChanged() {\r\n\t\treturn !angular.equals(this.getNewValue(), this.value);\r\n\t}\r\n\r\n\tisFormValid() {\r\n\t\treturn true;\r\n\t}\r\n\r\n\thasValue() {\r\n\t\treturn Boolean(this.value);\r\n\t}\r\n\r\n\taddChangeHandler(handler) {\r\n\t\tthis.changeHandler = handler;\r\n\t}\r\n}\r\n","'use strict';\r\nimport { BaseFilter } from './base-filter';\r\n\r\nexport class BaseInlineFilter extends BaseFilter {\r\n\tinit(column) {\r\n\t\tObject.defineProperty(this, '_column', { enumerable: false, value: column });\r\n\r\n\t\tconst debouncedApply = $.debounce(100, this.applyInlineFilter.bind(this));\r\n\r\n\t\tObject.defineProperties(this, {\r\n\t\t\tinlineFilter: {\r\n\t\t\t\tvalue: true,\r\n\t\t\t},\r\n\t\t\tinlineValue: {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn this._inlineValue;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\tthis._inlineValue = newValue;\r\n\t\t\t\t\tdebouncedApply();\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tthis.operatorOnForm = this.operators[0].value;\r\n\t\tthis.setDefault();\r\n\t\tthis.setDefaultInline();\r\n\t\tthis.value = this.getNewInlineValue();\r\n\t\tthis.operator = this.operatorOnForm;\r\n\t}\r\n\r\n\tgetNewValue() {\r\n\t\treturn [''];\r\n\t}\r\n\r\n\tgetNewInlineValue() {\r\n\t\treturn [this.inlineValue || ''];\r\n\t}\r\n\r\n\tisInlineValueChanged() {\r\n\t\treturn !angular.equals(this.getNewInlineValue(), this.value);\r\n\t}\r\n\r\n\tsetDefaultInline() {\r\n\t\tthis._inlineValue = '';\r\n\t\tthis.inlineMode = true;\r\n\t}\r\n\r\n\tsyncFormFromInline() {}\r\n\r\n\thasValue() {\r\n\t\treturn Boolean(this.value && this.value[0]);\r\n\t}\r\n\r\n\tclearFilter() {\r\n\t\tthis.setDefault();\r\n\r\n\t\tthis.operator = this.operatorOnForm;\r\n\t\tthis.title = '';\r\n\r\n\t\tthis.setDefaultInline();\r\n\t\tthis.applyInlineFilter(true);\r\n\t}\r\n\r\n\tapplyInlineFilter(urgent) {\r\n\t\tif (!this.isInlineValueChanged() && !urgent) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.inlineMode = true;\r\n\t\tthis.value = this.getNewInlineValue();\r\n\r\n\t\tthis.operatorOnForm = this.operator;\r\n\t\tthis.operatorTitle = this.getOperatorTitle();\r\n\t\tthis.operatorLabel = this.getOperatorLabel();\r\n\t\tthis.syncFormFromInline(this.inlineValue);\r\n\t\tthis.updateTitle();\r\n\r\n\t\tif (typeof this.changeHandler === 'function') {\r\n\t\t\tthis.changeHandler(this, urgent);\r\n\t\t}\r\n\t}\r\n\r\n\tapplyFilter() {\r\n\t\tthis.inlineMode = false;\r\n\t\tBaseFilter.prototype.applyFilter.apply(this, arguments);\r\n\t\tthis._inlineValue = this.title;\r\n\t}\r\n}\r\n","'use strict';\r\nimport { BaseInlineFilter } from './base-inline-filter';\r\nimport template from './string-filter.html';\r\n\r\nexport class StringFilter extends BaseInlineFilter {\r\n\tconstructor(options) {\r\n\t\tsuper(options);\r\n\r\n\t\tthis.type = 'string';\r\n\t\tthis.panelTemplate = template;\r\n\t\tthis.operators = this.filterOperatorsFactory.getOperatorsByType('String');\r\n\t\tthis.maxWordsPerCondition = this.configService.get('maxWordsPerCondition');\r\n\t\tthis.maxWordsValidationMessage = this.i18n.getFormatted('solutionBuilderAgent.components.mx-search-query-condition.tooManyWords', this.maxWordsPerCondition);\r\n\t}\r\n\r\n\tgetNewValue() {\r\n\t\tswitch (this.operatorOnForm) {\r\n\t\t\tcase this.allOperators.IsSet.value:\r\n\t\t\tcase this.allOperators.IsNotSet.value:\r\n\t\t\t\treturn [];\r\n\t\t\tdefault:\r\n\t\t\t\treturn [this.valueOnForm];\r\n\t\t}\r\n\t}\r\n\r\n\tsetDefault() {\r\n\t\tthis.operator = this.operatorOnForm = this.allOperators.Contains.value;\r\n\t\tthis.valueOnForm = '';\r\n\t}\r\n\r\n\tupdateTitle() {\r\n\t\tswitch (this.operator) {\r\n\t\t\tcase this.allOperators.IsSet.value:\r\n\t\t\tcase this.allOperators.IsNotSet.value:\r\n\t\t\t\tthis.title = this.operatorTitle;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthis.title = this.operatorLabel + ' ' + this.value[0];\r\n\t\t}\r\n\t}\r\n\r\n\tisFormValid() {\r\n\t\tconst newValue = this.getNewValue();\r\n\t\tconst searchText = newValue && newValue[0];\r\n\r\n\t\tswitch (this.operatorOnForm) {\r\n\t\t\tcase this.allOperators.IsSet.value:\r\n\t\t\tcase this.allOperators.IsNotSet.value:\r\n\t\t\t\treturn true;\r\n\t\t\tcase this.allOperators.ContainsAllWords.value:\r\n\t\t\tcase this.allOperators.ContainsAnyWord.value:\r\n\t\t\tcase this.allOperators.DoesNotContainAnyWord.value:\r\n\t\t\tcase this.allOperators.DoesNotContainAllWords.value: {\r\n\t\t\t\tconst correct = searchText && searchText.split(/[,|.|;| ]/).length <= this.maxWordsPerCondition;\r\n\t\t\t\tthis.validationMessage = searchText && !correct ? this.maxWordsValidationMessage : null;\r\n\t\t\t\treturn correct;\r\n\t\t\t}\r\n\t\t\tdefault:\r\n\t\t\t\treturn Boolean(searchText);\r\n\t\t}\r\n\t}\r\n\r\n\thasValue() {\r\n\t\tswitch (this.operator) {\r\n\t\t\tcase this.allOperators.IsSet.value:\r\n\t\t\tcase this.allOperators.IsNotSet.value:\r\n\t\t\t\treturn true;\r\n\t\t\tdefault:\r\n\t\t\t\treturn Boolean(this.value && this.value[0]);\r\n\t\t}\r\n\t}\r\n\r\n\tsyncFormFromInline(inlineValue) {\r\n\t\tthis.valueOnForm = inlineValue;\r\n\t}\r\n}\r\n","// Module\nvar code = \"
    \\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n
    \\r\\n\";\n// Exports\nexport default code;","'use strict';\r\nimport { BaseFilter } from './base-filter';\r\nimport template from './boolean-filter.html';\r\n\r\nexport class BooleanFilter extends BaseFilter {\r\n\tconstructor(options) {\r\n\t\tsuper(options);\r\n\r\n\t\tthis.type = 'boolean';\r\n\t\tthis.panelTemplate = template;\r\n\r\n\t\tthis.items = [\r\n\t\t\t{\r\n\t\t\t\ttitle: this.i18n.get('solutionBuilderAgent.components.mx-conditions-builder.true'),\r\n\t\t\t\tvalue: [true],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: this.i18n.get('solutionBuilderAgent.components.mx-conditions-builder.false'),\r\n\t\t\t\tvalue: [false, null],\r\n\t\t\t},\r\n\t\t];\r\n\t\tthis.operators = [this.allOperators.In];\r\n\t}\r\n\r\n\tgetNewValue() {\r\n\t\treturn this.valueOnForm.value;\r\n\t}\r\n\r\n\tupdateTitle() {\r\n\t\tthis.title = this.valueOnForm.title || '';\r\n\t}\r\n\r\n\tsetDefault() {\r\n\t\tthis.valueOnForm = {};\r\n\t}\r\n\r\n\thasValue() {\r\n\t\treturn Boolean(this.value);\r\n\t}\r\n\r\n\tisFormValid() {\r\n\t\treturn typeof this.valueOnForm.value !== 'undefined';\r\n\t}\r\n}\r\n","// Module\nvar code = \"
    \\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t{{ ::item.title }}\\r\\n\\t\\t\\r\\n\\t\\r\\n
    \\r\\n\";\n// Exports\nexport default code;","'use strict';\r\n\r\nimport { BaseInlineFilter } from './base-inline-filter';\r\nimport template from './number-filter.html';\r\n\r\nexport class NumberFilter extends BaseInlineFilter {\r\n\tconstructor(options) {\r\n\t\tsuper(options);\r\n\r\n\t\tthis.type = 'number';\r\n\t\tthis.panelTemplate = template;\r\n\t\tthis.operators = this.filterOperatorsFactory.getOperatorsByType('Number');\r\n\t\tthis.operatorOnForm = this.allOperators.Equals.value;\r\n\t}\r\n\r\n\tinit(column) {\r\n\t\tthis.inlineMask = column.AttributeValueType;\r\n\t\tsuper.init(column);\r\n\t}\r\n\r\n\tgetNewValue() {\r\n\t\tswitch (this.operatorOnForm) {\r\n\t\t\tcase this.allOperators.IsSet.value:\r\n\t\t\tcase this.allOperators.IsNotSet.value:\r\n\t\t\t\treturn [];\r\n\t\t\tcase this.allOperators.Between.value:\r\n\t\t\t\treturn [parseFloat(this.valueOnForm), parseFloat(this.valueTo)];\r\n\t\t\tdefault:\r\n\t\t\t\treturn [parseFloat(this.valueOnForm)];\r\n\t\t}\r\n\t}\r\n\r\n\tgetNewInlineValue() {\r\n\t\tconst value = parseFloat(this.inlineValue);\r\n\t\treturn isNaN(value) ? [] : [value];\r\n\t}\r\n\r\n\tupdateTitle() {\r\n\t\tswitch (this.operator) {\r\n\t\t\tcase this.allOperators.Between.value: {\r\n\t\t\t\tconst dateFrom = this.value[0] ? `${this.i18n.get('components.common.dateFrom')}: ${this.value[0]}; ` : '';\r\n\t\t\t\tconst dateTo = this.value[1] ? `${this.i18n.get('components.common.dateTo')}: ${this.value[1]}` : '';\r\n\t\t\t\tthis.title = dateFrom + dateTo;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase this.allOperators.IsSet.value:\r\n\t\t\tcase this.allOperators.IsNotSet.value:\r\n\t\t\t\tthis.title = this.operatorTitle;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthis.title = isNaN(this.value[0]) ? '' : this.operatorLabel + ' ' + this.value[0];\r\n\t\t}\r\n\t}\r\n\r\n\tsetDefault() {\r\n\t\tthis.operatorOnForm = this.allOperators.Equals.value;\r\n\t\tthis.valueOnForm = undefined;\r\n\t\tthis.valueTo = undefined;\r\n\t}\r\n\r\n\tisFormValid() {\r\n\t\tvar newValue = this.getNewValue();\r\n\t\tswitch (this.operatorOnForm) {\r\n\t\t\tcase this.allOperators.IsSet.value:\r\n\t\t\tcase this.allOperators.IsNotSet.value:\r\n\t\t\t\treturn true;\r\n\t\t\tcase this.allOperators.Between.value:\r\n\t\t\t\treturn !isNaN(newValue[0]) && !isNaN(newValue[1]);\r\n\t\t\tdefault:\r\n\t\t\t\treturn !isNaN(newValue[0]);\r\n\t\t}\r\n\t}\r\n\r\n\thasValue() {\r\n\t\tswitch (this.operator) {\r\n\t\t\tcase this.allOperators.IsSet.value:\r\n\t\t\tcase this.allOperators.IsNotSet.value:\r\n\t\t\t\treturn true;\r\n\t\t\tcase this.allOperators.Between.value:\r\n\t\t\t\treturn this.value && !isNaN(this.value[0]) && !isNaN(this.value[1]);\r\n\t\t\tdefault:\r\n\t\t\t\treturn Boolean(this.value) && !isNaN(this.value[0]) && typeof this.value[0] === 'number';\r\n\t\t}\r\n\t}\r\n\r\n\tsyncFormFromInline(inlineValue) {\r\n\t\tthis.valueOnForm = inlineValue;\r\n\t}\r\n}\r\n","// Module\nvar code = \"
    \\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t
    \\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
    \\r\\n\\r\\n
    \\r\\n\";\n// Exports\nexport default code;","'use strict';\r\nimport { BaseFilter } from './base-filter';\r\nimport template from './date-filter.html';\r\n\r\nexport class DateFilter extends BaseFilter {\r\n\tconstructor(options) {\r\n\t\tsuper(options);\r\n\r\n\t\tthis.type = 'date';\r\n\t\tthis.panelTemplate = template;\r\n\t\tthis.operators = [this.allOperators.Between];\r\n\t}\r\n\r\n\tgetNewValue() {\r\n\t\treturn [(this.dateFrom && this.dateFrom.toISOString()) || '', (this.dateTo && this.dateTo.toISOString()) || ''];\r\n\t}\r\n\r\n\tupdateTitle() {\r\n\t\tthis.title =\r\n\t\t\t(this.dateFrom ? this.i18n.get('components.common.dateFrom') + ': ' + this.i18n.formatDate(this.dateFrom, this._column.Format) + '; ' : '') +\r\n\t\t\t(this.dateTo ? this.i18n.get('components.common.dateTo') + ': ' + this.i18n.formatDate(this.dateTo, this._column.Format) : '');\r\n\t}\r\n\r\n\tsetDefault() {\r\n\t\tthis.dateFrom = null;\r\n\t\tthis.dateTo = null;\r\n\t}\r\n\r\n\thasValue() {\r\n\t\treturn Boolean(this.value && (this.value[0] || this.value[1]));\r\n\t}\r\n}\r\n","// Module\nvar code = \"
    \\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n
    \\r\\n\";\n// Exports\nexport default code;","'use strict';\r\nimport { BaseFilter } from './base-filter';\r\nimport template from './select-filter.html';\r\n\r\nexport class SelectFilter extends BaseFilter {\r\n\tconstructor(options) {\r\n\t\tsuper(options);\r\n\r\n\t\tthis.type = 'select';\r\n\t\tthis.operators = this.filterOperatorsFactory.getOperatorsByType('Select');\r\n\t\tthis.items = [];\r\n\t\tthis.filteredItems = this.items;\r\n\t\tthis.showHiddenValuesInSearch = this.configService.settings.dataSource.showHiddenValuesInSearch !== false;\r\n\r\n\t\tlet searchText = '';\r\n\t\tlet showHiddenItems = false;\r\n\r\n\t\tObject.defineProperty(this, 'searchText', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn searchText;\r\n\t\t\t},\r\n\t\t\tset: (newSearchText) => {\r\n\t\t\t\tsearchText = newSearchText;\r\n\t\t\t\tthis.filterItems();\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'showHiddenItems', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn showHiddenItems;\r\n\t\t\t},\r\n\t\t\tset: (val) => {\r\n\t\t\t\tshowHiddenItems = val;\r\n\t\t\t\tthis.filterItems();\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tthis.panelTemplate = template;\r\n\t}\r\n\r\n\tpanelInit() {\r\n\t\tif (this.itemsLoaded) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._column.getEnumValues().then(\r\n\t\t\tfunction (items) {\r\n\t\t\t\tthis.items = Array.isArray(items) ? items : [];\r\n\t\t\t\tthis.filterItems();\r\n\r\n\t\t\t\tthis.hiddenItemsExist =\r\n\t\t\t\t\t!this.showHiddenValuesInSearch &&\r\n\t\t\t\t\tthis.items.some(function (item) {\r\n\t\t\t\t\t\treturn item.hidden;\r\n\t\t\t\t\t});\r\n\t\t\t\tthis.itemsLoaded = true;\r\n\t\t\t}.bind(this)\r\n\t\t);\r\n\t}\r\n\r\n\tgetSelectedItems() {\r\n\t\tif (this.operatorOnForm !== this.allOperators.In.value && this.operatorOnForm !== this.allOperators.NotIn.value) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\treturn this.items.filter(function (item) {\r\n\t\t\treturn item.selected;\r\n\t\t});\r\n\t}\r\n\r\n\tgetNewValue() {\r\n\t\treturn this.getSelectedItems().map(function (item) {\r\n\t\t\treturn item.value;\r\n\t\t});\r\n\t}\r\n\r\n\tisFormValid() {\r\n\t\treturn (\r\n\t\t\tthis.operatorOnForm === this.allOperators.IsSet.value ||\r\n\t\t\tthis.operatorOnForm === this.allOperators.IsNotSet.value ||\r\n\t\t\t((this.operatorOnForm === this.allOperators.In.value || this.operatorOnForm === this.allOperators.NotIn.value) && this.getSelectedItems().length)\r\n\t\t);\r\n\t}\r\n\r\n\tupdateTitle() {\r\n\t\tconst selectedItemsTitle = this.getSelectedItems()\r\n\t\t\t.map((item) => item.title)\r\n\t\t\t.join(', ');\r\n\t\tif (this.operator === this.allOperators.In.value && selectedItemsTitle.length) {\r\n\t\t\tthis.title = selectedItemsTitle;\r\n\t\t} else if (this.operator === this.allOperators.NotIn.value && selectedItemsTitle.length) {\r\n\t\t\tthis.title = this.operatorTitle + ': ' + selectedItemsTitle;\r\n\t\t} else if (this.operator === this.allOperators.IsSet.value || this.operator === this.allOperators.IsNotSet.value) {\r\n\t\t\tthis.title = this.operatorTitle;\r\n\t\t} else {\r\n\t\t\tthis.title = '';\r\n\t\t}\r\n\t}\r\n\r\n\tsetDefault() {\r\n\t\tthis.operatorOnForm = this.allOperators.In.value;\r\n\t\tthis.items.forEach(function (item) {\r\n\t\t\titem.selected = false;\r\n\t\t});\r\n\t\tthis.filteredItems = this.items;\r\n\t\tthis.searchText = '';\r\n\t}\r\n\r\n\tfilterItems() {\r\n\t\tvar searchText = this.searchText.toLowerCase();\r\n\t\tthis.filteredItems = this.items.filter(function (item) {\r\n\t\t\treturn item.title.toLowerCase().indexOf(searchText) >= 0 && (!item.hidden || this.showHiddenItems || this.showHiddenValuesInSearch);\r\n\t\t}, this);\r\n\t}\r\n\r\n\thasValue() {\r\n\t\treturn this.operator === this.allOperators.IsSet.value || this.operator === this.allOperators.IsNotSet.value || this.value.length > 0;\r\n\t}\r\n}\r\n","// Module\nvar code = \"
    \\r\\n\\t 6\\\" label=\\\"{{::'components.common.searchTextLabel' | mxi18n}}\\\" ng-show=\\\"colFilter.operatorOnForm === 10 || colFilter.operatorOnForm === 11\\\">\\r\\n\\r\\n\\t
    \\r\\n\\t\\t
    \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{::item.title}}\\r\\n\\t\\t\\t\\r\\n\\t\\t
    \\r\\n\\t\\t\\r\\n\\t
    \\r\\n
    \\r\\n\\r\\n\\r\\n\";\n// Exports\nexport default code;","'use strict';\r\nimport { BaseInlineFilter } from './base-inline-filter';\r\nimport template from './pickup-filter.html';\r\n\r\nexport class PickupFilter extends BaseInlineFilter {\r\n\tconstructor(options) {\r\n\t\tsuper(options);\r\n\t\tthis.type = 'pickup';\r\n\t\tthis.panelTemplate = template;\r\n\t\tthis.operators = this.filterOperatorsFactory.getOperatorsByType('Pickup');\r\n\t\tthis.maxWordsPerCondition = this.configService.get('maxWordsPerCondition');\r\n\t\tthis.maxWordsValidationMessage = this.i18n.getFormatted('solutionBuilderAgent.components.mx-search-query-condition.tooManyWords', this.maxWordsPerCondition);\r\n\t}\r\n\r\n\tgetNewValue() {\r\n\t\tswitch (this.operatorOnForm) {\r\n\t\t\tcase this.allOperators.IsSet.value:\r\n\t\t\tcase this.allOperators.IsNotSet.value:\r\n\t\t\t\treturn [];\r\n\t\t\tcase this.allOperators.In.value:\r\n\t\t\tcase this.allOperators.NotIn.value:\r\n\t\t\t\treturn this.getSelectedItems().map(function (item) {\r\n\t\t\t\t\treturn item.Id;\r\n\t\t\t\t});\r\n\t\t\tdefault:\r\n\t\t\t\treturn [this.valueOnForm];\r\n\t\t}\r\n\t}\r\n\r\n\tgetSelectedItems() {\r\n\t\treturn this.selectedItems || [];\r\n\t}\r\n\r\n\tsetDefault() {\r\n\t\tthis.operator = this.operatorOnForm = this.allOperators.Contains.value;\r\n\t\tthis.valueOnForm = '';\r\n\t\tthis.selectedItems = [];\r\n\t\tthis.selectedIds = [];\r\n\t}\r\n\r\n\tupdateTitle() {\r\n\t\tswitch (this.operator) {\r\n\t\t\tcase this.allOperators.IsSet.value:\r\n\t\t\tcase this.allOperators.IsNotSet.value:\r\n\t\t\t\tthis.title = this.operatorTitle;\r\n\t\t\t\tbreak;\r\n\t\t\tcase this.allOperators.In.value:\r\n\t\t\tcase this.allOperators.NotIn.value:\r\n\t\t\t\tthis.title =\r\n\t\t\t\t\tthis.operatorTitle +\r\n\t\t\t\t\t' ' +\r\n\t\t\t\t\tthis.getSelectedItems()\r\n\t\t\t\t\t\t.map(function (item) {\r\n\t\t\t\t\t\t\treturn item.DisplayString;\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.join(',');\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthis.title = this.operatorLabel + ' ' + this.value[0];\r\n\t\t}\r\n\t}\r\n\r\n\tisFormValid() {\r\n\t\tconst newValue = this.getNewValue();\r\n\r\n\t\tswitch (this.operatorOnForm) {\r\n\t\t\tcase this.allOperators.IsSet.value:\r\n\t\t\tcase this.allOperators.IsNotSet.value:\r\n\t\t\t\treturn true;\r\n\t\t\tcase this.allOperators.In.value:\r\n\t\t\tcase this.allOperators.NotIn.value:\r\n\t\t\t\treturn newValue.length > 0;\r\n\t\t\tcase this.allOperators.ContainsAllWords.value:\r\n\t\t\tcase this.allOperators.ContainsAnyWord.value:\r\n\t\t\tcase this.allOperators.DoesNotContainAnyWord.value:\r\n\t\t\tcase this.allOperators.DoesNotContainAllWords.value: {\r\n\t\t\t\tconst searchText = newValue && newValue[0];\r\n\t\t\t\tconst correct = searchText && searchText.split(/[,|.|;| ]/).length <= this.maxWordsPerCondition;\r\n\t\t\t\tthis.validationMessage = searchText && !correct ? this.maxWordsValidationMessage : null;\r\n\t\t\t\treturn correct;\r\n\t\t\t}\r\n\t\t\tdefault:\r\n\t\t\t\treturn Boolean(newValue && newValue[0]);\r\n\t\t}\r\n\t}\r\n\r\n\thasValue() {\r\n\t\tswitch (this.operator) {\r\n\t\t\tcase this.allOperators.IsSet.value:\r\n\t\t\tcase this.allOperators.IsNotSet.value:\r\n\t\t\t\treturn true;\r\n\t\t\tcase this.allOperators.In.value:\r\n\t\t\tcase this.allOperators.NotIn.value:\r\n\t\t\t\treturn this.getSelectedItems().length > 0;\r\n\t\t\tdefault:\r\n\t\t\t\treturn Boolean(this.value && this.value[0]);\r\n\t\t}\r\n\t}\r\n\r\n\tsyncFormFromInline(inlineValue) {\r\n\t\tthis.valueOnForm = inlineValue;\r\n\t}\r\n}\r\n","// Module\nvar code = \"
    \\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n
    \";\n// Exports\nexport default code;","'use strict';\r\nimport { StringFilter } from './string-filter';\r\n\r\nexport class GuidFilter extends StringFilter {\r\n\tconstructor(options) {\r\n\t\tsuper(options);\r\n\r\n\t\tthis.type = 'guid';\r\n\t\tthis.operators = this.filterOperatorsFactory.getOperatorsByType('Guid');\r\n\t}\r\n\r\n\tsetDefault() {\r\n\t\tthis.operator = this.operatorOnForm = this.allOperators.Equals.value;\r\n\t\tthis.valueOnForm = '';\r\n\t}\r\n}\r\n","'use strict';\r\nimport { StringFilter } from './filters/string-filter';\r\nimport { BooleanFilter } from './filters/boolean-filter';\r\nimport { NumberFilter } from './filters/number-filter';\r\nimport { DateFilter } from './filters/date-filter';\r\nimport { SelectFilter } from './filters/select-filter';\r\nimport { PickupFilter } from './filters/pickup-filter';\r\nimport { GuidFilter } from './filters/guid-filter';\r\nimport { MxObjectPropertyType } from '../../../../Pandora/model/object';\r\n\r\nexport class MxGridColumnFiltersFactory {\r\n\tstatic $inject = ['mx.internationalization', 'mx.shell.Config', 'mx.sb.Agent.DataQuery.FilterOperatorsFactory'];\r\n\r\n\tconstructor(i18n, configService, filterOperatorsFactory) {\r\n\t\tObject.assign(this, { i18n, configService, filterOperatorsFactory });\r\n\t}\r\n\r\n\tinitColumnFilter(column) {\r\n\t\tlet filter;\r\n\t\tconst filterOptions = {\r\n\t\t\tcolumn: column,\r\n\t\t\ti18n: this.i18n,\r\n\t\t\tconfigService: this.configService,\r\n\t\t\tfilterOperatorsFactory: this.filterOperatorsFactory,\r\n\t\t};\r\n\r\n\t\tswitch (column.AttributeValueType) {\r\n\t\t\tcase MxObjectPropertyType.String.name:\r\n\t\t\tcase MxObjectPropertyType.Text.name:\r\n\t\t\tcase MxObjectPropertyType.Icon.name:\r\n\t\t\tcase MxObjectPropertyType.Color.name:\r\n\t\t\t\tfilter = new StringFilter(filterOptions);\r\n\t\t\t\tbreak;\r\n\t\t\tcase MxObjectPropertyType.Boolean.name:\r\n\t\t\t\tfilter = new BooleanFilter(filterOptions);\r\n\t\t\t\tbreak;\r\n\t\t\tcase MxObjectPropertyType.Integer.name:\r\n\t\t\tcase MxObjectPropertyType.Float.name:\r\n\t\t\tcase MxObjectPropertyType.Long.name:\r\n\t\t\tcase MxObjectPropertyType.Decimal.name:\r\n\t\t\tcase MxObjectPropertyType.Currency.name:\r\n\t\t\t\tfilter = new NumberFilter(filterOptions);\r\n\t\t\t\tbreak;\r\n\t\t\tcase MxObjectPropertyType.Date.name:\r\n\t\t\t\tfilter = new DateFilter(filterOptions);\r\n\t\t\t\tbreak;\r\n\t\t\tcase MxObjectPropertyType.Guid.name:\r\n\t\t\t\tfilter = new GuidFilter(filterOptions);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tfilter = new StringFilter(filterOptions);\r\n\t\t}\r\n\r\n\t\tif (column.IsEnum) {\r\n\t\t\tfilter = new SelectFilter(filterOptions);\r\n\t\t}\r\n\r\n\t\tif (column.IsPickup) {\r\n\t\t\tfilter = new PickupFilter(filterOptions);\r\n\t\t}\r\n\r\n\t\tfilter.init(column);\r\n\r\n\t\treturn filter;\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nMxFilterOperatorsFactory.$inject = ['mx.internationalization'];\r\n\r\nexport function MxFilterOperatorsFactory(i18n) {\r\n\tconst operators = {\r\n\t\tEquals: {\r\n\t\t\tvalue: 1,\r\n\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.equals'),\r\n\t\t\tlabel: '=',\r\n\t\t\tfn: (target, values) => target === values[0],\r\n\t\t},\r\n\t\tNotEquals: {\r\n\t\t\tvalue: 2,\r\n\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.notequals'),\r\n\t\t\tlabel: '≠',\r\n\t\t\tfn: (target, values) => target !== values[0],\r\n\t\t},\r\n\t\tLowerThan: {\r\n\t\t\tvalue: 3,\r\n\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.lowerthan'),\r\n\t\t\tlabel: '<',\r\n\t\t\tfn: (target, values) => target < values[0],\r\n\t\t},\r\n\t\tLowerThanOrEquals: {\r\n\t\t\tvalue: 4,\r\n\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.lowerthanorequals'),\r\n\t\t\tlabel: '≤',\r\n\t\t\tfn: (target, values) => target <= values[0],\r\n\t\t},\r\n\t\tGreaterThan: {\r\n\t\t\tvalue: 5,\r\n\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.greaterthan'),\r\n\t\t\tlabel: '>',\r\n\t\t\tfn: (target, values) => target > values[0],\r\n\t\t},\r\n\t\tGreaterThanOrEquals: {\r\n\t\t\tvalue: 6,\r\n\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.greaterthanorequals'),\r\n\t\t\tlabel: '≥',\r\n\t\t\tfn: (target, values) => target >= values[0],\r\n\t\t},\r\n\t\tContains: {\r\n\t\t\tvalue: 7,\r\n\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.contains'),\r\n\t\t\tfn: (target, values) => typeof target === 'string' && target.indexOf(values[0]) !== -1,\r\n\t\t},\r\n\t\tStartsWith: {\r\n\t\t\tvalue: 8,\r\n\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.startswith'),\r\n\t\t\tfn: (target, values) => typeof target === 'string' && target.indexOf(values[0]) === 0,\r\n\t\t},\r\n\t\tEndsWith: {\r\n\t\t\tvalue: 9,\r\n\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.endswith'),\r\n\t\t\tfn: (target, values) => {\r\n\t\t\t\tconst value = values[0] || '';\r\n\t\t\t\treturn typeof target === 'string' && target.indexOf(value) === target.length - value.length;\r\n\t\t\t},\r\n\t\t},\r\n\t\tIn: {\r\n\t\t\tvalue: 10,\r\n\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.in'),\r\n\t\t\tisArray: true,\r\n\t\t\tfn: (target, values) => values.some((value) => target === value),\r\n\t\t},\r\n\t\tNotIn: {\r\n\t\t\tvalue: 11,\r\n\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.notin'),\r\n\t\t\tisArray: true,\r\n\t\t\tfn: (target, values) => !values.some((value) => target === value),\r\n\t\t},\r\n\t\tBetween: {\r\n\t\t\tvalue: 12,\r\n\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.between'),\r\n\t\t\tfn: (target, values) => values[0] < target && target < values[1],\r\n\t\t},\r\n\t\tFlexDateBetween: {\r\n\t\t\tvalue: 13,\r\n\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.flexdatebetween'),\r\n\t\t\tfn: (target, values) => values[0] < target && target < values[1],\r\n\t\t},\r\n\t\tIsNotSet: {\r\n\t\t\tvalue: 14,\r\n\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.isnotset'),\r\n\t\t\twithoutParams: true,\r\n\t\t\tfn: (target) => target === null || typeof target !== 'undefined',\r\n\t\t},\r\n\t\tIsSet: {\r\n\t\t\tvalue: 15,\r\n\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.isset'),\r\n\t\t\twithoutParams: true,\r\n\t\t\tfn: (target) => target !== null && typeof target !== 'undefined',\r\n\t\t},\r\n\t\tNotContains: {\r\n\t\t\tvalue: 16,\r\n\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.notcontains'),\r\n\t\t\tfn: (target, values) => typeof target !== 'string' || target.indexOf(values[0]) === -1,\r\n\t\t},\r\n\t\tContainsAnyWord: {\r\n\t\t\tvalue: 21,\r\n\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.containsAnyWord'),\r\n\t\t\tlabel: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.containsAnyWordLabel'),\r\n\t\t\tfn: (target, values) => getWords(values[0] || '').some((w) => target.includes(w)),\r\n\t\t},\r\n\t\tContainsAllWords: {\r\n\t\t\tvalue: 22,\r\n\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.containsAllWords'),\r\n\t\t\tlabel: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.containsAllWordsLabel'),\r\n\t\t\tfn: (target, values) => getWords(values[0] || '').every((w) => target.includes(w)),\r\n\t\t},\r\n\t\tDoesNotContainAnyWord: {\r\n\t\t\tvalue: 23,\r\n\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.doesNotContainAnyWord'),\r\n\t\t\tlabel: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.doesNotContainAnyWordLabel'),\r\n\t\t\tfn: (target, values) => !getWords(values[0] || '').some((w) => target.includes(w)),\r\n\t\t},\r\n\t\tDoesNotContainAllWords: {\r\n\t\t\tvalue: 24,\r\n\t\t\tname: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.doesNotContainAllWords'),\r\n\t\t\tlabel: i18n.get('solutionBuilderAgent.components.mx-search-query-condition-operator.doesNotContainAllWordsLabel'),\r\n\t\t\tfn: (target, values) => !getWords(values[0] || '').every((w) => target.includes(w)),\r\n\t\t},\r\n\t};\r\n\r\n\tObject.keys(operators).forEach((o) => {\r\n\t\toperators[o].title = operators[o].name; // to support legacy with op.title\r\n\t\toperators[o].technicalName = o;\r\n\t});\r\n\tObject.freeze(operators);\r\n\r\n\tconst getOperatorsByType = (type) => {\r\n\t\tswitch (type) {\r\n\t\t\tcase 'Pickup':\r\n\t\t\tcase 'ObjectReference':\r\n\t\t\tcase 'Relation':\r\n\t\t\t\treturn [\r\n\t\t\t\t\toperators.In,\r\n\t\t\t\t\toperators.NotIn,\r\n\t\t\t\t\toperators.Contains,\r\n\t\t\t\t\toperators.NotContains,\r\n\t\t\t\t\toperators.StartsWith,\r\n\t\t\t\t\toperators.EndsWith,\r\n\t\t\t\t\toperators.IsSet,\r\n\t\t\t\t\toperators.IsNotSet,\r\n\t\t\t\t\toperators.ContainsAllWords,\r\n\t\t\t\t\toperators.ContainsAnyWord,\r\n\t\t\t\t\toperators.DoesNotContainAnyWord,\r\n\t\t\t\t];\r\n\t\t\tcase 'String':\r\n\t\t\t\treturn [\r\n\t\t\t\t\toperators.Contains,\r\n\t\t\t\t\toperators.NotContains,\r\n\t\t\t\t\toperators.Equals,\r\n\t\t\t\t\toperators.NotEquals,\r\n\t\t\t\t\toperators.StartsWith,\r\n\t\t\t\t\toperators.EndsWith,\r\n\t\t\t\t\toperators.IsSet,\r\n\t\t\t\t\toperators.IsNotSet,\r\n\t\t\t\t\toperators.ContainsAllWords,\r\n\t\t\t\t\toperators.ContainsAnyWord,\r\n\t\t\t\t\toperators.DoesNotContainAnyWord,\r\n\t\t\t\t];\r\n\r\n\t\t\tcase 'Boolean':\r\n\t\t\t\treturn [operators.Equals, operators.NotEquals];\r\n\r\n\t\t\tcase 'Guid':\r\n\t\t\t\treturn [operators.Equals, operators.NotEquals, operators.IsSet, operators.IsNotSet];\r\n\r\n\t\t\tcase 'Number':\r\n\t\t\tcase 'Integer':\r\n\t\t\tcase 'Long':\r\n\t\t\tcase 'Float':\r\n\t\t\tcase 'Decimal':\r\n\t\t\tcase 'Currency':\r\n\t\t\t\treturn [\r\n\t\t\t\t\toperators.Equals,\r\n\t\t\t\t\toperators.NotEquals,\r\n\t\t\t\t\toperators.LowerThan,\r\n\t\t\t\t\toperators.LowerThanOrEquals,\r\n\t\t\t\t\toperators.GreaterThan,\r\n\t\t\t\t\toperators.GreaterThanOrEquals,\r\n\t\t\t\t\toperators.Between,\r\n\t\t\t\t\toperators.IsSet,\r\n\t\t\t\t\toperators.IsNotSet,\r\n\t\t\t\t];\r\n\r\n\t\t\tcase 'Date':\r\n\t\t\t\treturn [operators.Between, operators.FlexDateBetween, operators.IsSet, operators.IsNotSet];\r\n\r\n\t\t\tcase 'Text':\r\n\t\t\t\treturn [\r\n\t\t\t\t\toperators.Contains,\r\n\t\t\t\t\toperators.NotContains,\r\n\t\t\t\t\toperators.StartsWith,\r\n\t\t\t\t\toperators.EndsWith,\r\n\t\t\t\t\toperators.IsSet,\r\n\t\t\t\t\toperators.IsNotSet,\r\n\t\t\t\t\toperators.ContainsAllWords,\r\n\t\t\t\t\toperators.ContainsAnyWord,\r\n\t\t\t\t\toperators.DoesNotContainAnyWord,\r\n\t\t\t\t];\r\n\r\n\t\t\tcase 'Select':\r\n\t\t\tcase 'EnumReference':\r\n\t\t\t\treturn [operators.In, operators.NotIn, operators.IsSet, operators.IsNotSet];\r\n\t\t\tcase 'Expression':\r\n\t\t\tdefault:\r\n\t\t\t\treturn [];\r\n\t\t}\r\n\t};\r\n\r\n\tconst getAllOperators = () => Object.keys(operators).map((o) => operators[o]);\r\n\r\n\tconst getOperatorByValue = (value) => operators[Object.keys(operators).find((o) => operators[o].value === value)];\r\n\r\n\tfunction getWords(value) {\r\n\t\treturn value.split(/[, ;.]/).filter((f) => f);\r\n\t}\r\n\r\n\treturn {\r\n\t\toperators: operators,\r\n\t\tgetAllOperators: getAllOperators,\r\n\t\tgetOperatorsByType: getOperatorsByType,\r\n\t\tgetOperatorByValue: getOperatorByValue,\r\n\t\tgetWords: getWords,\r\n\t};\r\n}\r\n","import '../../../Pandora/model/object';\r\n\r\nimport AdvanceSearchPreprocessor from './preprocessors/AdvanceSearchPreprocessor';\r\nimport ColumnSearchPreprocessor from './preprocessors/ColumnSearchPreprocessor';\r\nimport PagingPreprocessor from './preprocessors/PagingPreprocessor';\r\nimport SearchPreprocessor from './preprocessors/SearchPreprocessor';\r\nimport SortingPreprocessor from './preprocessors/SortingPreprocessor';\r\n\r\nimport BaseRequesterClassFactory from './requests/BaseQueryRequester';\r\nimport ClientDataRequesterClassFactory from './requests/ClientDataRequester';\r\nimport DataDefinitionRequesterFactory from './requests/DataDefinitionRequester';\r\nimport { RelationsRequesterFactory } from './requests/RelationsRequester';\r\nimport DataDefinitionQueryOptionsFactory from './requests/DataDefinitionRequestOptions';\r\nimport MultiFragmentRequesterClassFactory from './requests/MultiFragmentRequester';\r\nimport ServiceRequesterClassFactory from './requests/ServiceRequester';\r\n\r\nimport DataQueryColumnFactory from './DataQueryColumn';\r\nimport DataQueryDefinitionFactory from './DataQueryDefinition';\r\nimport DataQueryEnums from './DataQueryEnumerations';\r\nimport DataQueryExecutorFactory from './DataQueryExecutor';\r\nimport DataQueryRowClassFactory from './DataQueryRow';\r\n\r\nimport { MxGridColumnFiltersFactory } from './column-filters/mx-grid-column-filters-factory';\r\nimport { MxFilterOperatorsFactory } from './column-filters/mx-grid-column-filter-operators-factory';\r\n\r\nfunction createClassFactory(ClassName) {\r\n\tclassFactory.$inject = ['$injector'];\r\n\tfunction classFactory($injector) {\r\n\t\treturn (options) => $injector.instantiate(ClassName, options);\r\n\t}\r\n\r\n\treturn classFactory;\r\n}\r\n\r\nexport default angular\r\n\t.module('mx.sb.Agent.DataQuery', [])\r\n\t.value('mx.sb.Agent.DataQuery.Enums', DataQueryEnums)\r\n\r\n\t.factory('mx.sb.Agent.DataQuery.AdvanceSearchPreprocessor', createClassFactory(AdvanceSearchPreprocessor))\r\n\t.factory('mx.sb.Agent.DataQuery.ColumnSearchPreprocessor', createClassFactory(ColumnSearchPreprocessor))\r\n\t.factory('mx.sb.Agent.DataQuery.PagingPreprocessor', createClassFactory(PagingPreprocessor))\r\n\t.factory('mx.sb.Agent.DataQuery.SearchPreprocessor', createClassFactory(SearchPreprocessor))\r\n\t.factory('mx.sb.Agent.DataQuery.SortingPreprocessor', createClassFactory(SortingPreprocessor))\r\n\r\n\t.factory('mx.sb.Agent.DataQuery.BaseRequester', BaseRequesterClassFactory)\r\n\t.factory('mx.sb.Agent.DataQuery.ClientDataRequester', ClientDataRequesterClassFactory)\r\n\t.factory('mx.sb.Agent.DataQuery.DataDefinitionRequester', DataDefinitionRequesterFactory)\r\n\t.factory('mx.sb.Agent.DataQuery.RelationsRequester', RelationsRequesterFactory)\r\n\t.factory('mx.sb.Agent.DataQuery.DataDefinitionRequestOptions', DataDefinitionQueryOptionsFactory)\r\n\t.factory('mx.sb.Agent.DataQuery.MultiFragmentRequester', MultiFragmentRequesterClassFactory)\r\n\t.factory('mx.sb.Agent.DataQuery.ServiceRequester', ServiceRequesterClassFactory)\r\n\r\n\t.factory('mx.sb.Agent.DataQuery.Column', DataQueryColumnFactory)\r\n\t.factory('mx.sb.Agent.DataQuery.DataQueryDefinition', DataQueryDefinitionFactory)\r\n\t.factory('mx.sb.Agent.DataQuery.Executor', DataQueryExecutorFactory)\r\n\r\n\t.service('mx.sb.Agent.DataQuery.ColumnFiltersFactory', MxGridColumnFiltersFactory)\r\n\t.factory('mx.sb.Agent.DataQuery.FilterOperatorsFactory', MxFilterOperatorsFactory)\r\n\r\n\t.factory('mx.sb.Agent.DataQuery.Row', DataQueryRowClassFactory).name;\r\n","import BasePreprocessor from './BasePreprocessor';\r\n\r\nexport default class AdvanceSearchPreprocessor extends BasePreprocessor {\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis._conditions = this._createEmptyGroup();\r\n\t\tthis._filters = [];\r\n\t}\r\n\r\n\tget conditions() {\r\n\t\treturn this._conditions;\r\n\t}\r\n\tset conditions(newConditions) {\r\n\t\tif (newConditions && typeof newConditions === 'object') {\r\n\t\t\tthis._conditions = Object.assign(this._createEmptyGroup(), newConditions);\r\n\t\t} else {\r\n\t\t\tthis._conditions = this._createEmptyGroup();\r\n\t\t}\r\n\r\n\t\tif (this.executor.preprocessors.pagingPreprocessor) {\r\n\t\t\tthis.executor.preprocessors.pagingPreprocessor.page = 0;\r\n\t\t}\r\n\r\n\t\tthis.changed();\r\n\t}\r\n\r\n\tget filters() {\r\n\t\treturn this._filters;\r\n\t}\r\n\tset filters(newFilters) {\r\n\t\tif (Array.isArray(newFilters) && newFilters.every((filter) => typeof filter === 'string')) {\r\n\t\t\tthis._filters = newFilters;\r\n\t\t\tthis.changed();\r\n\t\t}\r\n\t}\r\n\r\n\t_createEmptyGroup() {\r\n\t\treturn {\r\n\t\t\tConditions: [],\r\n\t\t\tGroups: [],\r\n\t\t\tLogicalOperator: mx.SolutionBuilderAgent.SearchQueryLogicalOperator.AND,\r\n\t\t};\r\n\t}\r\n\r\n\tinit(executor) {\r\n\t\tthis.executor = executor;\r\n\t\tthis.enabled = Boolean(executor.dataQuery && executor.dataQuery.Id);\r\n\t}\r\n}\r\n","'use strict';\r\nimport BasePreprocessor from './BasePreprocessor';\r\n\r\nexport default class SearchPreprocessor extends BasePreprocessor {\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tvar keyword = '';\r\n\r\n\t\tObject.defineProperty(this, 'keyword', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn keyword;\r\n\t\t\t},\r\n\t\t\tset: function (newKeyword) {\r\n\t\t\t\tif (keyword !== newKeyword) {\r\n\t\t\t\t\tkeyword = newKeyword;\r\n\r\n\t\t\t\t\tif (this.executor.preprocessors.pagingPreprocessor) {\r\n\t\t\t\t\t\tthis.executor.preprocessors.pagingPreprocessor.page = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.changed();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tinit(executor) {\r\n\t\tthis.executor = executor;\r\n\t}\r\n}\r\n","import { Relation } from '../../model/data-model/data-model-base-objects';\r\n\r\nSelectionGridFactory.$inject = ['mx.SolutionBuilderAgent.ObjectsGrid'];\r\nexport default function SelectionGridFactory(ObjectsGrid) {\r\n\tclass SelectionGrid extends ObjectsGrid {\r\n\t\tconstructor(props) {\r\n\t\t\tsuper(props);\r\n\t\t}\r\n\r\n\t\tinitProperties() {\r\n\t\t\tsuper.initProperties();\r\n\t\t\tlet relation;\r\n\t\t\tlet onDblClick = angular.noop;\r\n\t\t\tlet onClick = angular.noop;\r\n\r\n\t\t\tObject.defineProperties(this, {\r\n\t\t\t\trelation: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tset: function (value) {\r\n\t\t\t\t\t\tif (value instanceof Relation) {\r\n\t\t\t\t\t\t\trelation = value;\r\n\t\t\t\t\t\t\tthis.entityClassName = this.relation.relationsConfig.referenceTo;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn relation;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tinvertRelation: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tvalue: false,\r\n\t\t\t\t},\r\n\t\t\t\tarchived: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tvalue: false,\r\n\t\t\t\t},\r\n\t\t\t\tobjectIDs: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t},\r\n\t\t\t\tuseObjectId: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t},\r\n\t\t\t\texcludedIDs: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t},\r\n\t\t\t\tcorrectEntityFilter: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t},\r\n\t\t\t\tpresetFields: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tvalue: {},\r\n\t\t\t\t},\r\n\t\t\t\tonClick: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tset: function (handler) {\r\n\t\t\t\t\t\tif (typeof handler === 'function') {\r\n\t\t\t\t\t\t\tonClick = handler;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn onClick;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tonDblClick: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tset: function (handler) {\r\n\t\t\t\t\t\tif (typeof handler === 'function') {\r\n\t\t\t\t\t\t\tonDblClick = handler;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn onDblClick;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\titemClickHandler(row) {\r\n\t\t\tthis.onClick(row);\r\n\t\t}\r\n\r\n\t\titemDblClickHandler(row) {\r\n\t\t\tthis.onDblClick(row);\r\n\t\t}\r\n\r\n\t\tasync onCreateButtonClick(item) {\r\n\t\t\ttry {\r\n\t\t\t\tconst createdRow = await this.createNewItem(item._type, item._itemType);\r\n\t\t\t\tconst selectedRows = this.executor.allSelectedRows.concat([createdRow]);\r\n\t\t\t\tthis.executor.changeSelection(selectedRows);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tmx.logCatch(e);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tafterEntitiesCreated(/*newEntity*/) {}\r\n\r\n\t\tgetCorrectEntityFilter() {\r\n\t\t\treturn this.correctEntityFilter;\r\n\t\t}\r\n\r\n\t\tgetPresetFields() {\r\n\t\t\treturn this.presetFields;\r\n\t\t}\r\n\r\n\t\tupdateRequest() {\r\n\t\t\tsuper.updateRequest();\r\n\t\t\tif (!this.executor) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst options = {\r\n\t\t\t\tarchived: this.archived,\r\n\t\t\t\tuseObjectId: this.useObjectId,\r\n\t\t\t};\r\n\r\n\t\t\tif (this.relation) {\r\n\t\t\t\tif (this.invertRelation) {\r\n\t\t\t\t\tObject.assign(options, {\r\n\t\t\t\t\t\tentityClassName: this.relation.relationsConfig.referenceTo,\r\n\t\t\t\t\t\tfragmentId: this.relation.fragmentId,\r\n\t\t\t\t\t\tlookupFor: `${this.relation.relationsConfig.referenceFrom}.${this.relation.relationsConfig.attributeFrom}`,\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tObject.assign(options, {\r\n\t\t\t\t\t\tentityClassName: this.relation.relationsConfig.referenceFrom,\r\n\t\t\t\t\t\trelationName: this.relation.relationsConfig.attributeFrom,\r\n\t\t\t\t\t\tfragmentId: this.relation.fragmentId,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.executor.updateRequestOptions(options);\r\n\t\t}\r\n\t}\r\n\r\n\treturn SelectionGrid;\r\n}\r\n","'use strict';\r\n\r\nSelectionTabController.$inject = [\r\n\t'mx.SolutionBuilderAgent.SelectionGrid',\r\n\t'mx.SolutionBuilderAgent.DialogOpenerService',\r\n\t'$scope',\r\n\t'$q',\r\n\t'mx.shell.KeyboardNavigationService',\r\n\t'mx.internationalization',\r\n\t'mx.SolutionBuilderAgent.MxGridHelperService',\r\n\t'mx.shell.EventService',\r\n];\r\nexport default function SelectionTabController(SelectionGrid, dialogOpenerService, $scope, $q, keyboardNavigationService, i18n, gridHelperService, eventService) {\r\n\tconst vm = this;\r\n\tvm.gridHelperService = gridHelperService;\r\n\r\n\tlet selectedType,\r\n\t\tresetFilter = false;\r\n\r\n\tObject.defineProperty(vm, 'selectedType', {\r\n\t\tget: function () {\r\n\t\t\treturn selectedType;\r\n\t\t},\r\n\t\tset: function (newType) {\r\n\t\t\tselectedType = newType;\r\n\t\t\tif (selectedType) {\r\n\t\t\t\tvm.grid.allowedTypes = vm.selectedType;\r\n\t\t\t\tvm.grid.executor.loadItems();\r\n\t\t\t} else {\r\n\t\t\t\tvm.grid.executor.dataItems = [];\r\n\t\t\t}\r\n\t\t},\r\n\t});\r\n\r\n\tObject.defineProperty(vm, 'resetFilter', {\r\n\t\tget: function () {\r\n\t\t\treturn resetFilter;\r\n\t\t},\r\n\t\tset: function (newValue) {\r\n\t\t\tif (resetFilter !== newValue) {\r\n\t\t\t\tresetFilter = newValue;\r\n\t\t\t\tvm.grid.executor.updateRequestOptions({\r\n\t\t\t\t\tfilter: resetFilter ? vm.resetFilterExpression : vm.filter,\r\n\t\t\t\t\tresetFilter: resetFilter,\r\n\t\t\t\t});\r\n\t\t\t\tvm.grid.executor.loadItems();\r\n\t\t\t}\r\n\t\t},\r\n\t});\r\n\r\n\tvm.$onInit = function () {\r\n\t\tconst grid = new SelectionGrid();\r\n\r\n\t\tvm.view = $scope.$parent.vm.mxView;\r\n\r\n\t\tregisterHotkeys();\r\n\t\tangular.extend(grid, {\r\n\t\t\tentityClassName: this.entityClassName,\r\n\t\t\trelation: this.relation,\r\n\t\t\tinvertRelation: this.invertRelation,\r\n\t\t\tarchived: this.archived,\r\n\t\t\tobjectIDs: this.objectIDs,\r\n\t\t\tuseObjectId: this.useObjectId,\r\n\t\t\texcludedIDs: this.excludedIDs,\r\n\t\t\tallowedTypes: this.allowedTypes,\r\n\t\t\tfilter: this.filter,\r\n\t\t\tcorrectEntityFilter: this.correctEntityFilter,\r\n\t\t\tcolumnDefinition: this.columnDefinition,\r\n\t\t\tparentView: this.view,\r\n\t\t\tpresetFields: this.presetFields,\r\n\t\t\tshowActionsPanel: this.showActionsPanel,\r\n\t\t\tshowSelectAll: this.showSelectAll,\r\n\t\t\tcreateButtonHidden: Boolean(vm.viewMode || vm.createButtonHidden),\r\n\t\t\taddButtonHidden: true,\r\n\t\t\tremoveButtonHidden: true,\r\n\t\t\tenableAdvanceSearch: true,\r\n\r\n\t\t\tonClick: onGridClick,\r\n\t\t\tonDblClick: onGridDblClick,\r\n\t\t});\r\n\r\n\t\tvm.grid = grid;\r\n\r\n\t\tvm.fullHeightOptions = vm.viewMode\r\n\t\t\t? {\r\n\t\t\t\t\tlayoutBottomOffset: 0,\r\n\t\t\t\t\tdialogButtonsOffset: 0,\r\n\t\t\t }\r\n\t\t\t: true;\r\n\r\n\t\tlet promise;\r\n\t\tif (vm.onlyTypedSelectSearch) {\r\n\t\t\tpromise = vm.gridHelperService.getAllowedEntityTypes(grid.entityClassName, vm.allowedTypes).then(function (entityTypes) {\r\n\t\t\t\tif (typeof vm.allowedTypes === 'string' && vm.allowedTypes.length) {\r\n\t\t\t\t\tentityTypes.sort(function (a, b) {\r\n\t\t\t\t\t\tconst diff = vm.allowedTypes.indexOf(a.Name) - vm.allowedTypes.indexOf(b.Name);\r\n\t\t\t\t\t\treturn diff > 0 ? 1 : diff < 0 ? -1 : 0;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.allowedEntityTypeItems = entityTypes;\r\n\r\n\t\t\t\tif (entityTypes.length > 0) {\r\n\t\t\t\t\tselectedType = entityTypes[0].Name;\r\n\t\t\t\t\tgrid.allowedTypes = selectedType;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tpromise = $q.resolve();\r\n\t\t}\r\n\r\n\t\tpromise\r\n\t\t\t.then(function () {\r\n\t\t\t\tconst personalizationKey = grid.columnDefinition || grid.entityClassName;\r\n\t\t\t\treturn grid.init(personalizationKey);\r\n\t\t\t})\r\n\t\t\t.then(function () {\r\n\t\t\t\tgrid.executor.addSelectionHandler(selectionHandler);\r\n\t\t\t});\r\n\t};\r\n\r\n\tvm.select = select;\r\n\tvm.cancel = cancel;\r\n\r\n\tfunction onGridClick(row) {\r\n\t\tif (vm.viewMode) {\r\n\t\t\tvm.grid.runGenericPreview(row.getEntity());\r\n\t\t} else {\r\n\t\t\tvm.grid.executor.toggleRowSelection(row);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction onGridDblClick(row) {\r\n\t\tif (vm.viewMode) {\r\n\t\t\tvm.grid.editRow(row).catch(mx.logCatch);\r\n\t\t} else {\r\n\t\t\tvm.grid.executor.selectRow(row);\r\n\t\t\tselect();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction selectionHandler(data) {\r\n\t\tif (!vm.multiSelection && data.allSelectedRows.length) {\r\n\t\t\tselect();\r\n\t\t}\r\n\t\teventService.dispatchEvent(mx.shell.EventCodes.LayoutChanged);\r\n\t}\r\n\r\n\tfunction select() {\r\n\t\tvm.finishDefer.resolve(vm.grid.executor.allSelectedEntities);\r\n\t}\r\n\r\n\tfunction cancel() {\r\n\t\tvm.finishDefer.reject(mx.noLogCatchMessage('multi-selection tab was canceled'));\r\n\t}\r\n\r\n\tfunction registerHotkeys() {\r\n\t\tkeyboardNavigationService.registerKey({\r\n\t\t\tscope: $scope,\r\n\t\t\tnameInTemplate: 'hintKey',\r\n\t\t\tkey: 'alt+z',\r\n\t\t\tdescription: i18n.get('solutionBuilderAgent.layouts.multiselection-tab.cancel'),\r\n\t\t\tcallback: cancel.bind(vm),\r\n\t\t});\r\n\t}\r\n}\r\n","'use strict';\r\nimport DetailsView from '../../../Pandora/model/details-view';\r\nimport SelectionTabController from './multiselection-tab';\r\nimport template from './multiselection-tab.html';\r\n\r\n/**\r\n * @ngdoc Class\r\n * @name mx.SolutionBuilderAgent.SelectionView\r\n *\r\n * @description\r\n * View of multi-selection tab\r\n *\r\n * @param {Object} options - attributes of view\r\n *\r\n */\r\nexport default class SelectionView extends DetailsView {\r\n\tconstructor(i18n, options) {\r\n\t\toptions = angular.extend({}, options, {\r\n\t\t\tcontroller: SelectionTabController,\r\n\t\t\ttemplate: template,\r\n\t\t\tid: 'selectObjects_' + Date.now(),\r\n\t\t\theaderTitle: i18n.get('solutionBuilderAgent.browseDialog.select_objects_short'),\r\n\t\t\tdisplayName: options.displayName,\r\n\t\t\tname: options.displayName || i18n.get('solutionBuilderAgent.browseDialog.select_label'),\r\n\t\t\tkeepAsOpened: true,\r\n\t\t});\r\n\r\n\t\tsuper(options);\r\n\t}\r\n}\r\n","// Module\nvar code = \"
    \\r\\n\\r\\n\\t
    \\r\\n\\t\\t{{::vm.view.displayName}}\\r\\n\\t
    \\r\\n\\r\\n\\t
    \\r\\n\\r\\n\\t\\t
    \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t
    \\r\\n\\r\\n\\t\\t\\r\\n\\r\\n\\t
    \\r\\n\\r\\n\\t
    \\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
    \\r\\n\\r\\n
    \\r\\n\";\n// Exports\nexport default code;","'use strict';\r\n\r\n/**\r\n * @ngdoc Class\r\n * @name mx.SolutionBuilderAgent.SelectionViewLocals\r\n *\r\n * @description\r\n * Input attributes for controller of SelectionView\r\n *\r\n * @param {Object} options - display name of the selection view\r\n *\r\n */\r\nexport default class SelectionViewLocals {\r\n\tconstructor(options) {\r\n\t\tlet title,\r\n\t\t\tentityClassName,\r\n\t\t\trelation,\r\n\t\t\tarchived,\r\n\t\t\tmultiSelection,\r\n\t\t\tallowedTypes,\r\n\t\t\tfilter,\r\n\t\t\tcorrectEntityFilter,\r\n\t\t\tcolumnDefinition,\r\n\t\t\tonlyTypedSelectSearch,\r\n\t\t\tcontext,\r\n\t\t\tobjectIDs,\r\n\t\t\texcludedIDs,\r\n\t\t\tviewMode,\r\n\t\t\tcreateButtonHidden,\r\n\t\t\tallowResetFilter,\r\n\t\t\tresetFilterExpression;\r\n\r\n\t\tObject.defineProperty(this, 'title', {\r\n\t\t\tenumerable: true,\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\ttitle = newValue || '';\r\n\t\t\t},\r\n\t\t\tget: function () {\r\n\t\t\t\treturn title;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'multiSelection', {\r\n\t\t\tenumerable: true,\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tmultiSelection = Boolean(newValue);\r\n\t\t\t},\r\n\t\t\tget: function () {\r\n\t\t\t\treturn multiSelection;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'entityClassName', {\r\n\t\t\tenumerable: true,\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tentityClassName = newValue;\r\n\t\t\t},\r\n\t\t\tget: function () {\r\n\t\t\t\treturn entityClassName;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'relation', {\r\n\t\t\tenumerable: true,\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\trelation = newValue;\r\n\t\t\t},\r\n\t\t\tget: function () {\r\n\t\t\t\treturn relation;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'archived', {\r\n\t\t\tenumerable: true,\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tarchived = newValue;\r\n\t\t\t},\r\n\t\t\tget: function () {\r\n\t\t\t\treturn archived;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'objectIDs', {\r\n\t\t\tenumerable: true,\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tobjectIDs = Array.isArray(newValue) ? newValue : [];\r\n\t\t\t},\r\n\t\t\tget: function () {\r\n\t\t\t\treturn objectIDs;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'excludedIDs', {\r\n\t\t\tenumerable: true,\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\texcludedIDs = Array.isArray(newValue) ? newValue : [];\r\n\t\t\t},\r\n\t\t\tget: function () {\r\n\t\t\t\treturn excludedIDs;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'allowedTypes', {\r\n\t\t\tenumerable: true,\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tallowedTypes = newValue;\r\n\t\t\t},\r\n\t\t\tget: function () {\r\n\t\t\t\treturn allowedTypes;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'filter', {\r\n\t\t\tenumerable: true,\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tfilter = newValue;\r\n\t\t\t},\r\n\t\t\tget: function () {\r\n\t\t\t\treturn filter;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'correctEntityFilter', {\r\n\t\t\tenumerable: true,\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tcorrectEntityFilter = newValue;\r\n\t\t\t},\r\n\t\t\tget: function () {\r\n\t\t\t\treturn correctEntityFilter;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'columnDefinition', {\r\n\t\t\tenumerable: true,\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tcolumnDefinition = newValue;\r\n\t\t\t},\r\n\t\t\tget: function () {\r\n\t\t\t\treturn columnDefinition;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'onlyTypedSelectSearch', {\r\n\t\t\tenumerable: true,\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tonlyTypedSelectSearch = newValue;\r\n\t\t\t},\r\n\t\t\tget: function () {\r\n\t\t\t\treturn onlyTypedSelectSearch;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'allowResetFilter', {\r\n\t\t\tenumerable: true,\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tallowResetFilter = Boolean(newValue);\r\n\t\t\t},\r\n\t\t\tget: function () {\r\n\t\t\t\treturn allowResetFilter;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'resetFilterExpression', {\r\n\t\t\tenumerable: true,\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tresetFilterExpression = newValue;\r\n\t\t\t},\r\n\t\t\tget: function () {\r\n\t\t\t\treturn resetFilterExpression;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'context', {\r\n\t\t\tenumerable: true,\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tcontext = newValue;\r\n\t\t\t},\r\n\t\t\tget: function () {\r\n\t\t\t\treturn context;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'viewMode', {\r\n\t\t\tenumerable: true,\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tviewMode = Boolean(newValue);\r\n\t\t\t},\r\n\t\t\tget: function () {\r\n\t\t\t\treturn viewMode;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(this, 'createButtonHidden', {\r\n\t\t\tenumerable: true,\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\tcreateButtonHidden = Boolean(newValue);\r\n\t\t\t},\r\n\t\t\tget: function () {\r\n\t\t\t\treturn createButtonHidden;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tangular.extend(this, options);\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nimport SelectionView from './SelectionView';\r\nimport SelectionViewLocals from './SelectionViewLocals';\r\n\r\nexport default class MultiSelectionTabService {\r\n\tconstructor(sidePanelService, i18n) {\r\n\t\tthis.sidePanelService = sidePanelService;\r\n\t\tthis.i18n = i18n;\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.SolutionBuilderAgent.MultiSelectionTabService#open\r\n\t *\r\n\t * @description\r\n\t * Open a `Multi Selection tab` dialog with selection-grid.\r\n\t *\r\n\t * @param {object} options - options for selection grid, convert to MultiSelectionTabOptions\r\n\t * @param {MxView} parentView - view from which MultiSelectionTab was opened\r\n\t *\r\n\t * @returns {promise} - promise, which will be resolved with selected item that user selected on this Dialog.\r\n\t *\r\n\t */\r\n\tasync open(options, parentView) {\r\n\t\tconst locals = new SelectionViewLocals(options);\r\n\t\tconst selView = new SelectionView(this.i18n, {\r\n\t\t\tdisplayName: locals.title,\r\n\t\t\tlocals: locals,\r\n\t\t});\r\n\r\n\t\treturn this.sidePanelService.addView(selView, parentView, true);\r\n\t}\r\n}\r\nMultiSelectionTabService.$inject = ['mx.shell.SidePanelService', 'mx.internationalization'];\r\n","'use strict';\r\n\r\nimport SelectionGridFactory from './SelectionGrid';\r\nimport MultiSelectionTabService from './multiselection-tab.service';\r\n\r\nexport default angular\r\n\t.module('mx.sb.MultiSelectionTab', [])\r\n\t.factory('mx.SolutionBuilderAgent.SelectionGrid', SelectionGridFactory)\r\n\t.service('mx.SolutionBuilderAgent.MultiSelectionTabService', MultiSelectionTabService).name;\r\n","'use strict';\r\nimport EditFormTabService from './edit-form-service';\r\n\r\nexport default angular.module('mx.sb.EditForm', []).service('mx.SolutionBuilderAgent.EditFormTabService', EditFormTabService).name;\r\n","import template from './search-page.component.html';\r\nimport { EventCodes } from '../../../../App/model/event-codes';\r\n\r\nexport default {\r\n\tbindings: {\r\n\t\tcontentWidgetId: '@',\r\n\t\tviewType: '<',\r\n\t\tfilterType: '<',\r\n\t\tfilterId: '<',\r\n\t\tnavigationId: '<',\r\n\t\textraFilter: '<',\r\n\t},\r\n\tcontroller: MxSearchPageContentCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n};\r\n\r\nMxSearchPageContentCtrl.$inject = [\r\n\t'$timeout',\r\n\t'$scope',\r\n\t'$q',\r\n\t'$element',\r\n\t'mx.internationalization',\r\n\t'mx.shell.ContextService',\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.SidePanelService',\r\n\t'mx.app.DeviceService',\r\n\t'mx.SolutionBuilderAgent.mxColumnDefinitionService',\r\n\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n\t'mx.shell.SearchProviderService',\r\n\t'mx.shell.KeyboardNavigationService',\r\n\t'mx.SolutionBuilderAgent.DataModelService',\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n\t'mx.SolutionBuilderAgent.SearchQueryService',\r\n\t'mx.shell.Config',\r\n\t'mx.shell.NotificationService',\r\n\t'mx.SolutionBuilderAgent.ContextSelectionService',\r\n\t'mx.shell.SideLayout',\r\n\t'mx.shell.ActionManagerService',\r\n\t'mx.shell.AriaService',\r\n\t'mx.SolutionBuilderAgent.GroupingPanelService',\r\n\t'mx.shell.AppsService',\r\n\t'mx.SolutionBuilderAgent.SchemaService',\r\n];\r\n\r\nexport function MxSearchPageContentCtrl(\r\n\t$timeout,\r\n\t$scope,\r\n\t$q,\r\n\t$element,\r\n\ti18n,\r\n\tcontextService,\r\n\teventService,\r\n\tsidePanelService,\r\n\tdeviceService,\r\n\tcolumnDefinition,\r\n\tcontentWidgetService,\r\n\tsearchService,\r\n\tkeyboardNavigationService,\r\n\tdataModelService,\r\n\tpersonalizationService,\r\n\tsearchQueryService,\r\n\tmxConfigService,\r\n\tnotificationService,\r\n\tcontextSelectionService,\r\n\tsideLayoutService,\r\n\tactionManagerService,\r\n\tariaService,\r\n\tgroupingPanelService,\r\n\tappsService,\r\n\tschemaService\r\n) {\r\n\tconst vm = this;\r\n\tlet _refreshInterval;\r\n\tlet subscribers = [];\r\n\tlet autoRefreshEnabled = false;\r\n\tconst MIN_REFRESH_INTERVAL = 2;\r\n\tconst AVAILABLE_ROW_HEIGHTS = [\r\n\t\t{\r\n\t\t\tsize: 22,\r\n\t\t\ttitle: i18n.get('solutionBuilderAgent.common.high'),\r\n\t\t},\r\n\t\t{\r\n\t\t\tsize: 30,\r\n\t\t\ttitle: i18n.get('solutionBuilderAgent.common.normal'),\r\n\t\t},\r\n\t\t{\r\n\t\t\tsize: 38,\r\n\t\t\ttitle: i18n.get('solutionBuilderAgent.common.low'),\r\n\t\t},\r\n\t];\r\n\r\n\tconst DEFAULT_ROW_HEIGHT = AVAILABLE_ROW_HEIGHTS[1].size;\r\n\tconst DEFAULT_MAX_EXPORT_ROWS = 65000;\r\n\r\n\tconst freeDataSourceDefer = $q.defer();\r\n\r\n\tvm.onViewSelect = onViewSelect;\r\n\tvm.getIconName = getIconName;\r\n\tvm.openAdvancedSearch = openAdvancedSearch;\r\n\tvm.export = exportData;\r\n\tvm.search = search;\r\n\tvm.onRefreshClick = onRefreshClick;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvm.loaded = false;\r\n\t\tvm.uiToken = 'uiToken:search-page-content';\r\n\t\tvm.context = searchService.currentContext();\r\n\r\n\t\tregisterHotkeys();\r\n\r\n\t\tcontextSelectionService.enableReactionOnContextSelection(true, $scope);\r\n\r\n\t\tif (!vm.contentWidgetId) {\r\n\t\t\tvm.loaded = true;\r\n\t\t\tmx.console.warn(i18n.get('solutionBuilderAgent.errors.search_page_content_is_not_provided'));\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tcontextService.val('SolutionBuilderAgent.ContentWidgetId', vm.contentWidgetId);\r\n\t\tcontextService.val('globalUiToken', vm.uiToken);\r\n\r\n\t\tenableSubscribers();\r\n\t\tloadContent().then(() => initQueries());\r\n\t};\r\n\r\n\tasync function initQueries() {\r\n\t\tconst queries = ((await searchQueryService.getQueries(vm.context)) || []).filter((query) => !query.showInNavigation);\r\n\t\tvm.showQueryFilterButton = queries.length > 0;\r\n\t\tvm.showQueryFilters = queries.some((query) => query.__active);\r\n\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.SolutionBuilderAgent.Events.RunSearchQuery,\r\n\t\t\t(event, id) => {\r\n\t\t\t\tqueries.forEach((query) => {\r\n\t\t\t\t\tconst active = query.id === id;\r\n\t\t\t\t\tquery.__active = active;\r\n\r\n\t\t\t\t\tif (active && vm.showQueryFilterButton) {\r\n\t\t\t\t\t\tvm.showQueryFilters = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (active) {\r\n\t\t\t\t\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\t\t\t\t\teventName: 'Search filter applied from filter panel',\r\n\t\t\t\t\t\t\tsender: `${vm.viewParameters.id}_${query.id}`,\r\n\t\t\t\t\t\t\tsenderTitle: `${vm.viewParameters.name}_${query.title}`,\r\n\t\t\t\t\t\t\tcontextTypeId: vm.viewParameters.entities.map((entity) => entity.id),\r\n\t\t\t\t\t\t\tcontextTypeTitle: vm.viewParameters.entities.map((entity) => entity.name),\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\t}\r\n\r\n\tvm.$onDestroy = function () {\r\n\t\tfreeDataSourceDefer.resolve(true);\r\n\t\tif (_refreshInterval) {\r\n\t\t\tclearInterval(_refreshInterval);\r\n\t\t}\r\n\t\tunregisterHotkeys();\r\n\t\tsubscribers.forEach((unsubscribe) => unsubscribe());\r\n\t\tif (groupingPanelService.isActive()) {\r\n\t\t\tgroupingPanelService.close();\r\n\t\t}\r\n\t};\r\n\r\n\tObject.defineProperty(vm, 'views', {\r\n\t\tget: function () {\r\n\t\t\tconst views = vm.viewInfos.map(function (view) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tlabel: view.Title,\r\n\t\t\t\t\tonItemClick: function () {\r\n\t\t\t\t\t\tvm.currentViewDropDownIcon = vm.getIconName(view.Type);\r\n\t\t\t\t\t\tvm.onViewSelect(view);\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tif (!angular.equals(views, vm._views)) {\r\n\t\t\t\tvm._views = views;\r\n\t\t\t}\r\n\t\t\treturn vm._views;\r\n\t\t},\r\n\t});\r\n\r\n\tObject.defineProperty(vm, 'isMobile', {\r\n\t\tget: function () {\r\n\t\t\treturn deviceService.screenExtraSmall();\r\n\t\t},\r\n\t});\r\n\r\n\tObject.defineProperty(vm, 'isCustomFormEnabled', {\r\n\t\tget: function () {\r\n\t\t\treturn vm.view !== mx.SolutionBuilderAgent.ContentWidgetViewType.Grid;\r\n\t\t},\r\n\t});\r\n\r\n\tlet view;\r\n\tObject.defineProperty(vm, 'view', {\r\n\t\tget: function () {\r\n\t\t\treturn view;\r\n\t\t},\r\n\t\tset: function (selectedView) {\r\n\t\t\tview = selectedView;\r\n\t\t\tvm.serviceContextInfo = {\r\n\t\t\t\twidgetId: vm.contentWidgetId,\r\n\t\t\t\tviewName: vm.view.Key,\r\n\t\t\t};\r\n\t\t},\r\n\t});\r\n\r\n\treturn vm;\r\n\r\n\tfunction enableSearchPageDataChangeSubscriber() {\r\n\t\tconst _cleanSubscrReloads = [];\r\n\t\tlet _cleanReloadTimeout,\r\n\t\t\t_reloadDataCalled = false;\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.SolutionBuilderAgent.Events.SearchPageDataChanged,\r\n\t\t\tfunction (ev, eventParams) {\r\n\t\t\t\tif ((eventParams || {}).instantRefresh) {\r\n\t\t\t\t\t_reloadData();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Performance optimization:\r\n\t\t\t\t// Here we need to postpone Grid-refreshing for a while to avoid browser-freezing\r\n\t\t\t\t// because browser is doing another operations (creating, saving, removing, ... some action after which we need to reload data).\r\n\r\n\t\t\t\t_reloadDataCalled = false;\r\n\r\n\t\t\t\t// Wait while new item is created (or similar action) and preview is shown...\r\n\t\t\t\t_cleanSubscrReloads.push(\r\n\t\t\t\t\teventService.subscribeOnce(mx.SolutionBuilderAgent.Events.ViewDataLoaded, function () {\r\n\t\t\t\t\t\twindow.setTimeout(_reloadData, 500);\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t\t// OR wait for closing SidePanel...\r\n\t\t\t\t_cleanSubscrReloads.push(\r\n\t\t\t\t\teventService.subscribeOnce(mx.shell.EventCodes.SidePanelVisibility, function (_, visible) {\r\n\t\t\t\t\t\tif (!visible) {\r\n\t\t\t\t\t\t\twindow.setTimeout(function () {\r\n\t\t\t\t\t\t\t\tif (!sideLayoutService.visible) {\r\n\t\t\t\t\t\t\t\t\t_reloadData();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}, 1000);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\r\n\t\t\t\t// OR wait for Wizard Closing...\r\n\t\t\t\t_cleanSubscrReloads.push(eventService.subscribeOnce(mx.shell.EventCodes.WizardClose, _reloadData));\r\n\r\n\t\t\t\t// OR wait if object is deleted...\r\n\t\t\t\t_cleanSubscrReloads.push(eventService.subscribeOnce(mx.SolutionBuilderAgent.Events.ObjectDataDeleted, _reloadData));\r\n\r\n\t\t\t\t// BUT not longer then 3 seconds\r\n\t\t\t\t_cleanReloadTimeout = window.setTimeout(_reloadData, 3000);\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\r\n\t\tfunction _reloadData() {\r\n\t\t\tif (_reloadDataCalled) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t_reloadDataCalled = true;\r\n\r\n\t\t\t$scope.$evalAsync(function () {\r\n\t\t\t\tvm.viewParameters.data = undefined;\r\n\t\t\t\treload();\r\n\t\t\t});\r\n\r\n\t\t\t_cleanReloadProcess();\r\n\t\t}\r\n\r\n\t\tfunction _cleanReloadProcess() {\r\n\t\t\t_cleanSubscrReloads.forEach(function (cleaner) {\r\n\t\t\t\tif (cleaner) {\r\n\t\t\t\t\tcleaner();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tif (_cleanReloadTimeout) {\r\n\t\t\t\twindow.clearTimeout(_cleanReloadTimeout);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t$scope.$on('$destroy', function () {\r\n\t\t\t_cleanReloadProcess();\r\n\t\t});\r\n\t}\r\n\r\n\tfunction enableSubscribers() {\r\n\t\tenableSearchPageDataChangeSubscriber();\r\n\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.SolutionBuilderAgent.Events.SynchronizeWidget,\r\n\t\t\tfunction () {\r\n\t\t\t\tloadContent();\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.shell.EventCodes.Search,\r\n\t\t\tfunction (e, searchOptions = {}) {\r\n\t\t\t\tif (\r\n\t\t\t\t\tvm.uiToken === searchOptions.uiToken &&\r\n\t\t\t\t\tvm.context === searchOptions.context &&\r\n\t\t\t\t\tvm.viewParameters?.dataQueryList === searchOptions.dataQueryList &&\r\n\t\t\t\t\tsearchOptions.keyword !== vm.searchText\r\n\t\t\t\t) {\r\n\t\t\t\t\tvm.searchText = searchOptions.keyword;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\r\n\t\tenableGroupingSubscribers();\r\n\t}\r\n\r\n\tfunction enableGroupingSubscribers() {\r\n\t\teventService.subscribeOnce(mx.SolutionBuilderAgent.Events.SearchPageReloaded, function (e, { dataQueryList }) {\r\n\t\t\tif (!dataQueryList.groupingPreprocessor || vm.viewParameters.dataQueryList !== dataQueryList) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (dataQueryList.groupingPreprocessor.isActive()) {\r\n\t\t\t\tgroupingPanelService.open(dataQueryList.groupingPreprocessor);\r\n\t\t\t}\r\n\r\n\t\t\tdataQueryList.groupingPreprocessor.addChangedHandler(() => {\r\n\t\t\t\tif (dataQueryList.groupingPreprocessor.isActive() && !groupingPanelService.isActive()) {\r\n\t\t\t\t\tgroupingPanelService.open(dataQueryList.groupingPreprocessor);\r\n\t\t\t\t} else if (!dataQueryList.groupingPreprocessor.isActive() && groupingPanelService.isActive()) {\r\n\t\t\t\t\tgroupingPanelService.close();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (vm.groupingPanelSubscriber) {\r\n\t\t\t\tconst subscriberIndex = subscribers.indexOf(vm.groupingPanelSubscriber);\r\n\t\t\t\tvm.groupingPanelSubscriber();\r\n\t\t\t\tif (subscriberIndex >= 0) {\r\n\t\t\t\t\tsubscribers.splice(subscriberIndex, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvm.groupingPanelSubscriber = eventService.subscribeTo(\r\n\t\t\t\tmx.shell.EventCodes.ExtraPanelClosed,\r\n\t\t\t\t() => {\r\n\t\t\t\t\tif (vm.viewParameters.dataQueryList.groupingPreprocessor.isActive()) {\r\n\t\t\t\t\t\tvm.viewParameters.dataQueryList.groupingPreprocessor.resetGrouping();\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t$scope\r\n\t\t\t);\r\n\t\t\tsubscribers.push(vm.groupingPanelSubscriber);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction registerHotkeys() {\r\n\t\t$scope.$on('$destroy', function cleanUp() {\r\n\t\t\t$(window).off('keydown', onKeyDown);\r\n\t\t});\r\n\r\n\t\t$(window).on('keydown', onKeyDown);\r\n\r\n\t\tlet switchButtons = $('.mx-search-page--switch-view-buttons:visible');\r\n\r\n\t\tif (switchButtons) {\r\n\t\t\t_registerSwitchViewsKey();\r\n\t\t}\r\n\r\n\t\tfunction _registerSwitchViewsKey() {\r\n\t\t\tkeyboardNavigationService.registerKey({\r\n\t\t\t\tnameInTemplate: 'hintKey',\r\n\t\t\t\thint: '⇑+v',\r\n\t\t\t\tscope: $scope,\r\n\t\t\t\tkey: 'alt+v',\r\n\t\t\t\tdescription: i18n.get('solutionBuilderAgent.layouts.search-page.search-page-content.changeView'),\r\n\t\t\t\tcallback: function () {\r\n\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\t$('.mx-search-page--switch-view-buttons:not([disabled]):visible').trigger('click');\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction onKeyDown() {\r\n\t\t\tswitchButtons = switchButtons || $('.mx-search-page--switch-view-buttons:visible');\r\n\r\n\t\t\tif (!switchButtons.length) {\r\n\t\t\t\tkeyboardNavigationService.unregisterKey('alt+shift+v');\r\n\t\t\t} else if (!keyboardNavigationService.getKeyOptions('alt+shift+v')) {\r\n\t\t\t\t_registerSwitchViewsKey();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tkeyboardNavigationService.registerKey([\r\n\t\t\t{\r\n\t\t\t\t// Scope: $scope,\r\n\t\t\t\tkey: 'alt+pageup',\r\n\t\t\t\tdescription: i18n.get('solutionBuilderAgent.components.mx-content-widget-view.previous'),\r\n\t\t\t\tcallback: function () {\r\n\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\tconst prevPageBtn = $element.find('.mx-workspace-common-paging-panel--pages--prev:visible:not([disabled])');\r\n\t\t\t\t\t\tif (prevPageBtn.length) {\r\n\t\t\t\t\t\t\tprevPageBtn.trigger('click');\r\n\t\t\t\t\t\t\t_handleAriaPageSwitching();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t// Scope: $scope,\r\n\t\t\t\tkey: 'alt+pagedown',\r\n\t\t\t\tdescription: i18n.get('solutionBuilderAgent.components.mx-content-widget-view.next'),\r\n\t\t\t\tcallback: function () {\r\n\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\tconst nextPageBtn = $element.find('.mx-workspace-common-paging-panel--pages--next:visible:not([disabled])');\r\n\t\t\t\t\t\tif (nextPageBtn.length) {\r\n\t\t\t\t\t\t\tnextPageBtn.trigger('click');\r\n\t\t\t\t\t\t\t_handleAriaPageSwitching();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t// Scope: $scope,\r\n\t\t\t\tkey: 'alt+up',\r\n\t\t\t\tdescription: i18n.get('solutionBuilderAgent.components.mx-content-widget-view.previousRow'),\r\n\t\t\t\tcallback: function () {\r\n\t\t\t\t\tconst currentRow = $element.find('mx-grid:visible .grid-row_active');\r\n\r\n\t\t\t\t\tif (!currentRow.length) {\r\n\t\t\t\t\t\t$element.find('mx-grid:visible .ui-grid-viewport .ui-grid-row:first-child').addClass('grid-row_active');\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst previousRow = currentRow.prev();\r\n\r\n\t\t\t\t\tif (!previousRow.length) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcurrentRow.removeClass('grid-row_active');\r\n\t\t\t\t\tpreviousRow.addClass('grid-row_active');\r\n\t\t\t\t\t$('.mx-search-page-grid')[0].focus();\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t// Scope: $scope,\r\n\t\t\t\tkey: 'alt+down',\r\n\t\t\t\tdescription: i18n.get('solutionBuilderAgent.components.mx-content-widget-view.nextRow'),\r\n\t\t\t\tcallback: function () {\r\n\t\t\t\t\tconst currentRow = $element.find('mx-grid:visible .grid-row_active');\r\n\r\n\t\t\t\t\tif (!currentRow.length) {\r\n\t\t\t\t\t\t$element.find('mx-grid:visible .ui-grid-viewport .ui-grid-row:first-child').addClass('grid-row_active');\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst nextRow = currentRow.next();\r\n\r\n\t\t\t\t\tif (!nextRow.length) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcurrentRow.removeClass('grid-row_active');\r\n\t\t\t\t\tnextRow.addClass('grid-row_active');\r\n\t\t\t\t\t$('.mx-search-page-grid')[0].focus();\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkey: 'enter',\r\n\t\t\t\tcallback: function () {\r\n\t\t\t\t\tif ($(document.activeElement).is('.mx-search-page-grid')) {\r\n\t\t\t\t\t\tconst currentRow = $element.find('mx-grid:visible .grid-row_active');\r\n\t\t\t\t\t\tcurrentRow.click();\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t]);\r\n\t}\r\n\r\n\tfunction unregisterHotkeys() {\r\n\t\tkeyboardNavigationService.unregisterKey('alt+down');\r\n\t\tkeyboardNavigationService.unregisterKey('alt+up');\r\n\t\tkeyboardNavigationService.unregisterKey('alt+pagedown');\r\n\t\tkeyboardNavigationService.unregisterKey('alt+pageup');\r\n\t}\r\n\r\n\tfunction setOnChangeCallbacks() {\r\n\t\t_.forOwn(vm.viewParameters.dataModel.$calcProperties, function (calcProperty) {\r\n\t\t\tif (\r\n\t\t\t\tcalcProperty.descriptor.Path.indexOf(vm.viewParameters.dataQuery.Name + '.') === 0 &&\r\n\t\t\t\tcalcProperty.descriptor.Direction === mx.SolutionBuilderAgent.DataModelPropertyDirection.IN\r\n\t\t\t) {\r\n\t\t\t\tcalcProperty.onChange('SEARCH_PAGE_RELOAD', function () {\r\n\t\t\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.SearchPageDataChanged, { instantRefresh: true });\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tasync function loadContent() {\r\n\t\tvm.loaded = false;\r\n\t\tvm.app = await appsService.getCurrentApplication();\r\n\r\n\t\treturn contentWidgetService\r\n\t\t\t.getHtml(vm.contentWidgetId)\r\n\t\t\t.then(async function (widget) {\r\n\t\t\t\tlet customFormView;\r\n\t\t\t\tconst i18nSPViews = i18n.get('solutionBuilderAgent.layouts.search-page.views');\r\n\r\n\t\t\t\t// For Mobile: set 'List' as default view if it exists.\r\n\t\t\t\tif (deviceService.screenMobile()) {\r\n\t\t\t\t\twidget.Template.Views.forEach(function (v) {\r\n\t\t\t\t\t\tif (v.Type === mx.SolutionBuilderAgent.ContentWidgetViewType.List && widget.ListViewEnabled) {\r\n\t\t\t\t\t\t\tvm.view = v;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.contentWidgetName = widget.Name;\r\n\r\n\t\t\t\tlet hasBoardView = false;\r\n\t\t\t\tvm.viewInfos = widget.Template.Views.filter(function (view) {\r\n\t\t\t\t\thasBoardView = hasBoardView || (view.Type === mx.SolutionBuilderAgent.ContentWidgetViewType.Board && widget.BoardViewEnabled);\r\n\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t(view.Type === mx.SolutionBuilderAgent.ContentWidgetViewType.List && widget.ListViewEnabled) ||\r\n\t\t\t\t\t\t(view.Type === mx.SolutionBuilderAgent.ContentWidgetViewType.Tile && widget.TileViewEnabled) ||\r\n\t\t\t\t\t\t(view.Type === mx.SolutionBuilderAgent.ContentWidgetViewType.Board && widget.BoardViewEnabled)\r\n\t\t\t\t\t);\r\n\t\t\t\t}).map(function (view) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tType: view.Type,\r\n\t\t\t\t\t\tTitle: view.Title,\r\n\t\t\t\t\t\tTemplate: view.Template,\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (widget.CalendarViewEnabled) {\r\n\t\t\t\t\tvm.viewInfos.push({\r\n\t\t\t\t\t\tType: mx.SolutionBuilderAgent.ContentWidgetViewType.Calendar,\r\n\t\t\t\t\t\tTitle: i18nSPViews.calendar,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (widget.GridViewEnabled) {\r\n\t\t\t\t\tvm.viewInfos.push({\r\n\t\t\t\t\t\tType: mx.SolutionBuilderAgent.ContentWidgetViewType.Grid,\r\n\t\t\t\t\t\tTitle: i18nSPViews.grid,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// If there is no designed Board view but BoardView is enabled than show board with static items\r\n\t\t\t\tif (widget.BoardViewEnabled && !hasBoardView) {\r\n\t\t\t\t\tvm.viewInfos.push({\r\n\t\t\t\t\t\tType: mx.SolutionBuilderAgent.ContentWidgetViewType.Board,\r\n\t\t\t\t\t\tTitle: i18nSPViews.board,\r\n\t\t\t\t\t\tTemplate: null,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Gets an info about the default view in case it wasn't set before.\r\n\t\t\t\tlet _defaultViewType = contentWidgetService.getDefaultViewType(vm.contentWidgetId);\r\n\t\t\t\tlet selectedViewType;\r\n\r\n\t\t\t\tif (_defaultViewType === null) {\r\n\t\t\t\t\t_defaultViewType = widget.DefaultView;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.viewInfos.forEach(function (v) {\r\n\t\t\t\t\tif (v.Type === _defaultViewType) {\r\n\t\t\t\t\t\t_defaultViewType = v;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (v.Type === vm.viewType) {\r\n\t\t\t\t\t\tselectedViewType = v;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvm.view = selectedViewType || _defaultViewType;\r\n\r\n\t\t\t\tcustomFormView = _.find(widget.Template.Views, { Type: mx.SolutionBuilderAgent.ContentWidgetViewType.CustomSearchForm }) || null;\r\n\r\n\t\t\t\tif (customFormView) {\r\n\t\t\t\t\tvm.customFormView = customFormView.Template || '';\r\n\t\t\t\t\tvm.customFormServiceContextInfo = {\r\n\t\t\t\t\t\twidgetId: vm.contentWidgetId,\r\n\t\t\t\t\t\tviewName: customFormView.Key,\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tautoRefreshEnabled = widget.AutoRefreshInGridEnabled;\r\n\r\n\t\t\t\tvm.viewParameters = {\r\n\t\t\t\t\tisSearchPage: true,\r\n\t\t\t\t\tfilterExpression: widget.FilterExpression,\r\n\t\t\t\t\tisMultiFragment: widget.IsMultiFragment,\r\n\t\t\t\t\tdataQueryId: widget.DataQueryId,\r\n\t\t\t\t\tdataModelOptions: widget.Template.DataModelExtensions,\r\n\t\t\t\t\tnonVisualTemplate: widget.Template.NonVisualTemplate,\r\n\t\t\t\t\tid: vm.contentWidgetId,\r\n\t\t\t\t\tname: widget.Name,\r\n\t\t\t\t\ttemplateId: widget.Template.Id,\r\n\t\t\t\t\tentityType: widget.EntityType,\r\n\t\t\t\t\tentity: widget.Entity,\r\n\t\t\t\t\tquickFilters: Boolean(widget.RedFilter || widget.YellowFilter || widget.GreenFilter),\r\n\t\t\t\t\tredFilter: widget.RedFilter,\r\n\t\t\t\t\tyellowFilter: widget.YellowFilter,\r\n\t\t\t\t\tgreenFilter: widget.GreenFilter,\r\n\t\t\t\t\tquickFilterTitles: {\r\n\t\t\t\t\t\tred: widget.RedTitle,\r\n\t\t\t\t\t\tyellow: widget.YellowTitle,\r\n\t\t\t\t\t\tgreen: widget.GreenTitle,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcalendar: {\r\n\t\t\t\t\t\ttitleKey: widget.CalendarSubjectField || '_displayName',\r\n\t\t\t\t\t\tdescriptionKey: widget.CalendarDescriptionField,\r\n\t\t\t\t\t\tstartDateKey: widget.CalendarStartDateField,\r\n\t\t\t\t\t\tdefaultView: widget.CalendarDefaultView,\r\n\t\t\t\t\t\tendDateKey: widget.CalendarEndDateField,\r\n\t\t\t\t\t\twholeDayKey: widget.CalendarEventIsWholeDayColumn,\r\n\t\t\t\t\t\treadonlyKey: widget.CalendarEventIsReadOnlyColumn,\r\n\t\t\t\t\t\tbackgroundKey: widget.CalendarEventIsBackgroundColumn,\r\n\t\t\t\t\t\tshowHolidays: widget.CalendarShowHolidays,\r\n\t\t\t\t\t\tgroupByExtraDimension: widget.GroupByExtraDimension,\r\n\t\t\t\t\t\tcalendarExtraDimensionRelation: widget.CalendarExtraDimensionRelation,\r\n\t\t\t\t\t\tcalendarExtraDimensionImageColumn: widget.CalendarExtraDimensionImageColumn,\r\n\t\t\t\t\t\tcalendarItemColorColumn: widget.CalendarItemColorColumn,\r\n\t\t\t\t\t\tshowDayView: Boolean(widget.ShowDayView),\r\n\t\t\t\t\t\tshowWeekView: Boolean(widget.ShowWeekView),\r\n\t\t\t\t\t\tshowMonthView: Boolean(widget.ShowMonthView),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tboard: {\r\n\t\t\t\t\t\tdefaultHorizontalGroupingField: widget.DefaultBoardGroupingAttribute,\r\n\t\t\t\t\t\tdragAndDropEnabled: widget.BoardDragAndDropEnabled,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tuiToken: vm.uiToken,\r\n\t\t\t\t\tstructureNodeId: Boolean(vm.filterId) && vm.filterType === 'structure' ? vm.filterId : undefined,\r\n\t\t\t\t\tfilterId: vm.filterId,\r\n\t\t\t\t\tfilterType: vm.filterType,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (widget.LoadOnlyFilteredData && vm.filterType === 'nofilter') {\r\n\t\t\t\t\tlet loadOnlyFilteredData = true;\r\n\t\t\t\t\tObject.defineProperty(vm.viewParameters, 'loadOnlyFilteredData', {\r\n\t\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\t\tif (!newValue) {\r\n\t\t\t\t\t\t\t\tdelete vm.viewParameters.data;\r\n\t\t\t\t\t\t\t\tsearch();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tloadOnlyFilteredData = newValue;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\t\treturn loadOnlyFilteredData;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t\tvm.viewParameters.data = [];\r\n\t\t\t\t\tconst subscriber = eventService.subscribeTo(\r\n\t\t\t\t\t\tmx.shell.EventCodes.Search,\r\n\t\t\t\t\t\tfunction () {\r\n\t\t\t\t\t\t\tloadOnlyFilteredData = false;\r\n\t\t\t\t\t\t\tsubscriber();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t$scope\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.currentViewDropDownIcon = vm.getIconName(vm.view.Type);\r\n\r\n\t\t\t\tconst dataQuery = await columnDefinition.getGridDefinitionById(widget.DataQueryId, vm.contentWidgetId);\r\n\r\n\t\t\t\tvm.viewParameters.service = dataQuery.Service;\r\n\t\t\t\tvm.viewParameters.serviceInfo = dataQuery.ServiceInfo;\r\n\t\t\t\tvm.viewParameters.dataQuery = dataQuery;\r\n\r\n\t\t\t\tconst typesInfo = await Promise.all((widget.Entities || []).map((entity) => schemaService.getType(entity.Name)));\r\n\t\t\t\tvm.viewParameters.entities = await Promise.all(\r\n\t\t\t\t\ttypesInfo.map(async (info, index) => {\r\n\t\t\t\t\t\tif (!info) {\r\n\t\t\t\t\t\t\tif (dataQuery.serviceInfo) {\r\n\t\t\t\t\t\t\t\tconst name = 'service_' + dataQuery.ServiceInfo.Name;\r\n\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\tid: 'service_' + dataQuery.ServiceInfo.Id,\r\n\t\t\t\t\t\t\t\t\tname: name,\r\n\t\t\t\t\t\t\t\t\tdisplayName: (await dataQuery.getRecordTypeDisplayString()) || name,\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\tid: widget.Entities[index].Id || widget.Entities[index].Name,\r\n\t\t\t\t\t\t\t\t\tname: widget.Entities[index].Name,\r\n\t\t\t\t\t\t\t\t\tdisplayName: widget.Entities[index].DisplayName || widget.Entities[index].Name,\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\tid: info.Id,\r\n\t\t\t\t\t\t\t\tname: info.InternalName,\r\n\t\t\t\t\t\t\t\tdisplayName: info.DisplayName,\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\r\n\t\t\t\tvm.viewParameters.entityTypes = vm.viewParameters.entities.map((entity) => entity.name);\r\n\r\n\t\t\t\t// Init actions\r\n\t\t\t\tif (dataQuery.serviceInfo) {\r\n\t\t\t\t\tvm.viewParameters.entity = 'service_' + dataQuery.Service;\r\n\t\t\t\t}\r\n\t\t\t\tconst isExportSupported = !dataQuery.ServiceInfo || dataQuery.isExportSupported();\r\n\t\t\t\treturn isExportSupported\r\n\t\t\t\t\t? actionManagerService.isExportAllAvailable(vm.viewParameters.entityTypes).then(function (available) {\r\n\t\t\t\t\t\t\tvm.showExportButton = available;\r\n\t\t\t\t\t })\r\n\t\t\t\t\t: $q.when();\r\n\t\t\t})\r\n\t\t\t.then(function () {\r\n\t\t\t\tconst dataModelOptions = vm.viewParameters.dataModelOptions\r\n\t\t\t\t\t? JSON.parse(vm.viewParameters.dataModelOptions)\r\n\t\t\t\t\t: {\r\n\t\t\t\t\t\t\tSources: [],\r\n\t\t\t\t\t\t\tProperties: [],\r\n\t\t\t\t\t };\r\n\r\n\t\t\t\tdataModelOptions.dataQueryId = vm.viewParameters.dataQueryId;\r\n\t\t\t\tdataModelOptions.widgetId = vm.viewParameters.id;\r\n\r\n\t\t\t\tconst ctx = {\r\n\t\t\t\t\tWidgetId: dataModelOptions.widgetId,\r\n\t\t\t\t\tNavigationId: (vm.navigationId || '').toLowerCase(),\r\n\t\t\t\t};\r\n\t\t\t\tconst staticData = { Context: ctx };\r\n\r\n\t\t\t\tlet sharedContext = contextService.val('ApplicationSharedContext');\r\n\t\t\t\tif (!sharedContext) {\r\n\t\t\t\t\tcontextService.val('ApplicationSharedContext', (sharedContext = {}));\r\n\t\t\t\t}\r\n\t\t\t\tstaticData.Context[mx.SolutionBuilderAgent.DataModelSystemProperty.Shared] = sharedContext;\r\n\t\t\t\treturn dataModelService.loadDataModel(dataModelOptions, staticData, undefined, freeDataSourceDefer.promise);\r\n\t\t\t})\r\n\t\t\t.then(function (dataModel) {\r\n\t\t\t\tvm.viewParameters.dataModel = dataModel;\r\n\t\t\t\tvm.dataModel = dataModel;\r\n\t\t\t\tsetOnChangeCallbacks();\r\n\r\n\t\t\t\tif (autoRefreshEnabled) {\r\n\t\t\t\t\treturn personalizationService.getRefreshInterval(vm.viewParameters.dataQueryId).then(addAutoRefreshConfig);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then(function () {\r\n\t\t\t\treturn contentWidgetService.isCustomizable({ isSearchPage: true }).then(function (isCustomizable) {\r\n\t\t\t\t\tif (isCustomizable) {\r\n\t\t\t\t\t\tvm.isCustomizable = true;\r\n\t\t\t\t\t\tvm.configure = function () {\r\n\t\t\t\t\t\t\tcontentWidgetService.openConfigurePreview(vm.viewParameters);\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.then(function () {\r\n\t\t\t\tlet rowHeight = DEFAULT_ROW_HEIGHT;\r\n\t\t\t\tObject.defineProperty(vm.viewParameters, 'rowHeight', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn rowHeight;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newRowHeight) {\r\n\t\t\t\t\t\trowHeight = newRowHeight || DEFAULT_ROW_HEIGHT;\r\n\t\t\t\t\t\tpersonalizationService.setRowHeight(rowHeight);\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvm.availableRowHeights = vm.view.Type === mx.SolutionBuilderAgent.ContentWidgetViewType.Grid ? AVAILABLE_ROW_HEIGHTS : [];\r\n\r\n\t\t\t\treturn personalizationService.getRowHeight().then(function (savedRowHeight) {\r\n\t\t\t\t\trowHeight = savedRowHeight === undefined ? rowHeight : savedRowHeight;\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.then(function () {\r\n\t\t\t\tlet rowColoringEnabled = true;\r\n\r\n\t\t\t\tObject.defineProperty(vm.viewParameters, 'rowColoringEnabled', {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn typeof rowColoringEnabled === 'undefined' ? true : rowColoringEnabled;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\trowColoringEnabled = newValue;\r\n\t\t\t\t\t\tpersonalizationService.setRowsColoringAttribute('rowColoringEnabled', rowColoringEnabled);\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn personalizationService.getRowsColoring().then(function (coloring) {\r\n\t\t\t\t\trowColoringEnabled = coloring.enabled === undefined ? rowColoringEnabled : coloring.enabled;\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.then(function () {\r\n\t\t\t\treturn personalizationService.getQuickFilters(vm.viewParameters.dataQueryId).then(function (savedQuickFilters) {\r\n\t\t\t\t\tlet quickFilters = savedQuickFilters || [];\r\n\r\n\t\t\t\t\tObject.defineProperty(vm.viewParameters, 'quickFilters', {\r\n\t\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\t\treturn quickFilters;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\t\tquickFilters = newValue;\r\n\t\t\t\t\t\t\tpersonalizationService.setQuickFilters(vm.viewParameters.dataQueryId, newValue);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.then(\r\n\t\t\t\tfunction () {\r\n\t\t\t\t\tvm.loaded = true;\r\n\r\n\t\t\t\t\t// Localization Strings are loading very, very slow (up to 40 seconds)\r\n\t\t\t\t\t// We show special message for this exceptional case.\r\n\t\t\t\t\tconst localizationDataQueryId = 'b2ae1485-6360-cdb3-4806-08d61fcecd2a';\r\n\t\t\t\t\tif (vm.viewParameters.dataQueryId === localizationDataQueryId) {\r\n\t\t\t\t\t\tconst localizationLoader = window.setTimeout(function () {\r\n\t\t\t\t\t\t\t$element.append('
    ' + i18n.get('solutionBuilderAgent.localization-strings-loading-msg') + '
    ');\r\n\t\t\t\t\t\t}, 5000);\r\n\t\t\t\t\t\teventService.subscribeOnce(mx.SolutionBuilderAgent.Events.SearchPageReloaded, function () {\r\n\t\t\t\t\t\t\twindow.clearTimeout(localizationLoader);\r\n\t\t\t\t\t\t\t$element.find('.mx-search-page--loading-text').remove();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tfunction (error) {\r\n\t\t\t\t\tvm.errorMessage = error && (error.message || error);\r\n\t\t\t\t\tvm.errorTitle = error && error.title;\r\n\t\t\t\t\t$q.reject(error);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t}\r\n\r\n\tfunction addAutoRefreshConfig(interval) {\r\n\t\tvm.viewParameters.autoRefreshConfig = {\r\n\t\t\t_enable: !isNaN(interval) && interval >= MIN_REFRESH_INTERVAL,\r\n\t\t\t_interval: !isNaN(interval) && interval >= MIN_REFRESH_INTERVAL ? interval : MIN_REFRESH_INTERVAL,\r\n\t\t};\r\n\r\n\t\tObject.defineProperty(vm.viewParameters.autoRefreshConfig, 'interval', {\r\n\t\t\tset: function (newInterval) {\r\n\t\t\t\tif (!isNaN(newInterval) && newInterval >= MIN_REFRESH_INTERVAL) {\r\n\t\t\t\t\tthis._interval = newInterval;\r\n\t\t\t\t\tthis.isError = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.isError = true;\r\n\t\t\t\t\tthis._interval = MIN_REFRESH_INTERVAL;\r\n\t\t\t\t}\r\n\t\t\t\tupdateAutoRefreshSettings(this);\r\n\t\t\t},\r\n\t\t\tget: function () {\r\n\t\t\t\treturn this._interval;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(vm.viewParameters.autoRefreshConfig, 'enable', {\r\n\t\t\tset: function (enable) {\r\n\t\t\t\tthis._enable = enable;\r\n\t\t\t\tupdateAutoRefreshSettings(this);\r\n\t\t\t},\r\n\t\t\tget: function () {\r\n\t\t\t\treturn this._enable;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tupdateAutoRefreshSettings(vm.viewParameters.autoRefreshConfig);\r\n\t}\r\n\r\n\tfunction updateAutoRefreshSettings(refreshConfig) {\r\n\t\tif (_refreshInterval) {\r\n\t\t\tclearInterval(_refreshInterval);\r\n\t\t}\r\n\r\n\t\tif (refreshConfig.enable && refreshConfig.interval >= MIN_REFRESH_INTERVAL) {\r\n\t\t\t_refreshInterval = setInterval(reload, refreshConfig.interval * 60000);\r\n\t\t}\r\n\r\n\t\tpersonalizationService.saveRefreshInterval(refreshConfig.enable ? refreshConfig.interval : 0, vm.viewParameters.dataQueryId);\r\n\t}\r\n\r\n\tfunction openAdvancedSearch() {\r\n\t\tsearchService.openAdvancedSearch({\r\n\t\t\t// TODO: better to pass vm.context from here and not get in on that side\r\n\t\t\t// Context: vm.context,\r\n\t\t\tdataQueryList: vm.viewParameters.dataQueryList,\r\n\t\t\tuiToken: vm.uiToken,\r\n\t\t});\r\n\t}\r\n\r\n\tasync function exportData() {\r\n\t\tconst localizationDataQueryId = 'b2ae1485-6360-cdb3-4806-08d61fcecd2a';\r\n\t\tconst dataQueryList = vm.viewParameters.dataQueryList;\r\n\t\tconst maxPageSize = (mxConfigService.get('exportSource') || {}).maxRowSize || DEFAULT_MAX_EXPORT_ROWS;\r\n\t\tlet totalCount = vm.viewParameters.totalCount;\r\n\t\tconst dialogConfig = {\r\n\t\t\tid: 'ActionOnExecuteServiceOperation-exportAll',\r\n\t\t\ttitle: i18n.get('solutionBuilderAgent.common.export-all'),\r\n\t\t\tmessage: i18n.get('solutionBuilderAgent.common.export-all-max-size-exceeded'),\r\n\t\t\tactions: [\r\n\t\t\t\t{\r\n\t\t\t\t\tid: 'ok',\r\n\t\t\t\t\tisConfirmButton: true,\r\n\t\t\t\t\ttitle: i18n.get('solutionBuilderAgent.components.mx-localization-editor.ok'),\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tid: 'cancel',\r\n\t\t\t\t\tnotForSave: true,\r\n\t\t\t\t\ttitle: i18n.get('solutionBuilderAgent.components.mx-localization-editor.cancel'),\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t\tnotSaved: true,\r\n\t\t\tbuttonsInActionZone: true,\r\n\t\t};\r\n\r\n\t\tif (!dataQueryList.data || !dataQueryList.data.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvm.disableExportButton = true;\r\n\r\n\t\ttrackTelemetry('All items exported');\r\n\r\n\t\tif (totalCount === -1) {\r\n\t\t\ttotalCount = await dataQueryList.pagingPreprocessor.getDataCount();\r\n\t\t}\r\n\r\n\t\tif ((totalCount && totalCount > 0 && totalCount <= maxPageSize) || localizationDataQueryId === vm.viewParameters.dataQueryId) {\r\n\t\t\treturn executeExportData();\r\n\t\t}\r\n\r\n\t\tconst answer = await sidePanelService.showConfirmationDialog(dialogConfig);\r\n\t\tif (answer === 'ok') {\r\n\t\t\treturn executeExportData();\r\n\t\t}\r\n\t\tvm.disableExportButton = false;\r\n\t}\r\n\r\n\tfunction executeExportData() {\r\n\t\tvm.disableExportButton = true;\r\n\t\t$timeout(function () {\r\n\t\t\tif (vm.disableExportButton) {\r\n\t\t\t\tnotificationService.warning(i18n.get('solutionBuilderAgent.common.export-all-executing'));\r\n\t\t\t}\r\n\t\t}, 3000);\r\n\r\n\t\treturn vm.viewParameters.dataQueryList.dataQueryExecutor.executeExportData().finally(function () {\r\n\t\t\tvm.disableExportButton = false;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction trackTelemetry(eventName) {\r\n\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\teventName,\r\n\t\t\tsender: vm.viewParameters.id,\r\n\t\t\tsenderTitle: vm.viewParameters.name,\r\n\t\t\tcontextTypeId: vm.viewParameters.entities.map((entity) => entity.id),\r\n\t\t\tcontextTypeTitle: vm.viewParameters.entities.map((entity) => entity.name),\r\n\t\t});\r\n\t}\r\n\r\n\tfunction onRefreshClick() {\r\n\t\ttrackTelemetry('Refresh list clicked');\r\n\t\treload();\r\n\t}\r\n\r\n\tfunction reload() {\r\n\t\tvm.viewParameters.data = undefined;\r\n\t\t// check if dialog/wizard was loaded faster than List of data (e.g. when open dialog by URL)\r\n\t\tif (vm.viewParameters.dataQueryList && vm.viewParameters.dataQueryList.debouncedReload) {\r\n\t\t\tvm.viewParameters.dataQueryList.debouncedReload(true);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction search(searchText, dontHideCustomForm, runByEnter) {\r\n\t\tconst currentSearch = searchService.getCurrentSearchPageSearchOptions();\r\n\t\tvm.searchText = searchText;\r\n\t\tcurrentSearch.keyword = searchText;\r\n\t\tcurrentSearch.uiToken = vm.uiToken;\r\n\t\tcurrentSearch.dontHideCustomForm = vm.dontHideCustomForm;\r\n\r\n\t\tif (runByEnter) {\r\n\t\t\t_handleAriaSearch();\r\n\t\t}\r\n\r\n\t\ttrackTelemetry('Keyword search executed');\r\n\t\tsearchService.runSearch(currentSearch);\r\n\t}\r\n\r\n\tfunction _handleAriaSearch() {\r\n\t\tconst jumpToResult = ariaService.createPoliteFocusSettingFn('.mx-content-widget-view--no-filtered-data--clear, .mx-search-page-grid');\r\n\t\tariaService.readMessage(i18n.get('solutionBuilderAgent.layouts.search-page.search-page-content.ARIA-searchInProgress'));\r\n\t\teventService.subscribeOnce(mx.SolutionBuilderAgent.Events.SearchPageReloaded, async () => {\r\n\t\t\tconst totalCount = vm.viewParameters.totalCount > -1 ? vm.viewParameters.totalCount : i18n.get('components.mx-datasource-paging-panel.many');\r\n\t\t\tawait ariaService.readMessage(i18n.getFormatted('solutionBuilderAgent.layouts.search-page.search-page-content.ARIA-foundItems', totalCount));\r\n\t\t\tjumpToResult();\r\n\t\t});\r\n\t}\r\n\r\n\tfunction _handleAriaPageSwitching() {\r\n\t\teventService.subscribeOnce(mx.SolutionBuilderAgent.Events.SearchPageReloaded, () => {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tconst gridEl = $element.find('.mx-search-page-grid');\r\n\t\t\t\tgridEl.trigger('focus');\r\n\t\t\t\tariaService.readMessage(gridEl.find('[role=grid]').attr('aria-label'));\r\n\t\t\t}, 600);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getIconName(type) {\r\n\t\treturn (\r\n\t\t\t(type === mx.SolutionBuilderAgent.ContentWidgetViewType.Grid && 'grid_on') ||\r\n\t\t\t(type === mx.SolutionBuilderAgent.ContentWidgetViewType.List && 'view_list') ||\r\n\t\t\t(type === mx.SolutionBuilderAgent.ContentWidgetViewType.Tile && 'view_quilt') ||\r\n\t\t\t(type === mx.SolutionBuilderAgent.ContentWidgetViewType.Calendar && 'date_range') ||\r\n\t\t\t(type === mx.SolutionBuilderAgent.ContentWidgetViewType.Board && 'view_week')\r\n\t\t);\r\n\t}\r\n\r\n\tfunction onViewSelect(selectedView) {\r\n\t\tconst viewType = selectedView.Type;\r\n\t\tconst contentWidgetId = vm.contentWidgetId;\r\n\r\n\t\tvm.availableRowHeights = viewType === mx.SolutionBuilderAgent.ContentWidgetViewType.Grid ? AVAILABLE_ROW_HEIGHTS : [];\r\n\t\tvm.view = selectedView;\r\n\r\n\t\tif (contentWidgetId !== null) {\r\n\t\t\tcontentWidgetService.setDefaultViewType(contentWidgetId, viewType);\r\n\t\t}\r\n\r\n\t\tcontextService.selectedObjects.forEach(function (item) {\r\n\t\t\tdelete item.__isSelected;\r\n\t\t});\r\n\t\tcontextService.selectedObjects = [];\r\n\t\tvm.viewParameters.data = undefined;\r\n\t\tsearchService.resetSearchParameters();\r\n\r\n\t\tenableGroupingSubscribers();\r\n\t}\r\n}\r\n","// Module\nvar code = \"
    \\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n\\t
    \\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t
    \\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\r\\n\\t
    \\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
    \\r\\n\\r\\n
    \\r\\n\";\n// Exports\nexport default code;","'use strict';\r\nimport SearchPageContentComponent from './search-page.component';\r\n\r\nconst searchPageComponentName = 'mxSearchPageContent';\r\n\r\nconst searchPageStateName = 'searchPage';\r\n\r\nexport default angular\r\n\t.module('mx.sb.SearchPage', [])\r\n\t.run([\r\n\t\t'mx.shell.RoutingService',\r\n\t\tfunction (routingService) {\r\n\t\t\tconst searchPageRoute = routingService.createRoutingItem(getSearchRouteParams(searchPageStateName, '/search-page/:navigationId/:filterType/:filterId?'));\r\n\t\t\tconst modernLookSearchPageRedirectRoute = routingService.createRoutingItem(getModernLookSearchPageRouteRedirect());\r\n\t\t\troutingService.searchPageRoute = searchPageRoute;\r\n\r\n\t\t\troutingService.addItems([\r\n\t\t\t\troutingService.createRoutingItem(getSearchRouteParams('createObjectExternally', '/:navigationId/create-object/:entityType')),\r\n\t\t\t\troutingService.createRoutingItem(getSearchRouteParams('editObjectExternally', '/:navigationId/edit-object/:entityType/:objectId')),\r\n\t\t\t\troutingService.createRoutingItem(\r\n\t\t\t\t\tgetSearchRouteParams('previewObjectExternally', '/:navigationId/preview-object/:entityType/:objectId/:_archived/:previewWidgetId?')\r\n\t\t\t\t),\r\n\t\t\t\tsearchPageRoute,\r\n\t\t\t\tmodernLookSearchPageRedirectRoute,\r\n\t\t\t\troutingService.createRoutingItem(getCustomDataSetRouteOptions()),\r\n\t\t\t]);\r\n\t\t},\r\n\t])\r\n\t.component(searchPageComponentName, SearchPageContentComponent).name;\r\n\r\nfunction getModernLookSearchPageRouteRedirect() {\r\n\treturn {\r\n\t\tname: 'modernLookSearchPageRedirect',\r\n\t\tpath: '/search-page/:navigationId?:structures:filters',\r\n\t\ttitle: 'Search Page',\r\n\t\tparams: {\r\n\t\t\tnavigationId: 'notset',\r\n\t\t\tstructures: '',\r\n\t\t\tfilters: '',\r\n\t\t\tviewType: null,\r\n\t\t},\r\n\t\tredirectTo: async ($transition$) => {\r\n\t\t\tconst navigationService = $transition$.injector().get('mx.shell.NavigationService');\r\n\r\n\t\t\tconst params = $transition$.params();\r\n\t\t\tlet navigationId = params.navigationId.toLowerCase();\r\n\t\t\tconst structures = params.structures.toLowerCase();\r\n\t\t\tconst filters = params.filters.toLowerCase();\r\n\t\t\tlet filterType;\r\n\t\t\tlet filterId = '';\r\n\r\n\t\t\tif (structures.length) {\r\n\t\t\t\tfilterType = 'structure';\r\n\t\t\t\tconst firstStructure = structures.split(',')[0];\r\n\t\t\t\tfilterId = firstStructure.split('_').at(0);\r\n\t\t\t\tnavigationId = `${firstStructure}_${navigationId}`;\r\n\t\t\t} else if (filters.length) {\r\n\t\t\t\tconst filterIDs = filters.split(',');\r\n\r\n\t\t\t\tconst filterItems = (await Promise.all(filterIDs.map((id) => navigationService.getNavigationItem(id)))).filter((item) => item);\r\n\t\t\t\tfilterItems.sort((item1, item2) => item2.level - item1.level);\r\n\t\t\t\tconst filterItem = filterItems[0] || (await navigationService.getNavigationItem(navigationId));\r\n\t\t\t\tfilterId = filterItem?.parameters?.filterId || '';\r\n\t\t\t\tfilterType = filterItem?.parameters?.filterType || 'nofilter';\r\n\t\t\t} else {\r\n\t\t\t\tconst navigationItem = await navigationService.getNavigationItem(navigationId);\r\n\t\t\t\tfilterType = navigationItem?.parameters?.filterType || 'nofilter';\r\n\t\t\t\tfilterId = navigationItem?.parameters?.filterId || '';\r\n\t\t\t}\r\n\r\n\t\t\treturn $transition$.router.stateService.target(searchPageStateName, {\r\n\t\t\t\tviewType: params.viewType,\r\n\t\t\t\tnavigationId,\r\n\t\t\t\tfilterType,\r\n\t\t\t\tfilterId,\r\n\t\t\t});\r\n\t\t},\r\n\t};\r\n}\r\n\r\nfunction getSearchRouteParams(name, urlTemplate) {\r\n\treturn {\r\n\t\tname: name,\r\n\t\tpath: urlTemplate,\r\n\t\ttitle: 'Search Page',\r\n\t\tcomponent: searchPageComponentName,\r\n\t\tparams: {\r\n\t\t\tnavigationId: 'notset',\r\n\t\t\tfilterType: 'nofilter',\r\n\t\t\tfilterId: '',\r\n\t\t\tviewType: null,\r\n\t\t\textraFilter: '',\r\n\t\t},\r\n\t\tredirectTo: async ($transition$) => {\r\n\t\t\tconst navigationService = $transition$.injector().get('mx.shell.NavigationService');\r\n\t\t\tconst deepLinkingService = $transition$.injector().get('mx.SolutionBuilderAgent.DeepLinkingService');\r\n\t\t\tconst navigationId = $transition$.params().navigationId.toLowerCase();\r\n\t\t\tconst navigationItem = await navigationService.getNavigationItem(navigationId);\r\n\t\t\tconst state = $transition$.to();\r\n\t\t\tdeepLinkingService.tryOpenDialog(state.name, $transition$.params(), navigationItem);\r\n\r\n\t\t\tif (navigationId !== 'notset' && navigationItem === null && !deepLinkingService.parseViewOptionsFromUrl()) {\r\n\t\t\t\tconsole.error('Search page navigation is not found!');\r\n\t\t\t\treturn '404';\r\n\t\t\t}\r\n\t\t},\r\n\t\tresolve: {\r\n\t\t\tcontentWidgetId: [\r\n\t\t\t\t'$transition$',\r\n\t\t\t\t'mx.shell.NavigationService',\r\n\t\t\t\tasync ($transition$, navigationService) => {\r\n\t\t\t\t\tconst navigationId = $transition$.params().navigationId.toLowerCase();\r\n\t\t\t\t\tif (navigationId === 'notset') {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn ((await navigationService.getNavigationItem(navigationId)) || {}).contentWidgetId;\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t\tfilterType: ['$transition$', ($transition$) => $transition$.params().filterType],\r\n\t\t\tfilterId: ['$transition$', ($transition$) => $transition$.params().filterId],\r\n\t\t\tnavigationId: ['$transition$', ($transition$) => $transition$.params().navigationId],\r\n\t\t\tviewType: [\r\n\t\t\t\t'$transition$',\r\n\t\t\t\t($transition$) => {\r\n\t\t\t\t\tconst viewType = $transition$.params().viewType;\r\n\t\t\t\t\treturn viewType !== null ? Number(viewType) : viewType;\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t\textraFilter: ['$transition$', ($transition$) => $transition$.params().extraFilter],\r\n\t\t},\r\n\t};\r\n}\r\n\r\nfunction getCustomDataSetRouteOptions() {\r\n\tconst customDataSetRouteOptions = getSearchRouteParams('customDataSet', '/dataSet/:contentWidgetId/:filterType/:filterId?/:viewType?');\r\n\tdelete customDataSetRouteOptions.redirectTo;\r\n\tObject.assign(customDataSetRouteOptions.resolve, {\r\n\t\tsearchContext: searchContextResolver,\r\n\t\tcontentWidgetId: ['$transition$', ($transition$) => $transition$.params().contentWidgetId],\r\n\t});\r\n\treturn customDataSetRouteOptions;\r\n}\r\n\r\nsearchContextResolver.$inject = ['$transition$', 'mx.SolutionBuilderAgent.ContentWidgetService', 'mx.shell.SearchProviderService'];\r\nfunction searchContextResolver($transition$, contentWidgetService, searchService) {\r\n\tconst contentWidgetId = $transition$.params().contentWidgetId;\r\n\treturn contentWidgetService.getHtml(contentWidgetId).then(function (widget) {\r\n\t\tif (!widget) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst context = new mx.SolutionBuilderAgent.SearchContext({\r\n\t\t\tname: 'custom_' + contentWidgetId,\r\n\t\t\ttitle: widget.Name,\r\n\t\t\tparameters: {\r\n\t\t\t\tappString: $transition$.params().appString,\r\n\t\t\t\tcontentWidgetId: contentWidgetId,\r\n\t\t\t\tfilterId: $transition$.params().filterId,\r\n\t\t\t\tfilterType: $transition$.params().filterType,\r\n\t\t\t\tviewType: $transition$.params().viewType,\r\n\t\t\t},\r\n\t\t\tdataQuery: widget.DataQueryId,\r\n\t\t\twidgetId: contentWidgetId,\r\n\t\t});\r\n\t\t//TODO: refactor work of search-service with contexts\r\n\t\tsearchService.setCustomDataSetContext(context);\r\n\t\treturn context;\r\n\t});\r\n}\r\n","// Module\nvar code = \"
    \\r\\n\\r\\n\\r\\n
    \\r\\n\\t
    \\r\\n\\t\\t{{::action.icon}}\\r\\n\\r\\n\\t\\t{{vm.navigationService.currentItem.favourite ? 'star' : 'star_border'}}\\r\\n\\t\\t\\r\\n\\r\\n\\t\\ttv\\r\\n\\t\\t\\r\\n\\r\\n\\t\\tbuild\\r\\n\\t\\t\\r\\n\\t
    \\r\\n\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n
    \\r\\n\";\n// Exports\nexport default code;","'use strict';\r\nimport template from './landing-page.component.html';\r\n\r\nexport default {\r\n\tbindings: {},\r\n\tcontroller: MxLandingPageCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n};\r\n\r\nMxLandingPageCtrl.$inject = [\r\n\t'$scope',\r\n\t'$q',\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.NotificationService',\r\n\t'mx.internationalization',\r\n\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n\t'mx.SolutionBuilderAgent.DataModelService',\r\n\t'mx.shell.ContextService',\r\n\t'mx.shell.AppsService',\r\n\t'mx.shell.NavigationService',\r\n\t'mx.shell.ActionManagerService',\r\n\t'mx.shell.ActionExecutorService',\r\n\t'mx.shell.NavigationItemsLoaderService',\r\n\t'mx.shell.RoutingService',\r\n\t'mx.SolutionBuilderAgent.FavouritesService',\r\n\t'mx.SolutionBuilderAgent.DeepLinkingService',\r\n];\r\n\r\nexport function MxLandingPageCtrl(\r\n\t$scope,\r\n\t$q,\r\n\teventService,\r\n\tnotificationService,\r\n\ti18n,\r\n\tcontentWidgetService,\r\n\tdataModelService,\r\n\tcontextService,\r\n\tapplicationService,\r\n\tnavigationService,\r\n\tactionManagerService,\r\n\tactionExecutorService,\r\n\tnavigationItemsLoaderService,\r\n\troutingService,\r\n\tfavouritesService,\r\n\tdeepLinkingService\r\n) {\r\n\tconst vm = this;\r\n\tvm.navigationService = navigationService;\r\n\tvm.favouritesService = favouritesService;\r\n\r\n\tvar freeDataSourceDefer = $q.defer();\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvar currentState = routingService.getCurrent();\r\n\t\tif (!currentState) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar navigationId = (currentState.parameters.navigationId || '').toLowerCase();\r\n\r\n\t\tnavigationService.getNavigationItem(navigationId).then(function (navigationItem) {\r\n\t\t\tif (!navigationItem) {\r\n\t\t\t\tvar viewOptions = deepLinkingService.parseViewOptionsFromUrl();\r\n\t\t\t\tif (viewOptions) {\r\n\t\t\t\t\troutingService.goToDefault(viewOptions);\r\n\t\t\t\t\treturn $q.when(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmx.console.error('Landing page navigation item is not found!');\r\n\t\t\t\t\troutingService.go('404');\r\n\t\t\t\t\treturn $q.reject('no-navigation-item');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tapplicationService.getWindowTitle().then(function (windowTitle) {\r\n\t\t\t\tif (navigationItem) {\r\n\t\t\t\t\tdocument.title = i18n.getFormatted('solutionBuilderAgent.pageTitle.landingPage', navigationItem.title, windowTitle);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdocument.title = windowTitle;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvm.contentWidgetIdFromNavigation = navigationItem.contentWidgetId;\r\n\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.ReloadLandingPage);\r\n\t\t});\r\n\t};\r\n\r\n\tvar displayMode = mx.shell.DisplayMode.Normal;\r\n\r\n\tvar processKeyUp = function (ev) {\r\n\t\tif (ev.which === 27) {\r\n\t\t\t$scope.$evalAsync(function () {\r\n\t\t\t\tdisplayMode = mx.shell.DisplayMode.Normal;\r\n\t\t\t\tvm.isBigScreen = false;\r\n\t\t\t\teventService.dispatchEvent(mx.shell.EventCodes.DisplayModeChanged, displayMode);\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\t$(document).on('keyup.landing_page', processKeyUp);\r\n\r\n\t$scope.$on('$destroy', function cleanUp() {\r\n\t\tif (vm.isBigScreen) {\r\n\t\t\tvm.switchMode();\r\n\t\t}\r\n\t\t$(document).unbind('keyup.landing_page');\r\n\r\n\t\tfreeDataSourceDefer.resolve(true);\r\n\t});\r\n\r\n\teventService.subscribeTo(\r\n\t\tmx.SolutionBuilderAgent.Events.SearchPageDataChanged,\r\n\t\tfunction () {\r\n\t\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.ReloadLandingPage);\r\n\t\t},\r\n\t\t$scope\r\n\t);\r\n\r\n\teventService.subscribeTo(\r\n\t\tmx.SolutionBuilderAgent.Events.ReloadLandingPage,\r\n\t\tfunction (eventObj, landingPageId) {\r\n\t\t\tinitLanding(landingPageId || vm.contentWidgetIdFromNavigation);\r\n\t\t},\r\n\t\t$scope\r\n\t);\r\n\r\n\teventService.subscribeTo(\r\n\t\tmx.shell.EventCodes.ActionsContextChanged,\r\n\t\tfunction (eventObj, context) {\r\n\t\t\tvar actionTypes = [mx.shell.ActionContextType.None];\r\n\r\n\t\t\tif (context && context.uiZone === mx.shell.ActionUiZone.LandingPage) {\r\n\t\t\t\tactionManagerService\r\n\t\t\t\t\t.getActions(context, actionTypes, [])\r\n\t\t\t\t\t.then(function (actions) {\r\n\t\t\t\t\t\treturn actionManagerService.filterActions(actions);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.then(function (filteredActions) {\r\n\t\t\t\t\t\tvm.commonActions = filteredActions;\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\t\t$scope\r\n\t);\r\n\r\n\tvm.executeAction = executeAction;\r\n\r\n\tvm.switchMode = function () {\r\n\t\tdisplayMode = displayMode === mx.shell.DisplayMode.Normal ? mx.shell.DisplayMode.BigScreen : mx.shell.DisplayMode.Normal;\r\n\t\tvm.isBigScreen = displayMode === mx.shell.DisplayMode.BigScreen;\r\n\t\teventService.dispatchEvent(mx.shell.EventCodes.DisplayModeChanged, displayMode);\r\n\t\tif (vm.isBigScreen) {\r\n\t\t\tnotificationService.info(i18n.get('solutionBuilderAgent.layouts.landing-page.exitBigScreenMessage'));\r\n\t\t}\r\n\t};\r\n\r\n\tfunction initLanding(contentWidgetId) {\r\n\t\tif (!contentWidgetId) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvm.loaded = false;\r\n\r\n\t\treturn contentWidgetService\r\n\t\t\t.getHtml(contentWidgetId)\r\n\t\t\t.then(function (data) {\r\n\t\t\t\tvm.widget = {\r\n\t\t\t\t\tid: data.Id,\r\n\t\t\t\t\textensions: data.Template.DataModelExtensions ? JSON.parse(data.Template.DataModelExtensions) || {} : {},\r\n\t\t\t\t\tviews: data.Template.Views,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvm.nonVisualTemplate = data.Template.NonVisualTemplate;\r\n\r\n\t\t\t\tif (Array.isArray(data.Template.Views) && data.Template.Views.length > 0) {\r\n\t\t\t\t\tvm.view = data.Template.Views[0];\r\n\t\t\t\t\tvm.view.isLandingPage = true;\r\n\t\t\t\t\tvm.view.widgetId = vm.widget.id;\r\n\r\n\t\t\t\t\tvm.serviceContextInfo = {\r\n\t\t\t\t\t\twidgetId: vm.view.widgetId,\r\n\t\t\t\t\t\tviewName: vm.view.Key,\r\n\t\t\t\t\t};\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmx.console.warn('No views for landing page');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.enablePersonalization = data.EnablePersonalization;\r\n\r\n\t\t\t\treturn dataModelService.loadDataModel(vm.widget.extensions, { Context: { WidgetId: contentWidgetId } }, undefined, freeDataSourceDefer.promise);\r\n\t\t\t})\r\n\t\t\t.then(function (filledObject) {\r\n\t\t\t\tvm.dataModel = filledObject;\r\n\t\t\t\tcontextService.val('SolutionBuilderAgent.LandingPageDataModel', vm.dataModel);\r\n\r\n\t\t\t\tif (!vm.enablePersonalization) {\r\n\t\t\t\t\tcontextService.actionsContext = new mx.shell.ActionsContext([], [], mx.shell.ActionUiZone.LandingPage);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontextService.actionsContext = new mx.shell.ActionsContext(\r\n\t\t\t\t\t\t['PDRContentWidgetTypeLandingPage'],\r\n\t\t\t\t\t\tcontextService.actionsContext ? contextService.actionsContext.extraActions : [],\r\n\t\t\t\t\t\tmx.shell.ActionUiZone.LandingPage\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn contentWidgetService.isCustomizable({ isLandingPage: true });\r\n\t\t\t})\r\n\t\t\t.then(\r\n\t\t\t\tfunction (isCustomizable) {\r\n\t\t\t\t\tif (isCustomizable) {\r\n\t\t\t\t\t\tvm.isCustomizable = true;\r\n\t\t\t\t\t\tvm.configure = function () {\r\n\t\t\t\t\t\t\tcontentWidgetService.openConfigurePreview(vm.view);\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvm.loaded = true;\r\n\t\t\t\t},\r\n\t\t\t\tfunction (error) {\r\n\t\t\t\t\tvm.errorMessage = error && (error.message || error);\r\n\t\t\t\t\tvm.errorTitle = error && error.title;\r\n\t\t\t\t\t$q.reject(error);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t}\r\n\r\n\tfunction executeAction(action) {\r\n\t\tactionExecutorService.execute(action).catch(mx.logCatch);\r\n\t}\r\n}\r\n","// Module\nvar code = \"
    \\r\\n\\r\\n
    \\r\\n\\t
    \\r\\n\\t\\r\\n\\t\\r\\n
    \\r\\n\";\n// Exports\nexport default code;","'use strict';\r\nimport template from './landing-page-content.component.html';\r\n\r\nexport default {\r\n\tbindings: {\r\n\t\twidget: '=',\r\n\t\tview: '=',\r\n\t\tmodel: '=',\r\n\t},\r\n\tcontroller: MxCommonLandingPageContentCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n};\r\n\r\nMxCommonLandingPageContentCtrl.$inject = [\r\n\t'$scope',\r\n\t'$window',\r\n\r\n\t'$interpolate',\r\n\t'mx.SolutionBuilderAgent.DashboardWidgetDataService',\r\n\t'mx.shell.NotificationService',\r\n\t'mx.shell.ActionManagerService',\r\n\t'mx.shell.ActionExecutorService',\r\n\t'mx.internationalization',\r\n];\r\nexport function MxCommonLandingPageContentCtrl($scope, $window, $interpolate, dashboardDataService, notificationService, actionManagerService, actionExecutorService, i18n) {\r\n\tconst vm = this;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvar MOBILE_BREAKPOINT = 1024;\r\n\r\n\t\tif (!vm.widget || !vm.view) {\r\n\t\t\tmx.console.warn('no input parameters for landing page');\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvm.dataModel = vm.model;\r\n\t\tvm.dashboardId = vm.widget.id;\r\n\r\n\t\tvm.gridOptions = {\r\n\t\t\tmobileModeEnabled: true,\r\n\t\t\tmobileBreakPoint: MOBILE_BREAKPOINT,\r\n\t\t\tcolumns: 10,\r\n\t\t\tmaxSizeX: 10,\r\n\t\t\tmaxSizeY: 100,\r\n\t\t\tmargins: [15, 15],\r\n\t\t\tcolWidth: 'auto',\r\n\t\t};\r\n\r\n\t\tvm.dashboardDataService = dashboardDataService;\r\n\t\tvm.dashboardPublicFunctions = {};\r\n\r\n\t\tvar config = getLandingConfig();\r\n\t\tvar result = dashboardDataService.initDashboard(vm.dashboardId, config.widgets, config.defaultLayout, vm.dashboardPublicFunctions);\r\n\r\n\t\tif (result.isCustomized && result.isSetOfWidgetsChanged) {\r\n\t\t\tnotificationService\r\n\t\t\t\t.confirm(\r\n\t\t\t\t\ti18n.get('solutionBuilderAgent.layouts.landing-page.landing-page-content.newWidgetConfirmTitle'),\r\n\t\t\t\t\ti18n.get('solutionBuilderAgent.layouts.landing-page.landing-page-content.newWidgetConfirmText'),\r\n\t\t\t\t\ti18n.get('solutionBuilderAgent.layouts.landing-page.landing-page-content.newWidgetConfirmYes'),\r\n\t\t\t\t\ti18n.get('solutionBuilderAgent.layouts.landing-page.landing-page-content.newWidgetConfirmNo')\r\n\t\t\t\t)\r\n\t\t\t\t.then(function () {\r\n\t\t\t\t\tactionManagerService.getAllActions().then(function (actions) {\r\n\t\t\t\t\t\tif (!Array.isArray(actions)) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tactions.forEach(function (action) {\r\n\t\t\t\t\t\t\tif (action.name === 'pandora.PDRLandingPageWidget.edit-dashboard') {\r\n\t\t\t\t\t\t\t\tactionExecutorService.execute(action).catch(mx.logCatch);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tvm.loaded = true;\r\n\t};\r\n\r\n\tfunction getLandingConfig() {\r\n\t\tvar widgets = [];\r\n\t\tvar defaultLayout = [];\r\n\r\n\t\tvar widgetsHTML = document.createElement('div');\r\n\r\n\t\twidgetsHTML.innerHTML = vm.widget.views[0].Template;\r\n\r\n\t\tfor (var i = 0; i < widgetsHTML.children.length; i++) {\r\n\t\t\tconst widget = widgetsHTML.children[i];\r\n\t\t\tif (widget.tagName.toLowerCase() === 'mx-dashboard-config') {\r\n\t\t\t\tvm.widgetsOpacity = parseInt(widget.getAttribute('widget-opacity')) / 100;\r\n\r\n\t\t\t\tvm.backgroundStyle = {\r\n\t\t\t\t\t'background-color': widget.getAttribute('background-color'),\r\n\t\t\t\t\t'background-size': '100% 100%',\r\n\t\t\t\t\t'background-image': 'url(' + widget.getAttribute('background-image') + ')',\r\n\t\t\t\t\topacity: parseInt(widget.getAttribute('background-opacity')) / 100,\r\n\t\t\t\t};\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tconst id = widget.getAttribute('id');\r\n\t\t\tconst added = widget.getAttribute('visible') !== 'false';\r\n\t\t\tconst availableAttr = widget.getAttribute('available') || '';\r\n\t\t\tconst available = availableAttr !== 'false';\r\n\r\n\t\t\twidgets.push({\r\n\t\t\t\tid: id,\r\n\t\t\t\ttype: 'Custom',\r\n\t\t\t\tavailable: available,\r\n\t\t\t\tadded: added,\r\n\t\t\t\tcontent: widget.innerHTML,\r\n\t\t\t\tparams: {\r\n\t\t\t\t\tdashboardId: vm.dashboardId,\r\n\t\t\t\t\tgridOptions: vm.gridOptions,\r\n\t\t\t\t\tsize: {\r\n\t\t\t\t\t\tw: widget.getAttribute('sizeX'),\r\n\t\t\t\t\t\th: widget.getAttribute('sizeY'),\r\n\t\t\t\t\t},\r\n\t\t\t\t\ttitle: $interpolate(widget.getAttribute('title'))($scope),\r\n\t\t\t\t\tdescription: $interpolate(widget.getAttribute('description'))($scope),\r\n\t\t\t\t\tstyle: widget.getAttribute('style') || '',\r\n\t\t\t\t\tclass: widget.getAttribute('class'),\r\n\t\t\t\t\t// Might fix auto tests\r\n\t\t\t\t\ticon: widget.getAttribute('icon') || 'dashboard',\r\n\t\t\t\t},\r\n\t\t\t\tframe: {\r\n\t\t\t\t\torigin: {\r\n\t\t\t\t\t\tx: Number(widget.getAttribute('posX')),\r\n\t\t\t\t\t\ty: Number(widget.getAttribute('posY')),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsize: {\r\n\t\t\t\t\t\tw: Number(widget.getAttribute('sizeX')),\r\n\t\t\t\t\t\th: Number(widget.getAttribute('sizeY')),\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tdefaultLayout.push({\r\n\t\t\t\tid: id,\r\n\t\t\t\tadded: added,\r\n\t\t\t\tframe: {\r\n\t\t\t\t\torigin: {\r\n\t\t\t\t\t\tx: Number(widget.getAttribute('posX')),\r\n\t\t\t\t\t\ty: Number(widget.getAttribute('posY')),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsize: {\r\n\t\t\t\t\t\tw: Number(widget.getAttribute('sizeX')),\r\n\t\t\t\t\t\th: Number(widget.getAttribute('sizeY')),\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tconst availableMatch = availableAttr.match(/^{{(.*)}}$/);\r\n\t\t\tif (availableMatch) {\r\n\t\t\t\t$scope.$watch(availableMatch[1], function (isAvailable) {\r\n\t\t\t\t\tif (isAvailable) {\r\n\t\t\t\t\t\tdashboardDataService.addWidgetToDashboard(vm.dashboardId, id, true);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdashboardDataService.removeWidgetFromDashboard(vm.dashboardId, id, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// This sort is needed to have more predictable focus order by tab-key\r\n\t\twidgets.sort((a, b) => {\r\n\t\t\tconst aY = a.frame?.origin?.y || 0;\r\n\t\t\tconst bY = b.frame?.origin?.y || 0;\r\n\t\t\tconst aX = a.frame?.origin?.x || 0;\r\n\t\t\tconst bX = b.frame?.origin?.x || 0;\r\n\t\t\treturn aY - bY || aX - bX;\r\n\t\t});\r\n\r\n\t\tif ($window.innerWidth < 960) {\r\n\t\t\tdefaultLayout.forEach(function (layout) {\r\n\t\t\t\tlayout.backupW = layout.frame.size.w;\r\n\t\t\t\tlayout.backupY = layout.frame.origin.y;\r\n\t\t\t\tlayout.backupX = layout.frame.origin.x;\r\n\t\t\t});\r\n\r\n\t\t\tif ($window.innerWidth <= 600) {\r\n\t\t\t\tdefaultLayout.forEach(function (layout) {\r\n\t\t\t\t\tlayout.frame.size.w = 3;\r\n\t\t\t\t});\r\n\t\t\t} else if ($window.innerWidth >= 600 && $window.innerWidth <= 960) {\r\n\t\t\t\tdefaultLayout.forEach(function (layout) {\r\n\t\t\t\t\tif (layout.frame.size.w > 6) {\r\n\t\t\t\t\t\tlayout.frame.size.w = 6;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdelete layout.frame.origin.y;\r\n\t\t\t\t\tdelete layout.frame.origin.x;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tvar _resizeHandler = $.debounce(1000, function () {\r\n\t\t\t\t$scope.$evalAsync(function () {\r\n\t\t\t\t\tvar windowWidth = $window.innerWidth;\r\n\t\t\t\t\tif (windowWidth <= 600) {\r\n\t\t\t\t\t\tdefaultLayout.forEach(function (layout) {\r\n\t\t\t\t\t\t\tlayout.frame.origin.y = layout.backupY;\r\n\t\t\t\t\t\t\tlayout.frame.origin.x = layout.backupX;\r\n\t\t\t\t\t\t\tlayout.frame.size.w = 3;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else if (windowWidth >= 600 && windowWidth <= 960) {\r\n\t\t\t\t\t\tdefaultLayout.forEach(function (layout) {\r\n\t\t\t\t\t\t\tlayout.frame.size.w = layout.backupW;\r\n\t\t\t\t\t\t\tif (layout.frame.size.w > 6) {\r\n\t\t\t\t\t\t\t\tlayout.frame.size.w = 6;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tdelete layout.frame.origin.y;\r\n\t\t\t\t\t\t\tdelete layout.frame.origin.x;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdashboardDataService.setDashboardLayout(vm.dashboardId, defaultLayout);\r\n\t\t\t\t\tdashboardDataService.renderDashboard(vm.dashboardId);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\t$($window).on('resize', _resizeHandler);\r\n\t\t\t_resizeHandler();\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\twidgets: widgets,\r\n\t\t\tdefaultLayout: defaultLayout,\r\n\t\t};\r\n\t}\r\n}\r\n\r\nObject.defineProperty(MxCommonLandingPageContentCtrl.prototype, 'editMode', {\r\n\tenumerable: true,\r\n\tconfigurable: false,\r\n\tget: function () {\r\n\t\treturn this.dashboardDataService.isDashboardEditable(this.dashboardId);\r\n\t},\r\n});\r\n","'use strict';\r\nimport LandingPageComponent from './landing-page.component';\r\nimport LandingPageContentComponent from './landing-page-content.component';\r\n\r\nconst landingPageComponentName = 'mxLandingPage';\r\n\r\nexport default angular\r\n\t.module('mx.sb.LandingPage', [])\r\n\t.run([\r\n\t\t'mx.shell.RoutingService',\r\n\t\tfunction (routingService) {\r\n\t\t\tconst landingPageRoute = routingService.createRoutingItem({\r\n\t\t\t\tname: 'landingPage',\r\n\t\t\t\tpath: '/landing-page/:navigationId',\r\n\t\t\t\ttitle: 'Landing_page',\r\n\t\t\t\tcomponent: landingPageComponentName,\r\n\t\t\t});\r\n\t\t\troutingService.landingPageRoute = landingPageRoute;\r\n\t\t\troutingService.addItems([landingPageRoute]);\r\n\t\t},\r\n\t])\r\n\t.component(landingPageComponentName, LandingPageComponent)\r\n\t.component('mxCommonLandingPageContent', LandingPageContentComponent).name;\r\n","'use strict';\r\nimport template from './mx-grid-actions-panel.component.html';\r\n\r\nexport class GridActionsPanelController {\r\n\tstatic $inject = ['mx.shell.ActionManagerService', 'mx.internationalization', 'mx.shell.EventService', '$scope'];\r\n\tconstructor(actionManagerService, i18n, eventService, $scope) {\r\n\t\tthis.actionManagerService = actionManagerService;\r\n\t\tthis.i18n = i18n;\r\n\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.shell.EventCodes.ActionExecuted,\r\n\t\t\t(e, data) => {\r\n\t\t\t\tif (data.parentView === this.view) {\r\n\t\t\t\t\tdata.finishPromise.then(() => {\r\n\t\t\t\t\t\tthis.grid.executor.changeSelection([]);\r\n\t\t\t\t\t\tthis.grid.executor.loadItems();\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\t}\r\n\r\n\t$onInit() {\r\n\t\tthis.updateActions();\r\n\t\tthis.grid.executor.addSelectionHandler(this.updateActions.bind(this));\r\n\t\tthis.view = this.parentViewController?.mxView;\r\n\t}\r\n\r\n\tasync updateActions() {\r\n\t\tconst selectedItems = this.grid.executor.allSelectedEntities;\r\n\t\tconst types = selectedItems.map((item) => item._type);\r\n\r\n\t\tconst actionContext = new mx.shell.ActionsContext(types, [], mx.shell.ActionUiZone.SidePanel, false);\r\n\t\tlet actions = await this.actionManagerService.getActions(actionContext, [mx.shell.ActionContextType.Single, mx.shell.ActionContextType.Multiple], selectedItems);\r\n\t\tthis.actions = this.actionManagerService.filterActions(actions, null, selectedItems);\r\n\r\n\t\tthis.selectedItems = selectedItems;\r\n\t}\r\n}\r\n\r\nexport default {\r\n\tbindings: {\r\n\t\tgrid: '<',\r\n\t},\r\n\trequire: {\r\n\t\texecutorGrid: '^mxExecutorGrid',\r\n\t\tparentViewController: '?^^mxView',\r\n\t},\r\n\tcontroller: GridActionsPanelController,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n};\r\n","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","'use strict';\r\nimport template from './mx-generic-grid.component.html';\r\nimport { initFilterExpression, toCamelCase } from '../../../model/filterExpressionUtils';\r\n\r\nexport default {\r\n\tbindings: {\r\n\t\ttype: '@', //type of grid, mandatory\r\n\r\n\t\tdata: '<',\r\n\r\n\t\tcolumnDefinition: '@',\r\n\t\tcolumns: '<',\r\n\r\n\t\tenableRowSelection: '<',\r\n\t\tenableSelectionPicker: '<',\r\n\t\texternalSelectedItems: ' {\r\n\t\t\tconst property = toCamelCase(propertyName);\r\n\t\t\tif (!vm.grid.hasOwnProperty(property)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvm.grid[property] = initFilterExpression({\r\n\t\t\t\tpropertyName,\r\n\t\t\t\tcontrolMxAtId: vm.mxAtId,\r\n\t\t\t\t$scope,\r\n\t\t\t\t$attrs,\r\n\t\t\t\t$element,\r\n\t\t\t\tcontroller: vm,\r\n\t\t\t\tonChanged: (filter) => {\r\n\t\t\t\t\tvm.grid[property] = filter;\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tinitFilter('filter');\r\n\t\tinitFilter('browse-where-clause');\r\n\r\n\t\tgetPersonalizationKey()\r\n\t\t\t.then(function (personalizationKey) {\r\n\t\t\t\treturn vm.grid.init(personalizationKey);\r\n\t\t\t})\r\n\t\t\t.then(function () {\r\n\t\t\t\tvm.grid.executor.addSelectionHandler(selectionHandler);\r\n\t\t\t\tvm.grid.addCurrentRowChangeHandler(currentRowChangeHandler);\r\n\t\t\t})\r\n\t\t\t.then(function () {\r\n\t\t\t\tif (Array.isArray(vm.externalSelectedItems)) {\r\n\t\t\t\t\tsetSelectedItems(vm.externalSelectedItems);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t};\r\n\r\n\tvar destroyed = false;\r\n\tvm.$onChanges = function (changes) {\r\n\t\tif (destroyed) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (changes.type) {\r\n\t\t\tvm.grid = initGrid(vm.type, vm.personalizationKey);\r\n\t\t\tvm.grid.parentView = vm.sidePanelTabBody && vm.sidePanelTabBody.view;\r\n\t\t\tvm.grid.mxForm = vm.mxForm;\r\n\t\t\tvm.grid.mxUiAccessibility = vm.mxUiAccessibility;\r\n\t\t\tvm.grid.serviceContext = vm.serviceContext;\r\n\t\t}\r\n\r\n\t\tif (!vm.grid) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (changes.externalSelectedItems) {\r\n\t\t\tif (vm.grid.executor) {\r\n\t\t\t\tsetSelectedItems(changes.externalSelectedItems.currentValue);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tObject.keys(changes).forEach(function (propertyName) {\r\n\t\t\tif (vm.grid.hasOwnProperty(propertyName)) {\r\n\t\t\t\tvm.grid[propertyName] = changes[propertyName].currentValue;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvm.grid.onChanges(changes);\r\n\t};\r\n\r\n\tvm.$onDestroy = function () {\r\n\t\tdestroyed = true;\r\n\r\n\t\tvm.grid.onDestroy();\r\n\t};\r\n\r\n\tfunction selectionHandler(data) {\r\n\t\tif (Array.isArray(vm.externalSelectedItems)) {\r\n\t\t\t//to avoid losing link to array from designer, don't change whole array, and just change its items\r\n\t\t\tvm.externalSelectedItems.splice.apply(vm.externalSelectedItems, [0, vm.externalSelectedItems.length].concat(data.allSelectedEntities));\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setSelectedItems(selectedItems) {\r\n\t\tselectedItems = Array.isArray(selectedItems) ? selectedItems : [];\r\n\r\n\t\treturn $q\r\n\t\t\t.all(\r\n\t\t\t\tselectedItems.map(function (item) {\r\n\t\t\t\t\treturn vm.grid.executor.createRow(item);\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t\t.then(function (selectedRows) {\r\n\t\t\t\tvm.grid.executor.changeSelection(selectedRows);\r\n\t\t\t});\r\n\t}\r\n\r\n\tfunction currentRowChangeHandler(row) {\r\n\t\tvm.currentItem = row && row.getEntity();\r\n\t}\r\n\r\n\tfunction initGrid(type) {\r\n\t\tvar grid;\r\n\t\tswitch (type) {\r\n\t\t\tcase 'objects':\r\n\t\t\t\tgrid = new ObjectsGrid();\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'objects-deprecated':\r\n\t\t\t\tgrid = new ObjectsDeprecatedGrid();\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'relation':\r\n\t\t\t\tgrid = new RelationsGrid();\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'dynamic':\r\n\t\t\t\tgrid = new DynamicGrid();\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'multifragment':\r\n\t\t\t\tgrid = new MultiFragmentGrid();\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn grid;\r\n\t}\r\n\r\n\tfunction getWidgetId() {\r\n\t\tvar view = vm.sidePanelTabBody && vm.sidePanelTabBody.view;\r\n\t\tif (view) {\r\n\t\t\t// grid is located in side-panel. Get id from view\r\n\t\t\treturn $q.when(contentWidgetService.getWidgetIdFromView(view));\r\n\t\t} else {\r\n\t\t\t// grid is located in main-zone (ex. landing-page). Get id from $state or navigation\r\n\t\t\t//TODO: some mechanism is needed to get WidgetId of MainZone\r\n\t\t\tif ($stateParams.widgetId) {\r\n\t\t\t\treturn $q.when($stateParams.widgetId);\r\n\t\t\t} else {\r\n\t\t\t\tvar navigationId = ($stateParams.navigationId || '').toLowerCase();\r\n\t\t\t\tif (navigationId && navigationId !== 'notset') {\r\n\t\t\t\t\treturn navigationService.getNavigationItem(navigationId).then(function (navigationItem) {\r\n\t\t\t\t\t\treturn navigationItem && navigationItem.contentWidgetId;\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn $q.when();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getPersonalizationKey() {\r\n\t\treturn getWidgetId().then(function (widgetId) {\r\n\t\t\tvm.personalizationKey = widgetId + vm.mxAtId;\r\n\t\t\treturn vm.personalizationKey;\r\n\t\t});\r\n\t}\r\n\r\n\treturn vm;\r\n}\r\n","// Module\nvar code = \"\";\n// Exports\nexport default code;","'use strict';\r\nimport template from './mx-executor-grid.component.html';\r\n\r\nexport class MxExecutorGridController {\r\n\tstatic $inject = [\r\n\t\t'$q',\r\n\t\t'$element',\r\n\t\t'mx.internationalization',\r\n\t\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n\t\t'mx.SolutionBuilderAgent.GridEnums',\r\n\t\t'mx.sb.Agent.DataQuery.Enums',\r\n\t];\r\n\r\n\tconstructor($q, $element, i18n, personalizationService, GridEnums, DataQueryEnums) {\r\n\t\tthis.$q = $q;\r\n\t\tthis.i18n = i18n;\r\n\t\tthis.personalizationService = personalizationService;\r\n\t\tthis.GridEnums = GridEnums;\r\n\t\tthis.DataQueryEnums = DataQueryEnums;\r\n\t\tthis.disableDelete = true;\r\n\t\tthis.gridValidationMessage = i18n.get('components.form-validation.required');\r\n\r\n\t\tthis.initRowHeightSettings();\r\n\t\tthis.initRowColoring();\r\n\t}\r\n\r\n\tget isInvalid() {\r\n\t\treturn this.required && this.grid?.executor?.loading === false && (!this.grid?.executor?.dataItems || this.grid?.executor?.dataItems?.length === 0);\r\n\t}\r\n\r\n\tget disabled() {\r\n\t\treturn this.grid?.disabled;\r\n\t}\r\n\r\n\tget readOnly() {\r\n\t\treturn this.grid?.readOnly;\r\n\t}\r\n\r\n\t$onInit() {\r\n\t\tthis.formValidationMessage =\r\n\t\t\t'
    ' +\r\n\t\t\t(this.label || '') +\r\n\t\t\t'
    ' +\r\n\t\t\tthis.gridValidationMessage +\r\n\t\t\t'
    ';\r\n\r\n\t\tif (!this.fullHeight && typeof this.minHeight === 'number') {\r\n\t\t\tthis.renderMinHeight = this.minHeight + 'px';\r\n\t\t}\r\n\t}\r\n\r\n\t$onChanges(changes) {\r\n\t\tif (this.destroyed) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (changes.enableRowSelection) {\r\n\t\t\tconst enableRowSelection = changes.enableRowSelection.currentValue;\r\n\t\t\tthis.enableRowSelection = typeof enableRowSelection === 'undefined' ? true : Boolean(enableRowSelection);\r\n\t\t}\r\n\r\n\t\tif (changes.enableDragAndDrop) {\r\n\t\t\tconst enableDragAndDrop = changes.enableDragAndDrop.currentValue;\r\n\t\t\tthis.enableDragAndDrop = typeof enableDragAndDrop === 'undefined' ? false : Boolean(enableDragAndDrop);\r\n\t\t}\r\n\r\n\t\tif (changes.grid && changes.grid.currentValue) {\r\n\t\t\tconst editMode = changes.grid.currentValue.editMode;\r\n\t\t\tthis.watchable = editMode === this.GridEnums.EditMode.Inline || editMode === this.GridEnums.EditMode.EditForm || editMode === this.GridEnums.EditMode.Wizard;\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\t$onDestroy() {\r\n\t\tthis.destroyed = true;\r\n\t}\r\n\r\n\tonSortingChanged(columns) {\r\n\t\tif (this.grid.executor.preprocessors.sortingPreprocessor) {\r\n\t\t\tcolumns = (columns || []).map(function (column) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tname: column.field,\r\n\t\t\t\t\tsorting: column.sort.direction === 'asc' ? this.DataQueryEnums.ColumnSortingEnum.Ascending : this.DataQueryEnums.ColumnSortingEnum.Descending,\r\n\t\t\t\t\tpriority: column.sort.priority,\r\n\t\t\t\t};\r\n\t\t\t}, this);\r\n\t\t\tcolumns.sort(function (columnA, columnB) {\r\n\t\t\t\treturn columnA.priority - columnB.priority;\r\n\t\t\t});\r\n\t\t\tthis.grid.executor.preprocessors.sortingPreprocessor.setSort(columns);\r\n\t\t}\r\n\t}\r\n\r\n\tonColumnPositionChanged(column, oldPosition, newPosition, columns) {\r\n\t\tvar positionConfig = {};\r\n\t\tcolumns.forEach(function (column, i) {\r\n\t\t\tpositionConfig[column.name] = i;\r\n\t\t});\r\n\t\tthis.grid.executor.changeColumnsPositions(positionConfig);\r\n\t}\r\n\r\n\tonColumnSizeChanged(column, columnWidthShift, absoluteWidth) {\r\n\t\tthis.grid.executor.changeColumnSize(column.name, absoluteWidth);\r\n\t}\r\n\r\n\tinitRowHeightSettings() {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.availableRowHeights = [\r\n\t\t\t{\r\n\t\t\t\tsize: 22,\r\n\t\t\t\ttitle: vm.i18n.get('solutionBuilderAgent.common.high'),\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tsize: 30,\r\n\t\t\t\ttitle: vm.i18n.get('solutionBuilderAgent.common.normal'),\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tsize: 38,\r\n\t\t\t\ttitle: vm.i18n.get('solutionBuilderAgent.common.low'),\r\n\t\t\t},\r\n\t\t];\r\n\r\n\t\tvar rowHeight = vm.availableRowHeights[0].size;\r\n\t\tObject.defineProperty(vm, 'rowHeight', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn rowHeight;\r\n\t\t\t},\r\n\t\t\tset: function (newRowHeight) {\r\n\t\t\t\trowHeight = newRowHeight || vm.availableRowHeights[0].size;\r\n\t\t\t\tvm.personalizationService.setRowHeight(rowHeight);\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn vm.personalizationService.getRowHeight().then(function (savedRowHeight) {\r\n\t\t\trowHeight = savedRowHeight === undefined ? rowHeight : savedRowHeight;\r\n\t\t});\r\n\t}\r\n\r\n\tinitRowColoring() {\r\n\t\tvar vm = this;\r\n\t\tvar rowColoringEnabled = true;\r\n\r\n\t\tObject.defineProperty(vm, 'rowColoringEnabled', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn rowColoringEnabled;\r\n\t\t\t},\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\trowColoringEnabled = Boolean(newValue);\r\n\t\t\t\tvm.personalizationService.setRowsColoringAttribute('rowColoringEnabled', rowColoringEnabled);\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn vm.personalizationService.getRowsColoring().then(function (coloring) {\r\n\t\t\trowColoringEnabled = coloring.enabled === undefined ? rowColoringEnabled : coloring.enabled;\r\n\t\t});\r\n\t}\r\n\r\n\tonItemClick(item) {\r\n\t\tthis.grid.itemClickHandler(item);\r\n\t}\r\n\r\n\tonItemRightClick(item) {\r\n\t\tthis.grid.itemRightClickHandler(item);\r\n\t}\r\n\r\n\tonItemDblClick(item) {\r\n\t\tthis.grid.itemDblClickHandler(item);\r\n\t}\r\n\r\n\tonGroupingClick(column) {\r\n\t\tthis.grid.groupingClickHandler(column);\r\n\t}\r\n\r\n\tonReorder() {\r\n\t\tthis.grid.reorderHandler();\r\n\t}\r\n\r\n\tonCellChanged() {\r\n\t\t// this.grid.reorderHandler();\r\n\t}\r\n}\r\n\r\nexport default {\r\n\tbindings: {\r\n\t\tgrid: '<',\r\n\r\n\t\tenableRowSelection: '<',\r\n\t\tenableSelectionPicker: '<',\r\n\t\tenableDragAndDrop: '<',\r\n\t\tfullHeight: '<',\r\n\t\tminHeight: '<',\r\n\t\tlabel: '<',\r\n\r\n\t\trequired: '<',\r\n\t},\r\n\trequire: {\r\n\t\tmxForm: '?^mxForm',\r\n\t},\r\n\ttemplate: template,\r\n\tcontroller: MxExecutorGridController,\r\n\tcontrollerAs: 'vm',\r\n};\r\n","// Module\nvar code = \"
    {{::vm.label}}
    \\r\\n\\r\\n
    \\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n
    \\r\\n
    {{vm.gridValidationMessage}}
    \\r\\n\";\n// Exports\nexport default code;","'use strict';\r\n\r\nexport default class MxGridHelperService {\r\n\tstatic $inject = [\r\n\t\t'$q',\r\n\t\t'mx.SolutionBuilderAgent.WidgetManager',\r\n\t\t'mx.SolutionBuilderAgent.SchemaService',\r\n\t\t'mx.SolutionBuilderAgent.DialogOpenerService',\r\n\t\t'mx.internationalization',\r\n\t\t'mx.shell.SidePanelService',\r\n\t\t'mx.SolutionBuilderAgent.EditFormTabService',\r\n\r\n\t\t'mx.shell.Config',\r\n\t\t'mx.SolutionBuilderAgent.mxColumnDefinitionService',\r\n\t\t'mx.SolutionBuilderAgent.EntityService',\r\n\t\t'mx.SolutionBuilderAgent.WizardService',\r\n\r\n\t\t'mx.sb.Agent.DataQuery.Executor',\r\n\t\t'mx.sb.Agent.DataQuery.DataDefinitionRequester',\r\n\t\t'mx.sb.Agent.DataQuery.RelationsRequester',\r\n\t\t'mx.sb.Agent.DataQuery.ClientDataRequester',\r\n\t\t'mx.sb.Agent.DataQuery.MultiFragmentRequester',\r\n\t\t'mx.sb.Agent.DataQuery.ServiceRequester',\r\n\t\t'mx.sb.Agent.DataQuery.DataQueryDefinition',\r\n\t\t'mx.sb.Agent.DataQuery.Enums',\r\n\t\t'mx.SolutionBuilderAgent.GridEnums',\r\n\t];\r\n\r\n\tconstructor(\r\n\t\t$q,\r\n\t\twidgetManager,\r\n\t\tschemaService,\r\n\t\tdialogOpenerService,\r\n\t\ti18n,\r\n\t\tsidePanelService,\r\n\t\teditFormTabService,\r\n\t\tconfigService,\r\n\t\tcolumnDefinitionService,\r\n\t\tentityService,\r\n\t\twizardService,\r\n\t\tDataQueryExecutor,\r\n\t\tDataDefinitionRequester,\r\n\t\tRelationsRequester,\r\n\t\tClientDataRequester,\r\n\t\tMultiFragmentRequester,\r\n\t\tServiceRequester,\r\n\t\tDataQueryDefinition,\r\n\t\tDataQueryEnums,\r\n\t\tGridEnums\r\n\t) {\r\n\t\tObject.assign(this, {\r\n\t\t\t$q,\r\n\t\t\twidgetManager,\r\n\t\t\tschemaService,\r\n\t\t\tdialogOpenerService,\r\n\t\t\ti18n,\r\n\t\t\tsidePanelService,\r\n\t\t\teditFormTabService,\r\n\r\n\t\t\tconfigService,\r\n\t\t\tcolumnDefinitionService,\r\n\t\t\tentityService,\r\n\t\t\twizardService,\r\n\r\n\t\t\tDataQueryExecutor,\r\n\t\t\tDataDefinitionRequester,\r\n\t\t\tRelationsRequester,\r\n\t\t\tClientDataRequester,\r\n\t\t\tMultiFragmentRequester,\r\n\t\t\tServiceRequester,\r\n\t\t\tDataQueryDefinition,\r\n\t\t\tDataQueryEnums,\r\n\t\t\tGridEnums,\r\n\t\t});\r\n\r\n\t\tconst dataSourceConfig = configService.get('dataSource') || {};\r\n\t\tthis.defaultGridPreprocessorsConfig = {\r\n\t\t\tpreprocessors: {\r\n\t\t\t\t//config of preprocessors and default values (not personalized) for preprocessor for this grid.\r\n\t\t\t\tpaging: {\r\n\t\t\t\t\tenabled: true,\r\n\t\t\t\t\tpageSize: dataSourceConfig.pageSize,\r\n\t\t\t\t\tpageSizes: dataSourceConfig.pageSizes,\r\n\t\t\t\t},\r\n\t\t\t\tsorting: {\r\n\t\t\t\t\tenabled: true,\r\n\t\t\t\t},\r\n\t\t\t\tsearch: {\r\n\t\t\t\t\tenabled: true,\r\n\t\t\t\t},\r\n\t\t\t\tcolumnSearch: {\r\n\t\t\t\t\tenabled: true,\r\n\t\t\t\t},\r\n\t\t\t\tadvanceSearch: {\r\n\t\t\t\t\tenabled: false,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tthis.wizardObjectIdBydId = {};\r\n\t}\r\n\r\n\tasync initExecutor(dataQuery, personalizationKey, preprocessorsConfig) {\r\n\t\tconst executor = new this.DataQueryExecutor();\r\n\t\tlet requester;\r\n\t\tconst config = angular.merge({}, this.defaultGridPreprocessorsConfig, preprocessorsConfig);\r\n\r\n\t\t//TODO: may be initialization of requester should be done in DataQueryDefinition constructor?\r\n\t\tif (dataQuery.IsStatic) {\r\n\t\t\trequester = new this.ClientDataRequester(dataQuery);\r\n\t\t} else if (dataQuery.Service) {\r\n\t\t\trequester = new this.ServiceRequester(dataQuery);\r\n\t\t} else if (dataQuery.IsMultiFragment) {\r\n\t\t\trequester = new this.MultiFragmentRequester(dataQuery);\r\n\t\t} else if (dataQuery.IsRelation) {\r\n\t\t\trequester = new this.RelationsRequester(dataQuery);\r\n\t\t} else {\r\n\t\t\trequester = new this.DataDefinitionRequester(dataQuery);\r\n\t\t} //TODO: else ServiceRequester\r\n\r\n\t\tawait executor.init(dataQuery, requester, config);\r\n\r\n\t\tawait executor.initPersonalization(personalizationKey);\r\n\t\treturn executor;\r\n\t}\r\n\r\n\tgetDefaultDQ(entityClassName, isMultifragment) {\r\n\t\treturn (\r\n\t\t\tisMultifragment\r\n\t\t\t\t? this.columnDefinitionService.loadColumnsForClass(entityClassName)\r\n\t\t\t\t: this.$q.when([\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tDisplayType: this.DataQueryEnums.ColumnDisplayTypeEnum.Visible,\r\n\t\t\t\t\t\t\tExpression: 'DisplayString',\r\n\t\t\t\t\t\t\tAttributeValueType: mx.shell.ObjectPropertyType.String.name,\r\n\t\t\t\t\t\t\tPosition: 0,\r\n\t\t\t\t\t\t\tSorting: this.DataQueryEnums.ColumnSortingEnum.Ascending,\r\n\t\t\t\t\t\t\tName: 'DisplayString',\r\n\t\t\t\t\t\t\tTitle: this.i18n.get('solutionBuilderAgent.services.columnDefinition.displayStringColumnTitle'),\r\n\t\t\t\t\t\t},\r\n\t\t\t\t ])\r\n\t\t).then((columns) => {\r\n\t\t\treturn new this.DataQueryDefinition({\r\n\t\t\t\tColumns: columns,\r\n\t\t\t\tSchemaClassName: entityClassName,\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tinitDQByDefinition(dataQueryName, entityClassName, type = this.GridEnums.DataDefinitionGridTypes.Objects) {\r\n\t\tconst isMultiFragment = type === this.GridEnums.DataDefinitionGridTypes.MultiFragment;\r\n\t\tconst isRelation = type === this.GridEnums.DataDefinitionGridTypes.Relation;\r\n\t\treturn (\r\n\t\t\tdataQueryName\r\n\t\t\t\t? this.columnDefinitionService.getGridDefinitionByName(dataQueryName).catch(() => {\r\n\t\t\t\t\t\treturn this.columnDefinitionService.getGridDefinitionByClassName(entityClassName);\r\n\t\t\t\t })\r\n\t\t\t\t: this.columnDefinitionService.getGridDefinitionByClassName(entityClassName)\r\n\t\t)\r\n\t\t\t.catch((error) => {\r\n\t\t\t\tif (!entityClassName) {\r\n\t\t\t\t\treturn this.$q.reject(error);\r\n\t\t\t\t}\r\n\t\t\t\treturn this.getDefaultDQ(entityClassName, isMultiFragment);\r\n\t\t\t})\r\n\t\t\t.then((dataQuery) => {\r\n\t\t\t\tdataQuery.IsMultiFragment = isMultiFragment;\r\n\t\t\t\tdataQuery.IsRelation = isRelation;\r\n\t\t\t\treturn dataQuery;\r\n\t\t\t});\r\n\t}\r\n\r\n\tinitStaticDQ(columns) {\r\n\t\tcolumns = (columns || []).map((col) => {\r\n\t\t\tconst column = angular.copy(col);\r\n\t\t\tswitch (column.type || column.Type) {\r\n\t\t\t\tcase 'icon':\r\n\t\t\t\t\tcolumn.AttributeValueType = column.Type = mx.shell.ObjectPropertyType.Icon.name;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'color':\r\n\t\t\t\t\tcolumn.AttributeValueType = column.Type = mx.shell.ObjectPropertyType.Color.name;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'string':\r\n\t\t\t\t\tcolumn.AttributeValueType = column.Type = mx.shell.ObjectPropertyType.String.name;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'integer':\r\n\t\t\t\tcase 'number':\r\n\t\t\t\t\tcolumn.AttributeValueType = column.Type = mx.shell.ObjectPropertyType.Integer.name;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'decimal':\r\n\t\t\t\t\tcolumn.AttributeValueType = column.Type = mx.shell.ObjectPropertyType.Decimal.name;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'float':\r\n\t\t\t\t\tcolumn.AttributeValueType = column.Type = mx.shell.ObjectPropertyType.Float.name;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'date':\r\n\t\t\t\t\tcolumn.AttributeValueType = column.Type = mx.shell.ObjectPropertyType.Date.name;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'currency':\r\n\t\t\t\t\tcolumn.AttributeValueType = column.Type = mx.shell.ObjectPropertyType.Currency.name;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'boolean':\r\n\t\t\t\t\tcolumn.AttributeValueType = column.Type = mx.shell.ObjectPropertyType.Boolean.name;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'enumeration':\r\n\t\t\t\t\tcolumn.AttributeValueType = column.Type = mx.shell.ObjectPropertyType.Integer.name;\r\n\t\t\t\t\tcolumn.ReferenceTo = column.ReferenceTo || column.className;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'pickup':\r\n\t\t\t\t\tcolumn.AttributeValueType = column.Type = mx.shell.ObjectPropertyType.Guid.name;\r\n\t\t\t\t\tcolumn.ReferenceTo = column.ReferenceTo || column.className;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tcolumn.AttributeValueType = column.Type = mx.shell.ObjectPropertyType.String.name;\r\n\t\t\t}\r\n\t\t\tdelete column.type;\r\n\t\t\tdelete column.className;\r\n\r\n\t\t\tcolumn.Width = column.Width || column.width;\r\n\t\t\tdelete column.width;\r\n\r\n\t\t\tcolumn.Name = column.Name || column.name;\r\n\t\t\tdelete column.name;\r\n\r\n\t\t\tcolumn.Position = column.Position || column.position;\r\n\t\t\tdelete column.position;\r\n\r\n\t\t\tcolumn.Title = column.Title || column.title;\r\n\t\t\tdelete column.title;\r\n\r\n\t\t\tif (typeof column.visible === 'boolean' && typeof column.DisplayType === 'undefined') {\r\n\t\t\t\tcolumn.DisplayType = column.visible ? this.DataQueryEnums.ColumnDisplayTypeEnum.Visible : this.DataQueryEnums.ColumnDisplayTypeEnum.Hidden;\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.Alignment = column.Alignment || column.align;\r\n\t\t\tdelete column.align;\r\n\r\n\t\t\tcolumn.Expression = column.Expression || column.ValuePropertyName || column.field || column.Name;\r\n\t\t\tdelete column.ValuePropertyName;\r\n\t\t\tdelete column.field;\r\n\r\n\t\t\treturn column;\r\n\t\t});\r\n\r\n\t\treturn new this.DataQueryDefinition({\r\n\t\t\tIsStatic: true,\r\n\t\t\tColumns: columns,\r\n\t\t});\r\n\t}\r\n\r\n\tasync getEntityTypesForCreate(entityTypes = []) {\r\n\t\tconst result = [];\r\n\t\tfor (let i = 0; i < entityTypes.length; i++) {\r\n\t\t\tif (await this.widgetManager.hasNewDialogs(entityTypes[i]._type)) {\r\n\t\t\t\tresult.push(entityTypes[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tgetAllowedEntityTypes(entityClassName, allowedTypes) {\r\n\t\tallowedTypes = allowedTypes ? allowedTypes.split(',') : [];\r\n\t\treturn this.schemaService.getTypeItems(undefined, entityClassName).then((types) => {\r\n\t\t\treturn allowedTypes.length ? types.filter((type) => allowedTypes.indexOf(type.Name) >= 0) : types;\r\n\t\t});\r\n\t}\r\n\r\n\trunGenericPreviewAction(data) {\r\n\t\t//TODO: switch item._typeType case\r\n\t\treturn this.widgetManager.getPreviewsOrDialogs(data.item._type).then((views) => {\r\n\t\t\tif (views && views.length) {\r\n\t\t\t\treturn this.dialogOpenerService.openPreview(data.item, undefined, undefined, data.parentView);\r\n\t\t\t} else {\r\n\t\t\t\treturn this.$q.reject('Details view does not exist or permission is denied for this Role');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\trunGenericCreateAction(data) {\r\n\t\t//TODO: switch entityTypeType case\r\n\t\treturn this.widgetManager.getNewDialogs(data._type).then((views) => {\r\n\t\t\tif (views && views.length) {\r\n\t\t\t\treturn this.dialogOpenerService.openNewDialog(data._type, undefined, undefined, undefined, data.presetFields, data.parentView, false, undefined, true)\r\n\t\t\t\t\t.newEntityCreatedPromise;\r\n\t\t\t} else {\r\n\t\t\t\treturn this.$q.reject('Create New view does not exist or permission is denied for this Role');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\trunGenericEditAction(data) {\r\n\t\t//TODO: switch entityTypeType case\r\n\t\treturn this.widgetManager.getEditDialogs(data.item._type).then((views) => {\r\n\t\t\tif (views && views.length) {\r\n\t\t\t\treturn this.dialogOpenerService.openEditDialog(data.item, true, data.presetFields, data.parentView).finishDialogInteractionPromise;\r\n\t\t\t} else {\r\n\t\t\t\treturn this.$q.reject(mx.warnCatchMessage('Edit view does not exist or permission is denied for this Role'));\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\topenEditForm(options, parentView) {\r\n\t\tif (options.templateId) {\r\n\t\t\treturn this.editFormTabService.open(options, parentView);\r\n\t\t} else {\r\n\t\t\treturn this.$q.reject('templateId is mandatory for EditForm');\r\n\t\t}\r\n\t}\r\n\r\n\tgetWizardObjectId(wizardId) {\r\n\t\tthis.wizardObjectIdBydId[wizardId] =\r\n\t\t\tthis.wizardObjectIdBydId[wizardId] ||\r\n\t\t\tthis.entityService\r\n\t\t\t\t.getFragmentDescriptors({\r\n\t\t\t\t\tentityClass: 'PDRContentWidgetClassWizard',\r\n\t\t\t\t\tids: [wizardId],\r\n\t\t\t\t\tuseObjectId: false,\r\n\t\t\t\t})\r\n\t\t\t\t.then((result) => ((result && result[0]) || {}).ObjectId);\r\n\r\n\t\treturn this.wizardObjectIdBydId[wizardId];\r\n\t}\r\n\r\n\topenWizard(options) {\r\n\t\treturn this.getWizardObjectId(options.wizardId).then((wizardObjectId) => {\r\n\t\t\tconst wizardView = this.wizardService.getWizardView({\r\n\t\t\t\twidgetId: wizardObjectId,\r\n\t\t\t\twizardMode: mx.SolutionBuilderAgent.WizardMode.Default,\r\n\t\t\t\tname: options.wizardHeader,\r\n\t\t\t\tdisplayName: options.wizardHeader,\r\n\t\t\t\tselectedObjects: [options.entity],\r\n\t\t\t\touterContext: options.outerContext,\r\n\t\t\t\tcustomHeader: options.wizardHeader,\r\n\t\t\t});\r\n\r\n\t\t\twizardView.id = Date.now();\r\n\r\n\t\t\treturn this.sidePanelService.addView(wizardView, options.parentView, true);\r\n\t\t});\r\n\t}\r\n}\r\n","'use strict';\r\nimport MxEnum from '../../../../Utils/MxEnum';\r\n\r\nexport const gridEnums = {\r\n\tEditMode: new MxEnum({\r\n\t\tNone: 0,\r\n\t\tInline: 1,\r\n\t\tEditForm: 2,\r\n\t\tWizard: 3,\r\n\t\tGenericEdit: 4,\r\n\t}),\r\n\r\n\tObjectGridOnClickActions: new MxEnum({\r\n\t\tNone: 'none',\r\n\t\tPreview: 'preview',\r\n\t\tEdit: 'edit',\r\n\t}),\r\n\r\n\tDataDefinitionGridTypes: new MxEnum({\r\n\t\tObjects: 0,\r\n\t\tRelation: 1,\r\n\t\tMultiFragment: 2,\r\n\t}),\r\n};\r\n","'use strict';\r\nimport template from './mx-grid-control-panel.component.html';\r\nimport { GroupType } from '../../../model/enumerations';\r\n\r\nexport class MxDataControlPanelCtrl {\r\n\tstatic $inject = [\r\n\t\t'mx.internationalization',\r\n\t\t'mx.shell.KeyboardNavigationService',\r\n\t\t'$scope',\r\n\t\t'$timeout',\r\n\t\t'mx.shell.SidePanelService',\r\n\t\t'mx.shell.ContextService',\r\n\t\t'mx.SolutionBuilderAgent.ContextSelectionService',\r\n\t\t'mx.shell.SearchProviderService',\r\n\t\t'mx.shell.EventService',\r\n\t];\r\n\r\n\tconstructor(i18n, keyboardNavigationService, $scope, $timeout, sidePanelService, contextService, contextSelectionService, searchService, eventService) {\r\n\t\tObject.assign(this, {\r\n\t\t\ti18n,\r\n\t\t\tkeyboardNavigationService,\r\n\t\t\t$scope,\r\n\t\t\t$timeout,\r\n\t\t\tsidePanelService,\r\n\t\t\tcontextService,\r\n\t\t\tcontextSelectionService,\r\n\t\t\tsearchService,\r\n\t\t\teventService,\r\n\t\t});\r\n\r\n\t\t// TODO: remove searchService and Search Event when SearchPage will be using generic grid\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.shell.EventCodes.Search,\r\n\t\t\t(e, searchOptions) => {\r\n\t\t\t\tsearchOptions = searchOptions || {};\r\n\t\t\t\tif (!this.grid.personalizationKey || this.grid.personalizationKey !== searchOptions.uiToken) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis.grid.executor.preprocessors.advanceSearchPreprocessor.conditions = searchOptions.searchForm.getGroup(GroupType.QueryBuilder)?.toJSON();\r\n\t\t\t\tthis.grid.executor.preprocessors.advanceSearchPreprocessor.filters = searchOptions.filters;\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\t}\r\n\r\n\tget disabled() {\r\n\t\treturn this.executorGrid.disabled;\r\n\t}\r\n\r\n\tget readOnly() {\r\n\t\treturn this.executorGrid.readOnly || this.disabled;\r\n\t}\r\n\r\n\tget isGridButtonsVisible() {\r\n\t\treturn (\r\n\t\t\tthis.grid &&\r\n\t\t\t(!this.grid.addButtonHidden || (!this.grid.createButtonHidden && this.grid.createItems.length) || !this.grid.removeButtonHidden || !this.grid.deleteButtonHidden)\r\n\t\t);\r\n\t}\r\n\r\n\t$onChanges(changes) {\r\n\t\tif (changes.grid && changes.grid.currentValue) {\r\n\t\t\tconst grid = changes.grid.currentValue;\r\n\t\t\tthis.createButtons = grid.createItems.map((item) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tlabel: this.i18n.getFormatted('solutionBuilderAgent.common.create_new_name', item._displayName || ''),\r\n\t\t\t\t\tcontext: item,\r\n\t\t\t\t\tonItemClick: this.onCreateButtonClick.bind(this),\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tif (this.grid.showSelectAll) {\r\n\t\t\t\tgrid.executor.addSelectionHandler(({ allSelectedRows, allEntitiesSelected }) => {\r\n\t\t\t\t\tthis.showResetSelection = allSelectedRows.length > 0;\r\n\t\t\t\t\tthis.showSelectEntireDataSet = allSelectedRows.length > 0 && !allEntitiesSelected;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t$postLink() {\r\n\t\tthis.keyboardNavigationService.registerKey([\r\n\t\t\t{\r\n\t\t\t\t// Scope: $scope,\r\n\t\t\t\tkey: 'alt+shift+i',\r\n\t\t\t\t// NameInTemplate: 'searchHint',\r\n\t\t\t\tdescription: this.i18n.get('solutionBuilderAgent.components.mx-data-control-panel.search'),\r\n\t\t\t\tonRegister: () => {\r\n\t\t\t\t\tthis.$scope.searchHint = '⇑+i';\r\n\t\t\t\t},\r\n\t\t\t\tcallback: () => {\r\n\t\t\t\t\tthis.$timeout(function () {\r\n\t\t\t\t\t\t$('mx-grid-control-panel input:visible').focus();\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t// Scope: $scope,\r\n\t\t\t\tkey: 'alt+shift+r',\r\n\t\t\t\thint: '⇑+r',\r\n\t\t\t\t// NameInTemplate: 'advSearchHint',\r\n\t\t\t\tdescription: this.i18n.get('solutionBuilderAgent.components.mx-data-control-panel.advancedSearch'),\r\n\t\t\t\tonRegister: () => {\r\n\t\t\t\t\tthis.$scope.advSearchHint = '⇑+r';\r\n\t\t\t\t},\r\n\t\t\t\tcallback: () => {\r\n\t\t\t\t\tthis.$timeout(() => {\r\n\t\t\t\t\t\tconst closeSearch = $('.mx-shell-sidebar--close-btn:visible');\r\n\r\n\t\t\t\t\t\tif (closeSearch.length) {\r\n\t\t\t\t\t\t\tcloseSearch.click();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.onAdvancedSearchClick();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t]);\r\n\t}\r\n\r\n\tsetAsDraft() {\r\n\t\tif (this.mxForm) {\r\n\t\t\tthis.mxForm.setDirty();\r\n\t\t}\r\n\t}\r\n\r\n\tonCreateButtonClick(event, item) {\r\n\t\tthis.grid.onCreateButtonClick(item.context);\r\n\t}\r\n\r\n\tonAdvancedSearchClick() {\r\n\t\tthis.searchService.openAdvancedSearch({\r\n\t\t\tcontext: {\r\n\t\t\t\tname: this.grid.executor.dataQuery.Name,\r\n\t\t\t\ttitle: this.grid.executor.dataQuery.Name,\r\n\t\t\t\tdatasource: this.grid.executor.dataQuery.Id,\r\n\t\t\t\tparameters: {},\r\n\t\t\t},\r\n\t\t\tuiToken: this.grid.personalizationKey,\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport default {\r\n\tbindings: {\r\n\t\tgrid: '<',\r\n\r\n\t\tsettingsOpened: '=?',\r\n\t},\r\n\trequire: {\r\n\t\texecutorGrid: '?^mxExecutorGrid',\r\n\t\tmxForm: '?^mxForm',\r\n\t},\r\n\tcontroller: MxDataControlPanelCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n};\r\n","// Module\nvar code = \"
    \\r\\n\\r\\n\\r\\n\\t\\r\\n\\t\\tadd\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\tadd_circle_outline\\r\\n\\t\\r\\n\\r\\n\\t 1\\\" icon=\\\"add_circle_outline\\\" items=\\\"vm.createButtons\\\" data-disabled=\\\"vm.disabled || vm.readOnly\\\" mx-at-id=\\\"create-menu\\\">\\r\\n\\r\\n\\t\\r\\n\\t\\tdelete\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\tdelete_forever\\r\\n\\t\\r\\n\\r\\n\\t
    \\r\\n\\r\\n\\r\\n\\t\\r\\n\\r\\n\\t
    \\r\\n\\r\\n\\t\\t
    \\r\\n\\t\\t\\r\\n\\t\\t\\t{{ vm.grid.executor.preprocessors.pagingPreprocessor.firstItemNumber + ' - ' + vm.grid.executor.preprocessors.pagingPreprocessor.lastItemNumber + ' ' }}\\r\\n\\t\\t\\t{{::'components.mx-datasource-paging-panel.of' | mxi18n}}\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{::'components.mx-datasource-paging-panel.many' | mxi18n}}\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t 0\\\">\\r\\n\\t\\t\\t\\t{{ vm.grid.executor.preprocessors.pagingPreprocessor.totalItems }}\\r\\n\\t\\t\\t\\r\\n\\t\\t
    \\r\\n\\r\\n\\t\\t
    \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tchevron_left\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\tchevron_right\\r\\n\\t\\t\\t\\r\\n\\t\\t
    \\r\\n\\t
    \\r\\n\\r\\n\\r\\n\\t\\r\\n\\t\\trefresh\\r\\n\\t\\r\\n\\r\\n\\r\\n\\t\\r\\n\\t\\tfilter_list\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\tfile_download\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\tmore_vert\\r\\n\\t\\r\\n\\r\\n
    \\r\\n\";\n// Exports\nexport default code;","import DataSetRowIdentity from '../../../services/dataset-row-identity';\r\nimport template from './mx-grid-render.component.html';\r\n\r\nMxGridRenderCtrl.$inject = [\r\n\t'$scope',\r\n\t'uiGridConstants',\r\n\t'$templateCache',\r\n\t'$timeout',\r\n\t'$element',\r\n\t'$mdUtil',\r\n\t'gridUtil',\r\n\t'mx.internationalization',\r\n\t'mx.shell.Config',\r\n\t'mx.app.DeviceService',\r\n\t'$mdConstant',\r\n\t'mx.sb.Agent.DataQuery.Enums',\r\n\t'mx.app.ColorService',\r\n\t'mx.components.MxGridHelper',\r\n];\r\nexport function MxGridRenderCtrl(\r\n\t$scope,\r\n\tuiGridConstants,\r\n\t$templateCache,\r\n\t$timeout,\r\n\t$element,\r\n\t$mdUtil,\r\n\tgritUtil,\r\n\ti18n,\r\n\tmxConfig,\r\n\tdeviceService,\r\n\t$mdConstant,\r\n\tDataQueryEnums,\r\n\tcolorService,\r\n\tgridHelper\r\n) {\r\n\tvar vm = this,\r\n\t\tpreviousClickedRowIndex = -1,\r\n\t\ttemplates = loadTemplates(),\r\n\t\tisVisibleWatcher,\r\n\t\tcontrastColorCache = {};\r\n\r\n\t//TODO: move it from mx-grid\r\n\tmx.components.loadUiGridTemplates($templateCache);\r\n\tvm.currencyConfig = mxConfig.get('currency');\r\n\r\n\tvm.options = {\r\n\t\trowEquality: DataSetRowIdentity.equal,\r\n\t\tallowPaging: false, //disable internal paging in ui-grid\r\n\t\tallowSearch: false, //disable internal search in ui-grid\r\n\t\tenableGridMenu: false,\r\n\t\tuseExternalSorting: true,\r\n\t\tuseExternalPagination: true,\r\n\t\tuseExternalFiltering: true,\r\n\t\thideHeader: true,\r\n\t\tflatEntityAccess: true,\r\n\r\n\t\tdata: 'vm.items',\r\n\r\n\t\t// oprimization ...\r\n\t\tvirtualizationThreshold: 50,\r\n\t\texcessRows: 20,\r\n\t\tcolumnVirtualizationThreshold: 3,\r\n\t\texcessColumns: 3,\r\n\t\tselectionRowHeaderWidth: 30,\r\n\t\theaderRowHeight: 46,\r\n\t\tminRowsToShow: deviceService.screenMobile() ? 5 : 10,\r\n\t\tenablePaginationControls: false,\r\n\t\tenableExpandable: true,\r\n\t\tenableExpandableRowHeader: false,\r\n\t\tenableColumnMenus: false,\r\n\t\tdisableExport: true,\r\n\t\tenableHorizontalScrollbar: 1,\r\n\r\n\t\texpandableRowTemplate: templates.editForm,\r\n\r\n\t\trefreshGridCanvas: refreshGridCanvas,\r\n\t\tonRegisterApi: function (gridApi) {\r\n\t\t\tvm.gridApi = gridApi;\r\n\r\n\t\t\tif (vm.fullHeight === true || (typeof vm.fullHeight === 'object' && vm.fullHeight !== null)) {\r\n\t\t\t\tsetFullHeight();\r\n\t\t\t}\r\n\r\n\t\t\t// this functional can be removed if this PR is approved (or similar) https://github.com/angular-ui/ui-grid/pull/6940\r\n\t\t\tpreventHiddenGridRefresh();\r\n\r\n\t\t\tif (vm.enableDragAndDrop) {\r\n\t\t\t\tgridApi.draggableRows.on.rowDropped($scope, function () {\r\n\t\t\t\t\tvm.onReorder();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tgridApi.core.on.columnVisibilityChanged($scope, function (column) {\r\n\t\t\t\tvm.onColumnVisibilityChanged({ column: column });\r\n\t\t\t});\r\n\r\n\t\t\tgridApi.core.on.sortChanged($scope, function (grid, columns) {\r\n\t\t\t\tvm.onSortChanged({ columns: columns });\r\n\t\t\t});\r\n\r\n\t\t\tgridApi.core.on.renderingComplete($scope, () => {\r\n\t\t\t\tgridHelper.preventStuckingMovingColumns($scope, $element);\r\n\t\t\t});\r\n\r\n\t\t\tgridApi.core.on.rowsRendered($scope, function () {\r\n\t\t\t\tvm.gridViewport = vm.gridViewport || $element.find('.ui-grid-viewport');\r\n\t\t\t\tvm.gridViewport.scrollTop(0);\r\n\t\t\t});\r\n\r\n\t\t\tgridApi.colResizable.on.columnSizeChanged($scope, function (column, columnWidthShift) {\r\n\t\t\t\tvar absoluteWidth;\r\n\t\t\t\tgridApi.grid.columns.forEach(function (col) {\r\n\t\t\t\t\tif (col.name === column.name) {\r\n\t\t\t\t\t\tabsoluteWidth = col.drawnWidth;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tvm.onColumnSizeChanged({\r\n\t\t\t\t\tcolumn: column,\r\n\t\t\t\t\tcolumnWidthShift: columnWidthShift,\r\n\t\t\t\t\tabsoluteWidth: absoluteWidth,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tgridApi.colMovable.on.columnPositionChanged($scope, function (column, oldPosition, newPosition) {\r\n\t\t\t\tvm.onColumnPositionChanged({\r\n\t\t\t\t\tcolumn: column,\r\n\t\t\t\t\toldPosition: oldPosition,\r\n\t\t\t\t\tnewPosition: newPosition,\r\n\t\t\t\t\tcolumns: gridApi.grid.columns,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tsetColumns(vm.columns);\r\n\t\t\tselectItems(vm.executor.selectedRowsOnPage);\r\n\t\t\tvm.executor.addSelectionHandler(function (data) {\r\n\t\t\t\t$timeout(function () {\r\n\t\t\t\t\tselectItems(data.selectedRowsOnPage);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tif (!vm.watchable) {\r\n\t\t\t\tvm.executor.addRowChangeHandler(function (row) {\r\n\t\t\t\t\t$timeout(function () {\r\n\t\t\t\t\t\trefreshRow(row);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\thighlightRows(vm.highlightedRows);\r\n\r\n\t\t\tif (vm.inlineMode) {\r\n\t\t\t\tgridApi.edit.on.afterCellEdit($scope, function (item, colDef) {\r\n\t\t\t\t\tvm.inlineEditMode = false;\r\n\t\t\t\t\tvm.onCellChanged({ item: item, colDef: colDef });\r\n\t\t\t\t});\r\n\r\n\t\t\t\tgridApi.edit.on.beginCellEdit($scope, function (/*item, colDef*/) {\r\n\t\t\t\t\tvm.inlineEditMode = true;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\t};\r\n\tvm.inlineEditMode = false;\r\n\r\n\tvm.imgHost = mxConfig.get('imgHosts').attachments;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvar enableFiltering = Boolean(vm.executor.preprocessors.columnSearchPreprocessor);\r\n\t\tvar enableSorting = Boolean(vm.executor.preprocessors.sortingPreprocessor);\r\n\r\n\t\tangular.extend(vm.options, {\r\n\t\t\tenableFiltering: enableFiltering,\r\n\t\t\tuseUiGridDraggableRowsHandle: vm.enableDragAndDrop,\r\n\t\t\tenableSorting: enableSorting,\r\n\t\t\trowTemplate: getRowTemplate(),\r\n\t\t});\r\n\r\n\t\tif (vm.inlineMode) {\r\n\t\t\tvm.options.cellEditableCondition = function ($scope) {\r\n\t\t\t\treturn !vm.grid.disabled && !vm.grid.readOnly && vm.grid.isEntityEditable($scope.row.entity);\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tvm.initialized = true;\r\n\r\n\t\tif (vm.mxContainerCtrl) {\r\n\t\t\tvm.mxContainerCtrl.registerChild($scope);\r\n\t\t}\r\n\t};\r\n\r\n\tvm.$onChanges = function (changes) {\r\n\t\tif (changes.rowHeight) {\r\n\t\t\tvm.options.rowHeight = changes.rowHeight.currentValue;\r\n\t\t}\r\n\r\n\t\tif (!vm.gridApi) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (changes.columns) {\r\n\t\t\tif ($element.is(':visible')) {\r\n\t\t\t\tsetColumns(changes.columns.currentValue);\r\n\t\t\t\trefreshData();\r\n\t\t\t} else if (!isVisibleWatcher) {\r\n\t\t\t\tisVisibleWatcher = $scope.$watch(\r\n\t\t\t\t\tfunction () {\r\n\t\t\t\t\t\treturn $element.is(':visible');\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfunction (isVisible) {\r\n\t\t\t\t\t\tif (isVisible) {\r\n\t\t\t\t\t\t\tsetColumns(changes.columns.currentValue);\r\n\t\t\t\t\t\t\trefreshData();\r\n\r\n\t\t\t\t\t\t\t// remove watcher\r\n\t\t\t\t\t\t\tisVisibleWatcher();\r\n\t\t\t\t\t\t\tisVisibleWatcher = undefined;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (changes.highlightedRows) {\r\n\t\t\thighlightRows(changes.highlightedRows.currentValue);\r\n\t\t}\r\n\r\n\t\tif (changes.selectionPickerHeight && vm.fullHeight) {\r\n\t\t\tif (!isNaN(changes.selectionPickerHeight.currentValue)) {\r\n\t\t\t\tsetFullHeight();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Wait while grid will be visible and then call `handleWindowResize()`\r\n\tif (!$element.is(':visible')) {\r\n\t\tvar firstVisibilityWatch = $scope.$watch(\r\n\t\t\t$.debounce(300, function () {\r\n\t\t\t\tif ($element.is(':visible')) {\r\n\t\t\t\t\tvm.gridApi.core.handleWindowResize();\r\n\t\t\t\t\t// remove watcher\r\n\t\t\t\t\tfirstVisibilityWatch();\r\n\t\t\t\t\tfirstVisibilityWatch = undefined;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\t//Overrides angular-ui-grids on-mousewheel function, which destroys scrolling when the grid has a certain height\r\n\tgritUtil.on.mousewheel = function () {};\r\n\r\n\tvm.processObject = processObject;\r\n\tvm.onInternalItemClick = onInternalItemClick;\r\n\tvm.onInternalRightItemClick = onInternalRightItemClick;\r\n\tvm.onInternalDblItemClick = onInternalDblItemClick;\r\n\tvm.onAllRowsSelectionClick = onAllRowsSelectionClick;\r\n\tvm.onRowSelectionClick = onRowSelectionClick;\r\n\tvm.onColumnFilterMenuKeyDown = onColumnFilterMenuKeyDown;\r\n\r\n\t/* Some tricks aka kostyls which should be removed */\r\n\tinitTricks();\r\n\r\n\tvar clickHandler = $mdUtil.debounce(function (type, row) {\r\n\t\tswitch (type) {\r\n\t\t\tcase 'left':\r\n\t\t\t\tvm.onItemClick({ item: row.entity });\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'dbl':\r\n\t\t\t\tvm.onItemDblClick({ item: row.entity });\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}, 350);\r\n\r\n\treturn vm;\r\n\r\n\tfunction setFullHeight() {\r\n\t\tconst isInsidePanel = $($element).closest('.layout_container_mode_panel_inner, mx-side-panel-tab-body').is('.layout_container_mode_panel_inner');\r\n\t\tlet layoutBottomOffset = isInsidePanel ? 22 : 0;\r\n\t\tlet dialogButtonsOffset = 46;\r\n\t\tconst dialogBottomErrorsPlaceholder = $('.mx-side-panel-tab.active-tab mx-form-errors').height() || 0;\r\n\t\tlet additionalGap = isInsidePanel ? 30 : 8;\r\n\t\tif (typeof vm.fullHeight === 'object') {\r\n\t\t\tlayoutBottomOffset = typeof vm.fullHeight.layoutBottomOffset === 'number' ? vm.fullHeight.layoutBottomOffset : layoutBottomOffset;\r\n\t\t\tdialogButtonsOffset = typeof vm.fullHeight.dialogButtonsOffset === 'number' ? vm.fullHeight.dialogButtonsOffset : dialogButtonsOffset;\r\n\t\t}\r\n\r\n\t\tlet nearestVisibleEl = $element;\r\n\t\twhile (!nearestVisibleEl.is(':visible')) {\r\n\t\t\tnearestVisibleEl = nearestVisibleEl.parent();\r\n\t\t}\r\n\t\tif ($element !== nearestVisibleEl) {\r\n\t\t\tadditionalGap += 30;\r\n\t\t}\r\n\r\n\t\tlet offset = nearestVisibleEl.offset().top + layoutBottomOffset + additionalGap + dialogBottomErrorsPlaceholder + dialogButtonsOffset;\r\n\r\n\t\t// LookUp Dialog MultiSelection case\r\n\t\tif (!isNaN(vm.selectionPickerHeight)) {\r\n\t\t\toffset += vm.selectionPickerHeight;\r\n\t\t}\r\n\r\n\t\t$element.css('min-height', 'calc(100vh - ' + Math.ceil(offset) + 'px)');\r\n\t\tvm.gridApi.grid.gridHeight = $element[0].offsetHeight;\r\n\t\tvm.gridApi.grid.buildStyles();\r\n\t}\r\n\r\n\tfunction onColumnFilterMenuKeyDown($event) {\r\n\t\t// By default md-menu will be closed if TAB is pressed.\r\n\t\t// Here this TAB-pressed event is stopped in all cases except pressed on ApplyButton.\r\n\t\t// ApplyButton is the last element of filter menu, so after TAB is pressed on it\r\n\t\t// the menu should be closed and keyboard navigation will continue throw other part of the document\r\n\t\tif ($event.which === $mdConstant.KEY_CODE.TAB) {\r\n\t\t\tif (!$event.target.classList.contains('mx-grid--column-filter-panel-apply')) {\r\n\t\t\t\t$event.stopPropagation();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Left/Right keys doesn't work for inside . Let's prevent it\r\n\t\tif ($event.which === $mdConstant.KEY_CODE.LEFT_ARROW || $event.which === $mdConstant.KEY_CODE.RIGHT_ARROW) {\r\n\t\t\t$event.stopPropagation();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction onInternalItemClick(event, row) {\r\n\t\tevent.stopPropagation();\r\n\t\thighlightRows([row.entity], vm.inlineEditMode);\r\n\t\tclickHandler('left', row);\r\n\t}\r\n\r\n\tfunction onInternalRightItemClick(event, row) {\r\n\t\tevent.stopPropagation();\r\n\t\thighlightRows([row.entity]);\r\n\t\tvm.onItemRightClick({ item: row.entity });\r\n\t}\r\n\r\n\tfunction onInternalDblItemClick(event, row) {\r\n\t\tevent.stopPropagation();\r\n\t\thighlightRows([row.entity], vm.inlineMode);\r\n\t\tclickHandler('dbl', row);\r\n\t}\r\n\r\n\tfunction refreshGridCanvas() {\r\n\t\tvm.gridApi.grid.redrawInPlace(true);\r\n\t\t$scope.$evalAsync(function () {\r\n\t\t\tvm.gridApi.grid.refreshCanvas(true);\r\n\t\t\tvm.gridApi.grid.callDataChangeCallbacks(uiGridConstants.dataChange.ROW);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction refreshRow(entity) {\r\n\t\tvar row = vm.gridApi.grid.rows.filter(function (row) {\r\n\t\t\treturn row.entity === entity;\r\n\t\t})[0];\r\n\t\tif (row) {\r\n\t\t\trow.setRowInvisible(row);\r\n\t\t\t$timeout(function () {\r\n\t\t\t\trow.clearRowInvisible(row);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction scrollToItem(item) {\r\n\t\t// fix: we have to reset this property to fix ui-grid's calculations (NGR)\r\n\t\tvm.gridApi.grid.renderContainers.body.prevScrolltopPercentage = undefined;\r\n\t\t// end of fix\r\n\t\t// vm.gridApi.grid.scrollTo(item);\r\n\t\tvm.gridApi.grid.scrollToIfNecessary(item, null);\r\n\t}\r\n\r\n\tfunction onRowSelectionClick(event, clickedRow) {\r\n\t\tevent.stopPropagation();\r\n\r\n\t\tif (event.shiftKey && previousClickedRowIndex !== -1) {\r\n\t\t\tvar index = vm.gridApi.grid.rows.indexOf(clickedRow);\r\n\t\t\tvar startIndex = Math.min(index, previousClickedRowIndex);\r\n\t\t\tvar endIndex = Math.max(index, previousClickedRowIndex);\r\n\t\t\tvar isSelect = !clickedRow.isSelected;\r\n\r\n\t\t\tvar selectedItems = [];\r\n\t\t\tvm.gridApi.grid.rows.forEach(function (row, index) {\r\n\t\t\t\tif (index < startIndex || index > endIndex) {\r\n\t\t\t\t\tif (row.isSelected) {\r\n\t\t\t\t\t\tselectedItems.push(row.entity);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (isSelect) {\r\n\t\t\t\t\t\tselectedItems.push(row.entity);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvm.executor.changePageSelection(selectedItems);\r\n\t\t} else {\r\n\t\t\tvm.executor.toggleRowSelection(clickedRow.entity);\r\n\t\t}\r\n\r\n\t\tpreviousClickedRowIndex = vm.gridApi.grid.rows.indexOf(clickedRow);\r\n\t}\r\n\r\n\tfunction onAllRowsSelectionClick(event) {\r\n\t\tevent.stopPropagation();\r\n\r\n\t\tif (vm.allRowsIsSelected) {\r\n\t\t\tvm.executor.changePageSelection([]);\r\n\t\t} else {\r\n\t\t\tvm.executor.changePageSelection(vm.executor.dataItems);\r\n\t\t}\r\n\r\n\t\tpreviousClickedRowIndex = -1;\r\n\t}\r\n\r\n\tfunction isAllRowsSelected() {\r\n\t\treturn (\r\n\t\t\tBoolean(vm.gridApi.grid.rows.length) &&\r\n\t\t\tvm.gridApi.grid.rows.every(function (row) {\r\n\t\t\t\treturn row.isSelected;\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tfunction selectItems(selectedItems) {\r\n\t\tif (!Array.isArray(selectedItems)) {\r\n\t\t\tselectedItems = [];\r\n\t\t}\r\n\t\tvm.gridApi.grid.rows.forEach(function (row) {\r\n\t\t\trow.isSelected = selectedItems.indexOf(row.entity) >= 0;\r\n\t\t});\r\n\r\n\t\tvm.allRowsIsSelected = isAllRowsSelected();\r\n\t}\r\n\r\n\tfunction highlightRows(items, withoutScrolling) {\r\n\t\tif (!Array.isArray(items)) {\r\n\t\t\titems = [];\r\n\t\t}\r\n\r\n\t\tvar highlightedRows = [];\r\n\r\n\t\tvm.gridApi.grid.rows.forEach(function (row) {\r\n\t\t\tif (items.indexOf(row.entity) >= 0) {\r\n\t\t\t\trow.isHighlighted = true;\r\n\t\t\t\thighlightedRows.push(row);\r\n\t\t\t} else {\r\n\t\t\t\trow.isHighlighted = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (highlightedRows.length === 1 && !withoutScrolling) {\r\n\t\t\tscrollToItem(highlightedRows[0]);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction processObject(data, col) {\r\n\t\tif (!col || typeof data === 'undefined') {\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\tvar column = col.colDef.item;\r\n\r\n\t\tif (!column || column.IsEnum) {\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\tswitch (column.AttributeValueType) {\r\n\t\t\tcase mx.shell.ObjectPropertyType.String.name:\r\n\t\t\tcase mx.shell.ObjectPropertyType.Guid.name:\r\n\t\t\tcase mx.shell.ObjectPropertyType.Text.name:\r\n\t\t\t\treturn typeof data === 'string' ? mx.components.Utils.htmlEncode(data) : data;\r\n\r\n\t\t\tcase mx.shell.ObjectPropertyType.Integer.name:\r\n\t\t\tcase mx.shell.ObjectPropertyType.Float.name:\r\n\t\t\tcase mx.shell.ObjectPropertyType.Long.name:\r\n\t\t\tcase mx.shell.ObjectPropertyType.Decimal.name:\r\n\t\t\t\treturn col.colDef.item.AttributeValueType && !col.colDef.item.ReferenceTo\r\n\t\t\t\t\t? i18n.formatNumber(data, col.colDef.item.AttributeValueType, col.colDef.item.Format)\r\n\t\t\t\t\t: data;\r\n\r\n\t\t\tcase mx.shell.ObjectPropertyType.Currency.name:\r\n\t\t\t\tvar currencyConfig = vm.currencyConfig;\r\n\t\t\t\treturn typeof data === 'object'\r\n\t\t\t\t\t? i18n.formatCurrency(\r\n\t\t\t\t\t\t\tdata,\r\n\t\t\t\t\t\t\tundefined,\r\n\t\t\t\t\t\t\tcurrencyConfig && currencyConfig.showCurrencyCode !== true && currencyConfig.showCurrencyCode !== 'true',\r\n\t\t\t\t\t\t\tcurrencyConfig.availableCurrencies\r\n\t\t\t\t\t )\r\n\t\t\t\t\t: data;\r\n\t\t\tcase mx.shell.ObjectPropertyType.Date.name:\r\n\t\t\t\treturn typeof data === 'string' ? i18n.formatUTCDate(data, col.colDef.item.Format) : data;\r\n\t\t\tcase mx.shell.ObjectPropertyType.Color.name:\r\n\t\t\t\treturn typeof data === 'string' ? data.replace(/0xff/i, '#') : data;\r\n\t\t\tdefault:\r\n\t\t\t\treturn data;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction handleScript(column, row, script) {\r\n\t\tvar cacheFieldName = '_' + column.Name + '_scriptResult';\r\n\t\tif (row.entity[cacheFieldName]) {\r\n\t\t\treturn row.entity[cacheFieldName];\r\n\t\t} else {\r\n\t\t\ttry {\r\n\t\t\t\tvar func = new Function('$item', '$value', script);\r\n\t\t\t\treturn func(row.entity, row.entity[column.Name + '_Value'] || row.entity[column.Name]);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tvar type = column.ImageScript ? ' [Image Script]' : column.ColorScript ? ' [Color Script]' : '';\r\n\t\t\t\tconsole.error('Error in DataQuery column ' + (column.Title || column.Name) + type + ': ' + e.message);\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction graphicType(row, col) {\r\n\t\tvar path = getGraphicPath(row, col);\r\n\t\tif (!path) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (path.indexOf('/') >= 0) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\treturn 2;\r\n\t}\r\n\r\n\tfunction calcColor(row, item) {\r\n\t\tvar clr = null;\r\n\r\n\t\tif (item.ColorType) {\r\n\t\t\tclr = handleScript(item, row, item.ColorScript);\r\n\t\t} else {\r\n\t\t\tclr = row.entity[item.Name + '_Color'];\r\n\t\t}\r\n\r\n\t\treturn clr && clr !== null ? clr.trim().toLowerCase().replace('0xff', '#') : null;\r\n\t}\r\n\r\n\tfunction getGraphicPath(row, col) {\r\n\t\tvar item = col.colDef.item;\r\n\r\n\t\tvar imageString;\r\n\t\tif (item.ImageScript) {\r\n\t\t\timageString = handleScript(item, row, item.ImageScript);\r\n\t\t} else {\r\n\t\t\timageString = row.entity[item.Name + '_Image'] || row.entity[item.Name];\r\n\t\t}\r\n\r\n\t\treturn imageString === null || imageString.indexOf('/') >= 0 ? imageString : imageString.trim().replace(/\\s+/g, '_');\r\n\t}\r\n\r\n\tfunction colorToRgba(color, alpha) {\r\n\t\tif (color && color !== null && color.includes('#')) {\r\n\t\t\t// if (hex) -> rgba\r\n\t\t\tvar result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(color);\r\n\t\t\tif (result) {\r\n\t\t\t\treturn 'rgba(' + parseInt(result[1], 16) + ',' + parseInt(result[2], 16) + ',' + parseInt(result[3], 16) + ',' + alpha || '0.5' + ')';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn color;\r\n\t}\r\n\r\n\tfunction setColumns() {\r\n\t\tvar columns = vm.columns;\r\n\r\n\t\tvar rowTextData = _.find(columns, ['ColorType', DataQueryEnums.ColorTypeEnum.RowText]);\r\n\t\tvar rowBgData = _.find(columns, ['ColorType', DataQueryEnums.ColorTypeEnum.RowBackground]);\r\n\r\n\t\tcolumns = columns.filter(function (clm) {\r\n\t\t\treturn clm.DisplayType !== DataQueryEnums.ColumnDisplayTypeEnum.Hidden; // Exclude Visible None\r\n\t\t});\r\n\r\n\t\tif (vm.enableRowSelection) {\r\n\t\t\tvar selectionColumn = {\r\n\t\t\t\tType: 'selectItemCheckbox',\r\n\t\t\t\tAttributeValueType: 'selectItemCheckbox',\r\n\t\t\t\tAlignment: DataQueryEnums.ColumnAlignmentsEnum.Center,\r\n\t\t\t\tName: 'Sys-selectItemCheckbox',\r\n\t\t\t\tWidth: 40,\r\n\t\t\t\tenableCellEdit: false,\r\n\t\t\t\tAriaHidden: true,\r\n\t\t\t};\r\n\t\t\tcolumns = [selectionColumn].concat(columns);\r\n\t\t}\r\n\r\n\t\t/*\r\n\t\tTODO: implementation of quickfilter-column is needed\r\n\t\tif (vm.executor.preprocessors.quickFilter) {\r\n\t\t\tvar quicFilterColumn = {\r\n\t\t\t\tType: 'quickfilter',\r\n\t\t\t\tAttributeValueType: 'quickfilter',\r\n\t\t\t\tAlignment: '1',\r\n\t\t\t\tName: 'Sys-Flags',\r\n\t\t\t\tWidth: '58px',\r\n\t\t\t\tTitle: i18n.get('solutionBuilderAgent.common.quickFilter'),\r\n\t\t\t\tLabels: vm.quickFilterPreprocessor.titles,\r\n\t\t\t\tParts: vm.quickFilterPreprocessor.parts,\r\n\t\t\t\tAriaHidden: true\r\n\t\t\t};\r\n\t\t}*/\r\n\r\n\t\tvm.options.columnDefs = columns.map(function (column) {\r\n\t\t\tvar alignClass =\r\n\t\t\t\t'mx-grid-cell-' +\r\n\t\t\t\t((column.Alignment === DataQueryEnums.ColumnAlignmentsEnum.Left && 'left') ||\r\n\t\t\t\t\t(column.Alignment === DataQueryEnums.ColumnAlignmentsEnum.Center && 'center') ||\r\n\t\t\t\t\t(column.Alignment === DataQueryEnums.ColumnAlignmentsEnum.Right && 'right'));\r\n\r\n\t\t\tvar cellTemplate = _getCellTempate(vm.watchable),\r\n\t\t\t\teditableCellTemplate,\r\n\t\t\t\theaderTemplate = templates.headerTemplate,\r\n\t\t\t\tenableCellEdit = Boolean(column.RawValuePropertyName) && vm.inlineMode;\r\n\r\n\t\t\tswitch (column.AttributeValueType) {\r\n\t\t\t\tcase mx.shell.ObjectPropertyType.Icon.name:\r\n\t\t\t\t\tcellTemplate = templates.iconCell;\r\n\t\t\t\t\teditableCellTemplate = templates.iconEditCell;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase mx.shell.ObjectPropertyType.Integer.name:\r\n\t\t\t\tcase mx.shell.ObjectPropertyType.Float.name:\r\n\t\t\t\tcase mx.shell.ObjectPropertyType.Long.name:\r\n\t\t\t\tcase mx.shell.ObjectPropertyType.Decimal.name:\r\n\t\t\t\t\teditableCellTemplate = templates.numberEditCell;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase mx.shell.ObjectPropertyType.Currency.name:\r\n\t\t\t\t\teditableCellTemplate = templates.currencyEditCell;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase mx.shell.ObjectPropertyType.Date.name:\r\n\t\t\t\t\teditableCellTemplate = templates.dateEditCell;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase mx.shell.ObjectPropertyType.Color.name:\r\n\t\t\t\t\tcellTemplate = templates.colorCell;\r\n\t\t\t\t\teditableCellTemplate = templates.colorEditCell;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase mx.shell.ObjectPropertyType.Boolean.name:\r\n\t\t\t\t\tenableCellEdit = false;\r\n\t\t\t\t\tcellTemplate = vm.inlineMode ? templates.editedBooleanCell : vm.watchable ? templates.readOnlyBooleanCell : templates.readOnlyBooleanCellOneTime;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'selectItemCheckbox':\r\n\t\t\t\t\tcellTemplate = templates.selectItemCheckboxCell();\r\n\t\t\t\t\theaderTemplate = templates.selectItemCheckboxHeader();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'quickfilter':\r\n\t\t\t\t\tcellTemplate = templates.quickFilterCell(column.Labels, column.Parts);\r\n\t\t\t\t\theaderTemplate = templates.quickFilterHeader(column.Labels, column.Parts);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (column.DisplayImage === DataQueryEnums.DisplayImageEnum.Image) {\r\n\t\t\t\tcellTemplate = templates.imageCell;\r\n\t\t\t} else if (column.DisplayImage === DataQueryEnums.DisplayImageEnum.ImageWithText) {\r\n\t\t\t\tcellTemplate = templates.imageCell + _getCellTempate();\r\n\t\t\t}\r\n\r\n\t\t\tif (column.IsEnum) {\r\n\t\t\t\teditableCellTemplate = '';\r\n\t\t\t}\r\n\r\n\t\t\tif (column.IsPickup) {\r\n\t\t\t\teditableCellTemplate = '';\r\n\t\t\t}\r\n\r\n\t\t\tvar field = column.Name;\r\n\t\t\tvar visible = column.IsDisplay && (column.visible === undefined ? column.DisplayType !== DataQueryEnums.ColumnDisplayTypeEnum.InvisibleByDefault : column.visible);\r\n\r\n\t\t\tvar mappedColumn = {\r\n\t\t\t\teditableCellTemplate: editableCellTemplate,\r\n\t\t\t\tfield: field,\r\n\t\t\t\titem: column,\r\n\t\t\t\trowTextData: rowTextData,\r\n\t\t\t\trowBackgroundData: rowBgData,\r\n\t\t\t\tgetImage: getGraphicPath,\r\n\t\t\t\tgraphicType: graphicType,\r\n\t\t\t\tgetColor: getColor,\r\n\t\t\t\tdisplayName: column.Title,\r\n\t\t\t\tvisible: visible,\r\n\t\t\t\twidth: column.Width || '*',\r\n\t\t\t\tminWidth: 50,\r\n\t\t\t\tformatFn: column.formatFn,\r\n\t\t\t\tenableCellEdit: enableCellEdit,\r\n\t\t\t\tcellClass: alignClass,\r\n\t\t\t\theaderCellClass: alignClass,\r\n\t\t\t\tenableSorting: vm.options.enableSorting && column.Sorting !== DataQueryEnums.ColumnSortingEnum.Disabled,\r\n\t\t\t\tcellTemplate: cellTemplate,\r\n\t\t\t\theaderCellTemplate: headerTemplate,\r\n\t\t\t\tcellFilter: column.cellFilter,\r\n\t\t\t\tfilterHeaderTemplate: templates.columnFilter,\r\n\t\t\t\tfilter: column.filter,\r\n\t\t\t\tgroupingIsAvailable: false, //column.groupingIsAvailable, //TODO: grouping is temporary disabled until new grids will be used for search pages\r\n\t\t\t\tariaHidden: column.AriaHidden,\r\n\t\t\t\tonGroupingClick: function (event, colDef) {\r\n\t\t\t\t\tvm.onGroupingClick({ event: event, column: colDef.item });\r\n\t\t\t\t},\r\n\t\t\t};\r\n\r\n\t\t\tif (vm.options.enableSorting && (column.Sorting === DataQueryEnums.ColumnSortingEnum.Ascending || column.Sorting === DataQueryEnums.ColumnSortingEnum.Descending)) {\r\n\t\t\t\tmappedColumn.sort = {\r\n\t\t\t\t\tdirection: column.Sorting === DataQueryEnums.ColumnSortingEnum.Ascending ? uiGridConstants.ASC : uiGridConstants.DESC,\r\n\t\t\t\t\tpriority: column.SortingPriority,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tObject.defineProperty(column, 'visible', {\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn visible;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\tif (newValue !== visible) {\r\n\t\t\t\t\t\tmappedColumn.visible = newValue && column.IsDisplay;\r\n\t\t\t\t\t\tvm.gridApi.core.notifyDataChange(uiGridConstants.dataChange.COLUMN);\r\n\t\t\t\t\t\tvisible = newValue;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\treturn mappedColumn;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getColor(row, col, isText) {\r\n\t\tvar colorType = isText ? DataQueryEnums.ColorTypeEnum.CellText : DataQueryEnums.ColorTypeEnum.CellBackground;\r\n\t\tvar rowColor = isText ? col.colDef.rowTextData : col.colDef.rowBackgroundData;\r\n\t\tvar color = null;\r\n\r\n\t\tif (!isText && col.colDef.item.Color) {\r\n\t\t\tcolor = col.colDef.item.Color;\r\n\t\t}\r\n\r\n\t\tif (!color && col.colDef.item.ColorType === colorType) {\r\n\t\t\tcolor = calcColor(row, col.colDef.item);\r\n\t\t}\r\n\r\n\t\tif (!color && rowColor) {\r\n\t\t\tcolor = calcColor(row, rowColor);\r\n\t\t}\r\n\r\n\t\tif (color) {\r\n\t\t\tvar res = {};\r\n\t\t\tif (color.indexOf(':') > 0) {\r\n\t\t\t\tvar arr = color.split(':');\r\n\t\t\t\tres[arr[0]] = arr[1];\r\n\t\t\t} else {\r\n\t\t\t\tres[isText ? 'color' : 'background-color'] = isText ? color : colorToRgba(color, 0.3);\r\n\t\t\t}\r\n\r\n\t\t\tif (mx.isEnhancedColorContrastMode && res['color']) {\r\n\t\t\t\tcontrastColorCache[res['color']] ||= colorService.enhanceColorContrast(res['color'], undefined, 3);\r\n\t\t\t\tres['color'] = contrastColorCache[res['color']];\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction refreshData() {\r\n\t\tvar prevGridData = vm.items;\r\n\t\tvm.items = [];\r\n\t\t$timeout(function () {\r\n\t\t\tvm.items = prevGridData;\r\n\t\t}, 1);\r\n\t}\r\n\r\n\t/* Some tricks aka kostyls which should be removed */\r\n\tfunction initTricks() {\r\n\t\t// Trick which fixes sets of width/height to 0 for mx-grids which are hidden on UI\r\n\t\t$scope.$watch('vm.gridApi.grid.gridWidth', function (newVal, oldVal) {\r\n\t\t\tif (newVal === 0 && oldVal !== 0 && typeof oldVal === 'number') {\r\n\t\t\t\tvm.gridApi.grid.gridWidth = oldVal;\r\n\t\t\t}\r\n\t\t});\r\n\t\t$scope.$watch('vm.gridApi.grid.gridHeight', function (newVal, oldVal) {\r\n\t\t\tif (newVal === 0 && oldVal !== 0 && typeof oldVal === 'number') {\r\n\t\t\t\tvm.gridApi.grid.gridHeight = oldVal;\r\n\t\t\t}\r\n\t\t});\r\n\t\t// Fixes bug when grid is not visible but should be rendered.\r\n\t\t// In this case we will wait until it's visible.\r\n\t\t/*var _isReadyForRendering = $scope.$watch(function() {return $element.is(':visible');}, function (isVisible) {\r\n\t\t\tif (isVisible) {\r\n\t\t\t\tvm._isReadyForRendering = true;\r\n\t\t\t\t_isReadyForRendering();\r\n\t\t\t}\r\n\t\t});*/\r\n\r\n\t\twindow.onbeforeprint = function () {\r\n\t\t\t$scope.$evalAsync(function () {\r\n\t\t\t\tvm.options.minRowsToShow = vm.executor.dataItems.length;\r\n\t\t\t\tvm.options.virtualizationThreshold = vm.options.minRowsToShow;\r\n\t\t\t\t$element.find('.grid').css({ height: 60 + vm.options.minRowsToShow * vm.rowHeight + 'px' });\r\n\t\t\t\t$element.find('.ui-grid-viewport').css({\r\n\t\t\t\t\theight: 60 + vm.options.minRowsToShow * vm.rowHeight + 'px',\r\n\t\t\t\t\toverflow: 'visible',\r\n\t\t\t\t});\r\n\t\t\t\t$element.find('.ui-grid').css('position', 'static');\r\n\t\t\t});\r\n\t\t};\r\n\t\twindow.onafterprint = function () {\r\n\t\t\t$scope.$evalAsync(function () {\r\n\t\t\t\tvm.options.minRowsToShow = deviceService.screenMobile() ? 5 : 10;\r\n\t\t\t\tvm.options.virtualizationThreshold = vm.options.minRowsToShow;\r\n\t\t\t\t$element.find('.ui-grid-viewport').css({\r\n\t\t\t\t\theight: '',\r\n\t\t\t\t\tposition: 'absolute',\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t};\r\n\t}\r\n\r\n\tfunction loadTemplates() {\r\n\t\treturn {\r\n\t\t\t// pager: $templateCache.get('mx-grid/mx-grid-pager.html'),\r\n\r\n\t\t\theaderTemplate: $templateCache.get('mx-grid/mx-grid-header-cell.html'),\r\n\t\t\tcolumnFilter: $templateCache.get('mx-grid/mx-grid-column-filters/mx-grid-column-filter.html'),\r\n\r\n\t\t\teditedBooleanCell:\r\n\t\t\t\t'
    ',\r\n\r\n\t\t\tquickFilterCell: function (labels, parts) {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t' '\r\n\t\t\t\t);\r\n\t\t\t},\r\n\r\n\t\t\tquickFilterHeader: function (labels, parts) {\r\n\t\t\t\treturn ' ';\r\n\t\t\t},\r\n\r\n\t\t\ticonCell:\r\n\t\t\t\t'
    {{row.entity[col.field]}} {{row.entity[col.field]}}
    ',\r\n\t\t\tnumberEditCell: '',\r\n\t\t\ticonEditCell: '',\r\n\t\t\tcolorCell:\r\n\t\t\t\t'
    ' +\r\n\t\t\t\t'
     
    ' +\r\n\t\t\t\t'
    {{ grid.appScope.vm.processObject(COL_FIELD, col, row) }}' +\r\n\t\t\t\t'
    ',\r\n\r\n\t\t\timageCell:\r\n\t\t\t\t'
    ' +\r\n\t\t\t\t'' +\r\n\t\t\t\t'
    {{col.colDef.getImage(row,col)}}
    ' +\r\n\t\t\t\t'
    ',\r\n\r\n\t\t\tcolorEditCell: '',\r\n\r\n\t\t\tcurrencyEditCell: '',\r\n\t\t\tdateEditCell: '',\r\n\r\n\t\t\tselectItemCheckboxHeader: function () {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tselectItemCheckboxCell: function () {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\r\n\t\t\treadOnlyBooleanCellOneTime:\r\n\t\t\t\t' {{ ::MODEL_COL_FIELD?\"check_box\":\"check_box_outline_blank\"}}',\r\n\t\t\treadOnlyBooleanCell:\r\n\t\t\t\t' {{ MODEL_COL_FIELD?\"check_box\":\"check_box_outline_blank\"}}',\r\n\r\n\t\t\tactionRow:\r\n\t\t\t\t'
    ' +\r\n\t\t\t\t'edit' +\r\n\t\t\t\t'
    ',\r\n\r\n\t\t\teditForm: ' ',\r\n\t\t};\r\n\t}\r\n\r\n\tfunction getRowTemplate() {\r\n\t\treturn `\r\n\t\t\t
    \r\n\t\t`;\r\n\t}\r\n\r\n\tfunction _getCellTempate(isTextWatchable) {\r\n\t\t// \"::\" One-time binding is used because of MX-GRID performance issues.\r\n\t\t// if you need to refresh data dynamically - try to invent more smart way to do it instead of just removing \"::\"!\r\n\t\t// For exaple: make some additional parameter for grid (\"watchible/not wachible\"), or upadate it by some special events \"onGridItemUpdate ...\"\r\n\t\t// (Talk to Nick M.)\r\n\t\treturn (\r\n\t\t\t'
    '\r\n\t\t);\r\n\t}\r\n\r\n\tfunction preventHiddenGridRefresh() {\r\n\t\tvar allResizeEvents = $._data(window, 'events').resize || [];\r\n\t\tvar last = allResizeEvents.length - 1;\r\n\t\tvar uiGridResizeHandler = allResizeEvents[last].handler;\r\n\t\tif (uiGridResizeHandler.toString().indexOf('.gridWidth') > 0) {\r\n\t\t\tallResizeEvents[last].handler = function _mxGridResize() {\r\n\t\t\t\tif ($element.is(':visible')) {\r\n\t\t\t\t\tuiGridResizeHandler();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t$element.on('$destroy', function () {\r\n\t\t\t\t$(window).off('resize', uiGridResizeHandler);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default {\r\n\tbindings: {\r\n\t\tcolumns: '<',\r\n\t\tgrid: '<',\r\n\t\texecutor: '<',\r\n\t\titems: '<',\r\n\r\n\t\tenableRowSelection: '<',\r\n\t\tselectionPickerHeight: '<',\r\n\r\n\t\tenableDragAndDrop: '<',\r\n\t\tinlineMode: '<',\r\n\t\thighlightedRows: '<',\r\n\t\trowHeight: '<',\r\n\t\trowColoringEnabled: '<',\r\n\t\twatchable: '<',\r\n\t\tfullHeight: '<',\r\n\r\n\t\tonItemClick: '&',\r\n\t\tonItemDblClick: '&',\r\n\t\tonItemRightClick: '&',\r\n\r\n\t\tonGroupingClick: '&',\r\n\r\n\t\tonColumnVisibilityChanged: '&',\r\n\t\tonSortChanged: '&',\r\n\t\tonColumnPositionChanged: '&',\r\n\t\tonColumnSizeChanged: '&',\r\n\t\tonReorder: '&',\r\n\r\n\t\tonCellChanged: '&',\r\n\t},\r\n\trequire: {\r\n\t\tmxContainerCtrl: '?^^mxContainer',\r\n\t},\r\n\tcontroller: MxGridRenderCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n};\r\n","// Module\nvar code = \"
    \\r\\n\\r\\n\\t\\r\\n\\r\\n\\t
    \\r\\n\\t\\t\\t{{'components.common.noData' | mxi18n }}\\r\\n\\t
    \\r\\n\\t
    \\r\\n
    \";\n// Exports\nexport default code;","'use strict';\r\nimport template from './mx-grid-selection-picker.component.html';\r\n\r\nexport class MxGridSelectionPickerCtrl {\r\n\tstatic $inject = ['$element', '$timeout', 'mx.SolutionBuilderAgent.DialogOpenerService'];\r\n\r\n\tconstructor($element, $timeout, dialogOpenerService) {\r\n\t\tObject.assign(this, {\r\n\t\t\t$element,\r\n\t\t\t$timeout,\r\n\t\t\tdialogOpenerService,\r\n\t\t});\r\n\t\tthis.elementHeight = 0;\r\n\t}\r\n\r\n\t$onInit() {\r\n\t\tthis.grid.executor.addSelectionHandler(this.onSelectionChanged.bind(this));\r\n\t}\r\n\r\n\tonChipDblClick(row) {\r\n\t\tthis.dialogOpenerService.openPreview(row.getEntity(), undefined, undefined, this.parentViewController && this.parentViewController.mxView);\r\n\t}\r\n\r\n\tonChipRemoveClick(row) {\r\n\t\tthis.grid.executor.toggleRowSelection(row);\r\n\t}\r\n\r\n\tgetDisplayNameFromChip(row) {\r\n\t\treturn row.getEntity()._displayName;\r\n\t}\r\n\r\n\tonSelectionChanged() {\r\n\t\tthis.$timeout(() => {\r\n\t\t\tif (this.elementHeight !== this.$element[0].offsetHeight) {\r\n\t\t\t\tthis.elementHeight = this.$element[0].offsetHeight;\r\n\t\t\t\tthis.onHeightChanged({ height: this.elementHeight });\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport default {\r\n\tbindings: {\r\n\t\tgrid: '<',\r\n\t\tonHeightChanged: '&',\r\n\t},\r\n\trequire: {\r\n\t\tparentViewController: '?^^mxView',\r\n\t},\r\n\tcontroller: MxGridSelectionPickerCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n};\r\n","// Module\nvar code = \"
    \\r\\n\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{vm.getDisplayNameFromChip($chip)}}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t
    \\r\\n\\t\\t\\tclear\\r\\n\\t\\t
    \\r\\n\\r\\n\\t
    \\r\\n\\r\\n
    \";\n// Exports\nexport default code;","'use strict';\r\n\r\nBaseGridGridFactory.$inject = [\r\n\t'$q',\r\n\t'$mdUtil',\r\n\t'mx.shell.NotificationService',\r\n\t'mx.internationalization',\r\n\t'mx.SolutionBuilderAgent.MxGridHelperService',\r\n\t'mx.SolutionBuilderAgent.GridEnums',\r\n];\r\nexport default function BaseGridGridFactory($q, $mdUtil, notificationService, i18n, gridHelperService, GridEnums) {\r\n\tclass BaseGrid {\r\n\t\tconstructor() {\r\n\t\t\tthis.debouncedLoadItems = $mdUtil.debounce(this.loadItems.bind(this), 100);\r\n\t\t\tthis.initProperties();\r\n\t\t}\r\n\r\n\t\tasync init(personalizationKey) {\r\n\t\t\tthis.personalizationKey = personalizationKey;\r\n\r\n\t\t\tconst config = {\r\n\t\t\t\tpreprocessors: {\r\n\t\t\t\t\tpaging: {\r\n\t\t\t\t\t\tenabled: this.enablePaging,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsorting: {\r\n\t\t\t\t\t\tenabled: this.enableSorting,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsearch: {\r\n\t\t\t\t\t\tenabled: this.enableSearch,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcolumnSearch: {\r\n\t\t\t\t\t\tenabled: this.enableColumnSearch,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tadvanceSearch: {\r\n\t\t\t\t\t\tenabled: this.enableAdvanceSearch,\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t};\r\n\r\n\t\t\tthis.executor = await this.initDataQueryExecutor(config);\r\n\t\t\tthis.createItems = await this.initCreateButtonItems();\r\n\r\n\t\t\tthis.updateRequest();\r\n\r\n\t\t\tthis.executor.addSelectionHandler(this.selectionHandler.bind(this));\r\n\r\n\t\t\tthis.initialized = true;\r\n\t\t\tthis.executor.loading = true;\r\n\t\t\tthis.debouncedLoadItems();\r\n\t\t}\r\n\r\n\t\tinitProperties() {\r\n\t\t\tvar editMode = GridEnums.EditMode.None,\r\n\t\t\t\tdisableEdit = false,\r\n\t\t\t\theaderHidden = false,\r\n\t\t\t\tshowActionsPanel = false,\r\n\t\t\t\tshowSelectAll = false,\r\n\t\t\t\tinlineMode = false,\r\n\t\t\t\tenableDragAndDrop = false,\r\n\t\t\t\tenableSorting = true,\r\n\t\t\t\tenablePaging = true,\r\n\t\t\t\tenableSearch = true,\r\n\t\t\t\tenableColumnSearch = true,\r\n\t\t\t\tenableAdvanceSearch = false,\r\n\t\t\t\taddButtonHidden = true,\r\n\t\t\t\tcreateButtonHidden = true,\r\n\t\t\t\tcreateButtonInSelectionHidden = false,\r\n\t\t\t\tdeleteButtonHidden = true,\r\n\t\t\t\tremoveButtonHidden = true,\r\n\t\t\t\texportButtonHidden = false,\r\n\t\t\t\tcurrentRow,\r\n\t\t\t\thideItemFieldName,\r\n\t\t\t\treadOnly = false,\r\n\t\t\t\tdisabled = false;\r\n\r\n\t\t\tObject.defineProperties(this, {\r\n\t\t\t\t// input attributes from directive\r\n\t\t\t\taddButtonHidden: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn addButtonHidden;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (typeof newValue !== 'boolean') {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\taddButtonHidden = newValue;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tcreateButtonHidden: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn createButtonHidden || this.editMode === GridEnums.EditMode.None;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (typeof newValue !== 'boolean') {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcreateButtonHidden = newValue;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tcreateButtonInSelectionHidden: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn createButtonInSelectionHidden;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (typeof newValue !== 'boolean') {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcreateButtonInSelectionHidden = newValue;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tdeleteButtonHidden: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn deleteButtonHidden;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (typeof newValue !== 'boolean') {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdeleteButtonHidden = newValue;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tremoveButtonHidden: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn removeButtonHidden || this.editMode === GridEnums.EditMode.None;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (typeof newValue !== 'boolean') {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tremoveButtonHidden = newValue;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\texportButtonHidden: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn exportButtonHidden;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (typeof newValue !== 'boolean') {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\texportButtonHidden = newValue;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\theaderHidden: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn headerHidden;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (typeof newValue !== 'boolean') {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theaderHidden = newValue;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tshowActionsPanel: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn showActionsPanel;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (typeof newValue !== 'boolean') {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tshowActionsPanel = newValue;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tshowSelectAll: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn showSelectAll;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (typeof newValue !== 'boolean') {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tshowSelectAll = newValue;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tremoveButtonDisabled: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tvalue: true,\r\n\t\t\t\t},\r\n\t\t\t\tdeleteButtonDisabled: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tvalue: true,\r\n\t\t\t\t},\r\n\t\t\t\teditDisableFieldName: {\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t},\r\n\t\t\t\tremoveDisableFieldName: {\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t},\r\n\t\t\t\thideItemFieldName: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn hideItemFieldName;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\thideItemFieldName = newValue;\r\n\t\t\t\t\t\tthis.updateRequest();\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\ttemplateId: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t},\r\n\t\t\t\twizardId: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t},\r\n\t\t\t\touterContext: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t},\r\n\t\t\t\taddItemTitle: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t},\r\n\t\t\t\teditItemTitle: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t},\r\n\t\t\t\tenableDragAndDrop: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn enableDragAndDrop;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (typeof newValue !== 'boolean') {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tenableDragAndDrop = newValue;\r\n\t\t\t\t\t\tif (enableDragAndDrop) {\r\n\t\t\t\t\t\t\tthis.enableSorting = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tenableSorting: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn enableSorting;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (typeof newValue !== 'boolean') {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tenableSorting = newValue;\r\n\t\t\t\t\t\tif (enableDragAndDrop) {\r\n\t\t\t\t\t\t\tenableSorting = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tenablePaging: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn enablePaging;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (typeof newValue !== 'boolean') {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tenablePaging = newValue;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tenableSearch: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn enableSearch;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (typeof newValue !== 'boolean') {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tenableSearch = newValue;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tenableColumnSearch: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn enableColumnSearch;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (typeof newValue !== 'boolean') {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tenableColumnSearch = newValue;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tenableAdvanceSearch: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn enableAdvanceSearch;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (typeof newValue !== 'boolean') {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tenableAdvanceSearch = newValue;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tinlineMode: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn inlineMode || editMode === GridEnums.EditMode.Inline;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tinlineMode = Boolean(newValue);\r\n\t\t\t\t\t\tif (inlineMode) {\r\n\t\t\t\t\t\t\teditMode = GridEnums.EditMode.Inline;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\teditMode: {\r\n\t\t\t\t\t// none - 0, inline - 1, form - 2, wizard - 3, 4 - generic action\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn editMode;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (inlineMode) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\teditMode = GridEnums.EditMode.containsValue(newValue) ? newValue : GridEnums.EditMode.None;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tdisableEdit: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn disableEdit;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (typeof newValue !== 'boolean') {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdisableEdit = newValue;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\t// attributes from form\r\n\t\t\t\tparentView: {\r\n\t\t\t\t\t//parentView for back button in side panel\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t},\r\n\t\t\t\tserviceContext: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t},\r\n\t\t\t\tmxForm: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t},\r\n\t\t\t\tmxUiAccessibility: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t},\r\n\t\t\t\tcurrentRow: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn currentRow;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tcurrentRow = newValue;\r\n\t\t\t\t\t\tthis._currentRowHandlers.forEach(function (handler) {\r\n\t\t\t\t\t\t\thandler(currentRow);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\t_currentRowHandlers: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: false,\r\n\t\t\t\t\tvalue: [],\r\n\t\t\t\t},\r\n\t\t\t\treadOnly: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn readOnly || this.mxForm?.readOnly || this.mxUiAccessibility?.readOnly;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\treadOnly = Boolean(newValue);\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tdisabled: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn disabled || this.mxForm?.disabled || this.mxUiAccessibility?.disabled;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tdisabled = Boolean(newValue);\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tasync initDataQuery() {\r\n\t\t\treturn $q.reject('initDataQuery is not implemented in base grid');\r\n\t\t}\r\n\r\n\t\tasync initDataQueryExecutor(config) {\r\n\t\t\tconst dataQuery = await this.initDataQuery();\r\n\t\t\treturn gridHelperService.initExecutor(dataQuery, this.personalizationKey, config);\r\n\t\t}\r\n\r\n\t\tonChanges(changes) {\r\n\t\t\tif (changes.externalSelectedItems) {\r\n\t\t\t\tvar selectedItems = changes.externalSelectedItems.currentValue;\r\n\t\t\t\tif (this.executor) {\r\n\t\t\t\t\tselectedItems = Array.isArray(selectedItems) ? selectedItems : [];\r\n\t\t\t\t\tthis.executor.changeSelection(selectedItems);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tonDestroy() {\r\n\t\t\tthis.executor.onDestroy();\r\n\t\t}\r\n\r\n\t\titemClickHandler(row) {\r\n\t\t\tthis.currentRow = row;\r\n\t\t\tthis.editRow(row).catch(mx.logCatch);\r\n\t\t}\r\n\r\n\t\titemRightClickHandler(/*item*/) {}\r\n\r\n\t\titemDblClickHandler(row) {\r\n\t\t\tthis.currentRow = row;\r\n\t\t\tthis.editRow(row).catch(mx.logCatch);\r\n\t\t}\r\n\r\n\t\tgroupingClickHandler(/*column*/) {}\r\n\r\n\t\treorderHandler() {}\r\n\r\n\t\tselectionHandler(data) {\r\n\t\t\tif (data.allSelectedRows.length === 0) {\r\n\t\t\t\tthis.removeButtonDisabled = true;\r\n\t\t\t\tthis.deleteButtonDisabled = true;\r\n\t\t\t} else {\r\n\t\t\t\tif (this.removeDisableFieldName) {\r\n\t\t\t\t\tthis.removeButtonDisabled = data.allSelectedRows.some(function (row) {\r\n\t\t\t\t\t\treturn row.getEntity()[this.removeDisableFieldName] === true;\r\n\t\t\t\t\t}, this);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.removeButtonDisabled = false;\r\n\t\t\t\t}\r\n\t\t\t\t// deleteButtonDisabled is set from the real grid according to specific conditions\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tasync onAddButtonClick() {\r\n\t\t\ttry {\r\n\t\t\t\tconst entities = await this.findExistingEntities();\r\n\t\t\t\tthis.afterEntitiesCreated(entities);\r\n\t\t\t\tthis.updateRequest();\r\n\t\t\t\tthis.highlightedRows = await this.executor.addEntitiesAsNewRows(entities);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tmx.logCatch(e);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tasync onCreateButtonClick(item) {\r\n\t\t\ttry {\r\n\t\t\t\tawait this.createNewItem(item._type, item._itemType);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tmx.logCatch(e);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tisEntityEditable(entity) {\r\n\t\t\tif (!this.editDisableFieldName) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\treturn entity[this.editDisableFieldName] !== true;\r\n\t\t}\r\n\r\n\t\t_modifyRow(row) {\r\n\t\t\t//on add or edit\r\n\t\t\tvar entity = row.getEntity();\r\n\t\t\tvar editable = this.isEntityEditable(entity);\r\n\r\n\t\t\tif (this.editMode === GridEnums.EditMode.None || this.editMode === GridEnums.EditMode.Inline || !editable) {\r\n\t\t\t\treturn $q.when();\r\n\t\t\t}\r\n\t\t\tvar notChangedEntity = angular.copy(entity);\r\n\r\n\t\t\treturn this.editEntity(entity)\r\n\t\t\t\t.then(\r\n\t\t\t\t\tfunction (changedEntity) {\r\n\t\t\t\t\t\tthis.executor.setEntity(row, changedEntity);\r\n\t\t\t\t\t}.bind(this)\r\n\t\t\t\t)\r\n\t\t\t\t.catch(function (e) {\r\n\t\t\t\t\tmx.SolutionBuilderAgent.ExtendDeep(entity, notChangedEntity);\r\n\t\t\t\t\treturn $q.reject(e);\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\teditRow(row) {\r\n\t\t\tif (this.disableEdit) {\r\n\t\t\t\treturn $q.when();\r\n\t\t\t} else {\r\n\t\t\t\treturn this._modifyRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\teditEntity(entity) {\r\n\t\t\tswitch (this.editMode) {\r\n\t\t\t\tcase GridEnums.EditMode.None:\r\n\t\t\t\tcase GridEnums.EditMode.Inline:\r\n\t\t\t\t\treturn $q.when(entity); // do nothing\r\n\t\t\t\tcase GridEnums.EditMode.EditForm:\r\n\t\t\t\t\treturn this.openEditForm(entity);\r\n\t\t\t\tcase GridEnums.EditMode.Wizard:\r\n\t\t\t\t\treturn this.openWizard(entity);\r\n\t\t\t\tcase GridEnums.EditMode.GenericEdit:\r\n\t\t\t\t\treturn this.runGenericEdit(entity);\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn $q.reject('not implemented for editMode = ' + this.editMode);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tasync createNewItem(entityType, itemType) {\r\n\t\t\tlet newEntity;\r\n\t\t\ttry {\r\n\t\t\t\tnewEntity = await this.executor.createEntity(entityType, itemType);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tthrow Error(e);\r\n\t\t\t}\r\n\r\n\t\t\tthis.beforeEntityCreated(newEntity);\r\n\t\t\tconst createdRow = await this.executor.createRow(newEntity);\r\n\t\t\tthis.currentRow = createdRow;\r\n\r\n\t\t\ttry {\r\n\t\t\t\tawait this._modifyRow(createdRow);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tthis.afterEntityCreationCancelled(newEntity);\r\n\t\t\t\tthis.currentRow = null;\r\n\t\t\t\tthrow Error(e);\r\n\t\t\t}\r\n\r\n\t\t\tconst isCorrect = await this.executor.isEntityCorrect(createdRow.getEntity());\r\n\t\t\tif (!isCorrect) {\r\n\t\t\t\tthis.notifyCreatedItemIsIncorrect();\r\n\t\t\t\tthrow Error(mx.noLogCatchMessage('created item is incorrect'));\r\n\t\t\t}\r\n\r\n\t\t\tthis.afterEntitiesCreated([createdRow.getEntity()]);\r\n\t\t\tthis.updateRequest();\r\n\t\t\tthis.executor.addRows([createdRow]);\r\n\t\t\tthis.highlightedRows = [createdRow];\r\n\t\t\treturn createdRow;\r\n\t\t}\r\n\r\n\t\tnotifyCreatedItemIsIncorrect() {\r\n\t\t\tnotificationService.warning(i18n.get('solutionBuilderAgent.layouts.multiselection-tab.createdItemWasNotFound'));\r\n\t\t}\r\n\r\n\t\tasync initCreateButtonItems() {\r\n\t\t\treturn this.executor.allEntityTypes;\r\n\t\t}\r\n\r\n\t\tonRemoveButtonClick() {\r\n\t\t\tthis.removeEntities(this.executor.allSelectedEntities).then(() => {\r\n\t\t\t\tthis.executor.changeSelection([]);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tonDeleteButtonClick() {\r\n\t\t\tthis.deleteItems(this.executor.allSelectedEntities).then(this.onRemoveButtonClick.bind(this));\r\n\t\t}\r\n\r\n\t\tfindExistingEntities() {\r\n\t\t\treturn $q.reject('not implemented');\r\n\t\t}\r\n\r\n\t\tremoveEntities(/*allSelectedItems*/) {\r\n\t\t\treturn $q.reject('not implemented');\r\n\t\t}\r\n\r\n\t\tbeforeEntityCreated(/*newEntity*/) {}\r\n\r\n\t\tafterEntitiesCreated(/*newEntities*/) {}\r\n\r\n\t\tafterEntityCreationCancelled(/*newEntity*/) {}\r\n\r\n\t\tupdateRequest() {}\r\n\r\n\t\tgetPresetFields() {}\r\n\r\n\t\trunGenericPreview(entity) {\r\n\t\t\treturn gridHelperService.runGenericPreviewAction({\r\n\t\t\t\titem: entity,\r\n\t\t\t\tparentView: this.parentView,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tasync runGenericEdit(entity) {\r\n\t\t\tconst changedEntity = await (this._isNewEntity(entity)\r\n\t\t\t\t? gridHelperService.runGenericCreateAction({\r\n\t\t\t\t\t\t_type: entity._type,\r\n\t\t\t\t\t\t_itemType: entity._itemType,\r\n\t\t\t\t\t\tparentView: this.parentView,\r\n\t\t\t\t\t\tpresetFields: this.getPresetFields(),\r\n\t\t\t\t })\r\n\t\t\t\t: gridHelperService.runGenericEditAction({\r\n\t\t\t\t\t\titem: entity,\r\n\t\t\t\t\t\tparentView: this.parentView,\r\n\t\t\t\t\t\t// presetFields: this.getPresetFields()\r\n\t\t\t\t }));\r\n\r\n\t\t\tconst isCorrect = await this.executor.isEntityCorrect(changedEntity);\r\n\t\t\tif (!isCorrect) {\r\n\t\t\t\tthis.notifyCreatedItemIsIncorrect();\r\n\t\t\t\tthrow Error(mx.noLogCatchMessage('created item is incorrect'));\r\n\t\t\t}\r\n\r\n\t\t\treturn this.executor.loadEntityById(changedEntity._id);\r\n\t\t}\r\n\r\n\t\t_isNewEntity(entity) {\r\n\t\t\treturn typeof entity._id === 'undefined';\r\n\t\t}\r\n\r\n\t\t_getEditTitle(isNew) {\r\n\t\t\tvar title = isNew ? this.addItemTitle : this.editItemTitle;\r\n\t\t\tif (!title) {\r\n\t\t\t\ttitle = i18n.get(isNew ? 'solutionBuilderAgent.common.add_new' : 'solutionBuilderAgent.common.edit');\r\n\t\t\t}\r\n\r\n\t\t\treturn title;\r\n\t\t}\r\n\r\n\t\topenEditForm(entity) {\r\n\t\t\treturn gridHelperService.openEditForm(\r\n\t\t\t\t{\r\n\t\t\t\t\titem: entity,\r\n\t\t\t\t\ttitle: this._getEditTitle(this._isNewEntity(entity)),\r\n\t\t\t\t\tmxServiceContext: this.serviceContext,\r\n\t\t\t\t\ttemplateId: this.templateId,\r\n\t\t\t\t\t//TODO: is it possible to remove serviceContext here?\r\n\t\t\t\t\tdataModel: this.serviceContext?.mxServiceContext || this.mxForm?.entity || null,\r\n\t\t\t\t\treadOnly: this.readOnly,\r\n\t\t\t\t\tdisabled: this.disabled,\r\n\t\t\t\t},\r\n\t\t\t\tthis.parentView\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\topenWizard(entity) {\r\n\t\t\treturn gridHelperService.openWizard({\r\n\t\t\t\tpersonalizationKey: this.personalizationKey,\r\n\t\t\t\twizardId: this.wizardId,\r\n\t\t\t\twizardHeader: this._getEditTitle(this._isNewEntity(entity)),\r\n\t\t\t\tentity: entity,\r\n\t\t\t\touterContext: this.outerContext,\r\n\t\t\t\tparentView: this.parentView,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\taddCurrentRowChangeHandler(handler) {\r\n\t\t\tif (typeof handler === 'function') {\r\n\t\t\t\tthis._currentRowHandlers.push(handler);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tisGridReady() {\r\n\t\t\treturn Boolean(this.initialized);\r\n\t\t}\r\n\r\n\t\tloadItems() {\r\n\t\t\tif (this.isGridReady()) {\r\n\t\t\t\treturn this.executor.loadItems();\r\n\t\t\t} else {\r\n\t\t\t\tif (this.executor) {\r\n\t\t\t\t\tthis.executor.resetItems();\r\n\t\t\t\t}\r\n\t\t\t\treturn $q.when([]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn BaseGrid;\r\n}\r\n","'use strict';\r\n\r\nDynamicGridGridFactory.$inject = ['$q', 'mx.SolutionBuilderAgent.BaseGrid', 'mx.SolutionBuilderAgent.MxGridHelperService'];\r\nexport default function DynamicGridGridFactory($q, BaseGrid, gridHelperService) {\r\n\tclass DynamicGrid extends BaseGrid {\r\n\t\tconstructor() {\r\n\t\t\tsuper();\r\n\t\t}\r\n\r\n\t\tinitProperties() {\r\n\t\t\tsuper.initProperties();\r\n\r\n\t\t\tvar data = [],\r\n\t\t\t\tcolumns = [],\r\n\t\t\t\tshowAddButton = false,\r\n\t\t\t\tshowRemoveButton = false;\r\n\t\t\tthis.removeButtonHidden = true;\r\n\t\t\tthis.createButtonHidden = true;\r\n\r\n\t\t\tObject.defineProperties(this, {\r\n\t\t\t\tshowAddButton: {\r\n\t\t\t\t\t// obsolete attribute\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn showAddButton;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (typeof newValue !== 'boolean') {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tshowAddButton = newValue;\r\n\t\t\t\t\t\tthis.createButtonHidden = !newValue;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tshowRemoveButton: {\r\n\t\t\t\t\t// obsolete attribute\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn showRemoveButton;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (typeof newValue !== 'boolean') {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tshowRemoveButton = newValue;\r\n\t\t\t\t\t\tthis.removeButtonHidden = !newValue;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\r\n\t\t\t\taddButtonHidden: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function () {},\r\n\t\t\t\t},\r\n\t\t\t\titems: {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newData) {\r\n\t\t\t\t\t\tdata = newData;\r\n\r\n\t\t\t\t\t\tif (this.executor) {\r\n\t\t\t\t\t\t\tthis.updateRequest();\r\n\t\t\t\t\t\t\tthis.debouncedLoadItems();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tcolumns: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn columns;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newData) {\r\n\t\t\t\t\t\tcolumns = Array.isArray(newData) ? newData : [];\r\n\r\n\t\t\t\t\t\tif (this.executor) {\r\n\t\t\t\t\t\t\tvar dq = gridHelperService.initStaticDQ(columns);\r\n\t\t\t\t\t\t\tthis.executor.setDataQuery(dq);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tasync initDataQuery() {\r\n\t\t\treturn gridHelperService.initStaticDQ(this.columns);\r\n\t\t}\r\n\r\n\t\tupdateRequest() {\r\n\t\t\tif (this.executor) {\r\n\t\t\t\tthis.executor.updateRequestOptions({\r\n\t\t\t\t\titems: this.items,\r\n\t\t\t\t\thideItemFieldName: this.hideItemFieldName,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tbeforeEntityCreated(entity) {\r\n\t\t\tthis._internalCreatingEntity = entity;\r\n\t\t\tthis.items.push(entity);\r\n\t\t}\r\n\r\n\t\t_removeEntitiesFromData(entities) {\r\n\t\t\tmx.components.Utils.removeItemsFromArray(this.items, entities);\r\n\t\t}\r\n\r\n\t\tafterEntityCreationCancelled(entity) {\r\n\t\t\tthis._internalCreatingEntity = null;\r\n\t\t\tthis._removeEntitiesFromData([entity]);\r\n\t\t}\r\n\r\n\t\tafterEntitiesCreated(/*entities*/) {\r\n\t\t\tthis._internalCreatingEntity = null;\r\n\t\t\tif (typeof this.items.changed === 'function') {\r\n\t\t\t\tthis.items.changed();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tremoveEntities(entities) {\r\n\t\t\tthis._removeEntitiesFromData(entities);\r\n\r\n\t\t\tthis.updateRequest();\r\n\t\t\treturn this.loadItems();\r\n\t\t}\r\n\t}\r\n\r\n\treturn DynamicGrid;\r\n}\r\n","'use strict';\r\n\r\nMultiFragmentGridGridFactory.$inject = [\r\n\t'$q',\r\n\t'mx.SolutionBuilderAgent.DynamicGrid',\r\n\t'mx.SolutionBuilderAgent.BaseGrid',\r\n\t'mx.SolutionBuilderAgent.MxGridHelperService',\r\n\t'mx.SolutionBuilderAgent.GridEnums',\r\n];\r\nexport default function MultiFragmentGridGridFactory($q, DynamicGrid, BaseGrid, gridHelperService, GridEnums) {\r\n\tclass MultiFragmentGrid extends DynamicGrid {\r\n\t\tconstructor() {\r\n\t\t\tsuper();\r\n\t\t}\r\n\r\n\t\tinitProperties() {\r\n\t\t\tBaseGrid.prototype.initProperties.apply(this);\r\n\r\n\t\t\tvar objectId,\r\n\t\t\t\tdata = [];\r\n\r\n\t\t\tObject.defineProperties(this, {\r\n\t\t\t\titems: {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newData) {\r\n\t\t\t\t\t\tif (newData instanceof mx.SolutionBuilderAgent.DataModelMultiFragmentArray) {\r\n\t\t\t\t\t\t\tdata = newData;\r\n\t\t\t\t\t\t\tdata.onChange(\r\n\t\t\t\t\t\t\t\tfunction (arr, fName, args) {\r\n\t\t\t\t\t\t\t\t\t//don't reload data if it is internal adding new item\r\n\t\t\t\t\t\t\t\t\tif (this._internalCreatingEntity && fName === 'push' && this._internalCreatingEntity === args[0]) {\r\n\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tthis.updateRequest();\r\n\t\t\t\t\t\t\t\t\tthis.debouncedLoadItems();\r\n\t\t\t\t\t\t\t\t}.bind(this)\r\n\t\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\t\tthis.updateRequest();\r\n\t\t\t\t\t\t\tthis.debouncedLoadItems();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//temporary for entity as service\r\n\t\t\t\t\t\t//TODO: refactor this after using DataModelArray\r\n\t\t\t\t\t\tif (Array.isArray(newData)) {\r\n\t\t\t\t\t\t\tdata = newData;\r\n\t\t\t\t\t\t\tthis.updateRequest();\r\n\t\t\t\t\t\t\tthis.debouncedLoadItems();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\r\n\t\t\t\tobjectId: {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\t//TODO: get objectId from DataModel as in RelationGrid (to support Wizards as well)\r\n\t\t\t\t\t\treturn objectId || (this.data && this.data.objectId);\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newObjectId) {\r\n\t\t\t\t\t\tobjectId = newObjectId;\r\n\r\n\t\t\t\t\t\tthis.updateRequest();\r\n\t\t\t\t\t\tthis.debouncedLoadItems();\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tcolumnDefinition: {\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t},\r\n\t\t\t\tentityClassName: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tasync initDataQuery() {\r\n\t\t\treturn gridHelperService.initDQByDefinition(this.columnDefinition, this.entityClassName, GridEnums.DataDefinitionGridTypes.MultiFragment);\r\n\t\t}\r\n\r\n\t\tupdateRequest() {\r\n\t\t\tif (this.executor) {\r\n\t\t\t\tthis.executor.updateRequestOptions({\r\n\t\t\t\t\titems: this.items,\r\n\t\t\t\t\tobjectId: this.objectId,\r\n\t\t\t\t\tentityClassName: this.entityClassName,\r\n\t\t\t\t\tcolumnDefinition: this.columnDefinition,\r\n\t\t\t\t\tentityName: this.serviceContext.mxServiceContext.entityName,\r\n\t\t\t\t\thideItemFieldName: this.hideItemFieldName,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tafterEntitiesCreated(/*entities*/) {\r\n\t\t\tthis._internalCreatingEntity = null;\r\n\r\n\t\t\tif (this.data instanceof mx.SolutionBuilderAgent.DataModelMultiFragmentArray) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t//temporary for entity as service\r\n\t\t\t//TODO: refactor this after using DataModelArray\r\n\t\t\tif (typeof this.items.changed === 'function') {\r\n\t\t\t\tthis.items.changed();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tremoveEntities(entities) {\r\n\t\t\tthis._removeEntitiesFromData(entities);\r\n\r\n\t\t\t// updateRequest and loadData is loaded automatically from onChange\r\n\t\t\tif (this.data instanceof mx.SolutionBuilderAgent.DataModelMultiFragmentArray) {\r\n\t\t\t\treturn $q.when();\r\n\t\t\t}\r\n\r\n\t\t\t//temporary for entity as service\r\n\t\t\t//TODO: refactor this after using DataModelArray\r\n\t\t\tthis.updateRequest();\r\n\t\t\treturn this.loadItems();\r\n\t\t}\r\n\t}\r\n\r\n\treturn MultiFragmentGrid;\r\n}\r\n","'use strict';\r\n\r\nObjectsGridGridFactory.$inject = [\r\n\t'mx.SolutionBuilderAgent.BaseGrid',\r\n\t'$q',\r\n\t'mx.internationalization',\r\n\t'mx.SolutionBuilderAgent.DialogOpenerService',\r\n\t'mx.shell.ActionManagerService',\r\n\t'mx.shell.ActionExecutorService',\r\n\t'mx.SolutionBuilderAgent.MultiSelectionTabService',\r\n\t'mx.SolutionBuilderAgent.MxGridHelperService',\r\n\t'mx.SolutionBuilderAgent.GridEnums',\r\n];\r\nexport default function ObjectsGridGridFactory(\r\n\tBaseGrid,\r\n\t$q,\r\n\ti18n,\r\n\tdialogOpenerService,\r\n\tactionManagerService,\r\n\tactionExecutorService,\r\n\tmultiSelectionTabService,\r\n\tgridHelperService,\r\n\tGridEnums\r\n) {\r\n\tconst { EditMode, ObjectGridOnClickActions, DataDefinitionGridTypes } = GridEnums;\r\n\r\n\tclass ObjectsGrid extends BaseGrid {\r\n\t\tconstructor() {\r\n\t\t\tsuper();\r\n\t\t\tthis.gridValidationMessage = i18n.get('components.form-validation.required');\r\n\t\t}\r\n\r\n\t\tinitProperties() {\r\n\t\t\tsuper.initProperties();\r\n\t\t\tlet objectIDs,\r\n\t\t\t\tdeleteActionIds,\r\n\t\t\t\tfilter,\r\n\t\t\t\tallowedTypes,\r\n\t\t\t\tclickAction = ObjectGridOnClickActions.Preview,\r\n\t\t\t\tdblClickAction = ObjectGridOnClickActions.Edit;\r\n\r\n\t\t\tObject.defineProperties(this, {\r\n\t\t\t\tobjectIDs: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn objectIDs;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (Array.isArray(newValue)) {\r\n\t\t\t\t\t\t\tobjectIDs = newValue;\r\n\t\t\t\t\t\t\tif (this.executor) {\r\n\t\t\t\t\t\t\t\tthis.executor.updateRequestOptions({\r\n\t\t\t\t\t\t\t\t\tobjectIDs: newValue,\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tthis.debouncedLoadItems();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tobjectIDs = [];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tfilter: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn filter;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tfilter = newValue;\r\n\t\t\t\t\t\tthis.updateRequest();\r\n\t\t\t\t\t\tthis.debouncedLoadItems();\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tentityClassName: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t},\r\n\t\t\t\tallowedTypes: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn allowedTypes;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: async function (newValue) {\r\n\t\t\t\t\t\tif (allowedTypes !== newValue) {\r\n\t\t\t\t\t\t\tallowedTypes = newValue;\r\n\t\t\t\t\t\t\tthis.createItems = await this.initCreateButtonItems();\r\n\t\t\t\t\t\t\tthis.updateRequest();\r\n\t\t\t\t\t\t\tthis.debouncedLoadItems();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tcolumnDefinition: {\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t},\r\n\t\t\t\tbrowseWhereClause: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t},\r\n\t\t\t\tdeleteActionIds: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn deleteActionIds;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\t//TODO: multi-object-picker doesn't support 'useObjectId', so it is possible to use only 1 action instead of array.\r\n\t\t\t\t\t\tif (newValue) {\r\n\t\t\t\t\t\t\tdeleteActionIds = [newValue];\r\n\t\t\t\t\t\t\tactionManagerService.getActionsByIds(deleteActionIds).then(\r\n\t\t\t\t\t\t\t\tfunction (actions) {\r\n\t\t\t\t\t\t\t\t\tthis.deleteActions = actions;\r\n\t\t\t\t\t\t\t\t\tthis.deleteButtonHidden = actions.length === 0;\r\n\t\t\t\t\t\t\t\t}.bind(this)\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tonlyTypedSelectSearch: {\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tvalue: false,\r\n\t\t\t\t},\r\n\t\t\t\teditMode: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn EditMode.GenericEdit; // open Preview on click\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function () {},\r\n\t\t\t\t},\r\n\t\t\t\tinlineMode: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn false; // inline mode is disabled for object grids\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function () {},\r\n\t\t\t\t},\r\n\t\t\t\tclickAction: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn clickAction;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (ObjectGridOnClickActions.containsValue(newValue)) {\r\n\t\t\t\t\t\t\tclickAction = newValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tdblClickAction: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn dblClickAction;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (ObjectGridOnClickActions.containsValue(newValue)) {\r\n\t\t\t\t\t\t\tdblClickAction = newValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tasync initDataQuery() {\r\n\t\t\treturn gridHelperService.initDQByDefinition(this.columnDefinition, this.entityClassName, DataDefinitionGridTypes.Objects);\r\n\t\t}\r\n\r\n\t\tupdateRequest() {\r\n\t\t\tif (this.executor) {\r\n\t\t\t\tthis.executor.updateRequestOptions({\r\n\t\t\t\t\tentityClassName: this.entityClassName,\r\n\t\t\t\t\tarchived: this.parentView?.context?._archived || false,\r\n\t\t\t\t\tobjectIDs: this.objectIDs,\r\n\t\t\t\t\texcludedIDs: this.excludedIDs,\r\n\t\t\t\t\tallowedTypes: this.allowedTypes,\r\n\t\t\t\t\tcorrectEntityFilter: this.getCorrectEntityFilter(),\r\n\t\t\t\t\tfilter: this.filter,\r\n\t\t\t\t\tcolumnDefinition: this.columnDefinition,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tgetCorrectEntityFilter() {\r\n\t\t\treturn; //TODO: here should be used this.filter, but legacy filters (relation-filters configured in designer for object-grid) can fail creating new items\r\n\t\t}\r\n\r\n\t\tasync initCreateButtonItems() {\r\n\t\t\tif (!this.executor) {\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t\tlet types = this.executor.allEntityTypes;\r\n\t\t\tif (this.allowedTypes && this.allowedTypes.length) {\r\n\t\t\t\tconst allowedTypes = this.allowedTypes.split(',').map((type) => type.trim());\r\n\t\t\t\ttypes = this.executor.allEntityTypes.filter((type) => allowedTypes.includes(type._type));\r\n\t\t\t}\r\n\r\n\t\t\treturn await gridHelperService.getEntityTypesForCreate(types);\r\n\t\t}\r\n\r\n\t\tfindExistingEntities() {\r\n\t\t\treturn multiSelectionTabService.open(\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: this.title,\r\n\t\t\t\t\tmultiSelection: true,\r\n\r\n\t\t\t\t\tentityClassName: this.entityClassName,\r\n\t\t\t\t\tallowedTypes: this.allowedTypes,\r\n\t\t\t\t\tfilter: this.filter,\r\n\t\t\t\t\tcorrectEntityFilter: this.browseWhereClause,\r\n\t\t\t\t\texcludedIDs: this.objectIDs,\r\n\t\t\t\t\tcolumnDefinition: this.columnDefinition,\r\n\t\t\t\t\tonlyTypedSelectSearch: this.onlyTypedSelectSearch,\r\n\t\t\t\t\tpresetFields: this.getPresetFields(),\r\n\t\t\t\t\tcreateButtonHidden: this.createButtonInSelectionHidden,\r\n\t\t\t\t},\r\n\t\t\t\tthis.parentView\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tgetPresetFields() {\r\n\t\t\treturn {};\r\n\t\t}\r\n\r\n\t\tafterEntitiesCreated(entities) {\r\n\t\t\tvar newIds = entities\r\n\t\t\t\t.map(function (entity) {\r\n\t\t\t\t\treturn entity.Id;\r\n\t\t\t\t})\r\n\t\t\t\t.filter(function (fragmentId) {\r\n\t\t\t\t\treturn this.objectIDs.indexOf(fragmentId) === -1;\r\n\t\t\t\t}, this);\r\n\r\n\t\t\tthis.objectIDs.push.apply(this.objectIDs, newIds);\r\n\t\t}\r\n\r\n\t\tdeleteItems(items) {\r\n\t\t\tif (!Array.isArray(items) || !items.length || !this.deleteAction) {\r\n\t\t\t\treturn $q.reject();\r\n\t\t\t}\r\n\r\n\t\t\treturn actionExecutorService.execute(this.deleteAction, items, this.parentView);\r\n\t\t}\r\n\r\n\t\tremoveEntities(entities) {\r\n\t\t\tvar removedFragmentIds = entities.map(function (entity) {\r\n\t\t\t\treturn entity.Id;\r\n\t\t\t});\r\n\r\n\t\t\tmx.components.Utils.removeItemsFromArray(this.objectIDs, removedFragmentIds);\r\n\r\n\t\t\tthis.updateRequest();\r\n\t\t\treturn this.loadItems();\r\n\t\t}\r\n\r\n\t\tselectionHandler(data) {\r\n\t\t\tsuper.selectionHandler(data);\r\n\t\t\tif (this.deleteButtonHidden) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst actions = actionManagerService.filterActions(this.deleteActions, null, data.allSelectedEntities);\r\n\t\t\tif (actions.length === 1) {\r\n\t\t\t\tthis.deleteAction = actions[0];\r\n\t\t\t\tthis.deleteButtonDisabled = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis.deleteButtonDisabled = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treorderHandler() {\r\n\t\t\tvar ids = this.executor.dataItems.map(function (row) {\r\n\t\t\t\treturn row.getEntity().Id; //fragmentId\r\n\t\t\t});\r\n\r\n\t\t\tthis.objectIDs.sort(function (idA, idB) {\r\n\t\t\t\tvar indexA = ids.indexOf(idA);\r\n\t\t\t\tvar indexB = ids.indexOf(idB);\r\n\t\t\t\tif (indexA < 0 || indexB < 0) {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\t\t\t\treturn indexA > indexB ? 1 : -1;\r\n\t\t\t});\r\n\r\n\t\t\tthis.updateRequest();\r\n\t\t}\r\n\r\n\t\titemClickHandler(row) {\r\n\t\t\treturn this._doClickAction(row, this.clickAction);\r\n\t\t}\r\n\r\n\t\titemDblClickHandler(row) {\r\n\t\t\treturn this._doClickAction(row, this.dblClickAction);\r\n\t\t}\r\n\r\n\t\t_doClickAction(row, clickAction) {\r\n\t\t\tthis.currentRow = row;\r\n\t\t\tswitch (clickAction) {\r\n\t\t\t\tcase ObjectGridOnClickActions.Preview:\r\n\t\t\t\t\tthis.runGenericPreview(row.getEntity());\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase ObjectGridOnClickActions.Edit:\r\n\t\t\t\t\tthis.editRow(row).catch(mx.logCatch);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn ObjectsGrid;\r\n}\r\n","'use strict';\r\n\r\nObjectsDeprecatedGridGridFactory.$inject = ['mx.SolutionBuilderAgent.ObjectsGrid'];\r\nexport default function ObjectsDeprecatedGridGridFactory(ObjectsGrid) {\r\n\tclass ObjectsDeprecatedGrid extends ObjectsGrid {\r\n\t\tconstructor() {\r\n\t\t\tsuper();\r\n\t\t}\r\n\r\n\t\tinitProperties() {\r\n\t\t\tsuper.initProperties();\r\n\t\t\tvar objectIDs = [],\r\n\t\t\t\tobjectIDsMode = false,\r\n\t\t\t\taddButtonHidden = true,\r\n\t\t\t\texternalAddButtonHidden,\r\n\t\t\t\tremoveButtonHidden = true,\r\n\t\t\t\texternalRemoveButtonHidden;\r\n\r\n\t\t\tObject.defineProperties(this, {\r\n\t\t\t\tobjectIDs: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn objectIDs;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (Array.isArray(newValue)) {\r\n\t\t\t\t\t\t\tobjectIDs = newValue;\r\n\t\t\t\t\t\t\tthis.objectIDsMode = true;\r\n\t\t\t\t\t\t\tthis.filter = undefined;\r\n\t\t\t\t\t\t\tif (this.executor) {\r\n\t\t\t\t\t\t\t\tthis.executor.updateRequestOptions({\r\n\t\t\t\t\t\t\t\t\tobjectIDs: newValue,\r\n\t\t\t\t\t\t\t\t\treturnNoItems: newValue.length === 0,\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tthis.debouncedLoadItems();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tobjectIDsMode: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn objectIDsMode;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (objectIDsMode !== newValue) {\r\n\t\t\t\t\t\t\tobjectIDsMode = newValue;\r\n\t\t\t\t\t\t\taddButtonHidden = !objectIDsMode;\r\n\t\t\t\t\t\t\tremoveButtonHidden = !objectIDsMode;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\taddButtonHidden: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn addButtonHidden;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\texternalAddButtonHidden = Boolean(newValue);\r\n\t\t\t\t\t\taddButtonHidden = externalAddButtonHidden; // || !objectIDsMode;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tremoveButtonHidden: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn removeButtonHidden;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\texternalRemoveButtonHidden = Boolean(newValue);\r\n\t\t\t\t\t\tremoveButtonHidden = externalRemoveButtonHidden || !objectIDsMode;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tparentObject: {\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tupdateRequest() {\r\n\t\t\tsuper.updateRequest();\r\n\t\t\tif (this.executor && this.objectIDsMode) {\r\n\t\t\t\tthis.executor.updateRequestOptions({\r\n\t\t\t\t\treturnNoItems: this.objectIDs.length === 0,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tafterEntitiesCreated(entities) {\r\n\t\t\tif (this.objectIDsMode) {\r\n\t\t\t\treturn super.afterEntitiesCreated(entities);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tgetPresetFields() {\r\n\t\t\tif (this.parentObject) {\r\n\t\t\t\t// legacy support\r\n\t\t\t\treturn {\r\n\t\t\t\t\tContext: {\r\n\t\t\t\t\t\tObject: {\r\n\t\t\t\t\t\t\tId: this.parentObject,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tonAddButtonClick() {\r\n\t\t\tif (this.objectIDsMode) {\r\n\t\t\t\t// legacy support\r\n\t\t\t\tsuper.onAddButtonClick();\r\n\t\t\t} else {\r\n\t\t\t\tif (this.allowedTypes && this.allowedTypes.split(',').length === 1) {\r\n\t\t\t\t\tsuper.onCreateButtonClick({ _type: this.allowedTypes });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn ObjectsDeprecatedGrid;\r\n}\r\n","'use strict';\r\n\r\nRelationsGridGridFactory.$inject = [\r\n\t'mx.SolutionBuilderAgent.ObjectsGrid',\r\n\t'mx.SolutionBuilderAgent.MultiSelectionTabService',\r\n\t'mx.SolutionBuilderAgent.MxGridHelperService',\r\n\t'mx.SolutionBuilderAgent.GridEnums',\r\n];\r\nexport default function RelationsGridGridFactory(ObjectsGrid, multiSelectionTabService, gridHelperService, GridEnums) {\r\n\tconst { DataDefinitionGridTypes } = GridEnums;\r\n\r\n\tclass RelationsGrid extends ObjectsGrid {\r\n\t\tconstructor() {\r\n\t\t\tsuper();\r\n\t\t}\r\n\r\n\t\tinitProperties() {\r\n\t\t\tsuper.initProperties();\r\n\r\n\t\t\tlet relation;\r\n\r\n\t\t\tObject.defineProperties(this, {\r\n\t\t\t\t/* external properties */\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\t\tif (newValue instanceof mx.SolutionBuilderAgent.Relation) {\r\n\t\t\t\t\t\t\trelation = newValue;\r\n\t\t\t\t\t\t\trelation.onChange(\r\n\t\t\t\t\t\t\t\tfunction (relation, fnName) {\r\n\t\t\t\t\t\t\t\t\tif (fnName !== 'changedInternal') {\r\n\t\t\t\t\t\t\t\t\t\tthis.updateRequest();\r\n\t\t\t\t\t\t\t\t\t\tthis.debouncedLoadItems();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}.bind(this)\r\n\t\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\t\tthis.updateRequest();\r\n\t\t\t\t\t\t\tthis.debouncedLoadItems();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\r\n\t\t\t\t/* internal properties */\r\n\t\t\t\trelation: {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn relation;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tentityClassName: {\r\n\t\t\t\t\tget: function () {\r\n\t\t\t\t\t\treturn relation?.relationsConfig.referenceTo;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: function () {},\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tasync initDataQuery() {\r\n\t\t\treturn gridHelperService.initDQByDefinition(this.columnDefinition, this.entityClassName, DataDefinitionGridTypes.Relation);\r\n\t\t}\r\n\r\n\t\tupdateRequest() {\r\n\t\t\tif (this.executor) {\r\n\t\t\t\tthis.executor.updateRequestOptions({\r\n\t\t\t\t\tarchived: this.parentView?.context?._archived || false,\r\n\t\t\t\t\tallowedTypes: this.allowedTypes,\r\n\t\t\t\t\tfilter: this.filter,\r\n\t\t\t\t\tcolumnDefinition: this.columnDefinition,\r\n\t\t\t\t\trelation: this.relation,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfindExistingEntities() {\r\n\t\t\treturn multiSelectionTabService.open(\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: this.title,\r\n\t\t\t\t\tmultiSelection: true,\r\n\t\t\t\t\tentityClassName: this.relation?.relationsConfig.referenceTo,\r\n\t\t\t\t\tallowedTypes: this.allowedTypes,\r\n\t\t\t\t\tfilter: this.browseWhereClause,\r\n\t\t\t\t\trelation: this.relation,\r\n\t\t\t\t\tinvertRelation: true,\r\n\t\t\t\t\tcorrectEntityFilter: this.browseWhereClause,\r\n\t\t\t\t\texcludedIDs: this.relation.addedRelations,\r\n\t\t\t\t\tobjectIDs: this.relation.removedRelations,\r\n\t\t\t\t\tcolumnDefinition: this.columnDefinition,\r\n\t\t\t\t\tonlyTypedSelectSearch: this.onlyTypedSelectSearch,\r\n\t\t\t\t\tpresetFields: this.getPresetFields(),\r\n\t\t\t\t\tcreateButtonHidden: this.createButtonInSelectionHidden,\r\n\t\t\t\t},\r\n\t\t\t\tthis.parentView\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tgetPresetFields() {\r\n\t\t\tvar presetFields = {};\r\n\r\n\t\t\tif (this.relation.fragmentId) {\r\n\t\t\t\tpresetFields[this.relation.relationsConfig.referenceTo] = {};\r\n\t\t\t\tpresetFields[this.relation.relationsConfig.referenceTo][this.relation.relationsConfig.attributeTo] = this.relation.fragmentId;\r\n\t\t\t}\r\n\r\n\t\t\treturn presetFields;\r\n\t\t}\r\n\r\n\t\tafterEntitiesCreated(entities) {\r\n\t\t\tvar fragmentIds = entities.map(function (entity) {\r\n\t\t\t\treturn entity.Id;\r\n\t\t\t});\r\n\r\n\t\t\tvar restored = [];\r\n\t\t\tvar added = [];\r\n\r\n\t\t\tfragmentIds.forEach(function (fragmentId) {\r\n\t\t\t\tif (this.relation.removedRelations.indexOf(fragmentId) !== -1) {\r\n\t\t\t\t\trestored.push(fragmentId);\r\n\t\t\t\t} else if (this.relation.addedRelations.indexOf(fragmentId) === -1) {\r\n\t\t\t\t\tadded.push(fragmentId);\r\n\t\t\t\t}\r\n\t\t\t}, this);\r\n\r\n\t\t\tthis.relation.addedRelations.push.apply(this.relation.addedRelations, added);\r\n\t\t\tmx.components.Utils.removeItemsFromArray(this.relation.removedRelations, restored);\r\n\t\t\tthis.relation.changedInternal();\r\n\t\t}\r\n\r\n\t\tremoveEntities(entities) {\r\n\t\t\tvar cleared = [], // added and then removed without saving\r\n\t\t\t\tremoved = [];\r\n\r\n\t\t\tentities.forEach(function (entity) {\r\n\t\t\t\tvar fragmentId = entity.Id;\r\n\r\n\t\t\t\tif (this.relation.addedRelations.indexOf(fragmentId) !== -1) {\r\n\t\t\t\t\tcleared.push(fragmentId);\r\n\t\t\t\t} else if (this.relation.removedRelations.indexOf(fragmentId) === -1) {\r\n\t\t\t\t\tremoved.push(fragmentId);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmx.components.Utils.removeItemsFromArray(this.relation.addedRelations, cleared);\r\n\t\t\t\tthis.relation.removedRelations.push.apply(this.relation.removedRelations, removed);\r\n\t\t\t}, this);\r\n\r\n\t\t\tthis.relation.changedInternal();\r\n\t\t\tthis.updateRequest();\r\n\t\t\treturn this.loadItems();\r\n\t\t}\r\n\r\n\t\tisGridReady() {\r\n\t\t\treturn Boolean(this.initialized && this.relation && (this.relation.fragmentId || this.relation.addedRelations.length || this.relation.removedRelations.length));\r\n\t\t}\r\n\t}\r\n\r\n\treturn RelationsGrid;\r\n}\r\n","'use strict';\r\n\r\nimport './mx-grid-actions-panel/mx-grid-actions-panel.component';\r\nimport MxGenericGridComponent from './mx-generic-grid/mx-generic-grid.component';\r\nimport MxExecutorGridComponent from './mx-executor-grid.component';\r\nimport MxGridHelperService from './mx-grid-helper.service';\r\nimport { gridEnums } from './GridEnums';\r\nimport MxGridActionsPanelComponent from './mx-grid-actions-panel/mx-grid-actions-panel.component';\r\nimport MxGridSettingsPanel from './mx-grid-settings-panel/mx-grid-settings-panel.component';\r\nimport MxGridControlPanelComponent from './mx-grid-control-panel/mx-grid-control-panel.component';\r\nimport MxGridRenderComponent from './mx-grid-render/mx-grid-render.component';\r\nimport MxGridSelectionPickerComponent from './mx-grid-selection-picker/mx-grid-selection-picker.component';\r\nimport BaseGridGridFactory from './grids/mx-base-grid';\r\nimport DynamicGridGridFactory from './grids/mx-dynamic-grid';\r\nimport MultiFragmentGridGridFactory from './grids/mx-multifragment-grid';\r\nimport ObjectsGridGridFactory from './grids/mx-objects-grid';\r\nimport ObjectsDeprecatedGridGridFactory from './grids/mx-objects-grid-deprecated';\r\nimport RelationsGridGridFactory from './grids/mx-relations-grid';\r\n\r\nexport default angular\r\n\t.module('mx.sb.ExecutorGrid', [])\r\n\t.value('mx.SolutionBuilderAgent.GridEnums', gridEnums)\r\n\t.service('mx.SolutionBuilderAgent.MxGridHelperService', MxGridHelperService)\r\n\t.component('mxGenericGridNew', MxGenericGridComponent)\r\n\t.component('mxExecutorGrid', MxExecutorGridComponent)\r\n\t.component('mxGridActionsPanel', MxGridActionsPanelComponent)\r\n\t.component('mxGridSettingsPanel', MxGridSettingsPanel)\r\n\t.component('mxGridControlPanel', MxGridControlPanelComponent)\r\n\t.component('mxGridRender', MxGridRenderComponent)\r\n\t.component('mxGridSelectionPicker', MxGridSelectionPickerComponent)\r\n\t.factory('mx.SolutionBuilderAgent.BaseGrid', BaseGridGridFactory)\r\n\t.factory('mx.SolutionBuilderAgent.DynamicGrid', DynamicGridGridFactory)\r\n\t.factory('mx.SolutionBuilderAgent.MultiFragmentGrid', MultiFragmentGridGridFactory)\r\n\t.factory('mx.SolutionBuilderAgent.ObjectsGrid', ObjectsGridGridFactory)\r\n\t.factory('mx.SolutionBuilderAgent.ObjectsDeprecatedGrid', ObjectsDeprecatedGridGridFactory)\r\n\t.factory('mx.SolutionBuilderAgent.RelationsGrid', RelationsGridGridFactory).name;\r\n","'use strict';\r\nimport template from './mx-grid-settings-panel.component.html';\r\n\r\nexport default {\r\n\tbindings: {\r\n\t\tgrid: '<',\r\n\r\n\t\trowColoringEnabled: '=?',\r\n\t\tavailableRowHeights: '<',\r\n\t\trowHeight: '=?',\r\n\t},\r\n\tcontroller: () => {},\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n};\r\n","// Module\nvar code = \"
    \\r\\n\\t
    \\r\\n\\t\\t

    {{::'solutionBuilderAgent.components.mx-data-control-settings-panel.title' | mxi18n}}

    \\r\\n\\t
    \\r\\n\\r\\n\\t
    \\r\\n\\r\\n\\t
    1\\\">\\r\\n\\t\\t
    \\r\\n\\t\\t\\t{{::'solutionBuilderAgent.components.mx-data-control-settings-panel.itemsPerPage' | mxi18n}}\\r\\n\\t\\t
    \\r\\n\\t\\t
    \\r\\n\\t\\t\\t
    \\r\\n\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t{{ ::size }}\\r\\n\\t\\t\\t\\t
    \\r\\n\\t\\t\\t
    \\r\\n\\t\\t
    \\r\\n\\t\\t
    \\r\\n\\t
    \\r\\n\\r\\n\\t
    \\r\\n\\t\\t
    \\r\\n\\t\\t\\t{{::'solutionBuilderAgent.components.mx-data-control-settings-panel.rowStyle' | mxi18n}}\\r\\n\\t\\t
    \\r\\n\\t\\t
    \\r\\n\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{::'solutionBuilderAgent.components.mx-data-control-settings-panel.density' | mxi18n}}:\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t{{ ::height.title }}\\r\\n\\t\\t\\t\\t
    \\r\\n\\t\\t\\t
    \\r\\n\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
    \\r\\n\\t\\t
    \\r\\n\\t\\t
    \\r\\n\\t
    \\r\\n\\t
    0\\\">\\r\\n\\t\\t
    \\r\\n\\t\\t\\t
    {{::'solutionBuilderAgent.components.mx-data-control-settings-panel.columns' | mxi18n}}
    \\r\\n\\t\\t\\t{{::'solutionBuilderAgent.components.mx-dashboard-editor.resetDefault' | mxi18n}}\\r\\n\\t\\t
    \\r\\n\\t\\t
    \\r\\n\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\tsearch\\r\\n\\t\\t\\t
    \\r\\n\\t\\t
    \\r\\n\\t\\t
    \\r\\n\\t
    \\r\\n
    \\r\\n\";\n// Exports\nexport default code;","'use strict';\r\n\r\nexport class OwnershipService {\r\n\tstatic $inject = ['mx.internationalization'];\r\n\r\n\tconstructor(i18n) {\r\n\t\tthis.i18n = i18n;\r\n\t}\r\n\r\n\tgetOwnershipTemplate(entity, editable) {\r\n\t\tconst i18n = this.i18n;\r\n\r\n\t\t//TODO: move templates to component, to html files and inject just \r\n\t\tconst getLinkTemplate = function (entityName, className, attributeName, label) {\r\n\t\t\treturn (\r\n\t\t\t\t'' +\r\n\t\t\t\t'
    ' +\r\n\t\t\t\t'\t
    ' +\r\n\t\t\t\t'\t\t
    ' +\r\n\t\t\t\t'' +\r\n\t\t\t\t'' +\r\n\t\t\t\t'
    '\r\n\t\t\t);\r\n\t\t};\r\n\r\n\t\tconst getPickerTemplate = function (entityName, className, attributeName, label) {\r\n\t\t\treturn (\r\n\t\t\t\t'' +\r\n\t\t\t\t'
    ' +\r\n\t\t\t\t'\t
    ' +\r\n\t\t\t\t'\t\t
    ' +\r\n\t\t\t\t'' +\r\n\t\t\t\t'' +\r\n\t\t\t\t'
    '\r\n\t\t\t);\r\n\t\t};\r\n\r\n\t\tconst getControl = function (entityName, className, attributeName, label) {\r\n\t\t\treturn (editable ? getPickerTemplate : getLinkTemplate)(entityName, className, attributeName, label);\r\n\t\t};\r\n\r\n\t\treturn (\r\n\t\t\t'
    ' +\r\n\t\t\t'\t
    ' +\r\n\t\t\t'\t\t
    ' +\r\n\t\t\ti18n.get('serviceStore.ownership.ownership') +\r\n\t\t\t'
    ' +\r\n\t\t\t'\t\t
    ' +\r\n\t\t\t'\t\t\t
    ' +\r\n\t\t\t'\t\t\t
    ' +\r\n\t\t\tgetControl(entity, 'SPSOrgUnitClassBase', 'OU', i18n.get('serviceStore.ownership.ou')) +\r\n\t\t\tgetControl(entity, 'SPSLocationClassBase', 'Location', i18n.get('serviceStore.ownership.location')) +\r\n\t\t\tgetControl(entity, 'SPSCostCenterClassBase', 'CostCenter', i18n.get('serviceStore.ownership.cost-center')) +\r\n\t\t\t'
    ' +\r\n\t\t\t'
    ' +\r\n\t\t\t'\t
    ' +\r\n\t\t\t'\t\t
    ' +\r\n\t\t\t'\t\t\t
    ' +\r\n\t\t\t'\t\t\t\t
    ' +\r\n\t\t\t'
    '\r\n\t\t);\r\n\t}\r\n\r\n\tinjectOwnershipContainer(widget, isCreateDialogWidget) {\r\n\t\tif (!widget || !widget.Template || !widget.Entity || !widget.ShowOwnership || !widget.Template.Views || !widget.Template.Views.length) {\r\n\t\t\treturn widget;\r\n\t\t}\r\n\r\n\t\twidget.Template.Views = widget.Template.Views.sort(function (view1, view2) {\r\n\t\t\treturn view1.Position - view2.Position;\r\n\t\t});\r\n\r\n\t\tif (!widget.Template.Views[0].Template) {\r\n\t\t\treturn widget;\r\n\t\t}\r\n\r\n\t\tconst template = this.getOwnershipTemplate(widget.Entity, isCreateDialogWidget);\r\n\r\n\t\tconst anchor = '';\r\n\r\n\t\twidget.Template.Views[0].Template = widget.Template.Views[0].Template.replace(anchor, template + anchor);\r\n\r\n\t\treturn widget;\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nimport { OwnershipService } from './ownership.service';\r\n\r\nexport default angular\r\n\t.module('mx.sb.Ownership', [\r\n\t\t/*'mx.shell'*/\r\n\t])\r\n\t.service('mx.sb.Ownership.OwnershipService', OwnershipService).name;\r\n","import { ErrorFactory } from '../../../../../App/services/ErrorFactory';\r\nimport { HttpService } from '../../../../../App/services/http-service';\r\nimport { AuthenticationService } from '../../../../../Auth/mx-authentication-service';\r\nimport { OperationStatus, ProcessItem } from '../../../../Pandora/model/process-item';\r\nimport { DownloadHelpService } from '../../../../Pandora/services/mx-download-help-service';\r\nimport { AttachmentMetaInfo, IAttachmentProvider, SignedUploadUrl } from '../mx-attachment.contracts';\r\n\r\n/**\r\n * @ngdoc provider\r\n * @name MxAttachmentDefaultProvider\r\n * @module mx.shell\r\n *\r\n * @description\r\n * Provides default implementation to work with attachments using internal SQL storage (see api/fileStorage)\r\n */\r\n\r\nexport class MxAttachmentDefaultProvider implements IAttachmentProvider {\r\n\tstatic $inject = ['mx.shell.AuthService', 'mx.SolutionBuilderAgent.Http', 'mx.shell.DownloadHelpService', 'mx.app.ErrorFactory'];\r\n\tprivate readonly apiController: string = 'api/fileStorage';\r\n\tpublic readonly isPublic = false;\r\n\r\n\tconstructor(\r\n\t\tprivate readonly authService: AuthenticationService,\r\n\t\tprivate readonly http: HttpService,\r\n\t\tprivate readonly downloadHelpService: DownloadHelpService,\r\n\t\tprivate readonly errorFactory: ErrorFactory\r\n\t) {}\r\n\r\n\tpublic get providerId(): string {\r\n\t\treturn '9766c0d4-50b6-ec11-de8c-381428440f29';\r\n\t}\r\n\r\n\tpublic async getFileUrl(attachmentInfo: AttachmentMetaInfo): Promise {\r\n\t\tconst url = `/${this.apiController}/${attachmentInfo.id}`;\r\n\t\treturn attachmentInfo.inline ? `${url}/inline` : url;\r\n\t}\r\n\r\n\tpublic async uploadFile(attachmentInfo: AttachmentMetaInfo, process: ProcessItem) {\r\n\t\tconst header = await this.getAuthHeader();\r\n\t\tconst response = await this.http.post(`${this.apiController}/getUploadUrl`, {\r\n\t\t\tuniqueFileId: attachmentInfo.id,\r\n\t\t\tstorageId: attachmentInfo.storageId,\r\n\t\t\tname: attachmentInfo.name || 'dummy',\r\n\t\t\tthumbnail: attachmentInfo.thumbnail,\r\n\t\t\tsize: attachmentInfo.size || 0,\r\n\t\t\ttypeId: attachmentInfo.typeId,\r\n\t\t\tobjectId: attachmentInfo.objectId,\r\n\t\t\tbindAttribute: attachmentInfo.bindAttribute,\r\n\t\t});\r\n\r\n\t\tconst request = new Promise((resolve: { (): void }, reject: { (reason?: Error): void }) => {\r\n\t\t\tconst xhr = new XMLHttpRequest();\r\n\t\t\tprocess.onProcessCanceled(async () => {\r\n\t\t\t\txhr.abort();\r\n\t\t\t});\r\n\t\t\txhr.open('POST', response.Url, true);\r\n\t\t\tif (header) {\r\n\t\t\t\txhr.setRequestHeader('Authorization', header.Authorization);\r\n\t\t\t}\r\n\t\t\txhr.setRequestHeader('Content-Type', 'application/octet-stream');\r\n\t\t\txhr.upload.onprogress = (event) => {\r\n\t\t\t\tprocess.progress = event.total > 0 ? Math.round((event.loaded * 100) / event.total) : 0;\r\n\t\t\t};\r\n\r\n\t\t\txhr.upload.onerror = () => reject();\r\n\r\n\t\t\txhr.onreadystatechange = () => {\r\n\t\t\t\tif (xhr.status === 500 && xhr.response) {\r\n\t\t\t\t\treject(this.errorFactory.createApiError(xhr.response));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 204) {\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\txhr.onloadstart = function () {\r\n\t\t\t\tprocess.operationStatus = OperationStatus.Started;\r\n\t\t\t};\r\n\t\t\txhr.onabort = function () {\r\n\t\t\t\tprocess.operationStatus = OperationStatus.Canceled;\r\n\t\t\t\treject();\r\n\t\t\t};\r\n\t\t\txhr.onloadend = function (event) {\r\n\t\t\t\tif (event.total > 0 && event.total === event.loaded) {\r\n\t\t\t\t\tprocess.operationStatus = OperationStatus.Finished;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\txhr.send(attachmentInfo as File);\r\n\t\t});\r\n\t\treturn await request;\r\n\t}\r\n\r\n\tpublic async downloadFile(attachmentInfo: AttachmentMetaInfo) {\r\n\t\twindow.open(this.http.formatUrl(`${this.apiController}/${attachmentInfo.id}`));\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate async getAuthHeader() {\r\n\t\tconst token = await this.authService.getToken();\r\n\t\treturn { Authorization: `Bearer ${token}` };\r\n\t}\r\n}\r\n","import { auto } from 'angular';\r\nimport { HttpService } from '../../../../App/services/http-service';\r\nimport { I18n } from '../../../../i18n/mx-internationalization';\r\nimport { OperationStatus } from '../../../Pandora/model/process-item';\r\nimport { DownloadHelpService } from '../../../Pandora/services/mx-download-help-service';\r\nimport { SchemaService } from '../../services/schema-service';\r\nimport { MxAttachmentProcessService } from './mx-attachment-process.service';\r\nimport { AttachmentMetaInfo, AttachmentObjectsRequest, IAttachmentProvider } from './mx-attachment.contracts';\r\nimport { MxAttachmentDefaultProvider } from './mx-providers/mx-attachment-default-provider';\r\n\r\n/**\r\n * @ngdoc service\r\n * @name MxAttachmentService\r\n * @module mx.shell\r\n *\r\n * @description\r\n * Service provides methods to work with Attachments\r\n */\r\n\r\ntype AttachmentProviderStorage = {\r\n\t[providerId in string]: IAttachmentProvider;\r\n};\r\nexport type StorageInfo = {\r\n\tid: string;\r\n\tproviderId: string;\r\n\tisPublic: boolean;\r\n\tmaxFileSize: number;\r\n\ttypeId: string;\r\n\tfileExtensions: string;\r\n\tmaxFilesPerObject: number;\r\n};\r\ntype AttachmentFileInfo = {\r\n\tUniqueFileId: string;\r\n\tName: string;\r\n\tComment: string;\r\n\tThumbnail: string;\r\n\tStorageId: string;\r\n\tProviderId: string;\r\n\tObjectId: string;\r\n\tBindAttribute: string;\r\n\tUpdatedBy: string;\r\n\tUpdatedOn?: Date;\r\n\tUploaded?: boolean;\r\n\tSize: number;\r\n\tSendContentThroughServer: boolean;\r\n};\r\n\r\nexport class MxAttachmentService {\r\n\tstatic $inject = [\r\n\t\t'mx.SolutionBuilderAgent.Http',\r\n\t\t'mx.internationalization',\r\n\t\t'mx.SolutionBuilderAgent.SchemaService',\r\n\t\t'mx.shell.DownloadHelpService',\r\n\t\t'mx.sb.Attachment.MxAttachmentProcessService',\r\n\t\t'$injector',\r\n\t];\r\n\tprivate providerStorage: AttachmentProviderStorage = {};\r\n\tconstructor(\r\n\t\tprivate readonly http: HttpService,\r\n\t\tprivate readonly i18n: I18n,\r\n\t\tprivate readonly schemaService: SchemaService,\r\n\t\tprivate readonly downloadHelpService: DownloadHelpService,\r\n\t\tprivate readonly processService: MxAttachmentProcessService,\r\n\t\t$injector: auto.IInjectorService\r\n\t) {\r\n\t\tconst defaultProviderInstance = $injector.instantiate(MxAttachmentDefaultProvider);\r\n\t\tthis.providerStorage[defaultProviderInstance.providerId] = defaultProviderInstance;\r\n\t}\r\n\r\n\tpublic registerProvider(providerId: string, provider: IAttachmentProvider): void {\r\n\t\tif (providerId in this.providerStorage) {\r\n\t\t\tthrow new Error(this.i18n.get('solutionBuilderAgent.errors.attachment_provider_already_registered'));\r\n\t\t}\r\n\t\tthis.providerStorage[providerId] = provider;\r\n\t}\r\n\r\n\tpublic async uploadFile(attachmentInfo: AttachmentMetaInfo): Promise {\r\n\t\tconst fileId = attachmentInfo.id;\r\n\t\tconst providerId = attachmentInfo.providerId;\r\n\t\tconst provider = this.getRegisteredProvider(providerId);\r\n\t\tconst process = this.processService.createForegroundProcess(attachmentInfo);\r\n\t\ttry {\r\n\t\t\tawait provider.uploadFile(attachmentInfo, process);\r\n\t\t\tawait this.http.post(`api/commonStorage/finishUploading/${fileId}`, {});\r\n\t\t} catch (e) {\r\n\t\t\tif (!process.isCanceled) {\r\n\t\t\t\tawait process.fail();\r\n\t\t\t\tconst msg = typeof e === 'string' ? e : e instanceof Error ? e.message : '';\r\n\t\t\t\tthrow new Error(msg);\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tconst status = process.operationStatus;\r\n\t\t\tif (status === OperationStatus.Started || status === OperationStatus.Updated) {\r\n\t\t\t\tprocess.operationStatus = OperationStatus.Finished;\r\n\t\t\t}\r\n\t\t\tif (status === OperationStatus.Canceling) {\r\n\t\t\t\tprocess.operationStatus === OperationStatus.Canceled;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async downloadFiles(attachmentInfos: Array): Promise {\r\n\t\tif (attachmentInfos.length === 0) {\r\n\t\t\treturn false;\r\n\t\t} else if (attachmentInfos.length === 1) {\r\n\t\t\tconst attachmentInfo = attachmentInfos[0];\r\n\t\t\tconst provider = this.getRegisteredProvider(attachmentInfo.providerId);\r\n\t\t\treturn await provider.downloadFile(attachmentInfo);\r\n\t\t}\r\n\t\tconst response = await this.http.post(\r\n\t\t\t`api/commonStorage/`,\r\n\t\t\tattachmentInfos.map((info) => info.id),\r\n\t\t\t{ responseType: 'arraybuffer' },\r\n\t\t\t{},\r\n\t\t\tfalse,\r\n\t\t\ttrue\r\n\t\t);\r\n\r\n\t\treturn this.downloadHelpService.downloadContent(response, response.data);\r\n\t}\r\n\r\n\tpublic async deleteFiles(attachmentInfos: Array): Promise {\r\n\t\tawait Promise.all(attachmentInfos.map((info) => this.http.remove(`api/commonStorage/${info.id}`)));\r\n\t}\r\n\r\n\tpublic async getFiles(options: AttachmentObjectsRequest) {\r\n\t\tconst objectIds = options.objectIds?.filter(Boolean) || [];\r\n\t\tif (objectIds.length === 0) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\tconst paramBindAttribute = this.getBindAttributeParameter(options.bindAttribute);\r\n\t\tconst paramExcludedFileIds = this.getExcludedFileIdsParameter(options.excludedFileIds);\r\n\t\tconst objectFiles = await Promise.all(objectIds.map((objectId) => this.getFilesForObject(objectId, paramBindAttribute, paramExcludedFileIds)));\r\n\t\treturn objectFiles.flat();\r\n\t}\r\n\r\n\tpublic async getCount(options: AttachmentObjectsRequest): Promise {\r\n\t\tconst objectIds = options.objectIds?.filter(Boolean) || [];\r\n\t\tif (objectIds.length === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tconst http = this.http;\r\n\t\tconst paramBindAttribute = this.getBindAttributeParameter(options.bindAttribute);\r\n\t\tconst paramExcludedFileIds = this.getExcludedFileIdsParameter(options.excludedFileIds);\r\n\t\tconst objectsCount = await Promise.all(objectIds.map((objectId) => http.get(`api/commonStorage/count/${objectId}${paramBindAttribute}${paramExcludedFileIds}`)));\r\n\t\treturn objectsCount.reduce((sum, itemCount) => sum + itemCount, 0);\r\n\t}\r\n\r\n\tpublic async comment(fileId: string, comment: string): Promise {\r\n\t\tawait this.http.post(`api/commonStorage/comment/${fileId}`, `'${comment}'`);\r\n\t}\r\n\r\n\tpublic async getFileUrl(attachmentInfo: AttachmentMetaInfo): Promise {\r\n\t\tconst providerId = attachmentInfo.providerId;\r\n\t\tconst provider = this.getRegisteredProvider(providerId);\r\n\t\treturn await provider.getFileUrl(attachmentInfo);\r\n\t}\r\n\r\n\tpublic formatFileUrl(url: string): string {\r\n\t\treturn /^((http|https|ftp):\\/\\/)/.test(url) && new URL(url).origin !== window.location.origin ? url : this.http.formatUrl(url);\r\n\t}\r\n\r\n\tprivate async getFilesForObject(objectId: string, bindAttribute = '', excludedFileIds = '') {\r\n\t\tconst result = await this.http.get>(`api/commonStorage/files/${objectId}${bindAttribute}${excludedFileIds}`);\r\n\t\tconst files = await Promise.all(\r\n\t\t\tresult.map(async (item) => {\r\n\t\t\t\tconst uploadedOn = item.UpdatedOn ? new Date(item.UpdatedOn) : new Date();\r\n\t\t\t\treturn {\r\n\t\t\t\t\tid: item.UniqueFileId,\r\n\t\t\t\t\tname: item.Name,\r\n\t\t\t\t\tcomment: item.Comment,\r\n\t\t\t\t\tthumbnail: await this.getThumbnail(item, objectId, uploadedOn),\r\n\t\t\t\t\tuploadedBy: item.UpdatedBy,\r\n\t\t\t\t\tuploadedOn: uploadedOn,\r\n\t\t\t\t\tstorageId: item.StorageId,\r\n\t\t\t\t\tproviderId: item.ProviderId,\r\n\t\t\t\t\tuploaded: item.Uploaded,\r\n\t\t\t\t\tsize: item.Size,\r\n\t\t\t\t\tobjectId: objectId,\r\n\t\t\t\t\tisPublic: this.getRegisteredProvider(item.ProviderId).isPublic,\r\n\t\t\t\t\tsendContentThroughServer: item.SendContentThroughServer || false,\r\n\t\t\t\t};\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\treturn files.filter((file) => file.uploaded || (!file.uploaded && Boolean(this.processService.getForegroundProcessById(file.id))));\r\n\t}\r\n\r\n\tpublic async getStorageInfo(entity: string): Promise {\r\n\t\tconst mbModifier = 1024 * 1024;\r\n\t\tconst typeInfo = await this.schemaService.getType(entity);\r\n\t\tif (!typeInfo) {\r\n\t\t\tthrow new Error(`Type ${entity} doesn't exist`);\r\n\t\t}\r\n\t\tconst response = await this.http.get<{ ProviderId: string; StorageId: string; MaxFileSizeMb: number; Extensions: string; FileCountPerObject: number }>(\r\n\t\t\t`api/commonStorage/provider/${typeInfo.Id}`\r\n\t\t);\r\n\t\tconst provider = this.getRegisteredProvider(response.ProviderId);\r\n\t\treturn {\r\n\t\t\tid: response.StorageId,\r\n\t\t\tproviderId: provider.providerId,\r\n\t\t\ttypeId: typeInfo.Id,\r\n\t\t\tmaxFileSize: (response.MaxFileSizeMb || 0) * mbModifier,\r\n\t\t\tfileExtensions: response.Extensions,\r\n\t\t\tmaxFilesPerObject: response.FileCountPerObject ?? 0,\r\n\t\t\tisPublic: provider.isPublic,\r\n\t\t};\r\n\t}\r\n\r\n\tprivate getRegisteredProvider(providerId: string): IAttachmentProvider {\r\n\t\tif (!(providerId in this.providerStorage)) {\r\n\t\t\tthrow new Error(this.i18n.get('solutionBuilderAgent.errors.attachment_provider_not_registered'));\r\n\t\t}\r\n\t\treturn this.providerStorage[providerId];\r\n\t}\r\n\r\n\tprivate getExcludedFileIdsParameter(excludedFileIds: Array = []) {\r\n\t\tlet parameterExcludedFileIds = '';\r\n\t\tif (excludedFileIds.length > 0) {\r\n\t\t\tparameterExcludedFileIds = '/?excludedFileIds=' + JSON.stringify(excludedFileIds).replace(/\"/g, '').replace(/\\[/g, '').replace(/]/g, '');\r\n\t\t}\r\n\t\treturn parameterExcludedFileIds;\r\n\t}\r\n\r\n\tprivate getBindAttributeParameter(bindAttribute?: string) {\r\n\t\tlet paramBindAttribute = '';\r\n\t\tconst attribute = this.getBindAttribute(bindAttribute);\r\n\t\tif (attribute) {\r\n\t\t\tparamBindAttribute = '/' + attribute;\r\n\t\t}\r\n\t\treturn paramBindAttribute;\r\n\t}\r\n\r\n\tprivate getBindAttribute(bindAttribute?: string) {\r\n\t\tlet attribute = null;\r\n\t\tif (bindAttribute) {\r\n\t\t\tconst lastIndexOfDot = bindAttribute.lastIndexOf('.');\r\n\r\n\t\t\tif (lastIndexOfDot > 0) {\r\n\t\t\t\tattribute = bindAttribute.substring(lastIndexOfDot + 1);\r\n\t\t\t} else {\r\n\t\t\t\tattribute = bindAttribute;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn attribute;\r\n\t}\r\n\r\n\tprivate isVideo(fileName: string): boolean {\r\n\t\tconst extension = (fileName.split('.').pop() || '').toUpperCase();\r\n\t\treturn ['MP4', 'WEBM', 'OGG'].includes(extension);\r\n\t}\r\n\r\n\tprivate async getThumbnail(file: AttachmentFileInfo, objectId: string, uploadedOn: Date): Promise {\r\n\t\tif (file.Thumbnail || !this.isVideo(file.Name) || !file.Uploaded) {\r\n\t\t\treturn file.Thumbnail;\r\n\t\t}\r\n\r\n\t\tconst attachmentInfo = {\r\n\t\t\tid: file.UniqueFileId,\r\n\t\t\tproviderId: file.ProviderId,\r\n\t\t\tstorageId: file.StorageId,\r\n\t\t\tuploadedOn: uploadedOn,\r\n\t\t\tuploadedBy: file.UpdatedBy,\r\n\t\t\tobjectId: objectId,\r\n\t\t\tcomment: file.Comment,\r\n\t\t\tuploaded: file.Uploaded,\r\n\t\t\tthumbnail: file.Thumbnail,\r\n\t\t\tsendContentThroughServer: file.SendContentThroughServer,\r\n\t\t};\r\n\r\n\t\treturn this.formatFileUrl(await this.getFileUrl(attachmentInfo));\r\n\t}\r\n}\r\n","import { EventCodes } from '../../../../../App/model/event-codes';\r\n\r\nexport const MxObjectAttachments = {\r\n\tbindings: {\r\n\t\tmultiUpload: '=?',\r\n\t\tobjectId: '=?',\r\n\t\tobjectIds: '=?',\r\n\t\texcludedFileIds: '=?',\r\n\t\tentity: '@',\r\n\t\tngModel: '=?',\r\n\t\tlazyMode: '=?',\r\n\t\treadOnly: '=?',\r\n\t\tuploadOnly: '@',\r\n\t\tfiles: '=?',\r\n\t\tgetSelectedObjects: '=?',\r\n\t\tenableSelection: '@',\r\n\t\tskipInitialLoad: '=?',\r\n\t\tfilesExists: '=?',\r\n\t\tdisableSearch: '<',\r\n\t\tdisableSort: '<',\r\n\t\tdefaultViewMode: '@',\r\n\t},\r\n\tcontroller: MxObjectAttachmentsCtrl,\r\n\tcontrollerAs: 'vm',\r\n\trequire: { mxFormCtrl: '?^mxForm', parentViewController: '?^mxView' },\r\n\ttemplate:\r\n\t\t' ' +\r\n\t\t'',\r\n};\r\n\r\nMxObjectAttachmentsCtrl.$inject = [\r\n\t'mx.shell.NotificationService',\r\n\t'mx.internationalization',\r\n\t'$q',\r\n\t'$scope',\r\n\t'mx.sb.Attachment.MxAttachmentService',\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.AppsService',\r\n];\r\n\r\nfunction MxObjectAttachmentsCtrl(notificationService, i18n, $q, $scope, attachmentService, eventService, appsService) {\r\n\tconst vm = this;\r\n\tlet unsubscribeNotification = () => {};\r\n\tvm.$onInit = function () {\r\n\t\tvm.inited = false;\r\n\t\tvm.filesExists = true;\r\n\t\tvm.formatUrl = formatUrl;\r\n\t\tvm.onUploadCanceled = onUploadCanceled;\r\n\t\tvm.onUploadCanceling = onUploadCanceling;\r\n\t\tvm.onDelete = onDelete;\r\n\t\tvm.onComment = onComment;\r\n\t\tvm.onDownloadFiles = onDownloadFiles;\r\n\t\tvm.onGetFileUrl = onGetFileUrl;\r\n\t\tvm.loadFiles = loadFiles;\r\n\t\tvm.files = [];\r\n\t\tvm.uploadFile = uploadFile;\r\n\t\tvm.ignoreFileLimitations = false;\r\n\r\n\t\tinitProviderSettings();\r\n\r\n\t\tunsubscribeNotification = eventService.subscribeOnce(EventCodes.ForegroundProcessCreated, (_, process) => {\r\n\t\t\tif (process.longRunning && vm.files.some((file) => file.id === process.id)) {\r\n\t\t\t\tconst currentApp = appsService.getCurrentApplicationSync();\r\n\t\t\t\tconst message = i18n.getFormatted('shell.mx-shell-background-processes.prevent_reload', currentApp.name);\r\n\t\t\t\tnotificationService.warning(message);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tconst view = vm.parentViewController && vm.parentViewController.mxView;\r\n\t\tif (view && (!vm.defaultViewMode || vm.defaultViewMode === mx.SolutionBuilderAgent.AttachmentsViewMode.Default)) {\r\n\t\t\tvm.viewMode = view.dialogType === mx.SolutionBuilderAgent.ContentWidgetDialogAction.Preview ? 'list' : 'tiles';\r\n\t\t} else if (vm.defaultViewMode && vm.defaultViewMode !== mx.SolutionBuilderAgent.AttachmentsViewMode.Default) {\r\n\t\t\tvm.viewMode = vm.defaultViewMode;\r\n\t\t} else {\r\n\t\t\tvm.viewMode = mx.SolutionBuilderAgent.AttachmentsViewMode.Tiles;\r\n\t\t}\r\n\r\n\t\tvm.getSelectedObjects = function () {\r\n\t\t\treturn vm.files\r\n\t\t\t\t.filter((file) => file.selected)\r\n\t\t\t\t.map((file) => ({\r\n\t\t\t\t\tId: file.id,\r\n\t\t\t\t\tDisplayString: file.name,\r\n\t\t\t\t}));\r\n\t\t};\r\n\r\n\t\tvm.waithandler = $q.defer();\r\n\r\n\t\tvm.waithandler.promise\r\n\t\t\t.then(function () {\r\n\t\t\t\tif (vm.skipInitialLoad === true) {\r\n\t\t\t\t\tvm.files = [];\r\n\t\t\t\t\tvm.filesExists = false;\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t} else if (vm.lazyMode === true) {\r\n\t\t\t\t\treturn getCount(vm.objectIds).then(function (count) {\r\n\t\t\t\t\t\tvm.files = [];\r\n\t\t\t\t\t\tvm.filesExists = count > 0;\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn getFiles(vm.objectIds).then(function (files) {\r\n\t\t\t\t\t\tvm.files = files;\r\n\t\t\t\t\t\tvm.filesExists = Boolean(files.length);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then(() => (vm.inited = true));\r\n\r\n\t\tObject.defineProperty(vm, 'bindAttribute', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn vm.ngModel;\r\n\t\t\t},\r\n\t\t});\r\n\t};\r\n\r\n\tvm.$onDestroy = function () {\r\n\t\tunsubscribeNotification();\r\n\t};\r\n\r\n\tvm.$postLink = function () {\r\n\t\tif ((vm.objectId === undefined || vm.objectId === '') && vm.mxFormCtrl) {\r\n\t\t\tvm.objectId = vm.mxFormCtrl.objectId;\r\n\t\t}\r\n\r\n\t\tif (!vm.objectIds) {\r\n\t\t\tvm.objectIds = [];\r\n\t\t}\r\n\r\n\t\tif (!vm.excludedFileIds) {\r\n\t\t\tvm.excludedFileIds = [];\r\n\t\t}\r\n\r\n\t\tif (vm.objectId !== undefined && vm.objectId !== '') {\r\n\t\t\tif (vm.objectIds.length === 0) {\r\n\t\t\t\tvm.objectIds.push(vm.objectId);\r\n\t\t\t}\r\n\t\t\tvm.waithandler.resolve();\r\n\t\t} else {\r\n\t\t\tvm.waithandler.reject();\r\n\t\t}\r\n\t};\r\n\r\n\t$scope.$watch('vm.files.length', function (numOfFiles) {\r\n\t\t// Because control can be inside container with visibility related to fileExists property we should wait for actual value\r\n\t\tif (vm.inited) {\r\n\t\t\tvm.filesExists = Boolean(numOfFiles);\r\n\t\t}\r\n\t});\r\n\r\n\treturn vm;\r\n\r\n\tasync function loadFiles() {\r\n\t\treturn await getFiles(vm.objectIds).then(function (files) {\r\n\t\t\tvm.files = files;\r\n\t\t\tvm.filesExists = Boolean(files.length);\r\n\t\t});\r\n\t}\r\n\r\n\tasync function uploadFile(file) {\r\n\t\tconst attachmentInfo = Object.assign(file, {\r\n\t\t\tid: mx.components.Utils.guid(),\r\n\t\t\tobjectId: vm.objectId,\r\n\t\t\tproviderId: vm.storageInfo.providerId,\r\n\t\t\tstorageId: vm.storageInfo.id,\r\n\t\t\ttypeId: vm.storageInfo.typeId,\r\n\t\t\tisPublic: vm.storageInfo.isPublic,\r\n\t\t\tobjectTitle: escapeHtml(vm.parentViewController?.mxView?.displayName),\r\n\t\t\tbindAttribute: vm.bindAttribute,\r\n\t\t});\r\n\t\ttry {\r\n\t\t\tawait attachmentService.uploadFile(attachmentInfo);\r\n\t\t} catch (e) {\r\n\t\t\tconst defaultErrorMessage = i18n.getFormatted('components.mx-attachments.upload_file_error', file.name);\r\n\t\t\tif (e?.message) {\r\n\t\t\t\tconsole.error(e.message);\r\n\t\t\t\tnotificationService.error(e.message + '\\r\\n\\r\\n' + defaultErrorMessage);\r\n\t\t\t} else {\r\n\t\t\t\tnotificationService.error(defaultErrorMessage);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tasync function getCount(objectIds) {\r\n\t\treturn await attachmentService.getCount({\r\n\t\t\tobjectIds: objectIds,\r\n\t\t\tentity: vm.entity,\r\n\t\t\tbindAttribute: vm.bindAttribute,\r\n\t\t\texcludedFileIds: vm.excludedFileIds,\r\n\t\t});\r\n\t}\r\n\r\n\tasync function getFiles(objectIds) {\r\n\t\treturn await attachmentService.getFiles({\r\n\t\t\tobjectIds: objectIds,\r\n\t\t\tbindAttribute: vm.bindAttribute,\r\n\t\t\texcludedFileIds: vm.excludedFileIds,\r\n\t\t});\r\n\t}\r\n\r\n\tfunction formatUrl(url) {\r\n\t\treturn attachmentService.formatFileUrl(url);\r\n\t}\r\n\r\n\tfunction onUploadCanceled(file) {\r\n\t\tdeleteFile(file);\r\n\t}\r\n\r\n\tfunction onUploadCanceling() {\r\n\t\treturn notificationService.confirm(\r\n\t\t\ti18n.get('solutionBuilderAgent.common.cancel'),\r\n\t\t\ti18n.get('solutionBuilderAgent.common.cancelFileConfirm'),\r\n\t\t\ti18n.get('solutionBuilderAgent.common.ok_btn'),\r\n\t\t\ti18n.get('solutionBuilderAgent.common.cancel_btn')\r\n\t\t);\r\n\t}\r\n\r\n\tfunction onDelete(file) {\r\n\t\tnotificationService\r\n\t\t\t.confirm(\r\n\t\t\t\ti18n.get('solutionBuilderAgent.common.remove'),\r\n\t\t\t\ti18n.get('solutionBuilderAgent.common.deleteFileConfirm'),\r\n\t\t\t\ti18n.get('solutionBuilderAgent.common.ok_btn'),\r\n\t\t\t\ti18n.get('solutionBuilderAgent.common.cancel_btn')\r\n\t\t\t)\r\n\t\t\t.then(function () {\r\n\t\t\t\tdeleteFile(file);\r\n\t\t\t});\r\n\t}\r\n\r\n\tfunction onComment(file) {\r\n\t\tnotificationService\r\n\t\t\t.prompt(\r\n\t\t\t\ti18n.get('components.mx-attachments.dialogCommentTitle'),\r\n\t\t\t\ti18n.getFormatted('components.mx-attachments.dialogCommentPrompt', file.name),\r\n\t\t\t\ti18n.get('components.common.comment'),\r\n\t\t\t\tfile.comment,\r\n\t\t\t\tfalse,\r\n\t\t\t\ti18n.get('solutionBuilderAgent.common.ok_btn'),\r\n\t\t\t\ti18n.get('solutionBuilderAgent.common.cancel_btn')\r\n\t\t\t)\r\n\t\t\t.then(function (result) {\r\n\t\t\t\tattachmentService.comment(file.id, result).then(\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tfile.comment = result;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfunction (error) {\r\n\t\t\t\t\t\tlet messages = ['Url: ' + error.config.url];\r\n\t\t\t\t\t\tmessages = messages.join('\\n');\r\n\t\t\t\t\t\tnotificationService.error(messages, `${error.statusText} (${error.status})`, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t}\r\n\r\n\tasync function onDownloadFiles(files) {\r\n\t\tif (Array.isArray(files) && files.length > 0) {\r\n\t\t\ttry {\r\n\t\t\t\tconst result = await attachmentService.downloadFiles(files);\r\n\t\t\t\tif (!result) {\r\n\t\t\t\t\tconst errorMessage = i18n.get('solutionBuilderAgent.errors.no_file_data');\r\n\t\t\t\t\tnotificationService.error(errorMessage);\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tlet messages = ['Url: ' + error.config.url];\r\n\t\t\t\tmessages = messages.join('\\n');\r\n\t\t\t\tnotificationService.error(messages, `${error.statusText} (${error.status})`, true);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tconst errorMessage = i18n.get('solutionBuilderAgent.errors.method_not_called');\r\n\t\t\tnotificationService.error(errorMessage);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction deleteFile(file) {\r\n\t\tattachmentService.deleteFiles([file]).then(function () {\r\n\t\t\tconst index = vm.files.indexOf(file);\r\n\t\t\tif (index > -1) {\r\n\t\t\t\tvm.files.splice(index, 1);\r\n\t\t\t}\r\n\t\t\tvm.filesExists = Boolean(vm.files.length);\r\n\t\t});\r\n\t}\r\n\r\n\tasync function onGetFileUrl(file) {\r\n\t\treturn await attachmentService.getFileUrl(file);\r\n\t}\r\n\r\n\tasync function initProviderSettings() {\r\n\t\tvm.storageInfo = await attachmentService.getStorageInfo(vm.entity);\r\n\t\tlet originalExtensions = [];\r\n\t\tif (!vm.storageInfo || !vm.storageInfo.fileExtensions || vm.storageInfo.fileExtensions === '') {\r\n\t\t\tvm.allowedFileTypes = '*';\r\n\t\t} else {\r\n\t\t\toriginalExtensions = vm.storageInfo.fileExtensions.split(',');\r\n\t\t\tlet extensions = originalExtensions.map((item) => {\r\n\t\t\t\tif (item === 'image' || item === 'video' || item === 'audio') {\r\n\t\t\t\t\treturn item + '/*';\r\n\t\t\t\t}\r\n\t\t\t\treturn item;\r\n\t\t\t});\r\n\t\t\tvm.allowedFileTypes = extensions.join(',');\r\n\t\t}\r\n\r\n\t\tvm.fileLimitsMessage = getFileLimitsMessage(originalExtensions);\r\n\t\tvm.settingsInitialized = true;\r\n\t}\r\n\r\n\tfunction getFileLimitsMessage(extensions) {\r\n\t\tif (!vm.storageInfo.fileExtensions && vm.storageInfo.maxFileSize <= 0 && vm.storageInfo.maxFilesPerObject < 0) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tlet fileLimitMessages = [];\r\n\t\tif (vm.storageInfo.maxFileSize > 0) {\r\n\t\t\tlet sizeInMb = vm.storageInfo.maxFileSize / (1024 * 1024);\r\n\t\t\tlet message = i18n.getFormatted('components.mx-object-attachments.maxFileSizeLimitMessage', sizeInMb);\r\n\t\t\tfileLimitMessages.push(message);\r\n\t\t}\r\n\t\tif (vm.storageInfo.maxFilesPerObject >= 0) {\r\n\t\t\tlet message = i18n.getFormatted('components.mx-object-attachments.maxFilesPerObjectLimitMessage', vm.storageInfo.maxFilesPerObject);\r\n\t\t\tfileLimitMessages.push(message);\r\n\t\t}\r\n\t\tif (vm.allowedFileTypes !== '*') {\r\n\t\t\tlet message = i18n.getFormatted('components.mx-object-attachments.allowedTypesLimitMessage', extensions.join(', '));\r\n\t\t\tfileLimitMessages.push(message);\r\n\t\t}\r\n\t\treturn i18n.getFormatted('components.mx-object-attachments.fileLimitListMessage', fileLimitMessages.join(', '));\r\n\t}\r\n\r\n\tfunction escapeHtml(unsafe) {\r\n\t\treturn unsafe?.replace(/&/g, '&').replace(/\"/g, '"').replace(//g, '>');\r\n\t}\r\n}\r\n","'use strict';\r\n\r\n/**\r\n * @ngdoc component\r\n * @restrict 'E'\r\n * @description\r\n * The `mx-attachments-picker` is used to create a picker where user can select files, attached to an objects.\r\n * Uses `mx-multi-picker` as a base.\r\n *\r\n * @param {guid} relatedObjectId@ - Specifies related object id.\r\n * @param {string} relatedEntity@ - Specifies related entity name.\r\n *\r\n * @usage \r\n */\r\nexport function MxAttachmentsPickerDirective() {\r\n\tconst directive = new mx.components.FormControlBase(MxAttachmentsPickerController, null);\r\n\r\n\tdirective.template = ``;\r\n\r\n\tangular.extend(directive.bindToController, {\r\n\t\trelatedObjectId: '@',\r\n\t\trelatedEntity: '@',\r\n\t\tngRequired: '=?',\r\n\t});\r\n\r\n\tangular.extend(directive.require, {\r\n\t\tparentViewController: '?^^mxView',\r\n\t});\r\n\r\n\tdelete directive.link;\r\n\r\n\treturn directive;\r\n}\r\n\r\nMxAttachmentsPickerController.$inject = ['mx.SolutionBuilderAgent.DialogOpenerService', 'mx.sb.Attachment.MxAttachmentService'];\r\n\r\nfunction MxAttachmentsPickerController(dialogOpener, attachmentService) {\r\n\tconst vm = this;\r\n\tlet refToPickerCtrl;\r\n\tvm.$onInit = function () {\r\n\t\tvm.loadItems = loadItems;\r\n\t\tvm.browseLookup = browseLookup;\r\n\t};\r\n\r\n\tfunction browseLookup() {\r\n\t\tconst promise = dialogOpener.selectFiles(vm.relatedObjectId, vm.relatedEntity, undefined, vm.parentViewController && vm.parentViewController.mxView);\r\n\r\n\t\treturn promise.then(function (data) {\r\n\t\t\trefToPickerCtrl.items = mapFileItem(data.files);\r\n\t\t\treturn data.selectedObjects;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction mapFileItem(items) {\r\n\t\treturn items\r\n\t\t\t.map(function (item) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tId: item.id,\r\n\t\t\t\t\tDisplayString: item.name,\r\n\t\t\t\t};\r\n\t\t\t})\r\n\t\t\t.sort(function (a, b) {\r\n\t\t\t\tif (a.DisplayString > b.DisplayString) {\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (a.DisplayString < b.DisplayString) {\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn 0;\r\n\t\t\t});\r\n\t}\r\n\r\n\tasync function loadItems(searchText, pickerCtrl) {\r\n\t\trefToPickerCtrl = pickerCtrl;\r\n\t\tconst result = await attachmentService.getFiles({\r\n\t\t\tobjectIds: vm.relatedObjectId && [vm.relatedObjectId],\r\n\t\t});\r\n\t\treturn mapFileItem(result);\r\n\t}\r\n}\r\n","import { EventCodes } from '../../../../App/model/event-codes';\r\nimport type { EventService } from '../../../../App/services/event-service';\r\nimport { ProcessItem } from '../../../Pandora/model/process-item';\r\nimport type { AttachmentMetaInfo } from './mx-attachment.contracts';\r\nimport type { MxBackgroundProcessesService } from '../../../Pandora/services/mx-background-processes-service';\r\nimport type { I18n } from '../../../../i18n/mx-internationalization';\r\nimport type { IWindowService } from 'angular';\r\nimport type { MxApplicationService } from '../../../../App/services/mx-application-service';\r\n\r\nexport class MxAttachmentProcessService {\r\n\tstatic $inject = ['mx.shell.EventService', 'mx.shell.BackgroundProcessesService', 'mx.internationalization', '$window', 'mx.shell.AppsService'];\r\n\tprivate preventHandler: (e: BeforeUnloadEvent) => void;\r\n\tconstructor(\r\n\t\tprivate readonly eventService: EventService,\r\n\t\tprivate readonly backgroundProcessService: MxBackgroundProcessesService,\r\n\t\tprivate readonly i18n: I18n,\r\n\t\tprivate readonly $window: IWindowService,\r\n\t\tprivate readonly appService: MxApplicationService\r\n\t) {\r\n\t\tconst currentApp = this.appService.getCurrentApplicationSync();\r\n\t\tconst message = this.i18n.getFormatted('shell.mx-shell-background-processes.prevent_reload', currentApp.name);\r\n\t\tthis.preventHandler = (event: BeforeUnloadEvent) => {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tevent.returnValue = message;\r\n\t\t\treturn message;\r\n\t\t};\r\n\t}\r\n\r\n\tpublic createForegroundProcess(attachmentInfo: AttachmentMetaInfo): ProcessItem {\r\n\t\tconst initiatedBy = attachmentInfo.uploadedBy;\r\n\t\tconst operationName = this.i18n.get('shell.mx-shell-background-processes.uploading');\r\n\t\tconst statusDetails = attachmentInfo.objectTitle ? `${attachmentInfo.objectTitle}: ${attachmentInfo.name}` : attachmentInfo.name;\r\n\t\tconst cancelable = true;\r\n\t\tconst processItem = new ProcessItem({\r\n\t\t\tId: attachmentInfo.id,\r\n\t\t\tOperationName: operationName,\r\n\t\t\tInitiatedBy: initiatedBy,\r\n\t\t\tStatusDetails: statusDetails,\r\n\t\t\tCancelable: cancelable,\r\n\t\t});\r\n\t\tprocessItem.longRunning = (attachmentInfo.size || 0) > 5 * 1024 * 1024;\r\n\t\tthis.backgroundProcessService.addForegroundProcess(processItem);\r\n\t\tthis.eventService.dispatchEvent(EventCodes.ForegroundProcessCreated, processItem);\r\n\t\tthis.preventReload(processItem);\r\n\t\treturn processItem;\r\n\t}\r\n\r\n\tpublic getForegroundProcessById(id: string): ProcessItem | undefined {\r\n\t\treturn this.backgroundProcessService.foregroundProcesses.find((process) => process.id === id);\r\n\t}\r\n\r\n\tprivate preventReload(processItem: ProcessItem) {\r\n\t\tif (!processItem.longRunning) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this.backgroundProcessService.foregroundProcesses.filter((process) => !process.finishTime).length === 1) {\r\n\t\t\tthis.$window.addEventListener('beforeunload', this.preventHandler);\r\n\t\t}\r\n\t\tprocessItem.onProcessStatusUpdated(async () => {\r\n\t\t\tif (this.backgroundProcessService.foregroundProcesses.every((process) => process.finishTime)) {\r\n\t\t\t\tthis.$window.removeEventListener('beforeunload', this.preventHandler);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","import * as angular from 'angular';\r\nimport { MxAttachmentService } from './mx-attachment.service';\r\nimport { MxObjectAttachments } from './mx-object-attachments/mx-object-attachments';\r\nimport { MxAttachmentsPickerDirective } from './mx-object-attachments/mx-attachments-picker';\r\nimport { MxAttachmentProcessService } from './mx-attachment-process.service';\r\n\r\nexport default angular\r\n\t.module('mx.sb.Attachment', [\r\n\t\t/*'mx.shell'*/\r\n\t])\r\n\t.directive('mxAttachmentsPicker', MxAttachmentsPickerDirective)\r\n\t.component('mxObjectAttachments', MxObjectAttachments)\r\n\t.service('mx.sb.Attachment.MxAttachmentProcessService', MxAttachmentProcessService)\r\n\t.service('mx.sb.Attachment.MxAttachmentService', MxAttachmentService).name;\r\n","NavigationItemsLoaderService.$inject = [\r\n\t'mx.SolutionBuilderAgent.Http',\r\n\t'mx.shell.RoutingService',\r\n\t'mx.shell.UserProfileService',\r\n\t'mx.internationalization',\r\n\t'mx.shell.AppsService',\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n\t'$q',\r\n\t'mx.shell.EventService',\r\n];\r\n\r\nexport function NavigationItemsLoaderService(http, routingService, userProfileService, i18n, appsService, personalizationService, $q, eventService) {\r\n\tlet _navCachePromises = null;\r\n\tlet _navReqPromise = null;\r\n\tlet currentApp;\r\n\tlet navigationOrderingPersonalization = {};\r\n\tlet userProfile;\r\n\r\n\treturn {\r\n\t\tload,\r\n\t\tloadNavigationItem,\r\n\t\tsetNavigationIdForStructure,\r\n\t\tgetNavigationItemsOfWidget,\r\n\t};\r\n\r\n\tfunction setNavigationIdForStructure(baseId, data, idProperty) {\r\n\t\tsetId(baseId, data);\r\n\r\n\t\tfunction setId(currentNavId, children) {\r\n\t\t\tchildren.forEach((item) => {\r\n\t\t\t\titem.navigationId = `${item[idProperty]}_${currentNavId}`;\r\n\t\t\t\tif (item.Children && item.Children.length) {\r\n\t\t\t\t\tsetId(item.navigationId, item.Children);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Recursivly search for all navigation items related to specific DataSetWidget\r\n\t *\r\n\t * @param items\r\n\t * @param dataSetWidgetId\r\n\t * @returns {Array}\r\n\t * @private\r\n\t */\r\n\tfunction _getNavigationItemsOfDataSetWidget(items, dataSetWidgetId) {\r\n\t\tlet result = [];\r\n\t\titems.forEach((navItem) => {\r\n\t\t\tif (navItem.contentWidgetId === dataSetWidgetId) {\r\n\t\t\t\tresult.push(navItem);\r\n\t\t\t}\r\n\t\t\tif (Array.isArray(navItem.children)) {\r\n\t\t\t\tresult = result.concat(_getNavigationItemsOfDataSetWidget(navItem.children, dataSetWidgetId));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t/**\r\n\t * Function which returns all loaded navigation items which are related to specific DataSetWidget\r\n\t *\r\n\t * @param dataSetWidgetId\r\n\t * @returns {Promise}\r\n\t */\r\n\tfunction getNavigationItemsOfWidget(dataSetWidgetId) {\r\n\t\treturn load().then((navItems) => _getNavigationItemsOfDataSetWidget(navItems, dataSetWidgetId));\r\n\t}\r\n\r\n\tfunction mapItems(data, parent, isConfigurable) {\r\n\t\treturn (data || [])\r\n\t\t\t.map((item) => {\r\n\t\t\t\t// If Nav-item has just one sub-item and this is \"Dynamic structure\"\r\n\t\t\t\t// (doesn't have own sub-items but they can be load dynamically)\r\n\t\t\t\t// Like this:\r\n\t\t\t\t// \"Knowledge Base\" > \"By Type\" > \"Technical Note\", \"Top Support\", ....\r\n\t\t\t\t// Then it makes sense to merge into one Nav-Item\r\n\t\t\t\t// To get structure like this:\r\n\t\t\t\t// \"Knowledge Base\" > \"Technical Note\", \"Top Support\", ....\r\n\t\t\t\tif (\r\n\t\t\t\t\titem.Children &&\r\n\t\t\t\t\titem.Children.length === 1 &&\r\n\t\t\t\t\titem.Children[0].StructureId &&\r\n\t\t\t\t\titem.Children[0].StructureImplementationType &&\r\n\t\t\t\t\titem.Filters &&\r\n\t\t\t\t\titem.Filters.length === 0\r\n\t\t\t\t) {\r\n\t\t\t\t\t//TODO: because of this \"map\" names for Service Catalog => Service | Bundle | Set | Group are similar. Should be fixed\r\n\t\t\t\t\titem.StructureId = item.Children[0].StructureId;\r\n\t\t\t\t\titem.NodeId = item.Children[0].NodeId;\r\n\t\t\t\t\titem.StructureImplementationType = item.Children[0].StructureImplementationType;\r\n\t\t\t\t\titem.RelativePath = item.Children[0].RelativePath;\r\n\t\t\t\t\titem.IsDynamicStructureOnly = true;\r\n\t\t\t\t\tdelete item.Children;\r\n\t\t\t\t\tdelete item.Filters;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn mapNavigationItem(item, parent, isConfigurable);\r\n\t\t\t})\r\n\t\t\t.filter((x) => x);\r\n\t}\r\n\r\n\tfunction mapNavigationItem(item, parent, isConfigurable) {\r\n\t\tconst url = item.Url;\r\n\t\tlet navigationItem = null;\r\n\r\n\t\tswitch (item.ImplementationType) {\r\n\t\t\tcase mx.SolutionBuilderAgent.NavigationItemImplementation.SearchPage:\r\n\t\t\t\tif (item.Widget) {\r\n\t\t\t\t\tif (item.StructureId) {\r\n\t\t\t\t\t\tnavigationItem = new mx.shell.NavigationItem(\r\n\t\t\t\t\t\t\titem.Title || item.Name,\r\n\t\t\t\t\t\t\t// Navigation Item's `name` should be unique\r\n\t\t\t\t\t\t\t//TODO: for Service Catalog => Service | Bundle | Set | Group the names are similar. Should be fixed\r\n\t\t\t\t\t\t\t`${item.StructureId}_${item.NodeId}`,\r\n\t\t\t\t\t\t\titem.Name,\r\n\t\t\t\t\t\t\troutingService.searchPageRoute\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\titem.Id = item.Id || `${item.NodeId}_${parent.id}`;\r\n\t\t\t\t\t\tif (parent) {\r\n\t\t\t\t\t\t\titem.DataQuery = item.DataQuery || parent.dataQuery;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tnavigationItem.parameters = {\r\n\t\t\t\t\t\t\tnavigationId: item.Id,\r\n\t\t\t\t\t\t\tfilterId: item.NodeId === item.StructureId ? '' : item.NodeId,\r\n\t\t\t\t\t\t\tfilterType: 'structure',\r\n\t\t\t\t\t\t\tappString: currentApp.name,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tnavigationItem.contentWidgetId = item.Widget;\r\n\r\n\t\t\t\t\t\tif (item.NodeId && !item.Children) {\r\n\t\t\t\t\t\t\tnavigationItem.structureConfig = item;\r\n\t\t\t\t\t\t\tnavigationItem.childrenDynamicLoader = async () => {\r\n\t\t\t\t\t\t\t\tnavigationItem._childrenLoaderPromise = navigationItem._childrenLoaderPromise || childrenDynamicLoader(navigationItem);\r\n\t\t\t\t\t\t\t\treturn await navigationItem._childrenLoaderPromise;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (item.DataQuery) {\r\n\t\t\t\t\t\tnavigationItem = new mx.shell.NavigationItem(item.Title, item.Name, item.Name, routingService.searchPageRoute);\r\n\r\n\t\t\t\t\t\tnavigationItem.defaultFilter = item.DefaultFilter;\r\n\t\t\t\t\t\tnavigationItem.parameters = {\r\n\t\t\t\t\t\t\tnavigationId: item.Id,\r\n\t\t\t\t\t\t\tfilterId: '',\r\n\t\t\t\t\t\t\tfilterType: 'nofilter',\r\n\t\t\t\t\t\t\tappString: currentApp.name,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tnavigationItem.contentWidgetId = item.Widget;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase mx.SolutionBuilderAgent.NavigationItemImplementation.CustomController:\r\n\t\t\t\tnavigationItem = new mx.shell.NavigationItem(\r\n\t\t\t\t\titem.Title,\r\n\t\t\t\t\titem.Name,\r\n\t\t\t\t\titem.Name,\r\n\t\t\t\t\troutingService.createRoutingItem({\r\n\t\t\t\t\t\tname: `${item.Name}_${mx.components.Utils.guid()}`,\r\n\t\t\t\t\t\tviewUrl: item.ControllerUrl,\r\n\t\t\t\t\t\tpath: item.Url,\r\n\t\t\t\t\t\ttitle: null,\r\n\t\t\t\t\t\tcontroller: item.Controller,\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase mx.SolutionBuilderAgent.NavigationItemImplementation.ExternalUrl:\r\n\t\t\t\tnavigationItem = new mx.shell.NavigationItem(item.Title, item.Name, item.Name, url);\r\n\t\t\t\tnavigationItem.openInNewWindow = item.OpenInNewWindow;\r\n\t\t\t\tbreak;\r\n\t\t\tcase mx.SolutionBuilderAgent.NavigationItemImplementation.LandingPage:\r\n\t\t\t\tif (item.Widget) {\r\n\t\t\t\t\tnavigationItem = new mx.shell.NavigationItem(item.Title, item.Name, item.Name, routingService.landingPageRoute);\r\n\t\t\t\t\tnavigationItem.contentWidgetId = item.Widget;\r\n\t\t\t\t\tnavigationItem.parameters = {\r\n\t\t\t\t\t\tnavigationId: item.Id,\r\n\t\t\t\t\t\tappString: currentApp.name,\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tnavigationItem = new mx.shell.NavigationItem(item.Title, item.Name, item.Name);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif (navigationItem === null) {\r\n\t\t\tconsole.error('Something is wrong with', item);\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tnavigationItem.id = item.Id;\r\n\t\tnavigationItem.icon = item.Icon;\r\n\t\tnavigationItem.dataQuery = item.DataQuery;\r\n\t\tnavigationItem.disabled = item.Disabled;\r\n\t\tnavigationItem.application = item.Application;\r\n\t\tnavigationItem.availableInSearch =\r\n\t\t\titem.DataQuery &&\r\n\t\t\titem.AvailableInSearch !== false &&\r\n\t\t\t(!item.StructureImplementationType || item.IsDynamicStructureOnly === true) &&\r\n\t\t\t(navigationItem.parameters?.filterType !== 'structure' || !navigationItem.parameters?.filterId);\r\n\t\tnavigationItem.hideLeftSideNavigation = Boolean(item.HideLeftSideNavigation);\r\n\t\tnavigationItem.configurable = typeof isConfigurable === 'undefined' ? true : isConfigurable;\r\n\t\tnavigationItem.children = mapItems(item.Children, navigationItem);\r\n\r\n\t\tif (!parent) {\r\n\t\t\tnavigationItem.icon = navigationItem.icon || 'launch';\r\n\t\t} else if (!navigationItem.parent) {\r\n\t\t\tnavigationItem.parent = parent;\r\n\t\t}\r\n\r\n\t\tif (item.Filters && item.Filters.length > 0) {\r\n\t\t\tlet quickFilterFlags = 0;\r\n\t\t\tconst quickFilters = ['', '', ''];\r\n\t\t\titem.Filters.forEach(({ QuickFilter, Id }) => {\r\n\t\t\t\tif (QuickFilter) {\r\n\t\t\t\t\tquickFilterFlags = quickFilterFlags + QuickFilter;\r\n\t\t\t\t\tquickFilters[QuickFilter - 1] = Id;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (quickFilterFlags === 6) {\r\n\t\t\t\tnavigationItem.quickFilters = quickFilters;\r\n\t\t\t}\r\n\r\n\t\t\tnavigationItem.children = navigationItem.children.concat(_buildFiltersTree(item));\r\n\t\t}\r\n\r\n\t\tnavigationItem.configurable = _isConfigurableItem(item, isConfigurable);\r\n\r\n\t\treturn navigationItem;\r\n\t}\r\n\r\n\tasync function mergeNavItems(originNav, loadedNav) {\r\n\t\tawait reloadAlreadyLoadedForMerge(originNav, loadedNav);\r\n\t\toriginNav = await _mergeNavItemsAddingAndEditing(originNav, loadedNav);\r\n\t\toriginNav = _mergeNavItemsDeleting(originNav, loadedNav);\r\n\t\treturn originNav;\r\n\t}\r\n\r\n\tasync function reloadAlreadyLoadedForMerge(originNav = [], loadedNav = []) {\r\n\t\tfor (const loadedNavItem of loadedNav) {\r\n\t\t\tconst originNavItem = originNav.find((originNavItem) => originNavItem.id === loadedNavItem.id);\r\n\t\t\tif (originNavItem) {\r\n\t\t\t\tif (originNavItem.dynamicChildrenLoaded && loadedNavItem.childrenDynamicLoader) {\r\n\t\t\t\t\tloadedNavItem.children = await loadDynamicChildren(loadedNavItem);\r\n\t\t\t\t}\r\n\t\t\t\tawait reloadAlreadyLoadedForMerge(originNavItem.children, loadedNavItem.children);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tasync function _mergeNavItemsAddingAndEditing(originNav = [], loadedNav = [], originParent) {\r\n\t\tfor (const loadedNavItem of loadedNav) {\r\n\t\t\tconst originNavItem = originNav.find((originNavItem) => originNavItem.id === loadedNavItem.id);\r\n\t\t\tif (originNavItem) {\r\n\t\t\t\toriginNavItem.title = loadedNavItem.title;\r\n\t\t\t\t_mergeNavItemsAddingAndEditing(originNavItem.children, loadedNavItem.children, originNavItem);\r\n\t\t\t} else {\r\n\t\t\t\toriginNav.push(loadedNavItem);\r\n\t\t\t\tif (originParent?.configurationModeOn) {\r\n\t\t\t\t\tloadedNavItem.configurationModeOn = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn originNav;\r\n\t}\r\n\r\n\tfunction _mergeNavItemsDeleting(originNav = [], loadedNav = []) {\r\n\t\tif (originNav.length > loadedNav.length) {\r\n\t\t\tfor (let i = originNav.length - 1; i > -1; i--) {\r\n\t\t\t\tif (!loadedNav.some((loadedItem) => loadedItem.id === originNav[i].id)) {\r\n\t\t\t\t\toriginNav.splice(i, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\toriginNav.forEach((originNavItem) => {\r\n\t\t\tconst loadedNavItem = loadedNav.find((loadedNavItem) => {\r\n\t\t\t\treturn loadedNavItem.id === originNavItem.id;\r\n\t\t\t});\r\n\r\n\t\t\tif (loadedNavItem) {\r\n\t\t\t\t_mergeNavItemsDeleting(originNavItem.children, loadedNavItem.children);\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn originNav;\r\n\t}\r\n\r\n\tasync function childrenDynamicLoader(navigationItem) {\r\n\t\tif (Array.isArray(navigationItem.children) && navigationItem.dynamicChildrenLoaded) {\r\n\t\t\treturn navigationItem.children;\r\n\t\t}\r\n\r\n\t\tconst newChildren = await loadDynamicChildren(navigationItem);\r\n\r\n\t\tnavigationItem.children = await mergeNavItems(navigationItem.children, newChildren);\r\n\t\t_visitChildrenTree(navigationItem.children, navigationItem.level);\r\n\r\n\t\teventService.dispatchEvent(mx.shell.EventCodes.NavigationChildrenLoaded, {\r\n\t\t\tparent: navigationItem.structureConfig,\r\n\t\t\tchildren: navigationItem.children,\r\n\t\t});\r\n\t\tnavigationItem.dynamicChildrenLoaded = true;\r\n\t\treturn navigationItem.children;\r\n\t}\r\n\r\n\tasync function loadDynamicChildren(navigationItem) {\r\n\t\tlet children = [];\r\n\r\n\t\tswitch (navigationItem.structureConfig.StructureImplementationType) {\r\n\t\t\tcase mx.SolutionBuilderAgent.StructureNavigationItemImplementation.DataDefinition:\r\n\t\t\t\tchildren = await dataDefinitionChildrenLoader(navigationItem.structureConfig);\r\n\t\t\t\tbreak;\r\n\t\t\tcase mx.SolutionBuilderAgent.StructureNavigationItemImplementation.ServiceOperation:\r\n\t\t\t\tchildren = await serviceChildrenLoader(navigationItem.structureConfig);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn mapItems(children, navigationItem, false);\r\n\t}\r\n\r\n\tasync function dataDefinitionChildrenLoader(item) {\r\n\t\treturn await http.get(`api/Navigation/Children/${item.Widget}/${item.NodeId}`);\r\n\t}\r\n\r\n\tasync function serviceChildrenLoader(item) {\r\n\t\tconst children = await http.get(\r\n\t\t\tbuildPath(item.RelativePath, {\r\n\t\t\t\twidgetId: item.Widget,\r\n\t\t\t\tnodeId: item.NodeId,\r\n\t\t\t})\r\n\t\t);\r\n\t\tsetStructureChildrenProperties(children, item);\r\n\t\treturn children;\r\n\t}\r\n\r\n\tfunction _visitChildrenTree(children, level) {\r\n\t\tchildren.forEach((child) => {\r\n\t\t\tchild.level = level + 1;\r\n\r\n\t\t\tif (child.children && child.children.length) {\r\n\t\t\t\t_visitChildrenTree(child.children, child.level);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// Navigation Item is configurable if it or its child has filter(s)\r\n\t// (according to code-logic - not just that case)\r\n\tfunction _isConfigurableItem({ Filters, Children }, forcedValue) {\r\n\t\tif (typeof forcedValue !== 'undefined') {\r\n\t\t\treturn forcedValue;\r\n\t\t}\r\n\r\n\t\tlet i;\r\n\t\tlet res = false;\r\n\r\n\t\tif (Filters && Filters.length > 0) {\r\n\t\t\tres = true;\r\n\t\t} else if (Children) {\r\n\t\t\tfor (i = 0; i < Children.length; i++) {\r\n\t\t\t\tif (_isConfigurableItem(Children[i])) {\r\n\t\t\t\t\tres = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\r\n\tfunction applyPersonalizedPosition(node, parent, navigationItem) {\r\n\t\tconst filtersOrdering = navigationOrderingPersonalization[`${navigationItem.Id}_${parent.Id}`];\r\n\t\tif (filtersOrdering) {\r\n\t\t\tnode.Position = typeof filtersOrdering[node.Id] === 'number' ? filtersOrdering[node.Id] : node.Position;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction sortByPosition({ Position: positionA = 0 }, { Position: positionB = 0 }) {\r\n\t\treturn positionA - positionB;\r\n\t}\r\n\r\n\tfunction sortFiltersTree(tree) {\r\n\t\ttree.sort(sortByPosition);\r\n\t\ttree.forEach((node) => {\r\n\t\t\tif (Array.isArray(node.Children)) {\r\n\t\t\t\tsortFiltersTree(node.Children);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction _buildFiltersTree(item) {\r\n\t\tconst tree = [];\r\n\t\titem.Filters.forEach((node) => {\r\n\t\t\tif (node.Parent) {\r\n\t\t\t\tconst parentFilter = item.Filters.find(({ Id }) => Id === node.Parent);\r\n\t\t\t\tif (parentFilter) {\r\n\t\t\t\t\tapplyPersonalizedPosition(node, parentFilter, item);\r\n\r\n\t\t\t\t\tif (Array.isArray(parentFilter.Children)) {\r\n\t\t\t\t\t\tparentFilter.Children.push(node);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tparentFilter.Children = [node];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tapplyPersonalizedPosition(node, item, item);\r\n\t\t\t\ttree.push(node);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tsortFiltersTree(tree);\r\n\r\n\t\treturn tree.map((node) => _createFilterNavigationItem(node, item, userProfile));\r\n\t}\r\n\r\n\tfunction _createFilterNavigationItem(filter, navigationItem, userProfile) {\r\n\t\tconst filterNavigation = new mx.shell.NavigationItem(filter.Title, filter.Id, filter.TitleNeutral, routingService.searchPageRoute);\r\n\r\n\t\tfilterNavigation.parameters = {\r\n\t\t\tnavigationId: filter.NavigationItem,\r\n\t\t\tfilterId: filter.Id,\r\n\t\t\tfilterType: 'filter',\r\n\t\t\tappString: currentApp.name,\r\n\t\t};\r\n\r\n\t\tfilterNavigation.contentWidgetId = navigationItem.Widget;\r\n\t\tfilterNavigation.__fromFilter = true;\r\n\t\tfilterNavigation.__fromContext = navigationItem.Name;\r\n\t\tfilterNavigation.name += filterNavigation.__fromContext;\r\n\t\tfilterNavigation.parent = filter.Parent;\r\n\t\tfilterNavigation.id = filter.Id;\r\n\t\tfilterNavigation.availableInSearch = false;\r\n\t\tfilterNavigation.originFilterReference = filter;\r\n\r\n\t\tfilterNavigation.draggable = true;\r\n\r\n\t\tif (Array.isArray(filter.Children)) {\r\n\t\t\tfilterNavigation.children = filter.Children.map((node) => _createFilterNavigationItem(node, navigationItem, userProfile));\r\n\t\t}\r\n\r\n\t\treturn filterNavigation;\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @async\r\n\t * @name mx.shell.NavigationItemsLoaderService#load\r\n\t *\r\n\t * @description\r\n\t * Loads navigation items.\r\n\t *\r\n\t * @param {boolean} reload - force reload\r\n\t * @param {NavigationItem[]} existedNavItems - existed navigation items to merge with new loaded items; used to keep locally changed titles\r\n\t *\r\n\t * @returns {promise} Resolved as an array of {@ref mx.shell.NavigationItem navigation items}. See {@ref mx.shell.NavigationItem navigation item} for details\r\n\t */\r\n\tfunction load(reload, existedNavItems) {\r\n\t\treload = reload === true;\r\n\t\tif (!_navCachePromises || reload) {\r\n\t\t\t_navCachePromises = appsService.getCurrentApplication().then((app) => {\r\n\t\t\t\tcurrentApp = app;\r\n\t\t\t\tif (!app || !app.value) {\r\n\t\t\t\t\treturn [];\r\n\t\t\t\t}\r\n\t\t\t\treturn (\r\n\t\t\t\t\t_navReqPromise ||\r\n\t\t\t\t\t(_navReqPromise = $q\r\n\t\t\t\t\t\t.all([http.get(`api/Navigation?app=${app.value}`), userProfileService.get(), personalizationService.getAllNavigationFiltersOrdering()])\r\n\t\t\t\t\t\t.then((data) => {\r\n\t\t\t\t\t\t\tuserProfile = data[1];\r\n\t\t\t\t\t\t\tnavigationOrderingPersonalization = data[2];\r\n\t\t\t\t\t\t\t_navReqPromise = null;\r\n\t\t\t\t\t\t\treturn mapItems(data[0], null);\r\n\t\t\t\t\t\t})).then((loadedNavData) => {\r\n\t\t\t\t\t\treturn existedNavItems ? mergeNavItems(existedNavItems, loadedNavData) : loadedNavData;\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn _navCachePromises;\r\n\t}\r\n\r\n\tfunction buildPath(relativePath, params) {\r\n\t\tangular.forEach(params, (value, key) => {\r\n\t\t\tconst regex = new RegExp(`{${key}:*\\\\w*\\\\?*}`, 'gi');\r\n\r\n\t\t\trelativePath = relativePath.replace(regex, value);\r\n\t\t});\r\n\r\n\t\treturn relativePath;\r\n\t}\r\n\r\n\tfunction setStructureChildrenProperties(children, structure) {\r\n\t\t(children || []).forEach((child) => {\r\n\t\t\tchild.Parent = structure.Id;\r\n\t\t\tchild.Widget = structure.Widget;\r\n\t\t\tchild.ImplementationType = structure.ImplementationType;\r\n\t\t\tchild.StructureId = structure.StructureId;\r\n\r\n\t\t\tif (child.Children) {\r\n\t\t\t\tsetStructureChildrenProperties(child.Children, structure);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction loadNavigationItem(navigationItemId) {\r\n\t\treturn http.get(`api/Navigation/Available/${navigationItemId}`);\r\n\t}\r\n}\r\n","/**\r\n * @ngdoc service\r\n * @name mx.shell.NavigationItemConfigurationActionsService\r\n * @module mx.shell\r\n *\r\n * @description\r\n * Navigation Item Configuration Actions\r\n */\r\n\r\nexport class MxNavigationItemConfigurationActionsService {\r\n\tstatic $inject = [\r\n\t\t'mx.internationalization',\r\n\t\t'mx.SolutionBuilderAgent.SearchQueryService',\r\n\t\t'mx.shell.ContextService',\r\n\t\t'mx.SolutionBuilderAgent.SearchQuery',\r\n\t\t'mx.shell.SearchProviderService',\r\n\t];\r\n\r\n\tconstructor(i18n, searchQueryService, contextService, SearchQuery, searchProviderService) {\r\n\t\tObject.assign(this, { i18n, searchQueryService, contextService, SearchQuery, searchProviderService });\r\n\t}\r\n\r\n\tgetAddingChildItemAction(navigationItem) {\r\n\t\tlet result;\r\n\t\tconst that = this;\r\n\t\tif (navigationItem.configurable && navigationItem.routingItem?.name === 'searchPage') {\r\n\t\t\tconst addChildAction = new mx.shell.Action(\r\n\t\t\t\t`add_child_filter_${navigationItem.name}`,\r\n\t\t\t\tthis.i18n.get('solutionBuilderAgent.filters.addChildFilter'),\r\n\t\t\t\t'add_circle_outline'\r\n\t\t\t);\r\n\t\t\taddChildAction.controller = function () {\r\n\t\t\t\treturn {\r\n\t\t\t\t\texecute() {\r\n\t\t\t\t\t\tthat.searchQueryService.openFilterDialog(null, navigationItem.searchContext, null, true);\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t};\r\n\t\t\tresult = [addChildAction];\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tgetFilterActions(navigationItem) {\r\n\t\tconst filter = navigationItem.originFilterReference;\r\n\t\tconst dataQuery = new this.SearchQuery(angular.extend(filter, { Widget: navigationItem.contentWidgetId }));\r\n\r\n\t\tif (!filter.CanEdit) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst editAction = new mx.shell.Action(`edit_filter_${filter.Id}`, this.i18n.get('solutionBuilderAgent.filters.editFilter'), 'edit');\r\n\t\teditAction.controller = this._getEditFilterActionController(dataQuery);\r\n\r\n\t\tconst deleteAction = new mx.shell.Action(`delete_filter_${filter.Id}`, this.i18n.get('solutionBuilderAgent.filters.deleteFilter'), 'cancel');\r\n\t\tdeleteAction.controller = this._getDeleteFilterActionController(dataQuery);\r\n\r\n\t\tconst addAction = new mx.shell.Action(`add_child_filter_${filter.Id}`, this.i18n.get('solutionBuilderAgent.filters.addChildFilter'), 'add_circle_outline');\r\n\t\taddAction.controller = this._getAddFilterChildActionController(dataQuery);\r\n\r\n\t\treturn [deleteAction, addAction, editAction];\r\n\t}\r\n\r\n\t_getDeleteFilterActionController(dataQuery) {\r\n\t\tconst that = this;\r\n\t\treturn function () {\r\n\t\t\treturn {\r\n\t\t\t\texecute() {\r\n\t\t\t\t\tif (dataQuery) {\r\n\t\t\t\t\t\tthat.searchQueryService.deleteFilter(dataQuery);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t};\r\n\t}\r\n\r\n\t_getEditFilterActionController(dataQuery) {\r\n\t\tconst that = this;\r\n\t\treturn function () {\r\n\t\t\treturn {\r\n\t\t\t\texecute() {\r\n\t\t\t\t\tthat._setUIToken();\r\n\t\t\t\t\tthat.searchQueryService.editFilter(dataQuery);\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t};\r\n\t}\r\n\r\n\t_getAddFilterChildActionController(dataQuery) {\r\n\t\tconst that = this;\r\n\t\treturn function () {\r\n\t\t\treturn {\r\n\t\t\t\texecute() {\r\n\t\t\t\t\tthat._setUIToken();\r\n\t\t\t\t\tthat.searchQueryService.addChildFilter(dataQuery);\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t};\r\n\t}\r\n\r\n\t_setUIToken() {\r\n\t\tthis.searchProviderService.uiToken = this.contextService.val('globalUiToken');\r\n\t}\r\n}\r\n","import template from './mx-shell-nav-item.html';\r\n\r\nmxShellNavItemDirective.$inject = ['mx.components.Recursion'];\r\nexport function mxShellNavItemDirective(recursion) {\r\n\treturn {\r\n\t\tbindToController: { item: '$mdSidenav\r\n * @requires {@ref mx.components.Recursion mx.components.Recursion}\r\n * @requires {@ref mx.shell.EventService mx.shell.EventService}\r\n * @requires {@ref mx.shell.RoutingService mx.shell.RoutingService}\r\n * @requires {@ref mx.shell.NavigationManager mx.shell.NavigationManager}\r\n * @requires {@ref mx.internationalization mx.internationalization}\r\n * @requires $mdSidenav\r\n * @requires mx.components.DragNDropUtils\r\n * @description\r\n * Presentation of a sidebar navigation item\r\n *\r\n * @param {mx.shell.NavigationItem} item= - {@ref mx.shell.NavigationItem Navigation Item model}\r\n * @usage
  • \r\n */\r\n\r\nMxShellNavItemCtrl.$inject = [\r\n\t'$scope',\r\n\t'$mdSidenav',\r\n\t'mx.app.DeviceService',\r\n\t'$timeout',\r\n\t'$element',\r\n\t'$attrs',\r\n\t'$window',\r\n\t'mx.shell.NavigationManager',\r\n\t'mx.shell.NavigationService',\r\n\t'mx.shell.EventService',\r\n\t'mx.internationalization',\r\n\t'mx.components.DragNDropUtils',\r\n\t'mx.shell.NavigationItemConfigurationActionsService',\r\n\t'mx.shell.RoutingService',\r\n];\r\n\r\nfunction MxShellNavItemCtrl(\r\n\t$scope,\r\n\t$mdSidenav,\r\n\tdeviceService,\r\n\t$timeout,\r\n\t$element,\r\n\t$attrs,\r\n\t$window,\r\n\tnavigationManager,\r\n\tnavigationService,\r\n\teventService,\r\n\ti18n,\r\n\tdragDrop,\r\n\tnavigationItemConfigurationActionsService,\r\n\troutingService\r\n) {\r\n\tconst vm = this;\r\n\r\n\tvm.NavigationManager = navigationManager;\r\n\r\n\tvm.navigationConfigurationModeOn = navigationService.configurationModeOn;\r\n\r\n\tvm.favouriteMode = $attrs.favouriteMode;\r\n\r\n\teventService.subscribeTo(mx.shell.EventCodes.NavToggled, onNavBarToggled, $scope);\r\n\teventService.subscribeTo(\r\n\t\tmx.shell.EventCodes.NavigationConfigurationModeChanged,\r\n\t\t(e, value) => {\r\n\t\t\tvm.navigationConfigurationModeOn = value;\r\n\t\t\tvm.item.beingConfigured = false;\r\n\t\t\tif (!value) {\r\n\t\t\t\tvm.item.configurationModeOn = false;\r\n\t\t\t}\r\n\t\t},\r\n\t\t$scope\r\n\t);\r\n\teventService.subscribeTo(\r\n\t\tmx.shell.EventCodes.NavigationItemEnteredConfigurationMode,\r\n\t\t(e, item) => {\r\n\t\t\tif (item !== vm.item && vm.item.configurationModeOn && vm.item.configurable) {\r\n\t\t\t\t_switchConfigurationMode();\r\n\t\t\t}\r\n\t\t},\r\n\t\t$scope\r\n\t);\r\n\r\n\tconst _tryShowMoreItemsDebounced = $.debounce(100, _tryShowMoreItems);\r\n\r\n\tvm.$onInit = () => {\r\n\t\tif (vm.item) {\r\n\t\t\t// set level\r\n\t\t\tif (vm.item.level === undefined) {\r\n\t\t\t\tvm.item.level = vm.item.parent && vm.item.parent.level !== undefined ? vm.item.parent.level + 1 : 0;\r\n\t\t\t}\r\n\r\n\t\t\t// TODO: `parameters`, `filterType`, `'structure'` it's just Agent specific and should be removed from mxShell.\r\n\t\t\tif (vm.item.parameters) {\r\n\t\t\t\tvm.item.isRootItemChildrenDynamicLoader = vm.item.parameters.filterType === 'structure' && !(vm.item.parent && vm.item.parent.childrenDynamicLoader);\r\n\t\t\t}\r\n\r\n\t\t\tvm.handleItemClick = _handleItemClick;\r\n\r\n\t\t\tvm.route = vm.item.route;\r\n\r\n\t\t\tvm.htmlClass = `mx-nav-item--${(vm.item ? vm.item.name : '').replace(/\\./g, '--')}`;\r\n\t\t\t// TODO: why do we need `vm.itemTitleClass` if we have `vm.htmlClass` ???\r\n\t\t\t// If it's need to use `title` for some reason - why don't just search elements by it's selector and content?\r\n\t\t\tvm.itemTitleClass = `mx-nav-item--auto-${vm.item.name.toLowerCase().replace('&', '-').split(' ').join('')}`;\r\n\r\n\t\t\tvm.hasChildrenCommonFilter = function () {\r\n\t\t\t\treturn vm.favouriteMode\r\n\t\t\t\t\t? vm.item.children.filter(vm.favoriteFilter).length > 0\r\n\t\t\t\t\t: typeof vm.item.childrenDynamicLoader === 'function' || (vm.item.children && vm.item.children.length > 0);\r\n\t\t\t};\r\n\r\n\t\t\t// Init context menu\r\n\t\t\tif (vm.item.configurable) {\r\n\t\t\t\t$element.bind('contextmenu', (event) => {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t$scope.$evalAsync(() => {\r\n\t\t\t\t\t\tnavigationManager.contextMenuData = {\r\n\t\t\t\t\t\t\tevent,\r\n\t\t\t\t\t\t\titemContextMenuExpanded: true,\r\n\t\t\t\t\t\t\titemContextMenu: [\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\ticon: 'settings',\r\n\t\t\t\t\t\t\t\t\tlabel: i18n.get('shell.mx-shell-nav.customizeNav'),\r\n\t\t\t\t\t\t\t\t\tonItemClick(event) {\r\n\t\t\t\t\t\t\t\t\t\tif (vm.item.isRootItemChildrenDynamicLoader) {\r\n\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t\t\t\t\t\tnavigationService.loadChildren(vm.item);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tvm.item.configurationModeOn = true;\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tvm.configurationActions = vm.item.__fromFilter\r\n\t\t\t\t? navigationItemConfigurationActionsService.getFilterActions(vm.item)\r\n\t\t\t\t: navigationItemConfigurationActionsService.getAddingChildItemAction(vm.item);\r\n\t\t}\r\n\t};\r\n\r\n\tvm.$postLink = () => {\r\n\t\tvm.itemBtnEl = $element.find('.mx-shell-nav-item--btn');\r\n\t\tif (vm.item && (vm.item.childrenDynamicLoader || vm.item.children.length)) {\r\n\t\t\tvm.itemBtnEl.attr('aria-haspopup', 'true');\r\n\t\t\tvm.itemBtnEl.attr('aria-expanded', 'false');\r\n\t\t}\r\n\t};\r\n\r\n\tvm.handleArrowClick = _handleArrowClick;\r\n\tvm.switchConfigurationMode = _switchConfigurationMode;\r\n\r\n\tvm.deviceService = deviceService;\r\n\tvm.onDrop = onDrop;\r\n\tvm.dragModeOn = dragModeOn;\r\n\tvm._formatAsHtmlClass = _formatAsHtmlClass;\r\n\r\n\tvm.favoriteFilter = ({ showInFavorite }) => {\r\n\t\tif (vm.favouriteMode) {\r\n\t\t\treturn showInFavorite;\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\r\n\t$scope.$watchCollection('vm.item.children', (children) => {\r\n\t\tif (Array.isArray(children)) {\r\n\t\t\t_tryInitShowMore();\r\n\t\t}\r\n\t});\r\n\r\n\t$scope.$watch('vm.item.selected', () => {\r\n\t\t_tryInitShowMore();\r\n\t\tif (vm.item && vm.item.selected !== undefined && (vm.item.childrenDynamicLoader || vm.item.children.length)) {\r\n\t\t\tvm.itemBtnEl.attr('aria-expanded', !!vm.item.selected);\r\n\t\t}\r\n\t});\r\n\r\n\t// Allows highlight just items from the same level (not all items per all structure)\r\n\t$element.on('dragstart', '> .mx-shell-nav-item--btn', _handleDragStart).on('dragend', '> .mx-shell-nav-item--btn', _handleDragEnd);\r\n\r\n\treturn vm;\r\n\r\n\tfunction _formatAsHtmlClass(htmlClass) {\r\n\t\treturn (htmlClass || 'undefined').split(' ').join('_');\r\n\t}\r\n\r\n\tfunction _handleDragStart() {\r\n\t\tif ($('.mx-dynamic-nav-styles').length === 0) {\r\n\t\t\t$(\r\n\t\t\t\t``\r\n\t\t\t).appendTo('head');\r\n\t\t}\r\n\t}\r\n\r\n\tfunction _handleDragEnd() {\r\n\t\t$('.mx-dynamic-nav-styles').remove();\r\n\t}\r\n\r\n\tfunction dragModeOn() {\r\n\t\treturn vm.item.draggable && ((vm.item.level === 0 && vm.navigationConfigurationModeOn) || (vm.item.level > 0 && vm.item.configurationModeOn));\r\n\t}\r\n\r\n\tfunction _switchConfigurationMode() {\r\n\t\tvm.item.configurationModeOn = !vm.item.configurationModeOn;\r\n\t\tif (vm.item.configurationModeOn) {\r\n\t\t\teventService.dispatchEvent(mx.shell.EventCodes.NavigationItemEnteredConfigurationMode, vm.item);\r\n\t\t}\r\n\t}\r\n\r\n\tasync function onDrop($event) {\r\n\t\tconst receiverItem = vm.item;\r\n\t\tconst movedItemName = dragDrop.getDropData($event).movedItemName;\r\n\r\n\t\tawait navigationService.changeNavigationOrdering(movedItemName, receiverItem);\r\n\t}\r\n\r\n\tfunction _handleArrowClick($event, item) {\r\n\t\t$event.preventDefault();\r\n\t\t$event.stopPropagation();\r\n\r\n\t\tif (item.selected) {\r\n\t\t\t$timeout(() => {\r\n\t\t\t\titem.selected = false;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tnavigationService.loadChildren(item);\r\n\t\t\titem.selected = true;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction onNavBarToggled() {\r\n\t\tif (vm.item.selected) {\r\n\t\t\tvm.item.selected = false;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction _handleItemClick($event, item) {\r\n\t\t$event.preventDefault();\r\n\t\t$event.stopPropagation();\r\n\t\tlet handleItemClickPromise = routingService.isCurrent(item.route, item.parameters) ? routingService.reload() : navigationService.setCurrentNavigationItem(item);\r\n\t\teventService.dispatchEvent(mx.shell.EventCodes.TrackTelemetry, { eventName: `Navigation clicked`, sender: item.id, senderTitle: item.technicalName });\r\n\r\n\t\thandleItemClickPromise\r\n\t\t\t.then(() => {\r\n\t\t\t\teventService.dispatchEvent(mx.shell.EventCodes.NavigationItemClicked, item);\r\n\r\n\t\t\t\tvm.item.beingConfigured = vm.item.configurationModeOn && item === vm.item;\r\n\r\n\t\t\t\tif (deviceService.screenMobile() && item.route) {\r\n\t\t\t\t\t$mdSidenav('mx-shell-left-sidebar').close();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch(mx.logCatch);\r\n\t}\r\n\r\n\tfunction _tryInitShowMore() {\r\n\t\tvm.__limitTo = 50;\r\n\t\tif (vm.__limitTo < vm.item.children?.length && vm.item.selected) {\r\n\t\t\t_tryShowMoreItemsDebounced();\r\n\t\t\t$window.addEventListener('scroll', _tryShowMoreItemsDebounced, true);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction _tryShowMoreItems() {\r\n\t\tconst showMoreBtn = $element.find('.mx-shell-nav-item--show-more');\r\n\t\tif (showMoreBtn.length > 0 && showMoreBtn.offset().top < $($window).height()) {\r\n\t\t\tshowMoreBtn.click();\r\n\t\t} else if (showMoreBtn.length === 0) {\r\n\t\t\t$window.removeEventListener('scroll', _tryShowMoreItemsDebounced, true);\r\n\t\t}\r\n\t}\r\n}\r\n","// Module\nvar code = \"
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n\\t\\tdone\\r\\n\\t\\r\\n\\r\\n\\t
    \\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
    \\r\\n\\r\\n\\t
    \\r\\n\\t\\t{{:: vm.item.title}}\\r\\n\\t
    \\r\\n\\r\\n\\t\\r\\n\\t\\tchevron_right\\r\\n\\t\\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n
      \\r\\n\\r\\n\\t
    • \\r\\n\\t
    • \\r\\n\\r\\n\\t
    • \\r\\n\\t\\t{{'shell.common.showMore' | mxi18n}}...\\r\\n\\t
    • \\r\\n
    \\r\\n\";\n// Exports\nexport default code;","import template from './mx-shell-navigation-panel.html';\r\nimport { EventCodes } from '../../../../App/model/event-codes';\r\n\r\n/**\r\n * @ngdoc component\r\n * @name mx.shell:mxShellNav\r\n * @module mx.shell\r\n * @requires $document\r\n * @requires $timeout\r\n * @requires $mdSidenav\r\n * @requires {@ref mx.internationalization mx.internationalization}\r\n * @requires {@ref mx.shell.NavigationService mx.shell.NavigationService}\r\n * @requires {@ref mx.shell.EventService mx.shell.EventService}\r\n * @requires {@ref mx.shell.NavigationManager mx.shell.NavigationManager}\r\n * @requires {@ref mx.shell.Config mx.shell.Config}\r\n * @description\r\n * Side panel that contains navigation items\r\n * @usage \r\n */\r\n\r\nexport const mxShellNavigationPanelComponent = {\r\n\tbindings: {\r\n\t\tfavouriteMode: '<',\r\n\t},\r\n\tcontroller: MxShellNavigationPanelCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate,\r\n};\r\n\r\nMxShellNavigationPanelCtrl.$inject = [\r\n\t'mx.internationalization',\r\n\t'mx.shell.NavigationService',\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.NavigationManager',\r\n\t'mx.shell.LeftSidebarService',\r\n\t'$scope',\r\n\t'$element',\r\n\t'$mdConstant',\r\n\t'$document',\r\n];\r\n\r\nfunction MxShellNavigationPanelCtrl(i18n, navigationService, eventService, navigationManager, leftSidebarService, $scope, $element, $mdConstant, $document) {\r\n\tconst vm = this;\r\n\r\n\tvm.NavigationManager = navigationManager;\r\n\tvm.navigationService = navigationService;\r\n\tvm.changeFilterText = changeFilterText;\r\n\r\n\tconst _settingsLabel = i18n.get('shell.common.settings').toLowerCase();\r\n\tvm.isSettingLabelVisible = (searchText) => !searchText || _settingsLabel.includes(searchText.toLowerCase());\r\n\r\n\teventService.subscribeTo(\r\n\t\tmx.shell.EventCodes.NavigationLoaded,\r\n\t\t(event, { navItems }) => {\r\n\t\t\tinit(navItems);\r\n\t\t},\r\n\t\t$scope\r\n\t);\r\n\r\n\tvm.$onInit = () => {\r\n\t\tvm.isVisible = true;\r\n\t\tnavigationService.get().then((navItems) => {\r\n\t\t\tvm.isNavLoaded = true;\r\n\t\t\tinit(navItems);\r\n\t\t\tinitKeyboardControl();\r\n\t\t});\r\n\t};\r\n\r\n\tvm.favoriteFilter = ({ showInFavorite }) => {\r\n\t\tif (vm.favouriteMode) {\r\n\t\t\treturn showInFavorite;\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\r\n\treturn vm;\r\n\r\n\tfunction init(navItems) {\r\n\t\tvm.configurationModeOn = false;\r\n\r\n\t\tvm.navItems = navItems;\r\n\t\t// navigationManager.__navItemsModel = vm.navItems;\r\n\r\n\t\tif (Array.isArray(navItems) && navItems.length) {\r\n\t\t\tleftSidebarService.enablePanel('navigation');\r\n\t\t} else {\r\n\t\t\tleftSidebarService.disablePanel('navigation');\r\n\t\t}\r\n\t}\r\n\r\n\tfunction changeFilterText(filterText) {\r\n\t\tconst oldFilterText = vm.NavigationManager.filterText;\r\n\r\n\t\tif (filterText || (oldFilterText && !filterText)) {\r\n\t\t\tnavigationService.markFilterTextMatched(vm.navItems, filterText.toLowerCase(), undefined, (filterText || '').length > (oldFilterText || '').length);\r\n\t\t\tvm.NavigationManager.filterText = filterText;\r\n\r\n\t\t\teventService.dispatchEvent(EventCodes.TrackTelemetry, {\r\n\t\t\t\teventName: 'Search in Navigation executed',\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction initKeyboardControl() {\r\n\t\tlet allNavItems;\r\n\r\n\t\t$element.keydown(({ keyCode }) => {\r\n\t\t\tconst activeEl = $($document[0].activeElement);\r\n\t\t\tif (activeEl.is('.mx-shell-nav-item--btn')) {\r\n\t\t\t\tif (keyCode === $mdConstant.KEY_CODE.ESCAPE) {\r\n\t\t\t\t\tactiveEl.blur();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (keyCode === $mdConstant.KEY_CODE.DOWN_ARROW) {\r\n\t\t\t\t\t_getClosestSibling(activeEl, true).focus();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (keyCode === $mdConstant.KEY_CODE.UP_ARROW) {\r\n\t\t\t\t\t_getClosestSibling(activeEl, false).focus();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\teventService.subscribeTo(\r\n\t\t\tmx.shell.EventCodes.NavigationItemClicked,\r\n\t\t\t() => {\r\n\t\t\t\tallNavItems = undefined;\r\n\t\t\t},\r\n\t\t\t$scope\r\n\t\t);\r\n\r\n\t\tfunction _getClosestSibling(activeEl, downOtherwiseUp) {\r\n\t\t\tlet res = activeEl;\r\n\t\t\tallNavItems = allNavItems || $element.find('.mx-shell-nav-item--btn');\r\n\t\t\tconst currentNavItemIndex = allNavItems.index(activeEl);\r\n\t\t\tif (downOtherwiseUp && currentNavItemIndex !== -1 && currentNavItemIndex + 1 < allNavItems.length) {\r\n\t\t\t\tres = $(allNavItems[currentNavItemIndex + 1]);\r\n\t\t\t} else if (!downOtherwiseUp && currentNavItemIndex > 0) {\r\n\t\t\t\tres = $(allNavItems[currentNavItemIndex - 1]);\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t}\r\n\t}\r\n}\r\n","// Module\nvar code = \"\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\";\n// Exports\nexport default code;","/**\r\n * @ngdoc type\r\n * @name NavigationManager\r\n * @module mx.sb.Navigation\r\n *\r\n * @property {string} avatar - Read-only. Gets user profile avatar's url obtained from profile service.\r\n * @property {string} firstName - Read-only. Gets user first name obtained from profile service.\r\n * @property {string} lastName - Read-only. Gets user last name obtained from profile service.\r\n * @property {boolean} collapsedState - Control and reflect current navigation state: extended or collapsed.\r\n *\r\n * @description\r\n * A factory that produces Navigation Manager object that is used to manage the visibility of a side panel.\r\n */\r\nimport { UserProfileService } from '../../App/services/user-profile-service';\r\nimport { EventService } from '../../App/services/event-service';\r\nimport { EventCodes } from '../../App/model/event-codes';\r\nimport { UserProfile } from '../../App/model/user-profile';\r\nimport { NavigationItem } from './model/navigation-item';\r\n\r\nexport class NavigationManager {\r\n\tpublic static $inject = ['mx.shell.UserProfileService', 'mx.shell.EventService'];\r\n\tpublic collapsedMode = false;\r\n\tpublic filterText = '';\r\n\r\n\tpublic avatar: UserProfile['avatar'] | null = null;\r\n\tpublic firstName: UserProfile['firstName'] | null = null;\r\n\tpublic lastName: UserProfile['lastName'] | null = null;\r\n\tpublic email: UserProfile['email'] | null = null;\r\n\r\n\tconstructor(private readonly userProfileService: UserProfileService, private readonly eventService: EventService) {\r\n\t\tthis.collapsedMode = localStorage && localStorage.getItem('mxShellNavCollapsedMode') === 'true';\r\n\r\n\t\tuserProfileService.get().then((profile) => {\r\n\t\t\tthis.setUserInfo(profile);\r\n\r\n\t\t\tthis.eventService.subscribeGlobal(EventCodes.ProfileChanged, (event, profile: UserProfile) => this.setUserInfo(profile));\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t \tBe very careful - it's very performance-expensive method\r\n\t */\r\n\tpublic filterNavTree(item: NavigationItem) {\r\n\t\treturn item.matchesFilterCriteria !== false;\r\n\t}\r\n\r\n\tprivate setUserInfo(profile: UserProfile): void {\r\n\t\tthis.avatar = profile ? profile.avatar : null;\r\n\t\tthis.firstName = profile ? profile.firstName : null;\r\n\t\tthis.lastName = profile ? profile.lastName : null;\r\n\t\tthis.email = profile ? profile.email : null;\r\n\t}\r\n}\r\n","/**\r\n * @ngdoc service\r\n * @name mx.shell.NavigationProviderService\r\n * @module mx.shell\r\n *\r\n * @description\r\n * Represents an interface for injection concrete implementation of the Navigation Items loading mechanism.\r\n */\r\nMxNavigationProviderService.$inject = ['mx.shell.RoutingService', 'mx.shell.NavigationItemsLoaderService'];\r\nexport function MxNavigationProviderService(routingService, navigationItemsLoaderService) {\r\n\treturn {\r\n\t\tload,\r\n\t};\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @async\r\n\t * @name mx.shell.NavigationProviderService#load\r\n\t *\r\n\t * @description\r\n\t * Loads navigation items. Should be implemented\r\n\t *\r\n\t * @param {boolean} param - force reload\r\n\t * @param {boolean} loadOnly - do not change route to current navigation item after loading\r\n\t * @param {NavigationItem[]} existedNavItems - existed navigation items to merge with new loaded items; used to keep locally changed properties\r\n\t *\r\n\t * @returns {promise} Resolved as an array of {@ref mx.shell.NavigationItem navigation items}. See {@ref mx.shell.NavigationItem navigation item} for details\r\n\t */\r\n\tasync function load(param, loadOnly, existedNavItems) {\r\n\t\tconst forceLoad = param === true;\r\n\r\n\t\tconst isDeepLinking = location.pathname.includes('/object-details/');\r\n\r\n\t\tif (isDeepLinking) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\tconst navItems = await navigationItemsLoaderService.load(forceLoad, existedNavItems);\r\n\t\tconst currentNavItem = findCurrentNavItem(navItems);\r\n\r\n\t\tif (!loadOnly && currentNavItem) {\r\n\t\t\troutingService.go(currentNavItem.item.route, currentNavItem.item.parameters);\r\n\t\t}\r\n\t\treturn navItems;\r\n\t}\r\n\r\n\tfunction getRoutingUrl(path, params) {\r\n\t\tif (!params) {\r\n\t\t\treturn path;\r\n\t\t}\r\n\r\n\t\treturn path.replace(/:([\\w\\d]+)\\??/g, (str, p1) => (params.hasOwnProperty(p1) ? params[p1] : str));\r\n\t}\r\n\r\n\tfunction findCurrentNavItem(navItems) {\r\n\t\tif (!Array.isArray(navItems)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst url = location.href;\r\n\r\n\t\tfor (const i in navItems) {\r\n\t\t\tif (navItems.hasOwnProperty(i)) {\r\n\t\t\t\tconst item = navItems[i];\r\n\r\n\t\t\t\tif (item.routingItem && item.routingItem.path) {\r\n\t\t\t\t\tconst routingUrl = getRoutingUrl(item.routingItem.path, item.parameters);\r\n\r\n\t\t\t\t\tif (url.lastIndexOf(routingUrl) === url.length - routingUrl.length) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tappCode: item.application,\r\n\t\t\t\t\t\t\turl: routingUrl,\r\n\t\t\t\t\t\t\titem,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (Array.isArray(item.children)) {\r\n\t\t\t\t\tconst currentAsChild = findCurrentNavItem(item.children);\r\n\r\n\t\t\t\t\tif (currentAsChild) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tappCode: item.application,\r\n\t\t\t\t\t\t\turl: currentAsChild.url,\r\n\t\t\t\t\t\t\titem: currentAsChild.item,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n}\r\n","MxNavigationService.$inject = [\r\n\t'$window',\r\n\t'mx.shell.NavigationProviderService',\r\n\t'mx.shell.RoutingService',\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.UserProfileService',\r\n\t'mx.SolutionBuilderAgent.PersonalizationService',\r\n\t'mx.shell.AppsService',\r\n];\r\n\r\n/**\r\n * @ngdoc service\r\n * @name mx.shell.NavigationService\r\n * @module mx.shell\r\n *\r\n * @requires {@ref mx.shell.NavigationProviderService mx.shell.NavigationProviderService}\r\n * @requires {@ref mx.shell.RoutingService mx.shell.RoutingService}\r\n * @requires {@ref mx.shell.EventService mx.shell.EventService}\r\n *\r\n * @property {boolean} configurationModeOn - Gets or sets navigation configuration mode.\r\n *\r\n * @description\r\n * A service prepares navigation items and provides method to get them\r\n */\r\nexport function MxNavigationService($window, navigationProviderService, routingService, eventService, userProfileService, personalizationService, appsService) {\r\n\tconst selfContract = {\r\n\t\tget,\r\n\t\tgetNavigationItem,\r\n\t\tloadChildren,\r\n\t\tmarkFilterTextMatched,\r\n\t\tsetNavigationItemById,\r\n\t\tsetCurrentNavigationItem,\r\n\t\tsetActiveStatus,\r\n\t\tgetFlatArrayOfNavItems,\r\n\t\tsetExtraItem,\r\n\t\tchangeNavigationOrdering,\r\n\t\tsetNavigationProvider,\r\n\t};\r\n\r\n\teventService.subscribeGlobal(mx.shell.EventCodes.RouteActivated, setNavigationItemFromRoute);\r\n\teventService.subscribeGlobal(mx.shell.EventCodes.NavigationChildrenLoaded, virtualCollectionChildrenLoaded);\r\n\teventService.subscribeGlobal(mx.shell.EventCodes.NavigationReload, get.bind(this, true));\r\n\r\n\tlet navItems;\r\n\tlet navigationLoaderPromise;\r\n\tlet partiallyOpenedItem;\r\n\tlet currentItem;\r\n\tlet extraItem;\r\n\tlet configurationModeOn = false;\r\n\tselfContract.openSettingHandler = null;\r\n\r\n\tObject.defineProperty(selfContract, 'currentItem', {\r\n\t\tenumerable: true,\r\n\t\tget() {\r\n\t\t\treturn currentItem;\r\n\t\t},\r\n\t\tset: setCurrentNavigationItem,\r\n\t});\r\n\r\n\tObject.defineProperty(selfContract, 'extraItem', {\r\n\t\tenumerable: true,\r\n\t\tget() {\r\n\t\t\treturn extraItem;\r\n\t\t},\r\n\t\tset: setExtraItem,\r\n\t});\r\n\r\n\tObject.defineProperty(selfContract, 'navItems', {\r\n\t\tenumerable: true,\r\n\t\tget() {\r\n\t\t\treturn navItems;\r\n\t\t},\r\n\t});\r\n\r\n\tObject.defineProperty(selfContract, 'configurationModeOn', {\r\n\t\tenumerable: true,\r\n\t\tget() {\r\n\t\t\treturn configurationModeOn;\r\n\t\t},\r\n\t\tset(newValue) {\r\n\t\t\tif (configurationModeOn !== newValue) {\r\n\t\t\t\tconfigurationModeOn = newValue;\r\n\t\t\t\teventService.dispatchEvent(mx.shell.EventCodes.NavigationConfigurationModeChanged, configurationModeOn);\r\n\t\t\t}\r\n\t\t},\r\n\t});\r\n\r\n\treturn selfContract;\r\n\r\n\tfunction setNavigationProvider(navigationProvider) {\r\n\t\tif (navigationProvider && typeof navigationProvider.load === 'function') {\r\n\t\t\tnavigationProviderService = navigationProvider;\r\n\t\t}\r\n\t}\r\n\r\n\tasync function changeNavigationOrdering(movedItemName, receiverItem) {\r\n\t\tconst movedItem = await getNavigationItemByName(movedItemName);\r\n\r\n\t\t// If moved and received items are children of the same parent\r\n\t\t// And in the same group (or both without group)\r\n\t\t// Then moving can be done.\r\n\t\tif (!movedItem || movedItem.parent !== receiverItem.parent || receiverItem.groupId !== movedItem.groupId || movedItem.parameters?.filterType !== 'filter') {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst items = movedItem.parent.children;\r\n\r\n\t\tconst receiverIndex = items.indexOf(receiverItem);\r\n\t\tconst movedItemIndex = items.indexOf(movedItem);\r\n\r\n\t\titems.splice(movedItemIndex, 1);\r\n\t\titems.splice(receiverIndex + (receiverIndex < movedItemIndex ? 1 : 0), 0, movedItem);\r\n\r\n\t\tconst navigationItem = getNavigationItemOfFilter(movedItem);\r\n\r\n\t\tawait personalizationService.saveNavigationFiltersOrdering(navigationItem, movedItem.parent);\r\n\t}\r\n\r\n\tfunction getNavigationItemOfFilter(filterNavigationItem) {\r\n\t\tlet navigationItem = filterNavigationItem;\r\n\t\tdo {\r\n\t\t\tnavigationItem = navigationItem.parent;\r\n\t\t} while (navigationItem.__fromFilter);\r\n\t\treturn navigationItem;\r\n\t}\r\n\r\n\tasync function setNavigationItemFromRoute() {\r\n\t\tlet item;\r\n\r\n\t\tconst currentState = routingService.getCurrent();\r\n\t\tif (currentState.parameters && currentState.parameters.navigationId && currentState.parameters.navigationId.includes('_')) {\r\n\t\t\titem = await getNavigationItem(currentState.parameters.navigationId);\r\n\t\t\tif (!routingService.isCurrent((item.routingItem || {}).name, item.parameters)) {\r\n\t\t\t\titem = null;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tconst items = await get();\r\n\t\t\titem = findCurrent(items);\r\n\t\t}\r\n\r\n\t\tif (item !== currentItem) {\r\n\t\t\tselfContract.currentItem = item;\r\n\t\t}\r\n\t}\r\n\r\n\tasync function virtualCollectionChildrenLoaded(event, data) {\r\n\t\tconst items = await selfContract.get(false);\r\n\t\tconst parent = data.parent;\r\n\t\tconst children = data.children;\r\n\r\n\t\tconst parentItem = findByRouteParams(items, parent);\r\n\r\n\t\tif (parentItem) {\r\n\t\t\tchildren.forEach((child) => {\r\n\t\t\t\tchild.parent = parent;\r\n\t\t\t});\r\n\t\t\tparentItem.children = children;\r\n\r\n\t\t\tlet parentRoot = parentItem;\r\n\t\t\tlet loop = true;\r\n\r\n\t\t\twhile (loop) {\r\n\t\t\t\tconst _parent = parentRoot.parent;\r\n\r\n\t\t\t\tif (!_parent || !_parent.childrenDynamicLoader) {\r\n\t\t\t\t\tloop = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tparentRoot = _parent;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction findByRouteParams(items, selectedItem) {\r\n\t\tlet found = null;\r\n\r\n\t\titems.some((item) => {\r\n\t\t\tconst isEqual = equalForParams(item.parameters, selectedItem.parameters);\r\n\r\n\t\t\tif (isEqual) {\r\n\t\t\t\tfound = item;\r\n\t\t\t\treturn true;\r\n\t\t\t} else if (item.children && item.children.length) {\r\n\t\t\t\tfound = findByRouteParams(item.children, selectedItem);\r\n\t\t\t\tif (found) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn found;\r\n\t}\r\n\r\n\tfunction equalForParams(a, b) {\r\n\t\tif (!a || !b) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst keys = Object.keys(a);\r\n\r\n\t\tconst length = keys.length;\r\n\r\n\t\tfor (let i = 0; i < length; i++) {\r\n\t\t\tconst k = keys[i];\r\n\r\n\t\t\tif (a[k] !== b[k]) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tasync function loadChildren(item) {\r\n\t\tif (item.childrenDynamicLoader) {\r\n\t\t\treturn await item.childrenDynamicLoader(item);\r\n\t\t} else {\r\n\t\t\treturn item.children || [];\r\n\t\t}\r\n\t}\r\n\r\n\tasync function findDynamicChild(children, parenId, ids) {\r\n\t\tif (Array.isArray(children) && Array.isArray(ids) && ids.length > 0) {\r\n\t\t\tconst found = getItemById(children, `${ids[ids.length - 1]}_${parenId}`);\r\n\t\t\tif (!found) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\tif (ids.length > 1) {\r\n\t\t\t\tconst children2 = await loadChildren(found);\r\n\t\t\t\treturn await findDynamicChild(children2, found.id, ids.splice(0, ids.length - 1));\r\n\t\t\t} else {\r\n\t\t\t\treturn found;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction findCurrent(items) {\r\n\t\tconst comparer = (item) => routingService.isCurrent((item.routingItem || {}).name, item.parameters);\r\n\t\treturn getItem(items, comparer);\r\n\t}\r\n\r\n\tasync function getNavigationItem(id) {\r\n\t\tconst items = await get();\r\n\t\treturn await getNavigationItemById(items, id);\r\n\t}\r\n\r\n\tasync function getNavigationItemById(items = [], id) {\r\n\t\tif (id.includes('_')) {\r\n\t\t\tconst ids = id.split('_');\r\n\t\t\tconst parent = getItemById(items, ids[ids.length - 1]);\r\n\t\t\tlet children = await loadChildren(parent);\r\n\t\t\treturn findDynamicChild(children, parent.id, ids.splice(0, ids.length - 1));\r\n\t\t} else {\r\n\t\t\treturn getItemById(items, id);\r\n\t\t}\r\n\t}\r\n\r\n\tasync function getNavigationItemByName(name) {\r\n\t\tconst items = await get();\r\n\t\tconst comparer = (item) => item.name.toLowerCase() === name.toLowerCase();\r\n\t\treturn getItem(items, comparer);\r\n\t}\r\n\r\n\tfunction getItemById(items, id) {\r\n\t\tconst comparer = (item) => item.id.toLowerCase() === id.toLowerCase();\r\n\t\treturn getItem(items, comparer);\r\n\t}\r\n\r\n\tfunction getItem(items, comparer) {\r\n\t\tlet found = null;\r\n\r\n\t\titems.some((item) => {\r\n\t\t\tif (comparer(item)) {\r\n\t\t\t\tfound = item;\r\n\t\t\t\treturn true;\r\n\t\t\t} else if (Array.isArray(item.children)) {\r\n\t\t\t\tfound = getItem(item.children, comparer);\r\n\t\t\t\tif (found) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn found;\r\n\t}\r\n\r\n\t/**\r\n\t * @ngdoc method\r\n\t * @name mx.shell.NavigationService#get\r\n\t *\r\n\t * @param {boolean} reload - If true - forces navigation items to be loaded from {@ref mx.shell.NavigationProviderService navigationProviderService}.\r\n\t *\r\n\t * @description\r\n\t * Gets navigation items from cache or loads it from {@ref mx.shell.NavigationProviderService navigationProviderService}.\r\n\t *\r\n\t * @returns {promise} Resolves as an array of {@ref mx.shell.NavigationItem mx.shell.NavigationItem}.\r\n\t */\r\n\tfunction get(reload = false) {\r\n\t\tif (!navigationLoaderPromise || reload) {\r\n\t\t\tnavigationLoaderPromise = loadNavigationItems();\r\n\t\t}\r\n\t\treturn navigationLoaderPromise;\r\n\t}\r\n\r\n\tasync function loadNavigationItems() {\r\n\t\tnavItems = await navigationProviderService.load(true, true, navItems);\r\n\t\tnavItems.forEach((item, i) => handleItem(item, i));\r\n\t\tconst defaultRoute = await getDefaultRoute(navItems);\r\n\t\teventService.dispatchEvent(mx.shell.EventCodes.NavigationLoaded, {\r\n\t\t\tnavItems,\r\n\t\t\troutes: getRoutesFromNavigationItems(navItems),\r\n\t\t\tdefaultRoute,\r\n\t\t});\r\n\r\n\t\tif (currentItem) {\r\n\t\t\tconst newCurrentNavItem = await getNavigationItemById(navItems, currentItem.id);\r\n\t\t\tif (newCurrentNavItem) {\r\n\t\t\t\tawait loadChildren(newCurrentNavItem);\r\n\t\t\t\tawait setCurrentNavigationItem(newCurrentNavItem);\r\n\t\t\t} else {\r\n\t\t\t\tcurrentItem = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn navItems;\r\n\t}\r\n\r\n\tfunction handleItem(navItem, index, parent) {\r\n\t\t// Set flag `hasChildren` if navigation-item already has an array of `children`\r\n\t\t// Or if those `children` can be loaded from server in future (`navItem.childrenDynamicLoader` is set)\r\n\t\tnavItem.children = Array.isArray(navItem.children) ? navItem.children : [];\r\n\t\tnavItem.hasChildren = Boolean((navItem.children && navItem.children.length) || navItem.childrenDynamicLoader);\r\n\t\tnavItem.index = index;\r\n\t\tnavItem.level = parent ? parent.level + 1 : 0;\r\n\t\tnavItem.parent = parent;\r\n\r\n\t\tnavItem.children.forEach((child, i) => {\r\n\t\t\thandleItem(child, i, navItem);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getRoutesFromNavigationItems(items) {\r\n\t\tconst routes = getRoutesFromNavigationItemsRecursive(items);\r\n\t\treturn Object.keys(routes).map((routeName) => routes[routeName]);\r\n\t}\r\n\r\n\tfunction getRoutesFromNavigationItemsRecursive(items) {\r\n\t\tconst routes = {};\r\n\t\titems.forEach(({ routingItem, children }) => {\r\n\t\t\tif (routingItem && typeof routingItem === 'object') {\r\n\t\t\t\tconst name = routingItem.name;\r\n\t\t\t\troutes[name] = routes[name] || routingItem;\r\n\t\t\t}\r\n\t\t\tconst childrenRoutes = getRoutesFromNavigationItemsRecursive(children);\r\n\t\t\tObject.keys(childrenRoutes).forEach((childRouteName) => {\r\n\t\t\t\troutes[childRouteName] = routes[childRouteName] || childrenRoutes[childRouteName];\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn routes;\r\n\t}\r\n\r\n\tfunction getClosestRoutedNavItem(item) {\r\n\t\tif (!item) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (item.routingItem) {\r\n\t\t\treturn item;\r\n\t\t}\r\n\r\n\t\tif (item.children && item.children.length > 0) {\r\n\t\t\treturn getClosestRoutedNavItem(item.children[0]);\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\t/**\r\n\t * @async\r\n\t * @ngdoc method\r\n\t * @name mx.shell.NavigationService#getDefaultNavigationItem\r\n\t *\r\n\t * @description\r\n\t * Get Default Navigation Items.\r\n\t *\r\n\t * @returns {Promise}\r\n\t */\r\n\tasync function getDefaultNavigationItem(navItems) {\r\n\t\tconst currentApp = await appsService.getCurrentApplication();\r\n\t\tconst defaultApplicationNavigationItem = currentApp.navigationItem && (await getNavigationItemById(navItems, currentApp.navigationItem));\r\n\r\n\t\tconst defaultNavigationItem = defaultApplicationNavigationItem || getClosestRoutedNavItem(navItems[0]);\r\n\r\n\t\treturn (defaultNavigationItem && (await getDefaultFilterNavigationItem(defaultNavigationItem))) || defaultNavigationItem;\r\n\t}\r\n\r\n\tasync function getDefaultFilterNavigationItem(item) {\r\n\t\tconst defaultFilterId = await getDefaultFilterId(item);\r\n\t\tif (!defaultFilterId) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tconst filters = item.children.filter((child) => child.parameters?.filterType === 'filter');\r\n\t\tconst comparer = (item) => item.parameters.filterId === defaultFilterId;\r\n\t\treturn getItem(filters, comparer);\r\n\t}\r\n\r\n\tasync function getDefaultRoute(navItems) {\r\n\t\tlet item = await getDefaultNavigationItem(navItems);\r\n\t\tif (!item) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tname: item.routingItem?.name || '',\r\n\t\t\tparameters: item.parameters,\r\n\t\t};\r\n\t}\r\n\r\n\tasync function getNavigateToItem(item) {\r\n\t\tconst currentRouteParams = (routingService.getCurrent() || {}).parameters || {};\r\n\t\tconst routingFromAnotherNavItem = currentRouteParams.navigationId !== item.id;\r\n\t\treturn (routingFromAnotherNavItem && (await getDefaultFilterNavigationItem(item))) || item;\r\n\t}\r\n\r\n\tasync function goToRoute(item) {\r\n\t\tif (/^https?:\\/\\//.test(item.route)) {\r\n\t\t\t$window.location.href = item.route;\r\n\t\t} else {\r\n\t\t\tconst navigateToItem = await getNavigateToItem(item);\r\n\r\n\t\t\tawait routingService.go(navigateToItem.route, { ...(navigateToItem.parameters || {}), extraFilter: '' });\r\n\t\t}\r\n\t}\r\n\r\n\tasync function getDefaultFilterId(navItem) {\r\n\t\tlet userStorage = await personalizationService.getDefaultFiltersForNavItem();\r\n\t\tconst id = userStorage[navItem.id];\r\n\t\tif (id) {\r\n\t\t\treturn id;\r\n\t\t}\r\n\t\tlet user = await userProfileService.get();\r\n\t\tif (user && user.id) {\r\n\t\t\treturn localStorage.getItem(`DefaultNavItemFilter${user.id}:${navItem.id}`) || navItem.defaultFilter;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setExtraItem(newExtraItem) {\r\n\t\tif (typeof newExtraItem !== 'string') {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsetActiveStatus(partiallyOpenedItem, false);\r\n\t\tpartiallyOpenedItem = undefined;\r\n\t\tsetActiveStatus(currentItem, false);\r\n\t\tcurrentItem = null;\r\n\t\textraItem = newExtraItem;\r\n\r\n\t\teventService.dispatchEvent(mx.shell.EventCodes.CurrentNavigationItemChanged, {\r\n\t\t\tnavigationItem: currentItem,\r\n\t\t\textraItem,\r\n\t\t\tpreviousItem: currentItem,\r\n\t\t});\r\n\t}\r\n\r\n\tasync function setNavigationItemById(navigationId) {\r\n\t\tlet navigationItem = await getNavigationItem(navigationId);\r\n\t\tawait setCurrentNavigationItem(navigationItem);\r\n\t}\r\n\r\n\tasync function setCurrentNavigationItem(navigationItem) {\r\n\t\tif (!navigationItem || !navigationItem.id) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (navigationItem === currentItem) {\r\n\t\t\tsetActiveStatus(currentItem, true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tnavigationItem = await getNavigateToItem(navigationItem);\r\n\r\n\t\tconst activatingPromise = selfContract.configurationModeOn ? Promise.resolve() : activateNavigationItem(navigationItem);\r\n\t\tconst previousItem = currentItem;\r\n\r\n\t\tawait activatingPromise;\r\n\t\tawait loadChildren(navigationItem);\r\n\t\tsetActiveStatus(partiallyOpenedItem, false);\r\n\t\tpartiallyOpenedItem = undefined;\r\n\t\tif (navigationItem.route) {\r\n\t\t\tsetActiveStatus(currentItem, false);\r\n\t\t\tcurrentItem = navigationItem;\r\n\t\t\tsetActiveStatus(currentItem, true);\r\n\r\n\t\t\teventService.dispatchEvent(mx.shell.EventCodes.CurrentNavigationItemChanged, {\r\n\t\t\t\tnavigationItem: currentItem,\r\n\t\t\t\tpreviousItem,\r\n\t\t\t});\r\n\t\t} else if (!isAncestor(navigationItem)) {\r\n\t\t\tpartiallyOpenedItem = navigationItem;\r\n\t\t\tsetActiveStatus(navigationItem, true);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction isAncestor(navItem) {\r\n\t\tlet current = currentItem;\r\n\t\twhile (current) {\r\n\t\t\tif (current === navItem) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tcurrent = current.parent;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setActiveStatus(navItem, state) {\r\n\t\tlet item = navItem;\r\n\t\twhile (item) {\r\n\t\t\titem.current = state;\r\n\t\t\titem.selected = state;\r\n\t\t\titem.parentOfActivated = false;\r\n\t\t\titem = item.parent;\r\n\t\t}\r\n\r\n\t\tif (navItem) {\r\n\t\t\tnavItem.activated = state && !!navItem.route;\r\n\r\n\t\t\tif (navItem.activated && navItem.parent) {\r\n\t\t\t\tnavItem.parent.parentOfActivated = true;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tasync function activateNavigationItem(item) {\r\n\t\tif (item && item.route && !routingService.isCurrent(item.route, item.parameters)) {\r\n\t\t\tif (item.openInNewWindow) {\r\n\t\t\t\t$window.open(item.route);\r\n\t\t\t} else {\r\n\t\t\t\tawait goToRoute(item);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction markFilterTextMatched(navItems, filterText, showAllChildren, checkJustVisible) {\r\n\t\tlet filterTextMatchedItem;\r\n\t\tlet showAllChildrenForJustFoundItem;\r\n\r\n\t\tif (Array.isArray(navItems)) {\r\n\t\t\tnavItems.forEach((item) => {\r\n\t\t\t\tif (!item._titleLowerCase) {\r\n\t\t\t\t\titem._titleLowerCase = item.title.toLowerCase();\r\n\t\t\t\t}\r\n\r\n\t\t\t\titem.selected = false;\r\n\r\n\t\t\t\tif ((!checkJustVisible || item.matchesFilterCriteria !== false) && filterText && item._titleLowerCase.includes(filterText)) {\r\n\t\t\t\t\titem.matchesFilterCriteria = true;\r\n\t\t\t\t\tfilterTextMatchedItem = item;\r\n\t\t\t\t\tshowAllChildrenForJustFoundItem = true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\titem.matchesFilterCriteria = showAllChildren || !filterText;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmarkFilterTextMatched(item.children, filterText, showAllChildren || showAllChildrenForJustFoundItem);\r\n\t\t\t\tshowAllChildrenForJustFoundItem = undefined;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (filterTextMatchedItem) {\r\n\t\t\t_expandAllParents(filterTextMatchedItem);\r\n\t\t\tfilterTextMatchedItem = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction _expandAllParents({ parent }) {\r\n\t\tif (parent) {\r\n\t\t\tparent.matchesFilterCriteria = true;\r\n\t\t\tparent.selected = true;\r\n\t\t\t_expandAllParents(parent);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getAllChildren(items = []) {\r\n\t\tlet children = [];\r\n\t\titems.forEach((item) => {\r\n\t\t\tif (item.children) {\r\n\t\t\t\tchildren = children.concat(item.children);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (children.length) {\r\n\t\t\tchildren = children.concat(getAllChildren(children));\r\n\t\t}\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\tasync function getFlatArrayOfNavItems() {\r\n\t\tlet navItems1 = await selfContract.get();\r\n\t\treturn await navItems1.concat(getAllChildren(navItems1));\r\n\t}\r\n}\r\n","import template from './mx-shell-toolbar-navigation--popup-item.html';\r\n\r\nexport const mxShellToolbarNavigationPopupItemComponent = {\r\n\tbindings: {\r\n\t\titem: '<',\r\n\t\tlevel: '<',\r\n\t},\r\n\tcontroller: MxShellToolbarNavigationPopupControllerItem,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n};\r\n\r\nMxShellToolbarNavigationPopupControllerItem.$inject = ['mx.shell.ToolbarNavigationService'];\r\n\r\nfunction MxShellToolbarNavigationPopupControllerItem(toolbarNavigationService) {\r\n\tconst vm = this;\r\n\tvm.toolbarNavigationService = toolbarNavigationService;\r\n}\r\n","// Module\nvar code = \"
  • \\r\\n\\t
    {{::vm.item.title}}
    \\r\\n\\r\\n\\t
      \\r\\n\\t\\t\\r\\n\\r\\n\\t\\t
    • vm.toolbarNavigationService.MAX_CHILDREN_NUMBER[vm.level]\\\" ng-click=\\\"vm.toolbarNavigationService.showMoreClick($event, vm.item)\\\">{{::'solutionBuilderAgent.components.mx-quick-start-panel.showMore' | mxi18n}}
    • \\r\\n\\t
    \\r\\n\\r\\n
  • \\r\\n\";\n// Exports\nexport default code;","import template from './mx-shell-toolbar-navigation--popup.html';\r\n\r\nexport const mxShellToolbarNavigationPopupComponent = {\r\n\tbindings: {\r\n\t\titem: '<',\r\n\t},\r\n\tcontroller: MxShellToolbarNavigationPopupController,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n};\r\n\r\nMxShellToolbarNavigationPopupController.$inject = ['mx.shell.ToolbarNavigationService'];\r\nfunction MxShellToolbarNavigationPopupController(toolbarNavigationService) {\r\n\tconst vm = this;\r\n\tvm.toolbarNavigationService = toolbarNavigationService;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvm.firstVisibleLevel = toolbarNavigationService.MAX_CHILDREN_LEVEL - vm.item.existLevelsOfChildren + 1;\r\n\t};\r\n}\r\n","// Module\nvar code = \"
    \\r\\n\\t
    \\r\\n\\r\\n\\t\\t
      \\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t
    • vm.toolbarNavigationService.MAX_CHILDREN_NUMBER[vm.firstVisibleLevel]\\\" ng-click=\\\"vm.toolbarNavigationService.showMoreClick($event, vm.item)\\\">{{::'solutionBuilderAgent.components.mx-quick-start-panel.showMore' | mxi18n}}
    • \\r\\n\\t\\t
    \\r\\n\\r\\n\\t
    \\r\\n
    \";\n// Exports\nexport default code;","import template from './mx-shell-toolbar-navigation.html';\r\n\r\nexport const mxShellToolbarNavigationComponent = {\r\n\tbindings: {},\r\n\tcontroller: MxShellToolbarNavigationController,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n};\r\n\r\nMxShellToolbarNavigationController.$inject = ['$scope', 'mx.shell.EventService', 'mx.shell.ToolbarNavigationService'];\r\n\r\nfunction MxShellToolbarNavigationController($scope, eventService, toolbarNavigationService) {\r\n\tconst vm = this;\r\n\r\n\tvm.toolbarNavigationService = toolbarNavigationService;\r\n\tvm.relinkEvent = mx.shell.EventCodes.ToolbarNavigationLoaded; //event on which component will be re-rendered\r\n\r\n\treturn vm;\r\n}\r\n","// Module\nvar code = \"\";\n// Exports\nexport default code;","MxToolbarNavigationService.$inject = ['$q', '$timeout', '$document', 'mx.shell.NavigationService', 'mx.shell.EventService'];\r\nexport function MxToolbarNavigationService($q, $timeout, $document, navigationService, eventService) {\r\n\tconst service = {\r\n\t\tMAX_CHILDREN_LEVEL: 3, // level-0 - root-items, and plus 3 levels of children\r\n\t\tMAX_CHILDREN_NUMBER: [5, 6, 6, 6], // root-items, level-1, level2, ...\r\n\t\titemClickHandler,\r\n\t\tshowMoreClick,\r\n\t};\r\n\tlet navItems = [];\r\n\tObject.defineProperty(service, 'navItems', {\r\n\t\tget() {\r\n\t\t\treturn navItems;\r\n\t\t},\r\n\t\tset(newItems) {\r\n\t\t\tinit(newItems);\r\n\t\t},\r\n\t});\r\n\r\n\tnavigationService.get().then((navItems) => {\r\n\t\tinit(navItems);\r\n\r\n\t\teventService.subscribeGlobal(mx.shell.EventCodes.CurrentNavigationItemChanged, () => {\r\n\t\t\t$timeout(() => {\r\n\t\t\t\tsetCurrentClasses();\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\teventService.subscribeGlobal(mx.shell.EventCodes.NavigationLoaded, (event, { navItems }) => {\r\n\t\t\tinit(navItems);\r\n\t\t});\r\n\t});\r\n\r\n\treturn service;\r\n\r\n\tfunction itemClickHandler($event, item) {\r\n\t\t$event.preventDefault();\r\n\t\t$event.stopPropagation();\r\n\t\tnavigationService.currentItem = item;\r\n\r\n\t\tconst hoveredRootItem = $document[0].querySelector('.mx-shell-toolbar-navigation .root-items > li.hovered');\r\n\t\tif (hoveredRootItem) {\r\n\t\t\thoveredRootItem.classList.remove('hovered');\r\n\t\t}\r\n\t}\r\n\r\n\tfunction findFirstClickableChild({ children }) {\r\n\t\tlet clickableChild;\r\n\t\t(children || []).some((child) => {\r\n\t\t\tif (child.route) {\r\n\t\t\t\tclickableChild = child;\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (clickableChild) {\r\n\t\t\treturn clickableChild;\r\n\t\t}\r\n\r\n\t\t(children || []).some((child) => {\r\n\t\t\tclickableChild = findFirstClickableChild(child);\r\n\t\t\tif (clickableChild) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn clickableChild;\r\n\t}\r\n\r\n\tfunction showMoreClick($event, item) {\r\n\t\tif (!item.route) {\r\n\t\t\titem = findFirstClickableChild(item);\r\n\t\t}\r\n\r\n\t\tif (item) {\r\n\t\t\titemClickHandler($event, item);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction init(newItems) {\r\n\t\tif (!Array.isArray(newItems)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t$q.all(\r\n\t\t\tnewItems.map(\r\n\t\t\t\t(\r\n\t\t\t\t\titem // init 3 levels of children\r\n\t\t\t\t) =>\r\n\t\t\t\t\tinitChildrenLevels(item, service.MAX_CHILDREN_LEVEL).then((existLevels) => {\r\n\t\t\t\t\t\titem.existLevelsOfChildren = existLevels;\r\n\t\t\t\t\t})\r\n\t\t\t)\r\n\t\t).then(() => {\r\n\t\t\tif (newItems.length > service.MAX_CHILDREN_NUMBER[0]) {\r\n\t\t\t\tservice.showRootMoreButton = true;\r\n\t\t\t\tnavItems = newItems.slice(0, service.MAX_CHILDREN_NUMBER[0]);\r\n\t\t\t\tconst rootMoreChildren = newItems.slice(service.MAX_CHILDREN_NUMBER[0], newItems.length);\r\n\t\t\t\tservice.rootMoreItem = {\r\n\t\t\t\t\tchildren: rootMoreChildren,\r\n\t\t\t\t\texistLevelsOfChildren: Math.min(\r\n\t\t\t\t\t\tMath.max.apply(\r\n\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\trootMoreChildren.map(({ existLevelsOfChildren }) => existLevelsOfChildren)\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\tservice.MAX_CHILDREN_LEVEL\r\n\t\t\t\t\t),\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\tnavItems = newItems;\r\n\t\t\t\tservice.showRootMoreButton = false;\r\n\t\t\t}\r\n\r\n\t\t\teventService.dispatchEvent(mx.shell.EventCodes.ToolbarNavigationLoaded, navItems);\r\n\t\t\t$timeout(() => {\r\n\t\t\t\tsetCurrentClasses();\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction initChildrenLevels(item, numOfLevels) {\r\n\t\tif (!item) {\r\n\t\t\treturn $q.when(null);\r\n\t\t}\r\n\r\n\t\tif (isNaN(numOfLevels) || numOfLevels < 1) {\r\n\t\t\tnumOfLevels = 1;\r\n\t\t}\r\n\r\n\t\tlet promise = $q.when({\r\n\t\t\texistLevels: 0,\r\n\t\t\titems: [item],\r\n\t\t});\r\n\t\tfor (let i = 0; i < numOfLevels; i++) {\r\n\t\t\tpromise = promise.then(initChildren);\r\n\t\t}\r\n\r\n\t\treturn promise.then(({ existLevels }) => existLevels);\r\n\t}\r\n\r\n\tfunction initChildren(config) {\r\n\t\tif (!Array.isArray(config.items)) {\r\n\t\t\treturn $q.when([]);\r\n\t\t}\r\n\r\n\t\treturn $q.all(config.items.map((item) => navigationService.loadChildren(item))).then((arrayOfChildren) => {\r\n\t\t\tconst children = Array.prototype.concat.apply([], arrayOfChildren);\r\n\t\t\tif (children.length > 0) {\r\n\t\t\t\tconfig.existLevels++;\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\texistLevels: config.existLevels,\r\n\t\t\t\titems: children,\r\n\t\t\t};\r\n\t\t});\r\n\t}\r\n\r\n\tfunction setCurrentClasses() {\r\n\t\tconst navDOMItems = $document[0].querySelectorAll('li.mx-toolbar-nav-item');\r\n\t\tnavigationService.getFlatArrayOfNavItems().then((navItems) => {\r\n\t\t\tnavDOMItems.forEach((item) => {\r\n\t\t\t\tconst navItem = _.find(navItems, { id: item.id });\r\n\t\t\t\tif (navItem) {\r\n\t\t\t\t\ttoggleClasses(navItem, item);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction toggleClasses(navItem, navDOMItem) {\r\n\t\tif (!navItem || !navDOMItem) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (navDOMItem.classList.contains('activated') + navItem.activated === 1) {\r\n\t\t\t// XOR\r\n\t\t\tnavDOMItem.classList.toggle('activated');\r\n\t\t}\r\n\r\n\t\tif (navDOMItem.classList.contains('current') + navItem.current === 1) {\r\n\t\t\t// XOR\r\n\t\t\tnavDOMItem.classList.toggle('current');\r\n\t\t}\r\n\t}\r\n}\r\n","import { NavigationItemsLoaderService } from './navigation-items-loader-service.js';\r\nimport { MxNavigationItemConfigurationActionsService } from './navigation-item-configuration-actions-service.js';\r\nimport { mxShellNavItemDirective } from './components/mx-shell-nav-item/mx-shell-nav-item';\r\nimport { mxShellNavigationPanelComponent } from './components/mx-shell-navigation-panel/mx-shell-navigation-panel';\r\n\r\nimport { NavigationManager } from './mx-shell-nav-manager';\r\nimport { MxNavigationProviderService } from './mx-navigation-provider-service';\r\nimport { MxNavigationService } from './mx-navigation-service';\r\nimport { mxShellToolbarNavigationPopupItemComponent } from './components/mx-shell-toolbar-navigation--popup-item/mx-shell-toolbar-navigation--popup-item';\r\nimport { mxShellToolbarNavigationPopupComponent } from './components/mx-shell-toolbar-navigation--popup/mx-shell-toolbar-navigation--popup';\r\nimport { mxShellToolbarNavigationComponent } from './components/mx-shell-toolbar-navigation/mx-shell-toolbar-navigation';\r\nimport { MxToolbarNavigationService } from './mx-shell-toolbar-navigation-service';\r\nimport { NavigationItem } from './model/navigation-item';\r\n\r\nexport const mxNavigationModule = angular\r\n\t.module('mx.sb.Navigation', [])\r\n\t.directive('mxShellNavItem', mxShellNavItemDirective)\r\n\t.component('mxShellNavigationPanel', mxShellNavigationPanelComponent)\r\n\t.component('mxShellToolbarNavigationPopupItem', mxShellToolbarNavigationPopupItemComponent)\r\n\t.component('mxShellToolbarNavigationPopup', mxShellToolbarNavigationPopupComponent)\r\n\t.component('mxShellToolbarNavigation', mxShellToolbarNavigationComponent)\r\n\t.service('mx.shell.NavigationItemsLoaderService', NavigationItemsLoaderService)\r\n\t.service('mx.shell.NavigationItemConfigurationActionsService', MxNavigationItemConfigurationActionsService)\r\n\t.service('mx.shell.NavigationManager', NavigationManager)\r\n\t.service('mx.shell.NavigationProviderService', MxNavigationProviderService)\r\n\t.service('mx.shell.NavigationService', MxNavigationService)\r\n\t.service('mx.shell.ToolbarNavigationService', MxToolbarNavigationService);\r\n\r\nwindow.mx = window.mx || {};\r\nwindow.mx.shell = window.mx.shell || {};\r\nwindow.mx.shell.NavigationItem = NavigationItem;\r\n","import { RoutingItem } from '../../../App/model/routing-item';\r\nimport { MxAction } from '../../Pandora/model/action/action';\r\n\r\n/**\r\n * @ngdoc type\r\n * @name NavigationItem\r\n * @module mx.sb.Navigation\r\n *\r\n * @description\r\n * An object containing navigation item information (Navigation item model)\r\n * Constructor accepts title, name, routingItem as params like:\r\n *\r\n * ```javascript\r\n * var navigationItem = new mx.shell.NavigationItem(title, name, routingItem);\r\n * ```\r\n *\r\n * @property {string} title - Gets or sets Display name of the Navigation item\r\n * @property {string} name - Gets or sets Unique name of the Navigation item\r\n * @property {string | RoutingItem} routingItem - Gets or sets {@ref RoutingItem routing item} of the navigation item\r\n * @property {string} icon - Gets or sets Icon associated with Navigation item\r\n * @property {mx.shell.Action[]} actions - Gets or sets an array of actions to be displayed in navigation item\r\n * @property {NavigationItem[]} children - Gets or sets an array of navigation item models that should be displayed under current one\r\n * @property {object} parameters - Gets or sets object that contains parameters for routing\r\n * @property {boolean} disabled - Gets or sets flag that defines navigation item as a disabled\r\n * @property {boolean} openInNewWindow - Gets or sets flag that defines navigation item must open URL in new window or not\r\n * @property {string} route - Gets route string\r\n * @property {function} childrenDynamicLoader - if set then this item support dynamic loading for children items.\r\n * Expects a method that gets just clicked item as incoming parameter\r\n * and returns a promise result of which must be an array of `mx.shell.NavigationItem`s.\r\n * @property {string} defaultFilter - Gets or sets an id of a default filter for this navigation item\r\n * @property {boolean} configurable - Gets or sets a flag that defines if navigation item is configurable\r\n * @property {boolean} configurationModeOn - Gets or sets a flag that defines the navigation item is or is not in configuration mode\r\n * @property {boolean} beingConfigured - Gets or sets a flag that defines the navigation item is being configured now\r\n * @property {mx.shell.Action[]} configurationActions - Gets or sets an array of actions to be displayed in navigation item when it is in a configuration mode\r\n * @property {boolean} draggable - Gets or sets a flag that defines if navigation item is draggable\r\n *\r\n * ```javascript\r\n * var myRootNavItem = new mx.shell.NavigationItem('My Root Nav Item', myRootNavItem);\r\n * myRootNavItem.childrenDynamicLoader = function (clickedItem) {\r\n * \t\treturn $http.get('get/clickedItem/children.json').then(function (itemsFromServer) {\r\n * \t\t\treturn itemsFromServer.map(function () {\r\n *\t\t\t\treturn new mx.shell.NavigationItem(item.title, newItemName, item.routingItem);\r\n *\t\t\t});\r\n *\t\t});\r\n *\t}\r\n * ```\r\n */\r\n\r\nexport type NavigationItemParameters = {\r\n\tnavigationId: string;\r\n\tfilterId?: string;\r\n\tfilterType?: 'nofilter' | 'filter' | 'structure';\r\n\tappString: string;\r\n};\r\n\r\nexport class NavigationItem {\r\n\tpublic parameters?: NavigationItemParameters;\r\n\tpublic id?: string;\r\n\tpublic icon?: string;\r\n\tpublic dataQuery?: string;\r\n\tpublic application?: string;\r\n\tpublic actions: MxAction[] = [];\r\n\tpublic configurationActions: MxAction[] = [];\r\n\tpublic children?: NavigationItem[];\r\n\tpublic parent?: NavigationItem;\r\n\tpublic disabled = false;\r\n\tpublic openInNewWindow = false;\r\n\tpublic configurable = false;\r\n\tpublic beingConfigured = false;\r\n\tpublic draggable = false;\r\n\tpublic availableInSearch = false;\r\n\tpublic hideLeftSideNavigation = false;\r\n\tpublic matchesFilterCriteria?: boolean;\r\n\tpublic defaultFilter?: string;\r\n\tpublic contentWidgetId?: string;\r\n\tpublic quickFilters?: [string, string, string];\r\n\tpublic childrenDynamicLoader?: (item: NavigationItem) => Promise;\r\n\r\n\tpublic get route() {\r\n\t\treturn !this.routingItem ? null : typeof this.routingItem === 'object' ? this.routingItem.name : this.routingItem;\r\n\t}\r\n\r\n\tprivate _configurationModeOn = false;\r\n\tpublic get configurationModeOn() {\r\n\t\treturn this._configurationModeOn;\r\n\t}\r\n\tpublic set configurationModeOn(newValue) {\r\n\t\tthis._configurationModeOn = newValue;\r\n\t\tif (Array.isArray(this.children)) {\r\n\t\t\tthis.children.forEach((item) => (item.configurationModeOn = newValue));\r\n\t\t}\r\n\t}\r\n\r\n\tconstructor(public title: string, public name: string, public technicalName: string, public routingItem?: RoutingItem) {}\r\n}\r\n","import type { ConfigService } from '../App/services/mx-config-service';\r\nimport type { I18n } from '../i18n/mx-internationalization';\r\nimport type { EventService } from '../App/services/event-service';\r\nimport type { Transition } from '@uirouter/angularjs';\r\nimport type { IRootScopeService } from 'angular';\r\nimport type { ShellAppInitializerService } from './Pandora/services/shell-app.initializer.service';\r\nimport { ContentWidgetDialogAction } from './PandoraSolutionBuilderAgent/model/enumerations';\r\nimport type { ActionProviderService } from './Pandora/services/mx-action-provider-service';\r\nimport type { DialogOpenerService } from './PandoraSolutionBuilderAgent/services/dialog-opener-service';\r\nimport type { SidePanelService } from './Pandora/services/mx-side-panel-service';\r\nimport type { WidgetManager } from './PandoraSolutionBuilderAgent/services/widget-manager';\r\nimport type { DeepLinkingService } from './PandoraSolutionBuilderAgent/services/deep-linking-service';\r\nimport type { DataService } from './PandoraSolutionBuilderAgent/services/data-service';\r\nimport type { FavouritesService } from './PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-favourites-items-panel/mx-favourites-items-service';\r\nimport type { RecentService } from './PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-recent-items-panel/mx-recent-items-service';\r\nimport type { MxShellWidgetsPanelService } from './PandoraSolutionBuilderAgent/components/mx-left-side-panel/mx-widgets-panel/mx-widgets-panel-service';\r\nimport type { EmbeddedViewService } from './PandoraSolutionBuilderAgent/services/embedded-view-service';\r\nimport type { MxNavigationService } from './Navigation/mx-navigation-service';\r\nimport type { RoutingService } from '../App/services/mx-routing-service';\r\nimport type { MxApplicationService } from '../App/services/mx-application-service';\r\nimport type { MxShellLeftSidebarService } from './Pandora/components/mx-shell-left-sidebar/mx-shell-left-sidebar-service';\r\nimport type { PushNotificationsService } from './PandoraSolutionBuilderAgent/modules/PushNotifications/push-notifications.service';\r\nimport type { SearchProviderService } from './Pandora/services/mx-search-provider-service';\r\nimport type { FeedbackProviderService } from './Pandora/services/mx-feedback-provider-service';\r\nimport type { DialogFactory } from './PandoraSolutionBuilderAgent/modules/DialogPage/dialog-factory';\r\nimport { AgentTelemetryService } from './PandoraSolutionBuilderAgent/services/agent-telemetry-service';\r\nimport { EventCodes } from '../App/model/event-codes';\r\n\r\nexport class AgentAppInitializerService {\r\n\tpublic static $inject = [\r\n\t\t'$rootScope',\r\n\t\t'mx.shell.Config',\r\n\t\t'mx.shell.SidePanelService',\r\n\t\t'mx.internationalization',\r\n\t\t'mx.shell.EventService',\r\n\t\t'mx.SolutionBuilderAgent.DialogOpenerService',\r\n\t\t'mx.SolutionBuilderAgent.WidgetManager',\r\n\t\t'mx.SolutionBuilderAgent.DeepLinkingService',\r\n\t\t'mx.SolutionBuilderAgent.FavouritesService',\r\n\t\t'mx.SolutionBuilderAgent.RecentService',\r\n\t\t'mx.SolutionBuilderAgent.WidgetsPanelService',\r\n\t\t'mx.SolutionBuilderAgent.DataService',\r\n\t\t'mx.SolutionBuilderAgent.EmbeddedViewService',\r\n\t\t'mx.shell.NavigationService',\r\n\t\t'mx.shell.ToolbarManager',\r\n\t\t'mx.shell.RoutingService',\r\n\t\t'mx.shell.AppsService',\r\n\t\t'mx.shell.ApplicationProviderService',\r\n\t\t'mx.SolutionBuilderAgent.ContentWidgetService',\r\n\t\t'mx.sb.DialogView.DialogFactory',\r\n\t\t'mx.SolutionBuilderAgent.WizardService',\r\n\t\t'mx.shell.FeedbackProviderService',\r\n\t\t'mx.sb.PushNotifications.NotificationsService',\r\n\t\t'mx.shell.SearchProviderService',\r\n\t\t'mx.shell.ActionProviderService',\r\n\t\t'mx.shell.LeftSidebarService',\r\n\t\t'mx.shell.ShellAppInitializerService',\r\n\t\t'mx.SolutionBuilderAgent.AgentTelemetryService',\r\n\t];\r\n\tconstructor(\r\n\t\tprivate readonly $rootScope: IRootScopeService,\r\n\t\tprivate readonly configService: ConfigService,\r\n\t\tprivate readonly sidePanelService: ReturnType,\r\n\t\tprivate readonly i18n: I18n,\r\n\t\tprivate readonly eventService: EventService,\r\n\t\tprivate readonly dialogOpenerService: ReturnType,\r\n\t\tprivate readonly widgetManager: WidgetManager,\r\n\t\tprivate readonly deepLinkingService: DeepLinkingService,\r\n\t\tprivate readonly favouritesService: ReturnType,\r\n\t\tprivate readonly recentService: ReturnType,\r\n\t\tprivate readonly widgetsPanelService: MxShellWidgetsPanelService,\r\n\t\tprivate readonly dataService: ReturnType,\r\n\t\tprivate readonly embeddedViewService: EmbeddedViewService,\r\n\t\tprivate readonly navigationService: MxNavigationService,\r\n\t\tprivate readonly toolbarManager: any,\r\n\t\tprivate readonly routingService: RoutingService,\r\n\t\tprivate readonly appsService: MxApplicationService,\r\n\t\tprivate readonly applicationProviderService: any,\r\n\t\tprivate readonly contentWidgetService: any,\r\n\t\tprivate readonly dialogFactory: DialogFactory,\r\n\t\tprivate readonly wizardService: any,\r\n\t\tprivate readonly feedbackProviderService: FeedbackProviderService,\r\n\t\tprivate readonly pushService: PushNotificationsService,\r\n\t\tprivate readonly searchService: ReturnType,\r\n\t\tprivate readonly actionProviderService: ReturnType,\r\n\t\tprivate readonly leftSidebarService: ReturnType,\r\n\t\tprivate readonly shellAppInitializerService: ShellAppInitializerService,\r\n\t\tprivate readonly agentTelemetryService: AgentTelemetryService\r\n\t) {}\r\n\r\n\tpublic async initAgentApp() {\r\n\t\tawait this.shellAppInitializerService.initShellApp({\r\n\t\t\tapplicationProvider: this.applicationProviderService,\r\n\t\t\tactionProvider: this.actionProviderService,\r\n\t\t});\r\n\r\n\t\tconst navigationItems = await this.navigationService.get();\r\n\t\tthis.searchService.setContextsFromNavigationItems(navigationItems);\r\n\r\n\t\tthis.initActionCustomize();\r\n\r\n\t\tawait this.initToolbar();\r\n\r\n\t\tthis.feedbackProviderService.isEnabled().then((enabled: boolean) => {\r\n\t\t\tthis.feedbackProviderService.FeedbackEnabled = enabled;\r\n\t\t\tthis.feedbackProviderService.isFeedbackVisible = this.feedbackProviderService.FeedbackEnabled;\r\n\t\t});\r\n\r\n\t\tawait this.registerSettingsNavigation();\r\n\r\n\t\tthis.favouritesService.init();\r\n\t\tthis.recentService.init();\r\n\t\tthis.widgetsPanelService.init();\r\n\t\tthis.pushService.init();\r\n\t\tthis.agentTelemetryService.init();\r\n\r\n\t\tconst isDevMode = this.configService.get('mode') === 'dev';\r\n\t\tthis.runDataModelProfiler(isDevMode);\r\n\t\tthis.runPerformanceProfiler(isDevMode);\r\n\r\n\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n\t\t// @ts-ignore\r\n\t\twindow.mx.Data = this.dataService;\r\n\r\n\t\tconst state = await this.initAgentRouter();\r\n\r\n\t\tthis.processViewOptions();\r\n\r\n\t\treturn state;\r\n\t}\r\n\r\n\tprivate async initToolbar() {\r\n\t\tconst app = await this.appsService.getCurrentApplication();\r\n\r\n\t\tthis.toolbarManager.init();\r\n\t\tthis.toolbarManager.setShowMenuButtonVisibility(true);\r\n\t\tthis.toolbarManager.setToolbarVisibility(true);\r\n\t\tthis.toolbarManager.setSearchVisibility(true);\r\n\r\n\t\tif (app.simpleNavigation) {\r\n\t\t\tthis.toolbarManager.setBreadcrumbsVisibility(false);\r\n\t\t\tthis.toolbarManager.setNavigationVisibility(true);\r\n\t\t} else {\r\n\t\t\tthis.toolbarManager.setBreadcrumbsVisibility(true);\r\n\t\t\tthis.toolbarManager.setNavigationVisibility(false);\r\n\r\n\t\t\tthis.leftSidebarService.addPanel({\r\n\t\t\t\tname: 'navigation',\r\n\t\t\t\ticon: 'list',\r\n\t\t\t\ttitle: this.i18n.get('shell.common.navigation'),\r\n\t\t\t\torder: 10,\r\n\t\t\t\tcontent: '',\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate initActionCustomize() {\r\n\t\tthis.contentWidgetService\r\n\t\t\t.isCustomizable({ dialogType: ContentWidgetDialogAction.Preview })\r\n\t\t\t.then((isCustomisable: boolean) => isCustomisable && this.dialogFactory.previewUiActionGroup.push('is_configurable', 'is_customizable'));\r\n\t\tthis.contentWidgetService\r\n\t\t\t.isCustomizable({ dialogType: ContentWidgetDialogAction.Edit })\r\n\t\t\t.then((isCustomisable: boolean) => isCustomisable && this.dialogFactory.dialogsActionGroup.push('is_configurable', 'is_customizable'));\r\n\t\tthis.contentWidgetService\r\n\t\t\t.isCustomizable({ isWizard: true })\r\n\t\t\t.then((isCustomizable: boolean) => isCustomizable && this.wizardService.wizardUiActionGroup.push('is_configurable', 'is_customizable'));\r\n\t}\r\n\r\n\tprivate processViewOptions() {\r\n\t\tconst viewOptions = this.deepLinkingService.parseViewOptionsFromUrl();\r\n\r\n\t\tif (viewOptions) {\r\n\t\t\tthis.deepLinkingService.processViewOptions(viewOptions);\r\n\t\t}\r\n\r\n\t\tif (viewOptions && viewOptions.embedded) {\r\n\t\t\tthis.embeddedViewService.activate();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async initAgentRouter() {\r\n\t\tconst app = await this.appsService.getCurrentApplication();\r\n\r\n\t\tconst defaultRouteNotSetState = {\r\n\t\t\tparent: 'shell',\r\n\t\t\tname: 'defaultRouteNotSet',\r\n\t\t};\r\n\r\n\t\tconst shellState = {\r\n\t\t\tparent: 'app',\r\n\t\t\turl: '/app-:appString',\r\n\t\t\tname: 'shell',\r\n\t\t\tcomponent: 'mxShell',\r\n\t\t\tparams: {\r\n\t\t\t\tappString: app.name,\r\n\t\t\t},\r\n\r\n\t\t\tredirectTo: async function (transition: Transition) {\r\n\t\t\t\tconst routingService = transition.injector().get('mx.shell.RoutingService');\r\n\t\t\t\tif (routingService.defaultRoute) {\r\n\t\t\t\t\treturn transition.router.stateService.target(routingService.defaultRoute.name, routingService.defaultRoute.parameters);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn defaultRouteNotSetState.name;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tthis.routingService.initShellStates(shellState);\r\n\r\n\t\treturn defaultRouteNotSetState;\r\n\t}\r\n\r\n\tprivate async registerSettingsNavigation() {\r\n\t\tconst settingsType = 'SPSGlobalConfigurationType';\r\n\r\n\t\tif (await this.widgetManager.hasPreviews(settingsType)) {\r\n\t\t\tthis.navigationService.openSettingHandler = () => {\r\n\t\t\t\tthis.sidePanelService.handleItemSelectionOnMobile();\r\n\t\t\t\tthis.dialogOpenerService.openPreview({\r\n\t\t\t\t\t_name: this.i18n.get('solutionBuilderAgent.common.settings'),\r\n\t\t\t\t\t_type: settingsType,\r\n\t\t\t\t\t_id: 'CC0EA0CD-A84A-487C-AE1D-A68EF33E7DE1',\r\n\t\t\t\t});\r\n\t\t\t\tthis.eventService.dispatchEvent(EventCodes.TrackTelemetry, { eventName: `Navigation clicked`, sender: 'settings', senderTitle: 'Settings' });\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tprivate runDataModelProfiler(isDevMode: boolean) {\r\n\t\tconst dmDebugIsOn = debugIsOn('mx.dataModel.debug');\r\n\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n\t\t// @ts-ignore\r\n\t\twindow.mx.__mx$dataModelProfilingOn = dmDebugIsOn;\r\n\r\n\t\tif (isDevMode) {\r\n\t\t\tconst concurrencyDebugIsOn = debugIsOn('mx.concurrency.debug');\r\n\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n\t\t\t// @ts-ignore\r\n\t\t\twindow.mx.__mx$concurrencyDebugOn = concurrencyDebugIsOn;\r\n\r\n\t\t\tconsole.log(\r\n\t\t\t\t'Concurrency debug mode is ' +\r\n\t\t\t\t\t(concurrencyDebugIsOn ? 'ON. Run `mx._concurrencyDebugOff()` to disable it.' : 'OFF. Run `mx._concurrencyDebugOn()` to enable Concurrency debug for a day')\r\n\t\t\t);\r\n\r\n\t\t\tconsole.log(\r\n\t\t\t\t'Data model debug mode is ' +\r\n\t\t\t\t\t(dmDebugIsOn ? 'ON. Run `mx._dataModelDebugOff()` to disable it.' : 'OFF. Run `mx._dataModelDebugOn()` to enable DataModel debug for a day')\r\n\t\t\t);\r\n\r\n\t\t\tregisterDebugMethods('_concurrencyDebugOn', '_concurrencyDebugOff', 'mx.concurrency.debug', '__mx$concurrencyDebugOn');\r\n\t\t}\r\n\r\n\t\tregisterDebugMethods('_dataModelDebugOn', '_dataModelDebugOff', 'mx.dataModel.debug', '__mx$dataModelProfilingOn' + isDevMode ? '_PROD' : '_DEV');\r\n\r\n\t\tfunction debugIsOn(key: string) {\r\n\t\t\tconst profileOnTime = window.localStorage && window.localStorage.getItem(key);\r\n\t\t\treturn !!(profileOnTime && Date.now() - parseInt(profileOnTime) < 86400000);\r\n\t\t}\r\n\r\n\t\tfunction registerDebugMethods(onMethodName: string, offMethodName: string, key: string, debugVariableName: string) {\r\n\t\t\twindow.mx = window.mx || {};\r\n\r\n\t\t\tfunction setDebugKey(key: string, value: number | null) {\r\n\t\t\t\tif (window.localStorage) {\r\n\t\t\t\t\tif (value !== null) {\r\n\t\t\t\t\t\twindow.localStorage.setItem(key, value.toString());\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\twindow.localStorage.removeItem(key);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n\t\t\t// @ts-ignore\r\n\t\t\twindow.mx[offMethodName] = function () {\r\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\twindow.mx[debugVariableName] = false;\r\n\t\t\t\tsetDebugKey(key, null);\r\n\r\n\t\t\t\tconsole.info(key + ' is disabled');\r\n\t\t\t};\r\n\r\n\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n\t\t\t// @ts-ignore\r\n\t\t\twindow.mx[onMethodName] = function () {\r\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\twindow.mx[debugVariableName] = true;\r\n\t\t\t\tsetDebugKey(key, Date.now());\r\n\r\n\t\t\t\tconsole.info(key + ' is enabled for a day');\r\n\t\t\t\twindow.location.reload();\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tprivate runPerformanceProfiler(isDevMode: boolean) {\r\n\t\tif (!isDevMode) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Performance debug. Lets remove it when performance becomes not so critical.\r\n\t\tconst profileOnTime = window.localStorage && window.localStorage.getItem('mx.performance.debug');\r\n\t\tif (profileOnTime && Date.now() - parseInt(profileOnTime) < 86400000) {\r\n\t\t\tlet _oldWatcherCounter = 0;\r\n\t\t\tthis.$rootScope.$watch(() => {\r\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\twindow.mx.___mx$digestCounter = window.mx.___mx$digestCounter ? window.mx.___mx$digestCounter + 1 : 1;\r\n\t\t\t\tconst $watchers = this._countWatchers();\r\n\t\t\t\tconst wDelta = $watchers - _oldWatcherCounter;\r\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tconsole.log('mx-debug: $digest #' + window.mx.___mx$digestCounter, ' $watchers: ', $watchers, '(' + (wDelta > 0 ? '+' : '') + wDelta + ')');\r\n\t\t\t\t_oldWatcherCounter = $watchers;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n\t\t\t// @ts-ignore\r\n\t\t\twindow.mx._performanceDebugOn = function () {\r\n\t\t\t\tif (window.localStorage) {\r\n\t\t\t\t\twindow.localStorage.setItem('mx.performance.debug', Date.now().toString());\r\n\t\t\t\t}\r\n\t\t\t\tconsole.info('mx-performance-debug is enabled for a day');\r\n\t\t\t\twindow.location.reload();\r\n\t\t\t};\r\n\t\t\tconsole.info('mx-debug: Run `mx._performanceDebugOn()` to enable mx-performance-debug for a day.');\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _countWatchers() {\r\n\t\tconst root = this.$rootScope;\r\n\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n\t\t// @ts-ignore\r\n\t\tlet count = root.$$watchers ? root.$$watchers.length : 0; // Include the current scope\r\n\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n\t\t// @ts-ignore\r\n\t\tconst pendingChildHeads = [root.$$childHead];\r\n\t\tlet currentScope;\r\n\t\twhile (pendingChildHeads.length) {\r\n\t\t\tcurrentScope = pendingChildHeads.shift();\r\n\t\t\twhile (currentScope) {\r\n\t\t\t\tcount += currentScope.$$watchers ? currentScope.$$watchers.length : 0;\r\n\t\t\t\tpendingChildHeads.push(currentScope.$$childHead);\r\n\t\t\t\tcurrentScope = currentScope.$$nextSibling;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn count;\r\n\t}\r\n}\r\n","import type { IRequestShortcutConfig, IScope } from 'angular';\r\n\r\nimport type { EntityService, FragmentDescriptorRequest } from '../PandoraSolutionBuilderAgent/services/entity-service';\r\nimport type { MxApplicationService } from '../../App/services/mx-application-service';\r\nimport type { HostUrlHelper } from '../../App/services/host-url-helper';\r\nimport type { UserProfileService } from '../../App/services/user-profile-service';\r\nimport type { EventService } from '../../App/services/event-service';\r\nimport type { I18n } from '../../i18n/mx-internationalization';\r\nimport type { HttpService } from '../../App/services/http-service';\r\nimport type { ConfigService, ConfigSettings } from '../../App/services/mx-config-service';\r\nimport type { DialogOpenerService } from '../PandoraSolutionBuilderAgent/services/dialog-opener-service';\r\nimport type { NotificationService } from '../../App/services/mx-notification-service';\r\nimport type { DataQueryService } from '../PandoraSolutionBuilderAgent/services/data-query-service';\r\nimport type { SidePanelService } from '../Pandora/services/mx-side-panel-service';\r\nimport type { MxShellInfoPanelService } from '../Pandora/components/mx-shell-info-panel/mx-shell-info-panel-service';\r\nimport type { MxActionManagerService } from '../Pandora/services/mx-action-manager-service';\r\nimport type { MxNavigationService } from '../Navigation/mx-navigation-service';\r\n\r\nimport type { MxApplication } from './public-types/MxApplication';\r\nimport type { MxObjectPreprocessor } from './public-types/MxObjectPreprocessor';\r\nimport type { MxUserProfile } from './public-types/MxUserProfile';\r\nimport type { MxRelationItemsRequest, RelationItemsResponse } from './public-types/RelationItemsRequest';\r\nimport type { FragmentDescriptorGetRequest, FragmentDescriptor } from './public-types/FragmentDescriptorsRequest';\r\nimport type { DestroyHandler, EventHandler } from './public-types/EventHandler';\r\nimport type { QueryStringParamsType } from './public-types/Http';\r\nimport type { ListPreviewOptions, ObjectDetails } from './public-types/SidePanel';\r\nimport type DetailsView from '../Pandora/model/details-view';\r\nimport type View from '../Pandora/model/view';\r\nimport type { AuthBehaviorProviderService } from '../../Auth/mx-auth-behavior-provider-service';\r\nimport type { EventCodes } from '../../App/model/event-codes';\r\nimport type {\r\n\tIEmptyFilterExpressionRequest,\r\n\tIFilterExpression,\r\n\tIFilterExpressionPath,\r\n\tIStrictParam,\r\n\tIWhereExpressionRequest,\r\n} from '../PandoraSolutionBuilderAgent/model/filterExpressionUtils';\r\nimport type { ThemeService } from '../../Theme/mx-theme.service';\r\nimport type { Theme } from './public-types/Theme';\r\n\r\nexport class MxPublicService {\r\n\tstatic $inject = [\r\n\t\t'mx.SolutionBuilderAgent.EntityService',\r\n\t\t'mx.shell.AppsService',\r\n\t\t'mx.shell.HostUrlHelper',\r\n\t\t'mx.shell.UserProfileService',\r\n\t\t'mx.SolutionBuilderAgent.DataQueryService',\r\n\t\t'mx.shell.EventService',\r\n\t\t'mx.internationalization',\r\n\t\t'mx.shell.Http',\r\n\t\t'mx.shell.Config',\r\n\t\t'mx.SolutionBuilderAgent.DialogOpenerService',\r\n\t\t'mx.shell.SidePanelService',\r\n\t\t'mx.shell.NotificationService',\r\n\t\t'mx.shell.InfoPanelService',\r\n\t\t'mx.shell.ActionManagerService',\r\n\t\t'mx.shell.AuthBehaviorProviderService',\r\n\t\t'mx.shell.NavigationService',\r\n\t\t'mx.app.ThemeService',\r\n\t];\r\n\r\n\tconstructor(\r\n\t\tprivate readonly entityService: EntityService,\r\n\t\tprivate readonly appsService: MxApplicationService,\r\n\t\tprivate readonly hostUrlHelper: HostUrlHelper,\r\n\t\tprivate readonly userProfileService: UserProfileService,\r\n\t\tprivate readonly dataQueryService: ReturnType,\r\n\t\tprivate readonly eventService: EventService,\r\n\t\tprivate readonly internationalization: I18n,\r\n\t\tprivate readonly httpService: HttpService,\r\n\t\tprivate readonly configService: ConfigService,\r\n\t\tprivate readonly dialogOpenerService: ReturnType,\r\n\t\tprivate readonly sidePanelService: ReturnType,\r\n\t\tprivate readonly notificationService: NotificationService,\r\n\t\tprivate readonly infoPanelService: MxShellInfoPanelService,\r\n\t\tprivate readonly actionManagerService: MxActionManagerService,\r\n\t\tprivate readonly authBehaviourProviderService: AuthBehaviorProviderService,\r\n\t\tprivate readonly navigationService: MxNavigationService,\r\n\t\tprivate readonly themeService: ThemeService\r\n\t) {}\r\n\r\n\tpublic registerObjectParameterProcessor(preprocessor: MxObjectPreprocessor): void {\r\n\t\treturn this.entityService.registerObjectParameterProcessor(preprocessor);\r\n\t}\r\n\r\n\tpublic getCurrentApplication(): Promise {\r\n\t\treturn this.appsService.getCurrentApplication();\r\n\t}\r\n\r\n\tpublic getFullImageUrl(imageUrl?: string, baseFolder = ''): string {\r\n\t\treturn this.hostUrlHelper.getFullImageUrl(imageUrl, baseFolder);\r\n\t}\r\n\r\n\tpublic getUserProfile(): Promise {\r\n\t\treturn this.userProfileService.get();\r\n\t}\r\n\r\n\tpublic navigate(navigationItemId: string): Promise {\r\n\t\treturn this.navigationService.setNavigationItemById(navigationItemId);\r\n\t}\r\n\r\n\tpublic readonly auth = {\r\n\t\tonBeforeSessionDestroy: (cb: () => void | Promise) => this.authBehaviourProviderService.onBeforeSessionDestroy(cb),\r\n\t\tonSessionExpired: (cb: () => void | Promise) => this.authBehaviourProviderService.onSessionExpired(cb),\r\n\t};\r\n\r\n\tprivate prepareFilterExpression(filter?: string, filterPath?: IFilterExpressionPath, filterId?: string, filterParams: IStrictParam[] = []): IFilterExpression {\r\n\t\treturn {\r\n\t\t\ttoRequest() {\r\n\t\t\t\tif (filterId) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tFilterExpression: {\r\n\t\t\t\t\t\t\tId: filterId,\r\n\t\t\t\t\t\t\tParams: filterParams,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t\tif (filterPath) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tFilterExpression: {\r\n\t\t\t\t\t\t\tPath: filterPath,\r\n\t\t\t\t\t\t\tParams: filterParams,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\t\t\t\t} else if (filter) {\r\n\t\t\t\t\tconst whereExpression: IWhereExpressionRequest = {\r\n\t\t\t\t\t\tWhereExpression: filter,\r\n\t\t\t\t\t};\r\n\t\t\t\t\treturn whereExpression;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn {} as IEmptyFilterExpressionRequest;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tpublic readonly data = {\r\n\t\tgetRelationItems: (request: MxRelationItemsRequest): Promise => {\r\n\t\t\tconst { whereExpression, filterPath, filterId, filterParams = [], ...req } = request;\r\n\t\t\t(req as Record).filter = this.prepareFilterExpression(whereExpression, filterPath, filterId, filterParams);\r\n\t\t\treturn this.dataQueryService.getRelationItems(request);\r\n\t\t},\r\n\t\tgetFragmentDescriptors: (request: FragmentDescriptorGetRequest, searchText = ''): Promise => {\r\n\t\t\tconst { filter, filterPath, filterId, filterParams = [], ...others } = request;\r\n\t\t\tconst req: FragmentDescriptorRequest = others;\r\n\t\t\treq.filter = this.prepareFilterExpression(filter, filterPath, filterId, filterParams);\r\n\t\t\treturn this.entityService.getFragmentDescriptors(req, searchText);\r\n\t\t},\r\n\t};\r\n\r\n\tpublic readonly event = {\r\n\t\tsubscribe: (eventCode: EventCodes, handler: EventHandler, scope: IScope, destroyHandler: DestroyHandler): (() => void) =>\r\n\t\t\tthis.eventService.subscribeTo(eventCode, handler, scope, destroyHandler),\r\n\r\n\t\tsubscribeGlobal: (eventCode: EventCodes, handler: EventHandler): (() => void) => this.eventService.subscribeGlobal(eventCode, handler),\r\n\r\n\t\tdispatch: (eventCode: EventCodes, parameters?: unknown): void => this.eventService.dispatchEvent(eventCode, parameters),\r\n\t};\r\n\r\n\tpublic readonly http = {\r\n\t\tget: (url: string, queryStringParams?: QueryStringParamsType, requestParams: IRequestShortcutConfig = {}, skipNotification = false) =>\r\n\t\t\tthis.httpService.get(url, queryStringParams, requestParams, skipNotification),\r\n\r\n\t\tpost: (url: string, data?: unknown, requestParams?: IRequestShortcutConfig, queryStringParams?: QueryStringParamsType, skipNotification = false) =>\r\n\t\t\tthis.httpService.post(url, data, requestParams, queryStringParams, skipNotification),\r\n\r\n\t\tput: (url: string, data?: unknown, requestParams?: IRequestShortcutConfig, queryStringParams?: QueryStringParamsType, skipNotification = false) =>\r\n\t\t\tthis.httpService.put(url, data, requestParams, queryStringParams, skipNotification),\r\n\r\n\t\tremove: (url: string, data?: unknown, requestParams?: IRequestShortcutConfig, queryStringParams?: QueryStringParamsType, skipNotification = false) =>\r\n\t\t\tthis.httpService.remove(url, data, requestParams, queryStringParams, skipNotification),\r\n\r\n\t\tupload: (url: string, file?: unknown, requestParams?: IRequestShortcutConfig, queryStringParams?: QueryStringParamsType, skipNotification = false) =>\r\n\t\t\tthis.httpService.upload(url, file, requestParams, queryStringParams, skipNotification),\r\n\t};\r\n\r\n\tpublic readonly i18n = {\r\n\t\tget: (key: string): string => this.internationalization.get(key),\r\n\t\tgetFormatted: (key: string, ...params: string[]): string => this.internationalization.getFormatted(key, ...params),\r\n\t\tgetFormattedCurrency: (currency: { Value?: number | null; CC: string }, useSymbols = false, availableCurrencies: { code: string; symbol: string }[]): string =>\r\n\t\t\tthis.internationalization.formatCurrency(currency, currency.CC, useSymbols, availableCurrencies),\r\n\t};\r\n\r\n\tpublic readonly config = {\r\n\t\tget: (key: Key): ConfigSettings[Key] => this.configService.get(key),\r\n\t};\r\n\r\n\tpublic readonly sidePanel = {\r\n\t\tgetCurrentView: (): DetailsView | undefined => this.sidePanelService.getCurrentView(),\r\n\t\tsetCurrentView: (view: DetailsView): void => this.sidePanelService.setCurrentView(view),\r\n\t\tcloseCurrentView: (): void => this.sidePanelService.closeCurrentView(),\r\n\t\tcloseView: (view: DetailsView): void => this.sidePanelService.closeView(view),\r\n\t\trefreshView: (view: DetailsView): void => this.sidePanelService.refreshView(view),\r\n\t\tgetOpenedViews: (): DetailsView[] => this.sidePanelService.getOpenedViews(),\r\n\t\topenPreview: (objectDetails: ObjectDetails, openInFullScreen = false, parentView?: DetailsView): Promise =>\r\n\t\t\tthis.dialogOpenerService.openPreview(objectDetails, {}, openInFullScreen, parentView),\r\n\t\topenListPreview: (options: ListPreviewOptions, parentView: DetailsView): DetailsView => {\r\n\t\t\tconst { filterExpression, filterPath, filterId, filterParams = [], ...req } = options;\r\n\t\t\t(req as Record).filter = this.prepareFilterExpression(filterExpression, filterPath, filterId, filterParams);\r\n\t\t\treturn this.dialogOpenerService.openObjectsListPreview(options, parentView);\r\n\t\t},\r\n\t};\r\n\r\n\tpublic readonly notification = {\r\n\t\tconfirm: (title: string, prompt?: string, okLabel?: string, cancelLabel?: string): Promise =>\r\n\t\t\tthis.notificationService.confirm(title, prompt, okLabel, cancelLabel),\r\n\t\tconfirmHtml: (title: string, html: string, okLabel?: string, cancelLabel?: string, extraLines?: string[]): Promise =>\r\n\t\t\tthis.notificationService.confirmHtml(title, html, okLabel, cancelLabel, extraLines),\r\n\t\talert: (title: string, html: string, okLabel?: string, clickOutsideToClose?: boolean): Promise =>\r\n\t\t\tthis.notificationService.alert(title, html, okLabel, clickOutsideToClose),\r\n\r\n\t\tinfo: (message: string, title?: string): void => this.notificationService.info(message, title),\r\n\t\twarning: (message: string, title?: string): void => this.notificationService.warning(message, title),\r\n\t\terror: (message: string, title?: string): void => this.notificationService.error(message, title),\r\n\t\tsuccess: (message: string, ariaMessage?: string): void => this.notificationService.success(message, ariaMessage),\r\n\t};\r\n\r\n\tpublic readonly infoPanel = {\r\n\t\taddWidget: (widget: View): boolean => this.infoPanelService.addWidget(widget),\r\n\t\tremoveWidget: (widget: View): boolean => this.infoPanelService.removeWidget(widget),\r\n\t};\r\n\r\n\tpublic readonly action = {\r\n\t\tget: (id: string) => this.actionManagerService.getActionById(id),\r\n\t};\r\n\r\n\tpublic readonly theme = {\r\n\t\tgetCurrent: (): Promise => this.themeService.getCurrentTheme(),\r\n\t};\r\n}\r\n","import * as angular from 'angular';\r\n\r\nimport { MxPublicService } from './public.service';\r\n\r\nexport const publicModule: angular.IModule = angular.module('mx.sb.public', []).service('mx.sb.public.service', MxPublicService);\r\n","'use strict';\r\n\r\nimport componentsModule from './PandoraComponents';\r\nimport shellModule from './Pandora';\r\nimport agentModule from './PandoraSolutionBuilderAgent';\r\n\r\nimport './shell.templates';\r\nimport extensionGalleryModule from './PandoraSolutionBuilderAgent/modules/ExtensionGallery/mx-extension-gallery.module';\r\nimport pushNotificationsModule from './PandoraSolutionBuilderAgent/modules/PushNotifications/module';\r\nimport dialogPageModule from './PandoraSolutionBuilderAgent/modules/DialogPage/dialog-view.module';\r\nimport dataQueryModule from './PandoraSolutionBuilderAgent/modules/DataQueryModel/module';\r\nimport multiSelectionTabModule from './PandoraSolutionBuilderAgent/layouts/multiselection-tab/multiselection-tab.module';\r\nimport editFormModule from './PandoraSolutionBuilderAgent/layouts/edit-form/edit-form.module';\r\nimport searchPageModule from './PandoraSolutionBuilderAgent/layouts/search-page/search-page.module';\r\nimport landingPageModule from './PandoraSolutionBuilderAgent/layouts/landing-page/landing-page.module';\r\nimport executorGridModule from './PandoraSolutionBuilderAgent/components/mx-executor-grid/mx-executor-grid.module';\r\nimport ownershipModule from './PandoraSolutionBuilderAgent/modules/Ownership/ownership.module';\r\nimport attachmentModule from './PandoraSolutionBuilderAgent/modules/Attachment/mx-attachment.module';\r\nimport { keepLocationAfterInitShellState } from './shell.states';\r\nimport { mxNavigationModule } from './Navigation/navigation.module';\r\nimport { AgentAppInitializerService } from './agent-app-initializer.service';\r\nimport { publicModule } from './PublicModule/public.module';\r\n\r\n// eslint-disable-next-line angular/module-setter\r\nexport const shellAgentModule = angular.module('mx.sb.shell-agent', [\r\n\textensionGalleryModule,\r\n\tpushNotificationsModule,\r\n\tdialogPageModule,\r\n\tcomponentsModule,\r\n\tdataQueryModule,\r\n\tmultiSelectionTabModule,\r\n\teditFormModule,\r\n\tsearchPageModule,\r\n\tlandingPageModule,\r\n\texecutorGridModule,\r\n\townershipModule,\r\n\tattachmentModule,\r\n\tshellModule,\r\n\tcomponentsModule,\r\n\tagentModule,\r\n\tmxNavigationModule.name,\r\n\tpublicModule.name,\r\n]);\r\n\r\nexport const shellAppModule = angular\r\n\t.module('mx.sb.shell-app', [shellAgentModule.name])\r\n\t.service('mx.sb.shell-app.AgentInitializerService', AgentAppInitializerService)\r\n\t.config([\r\n\t\t'$transitionsProvider',\r\n\t\tfunction ($transitionsProvider) {\r\n\t\t\tkeepLocationAfterInitShellState($transitionsProvider);\r\n\t\t},\r\n\t]);\r\n","'use strict';\r\n\r\nimport template from './signup.component.html';\r\nimport { signupVerificationState } from '../signup.states';\r\n\r\nexport const SignupComponent = {\r\n\tbindings: {},\r\n\tcontroller: SignupComponentCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n};\r\n\r\nSignupComponentCtrl.$inject = ['$state', 'mx.sb.SignupService', 'mx.internationalization'];\r\n\r\nexport function SignupComponentCtrl($state, signupService, i18n) {\r\n\tconst vm = this;\r\n\r\n\tvm.signup = async function (email) {\r\n\t\tvm.submitted = true;\r\n\t\tvm.errorMsg = '';\r\n\t\ttry {\r\n\t\t\tawait signupService.signupUser(email);\r\n\t\t\t$state.go(signupVerificationState.name, { email }, { reload: false });\r\n\t\t} catch (e) {\r\n\t\t\tvm.errorMsg = i18n.get(e?.data?.Message) || e?.data?.Message;\r\n\t\t\tvm.submitted = false;\r\n\t\t}\r\n\t};\r\n}\r\n","// Module\nvar code = \"
    \\r\\n\\r\\n\\t
    \\r\\n\\t\\t
    \\r\\n\\t\\t
    \\r\\n\\t
    \\r\\n\\r\\n\\t
    \\r\\n\\t
    \\r\\n\\t\\r\\n\\r\\n\\t\\t\\\"\\\"\\r\\n\\r\\n\\t\\t

    {{ ::'signup.title' | mxi18n}}

    \\r\\n\\t\\t

    {{ ::'signup.descr' | mxi18n}}

    \\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t
    {{vm.errorMsg}}
    \\r\\n\\r\\n\\t\\t
    \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{ ::'components.common.next' | mxi18n}}\\r\\n\\t\\t\\t\\r\\n\\t\\t
    \\r\\n\\r\\n\\t
    \\r\\n\\t
    \\r\\n\\t
    \\r\\n
    \\r\\n\";\n// Exports\nexport default code;","'use strict';\r\n\r\nimport template from './signupFormVerification.component.html';\r\n\r\nexport const SignupVerificationComponent = {\r\n\tbindings: {},\r\n\tcontroller: SignupVerificationComponentCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n};\r\n\r\nSignupVerificationComponentCtrl.$inject = ['mx.sb.SignupService', '$timeout'];\r\nexport function SignupVerificationComponentCtrl(signupService, $timeout) {\r\n\tconst vm = this;\r\n\r\n\tconst minIntervalBetweenClicks = 30 * 1000;\r\n\tconst maxResendClicked = 3;\r\n\r\n\tlet latestClickTime = Date.now();\r\n\tlet resendClicked = 0;\r\n\tupdateScopeTimeout();\r\n\r\n\tvm.isResendDisabled = function () {\r\n\t\treturn resendClicked >= maxResendClicked || Date.now() - latestClickTime < minIntervalBetweenClicks;\r\n\t};\r\n\r\n\tvm.resendEmail = function () {\r\n\t\tresendClicked++;\r\n\t\tlatestClickTime = Date.now();\r\n\t\tupdateScopeTimeout();\r\n\t\tsignupService.resendEmail();\r\n\t};\r\n\r\n\tfunction updateScopeTimeout() {\r\n\t\t$timeout(() => {}, minIntervalBetweenClicks);\r\n\t}\r\n}\r\n","// Module\nvar code = \"
    \\r\\n\\r\\n\\t
    \\r\\n\\t\\t
    \\r\\n\\t\\t
    \\r\\n\\t
    \\r\\n\\r\\n\\t
    \\r\\n\\t
    \\r\\n\\t
    \\r\\n\\r\\n\\t\\t\\\"\\\"\\r\\n\\r\\n\\t\\t

    {{ ::'signup.verificationTitle' | mxi18n}}

    \\r\\n\\t\\t

    {{ ::'signup.verificationDescr' | mxi18n}}

    \\r\\n\\t\\r\\n\\r\\n\\t\\t
    \\r\\n\\t\\t\\t
    \\r\\n\\t\\t\\t\\t{{ ::'signup.verificationQuestion' | mxi18n}}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t{{ ::'signup.resend' | mxi18n}}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
    \\r\\n\\t\\t
    \\r\\n\\r\\n\\t\\t
    {{vm.errorMsg}}
    \\r\\n\\r\\n\\t
    \\r\\n\\t
    \\r\\n\\t
    \\r\\n
    \\r\\n\";\n// Exports\nexport default code;","'use strict';\r\n\r\nexport class SignupService {\r\n\tstatic $inject = ['mx.SolutionBuilderAgent.Http'];\r\n\r\n\tconstructor(http) {\r\n\t\tthis.http = http;\r\n\t}\r\n\r\n\tasync signupUser(email) {\r\n\t\tthis._email = email;\r\n\t\treturn this.http.post('/api/signupuser', JSON.stringify(email));\r\n\t}\r\n\r\n\tasync resendEmail() {\r\n\t\treturn this.signupUser(this._email);\r\n\t}\r\n}\r\n","'use strict';\r\n\r\nimport { signupState, signupVerificationState } from './signup.states';\r\n\r\nimport { SignupComponent } from './signupForm/signup.component';\r\nimport { SignupVerificationComponent } from './signupVerification/signupFormVerification.component';\r\nimport { SignupService } from './signup.service';\r\n\r\nexport const signUpModule = angular\r\n\t.module('mx.sb.signup', [])\r\n\t.component(signupState.component, SignupComponent)\r\n\t.component(signupVerificationState.component, SignupVerificationComponent)\r\n\t.service('mx.sb.SignupService', SignupService)\r\n\t.config(signUpConfig);\r\n\r\nsignUpConfig.$inject = ['$uiRouterProvider'];\r\nfunction signUpConfig($uiRouterProvider) {\r\n\t$uiRouterProvider.stateRegistry.register(signupState);\r\n\t$uiRouterProvider.stateRegistry.register(signupVerificationState);\r\n}\r\n","'use strict';\r\n\r\nimport template from './registrationForm.component.html';\r\n\r\nexport const RegistrationFormComponent = {\r\n\tbindings: {},\r\n\tcontroller: RegistrationFormComponentCtrl,\r\n\tcontrollerAs: 'vm',\r\n\ttemplate: template,\r\n};\r\n\r\nRegistrationFormComponentCtrl.$inject = [\r\n\t'$q',\r\n\t'$scope',\r\n\t'mx.sb.DialogView.DialogFactory',\r\n\t'mx.shell.EventService',\r\n\t'mx.shell.Config',\r\n\t'mx.shell.UserProfileService',\r\n\t'mx.shell.AuthService',\r\n];\r\n\r\nexport function RegistrationFormComponentCtrl($q, $scope, dialogFactory, eventService, mxConfig, userProfileService, authService) {\r\n\tconst vm = this;\r\n\r\n\tasync function init() {\r\n\t\tconst userInfo = await userProfileService.get();\r\n\r\n\t\tvm.view = dialogFactory.createEditDialog(\r\n\t\t\t{\r\n\t\t\t\t_id: userInfo.objectId,\r\n\t\t\t\t_type: 'SPSUserType',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tId: '7097acb1-d98a-c398-3ac6-08d920347f57',\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tvm.view.finishDefer = $q.defer();\r\n\r\n\t\tvm.view.finishDefer.promise.then((/*entity*/) => {\r\n\t\t\thideForm();\r\n\t\t\twindow.location = mxConfig.get('basePath');\r\n\t\t});\r\n\t}\r\n\r\n\tinit();\r\n\r\n\tfunction hideForm() {\r\n\t\tconst form = document.getElementById('user-registration-form');\r\n\t\tform.style.display = 'none';\r\n\t}\r\n\r\n\teventService.subscribeTo(\r\n\t\tmx.SolutionBuilderAgent.Events.ObjectDataChanged,\r\n\t\tfunction (e, { view }) {\r\n\t\t\tif (view === vm.view) {\r\n\t\t\t\thideForm();\r\n\t\t\t}\r\n\t\t},\r\n\t\t$scope\r\n\t);\r\n\r\n\teventService.subscribeTo(\r\n\t\tmx.SolutionBuilderAgent.Events.ViewDataLoaded,\r\n\t\tfunction (e, view) {\r\n\t\t\tif (view === vm.view) {\r\n\t\t\t\tvm.loaded = true;\r\n\r\n\t\t\t\tvm.userNameForPasswordsManager = vm.view.context?.SPSUserClassBase?.MailAddress;\r\n\t\t\t\tif (!vm.userNameForPasswordsManager) {\r\n\t\t\t\t\tconsole.error('Unable to set username autocomplete field. Browser Passwords Manager might work not properly.');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t$scope\r\n\t);\r\n\r\n\tvm.save = function save() {\r\n\t\tvm.loaded = false;\r\n\t\teventService.dispatchEvent(mx.SolutionBuilderAgent.Events.DialogActionExecuted, {\r\n\t\t\tview: vm.view,\r\n\t\t\taction: 2,\r\n\t\t});\r\n\t};\r\n\r\n\tvm.cancel = function cancel() {\r\n\t\tauthService.logout();\r\n\t};\r\n}\r\n","// Module\nvar code = \"
    \\r\\n\\r\\n\\t
    \\r\\n\\t\\t
    \\r\\n\\t\\t
    \\r\\n\\t
    \\r\\n\\r\\n\\t
    \\r\\n\\t
    \\r\\n\\t
    \\r\\n\\r\\n\\t\\t\\\"\\\"\\r\\n\\r\\n\\t\\t

    {{ ::'signup.secondFormTitle' | mxi18n}}

    \\r\\n\\r\\n\\t\\t
    \\r\\n\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\r\\n\\r\\n\\t\\t\\t
    {{vm.errorMsg}}
    \\r\\n\\r\\n\\t\\t\\t
    \\r\\n\\t\\t\\t\\t{{'shell.common.cancel' | mxi18n}}\\r\\n\\t\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\t{{'components.common.submit' | mxi18n}}\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
    \\r\\n\\r\\n\\t\\t
    \\r\\n\\r\\n\\t
    \\r\\n\\t
    \\r\\n\\t
    \\r\\n
    \\r\\n\";\n// Exports\nexport default code;","'use strict';\r\n\r\nimport { userRegistrationRootState } from './user-registration.states';\r\nimport { RegistrationFormComponent } from './registrationForm/registrationForm.component';\r\n\r\nexport const UserRegistrationModuleLazy = angular.module('mx.sb.UserRegistrationLazy', []).component(userRegistrationRootState.component, RegistrationFormComponent);\r\n"],"names":["ObjectDetailsPageComponent","bindings","controller","ObjectDetailsPageController","controllerAs","template","$stateParams","mxToolbarManager","leftSidebarService","mxSideLayout","DetailsView","contentWidgetService","dialogOpener","mxConfig","$timeout","appService","widgetManager","eventService","$q","context","angular","copy","print","setToolbarVisibility","isVisible","_x","_x2","_x3","_x4","_x5","_x6","_printPreview","apply","arguments","printPreview","this","appName","applicationsPromise","getCurrentApplication","then","getApplications","viewsPromise","getAllAppViewsUncached","_type","all","result","applications","filter","widget","widgetId","Id","WidgetType","sort","widget1","widget2","Priority","some","viewApps","Applications","toLowerCase","appFound","app","indexOf","value","name","openView","settings","basePath","appBasePath","options","JSON","stringify","objectId","_id","dialogId","archived","_archived","type","viewType","appPart","window","location","_$await","vm","view","getPreviewView","subscribeOnce","mx","shell","EventCodes","AllAjaxComplete","close","$inject","ObjectDetailsPageModule","module","component","objectDetailsPageState","ResetPasswordFormComponent","ResetPasswordFormComponentCtrl","$state","resetPasswordService","i18n","resetPassword","_ref","email","submitted","errorMsg","go","resetPasswordVerificationState","reload","e","_e$data","_e$data2","get","data","Message","ResetPasswordVerificationComponent","ResetPasswordVerificationComponentCtrl","minIntervalBetweenClicks","latestClickTime","Date","now","resendClicked","updateScopeTimeout","isResendDisabled","resendEmail","ResetPasswordService","constructor","http","_this","_email","post","_this2","confirmNewPassword","AccountId","NewPassword","_this3","obj","key","arg","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","String","_toPrimitive","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","ConfirmPasswordFromComponent","ConfirmPasswordFromComponentCtrl","wizardService","userProfileService","authService","isPasswordInvalid","getWizardView","wizardMode","SolutionBuilderAgent","WizardMode","Default","displayName","selectedObjects","finishDefer","defer","promise","document","getElementById","style","display","logout","confirmPasswordRequest","locals","wizard","finishWizard","cancel","signUpModule","resetPasswordState","confirmPasswordState","service","provider","errorMessage","console","error","register","$get","getData","_componentsDir","setComponentsDir","dir","componentsDir","directive","restrict","scope","link","element","attrs","$parent","$watch","mxDisableWatchersIf","disable","oldDisable","currentScope","pendingChildHeads","length","shift","$$watchers","__mx__$$watchers","$$digestWatchIndex","push","$$childHead","$$nextSibling","factory","$compile","compile","isFunction","compiledContents","contents","remove","pre","clone","append","mxI18n","getMceI18nOptions","lang2Letters","language","substring","localeID","getLocale","langSufix","availableMceI18n","find","code","language_url","extendMissingI18n","editor","editorManager","addI18n","priority","require","ctrl","bind","ev","keyCode","$commitViewValue","$apply","$setTouched","mxBindHtmlCompile","$eval","html","MxBindHtmlTrustedController","$scope","$element","$onChanges","changes","mxBindHtmlTrusted","currentValue","bindToController","dragNDropUtils","dragstartHandler","event","dropAttrVal","target","$","closest","attr","parse","setDropData","handleDragging","mxDraggable","on","removeAttr","off","$observe","$parse","dropHandler","draggableAttr","preventDefault","stopPropagation","removeClass","$event","dragoverHandler","addClass","dragleaveHandler","mxDropVal","mxDroppable","internationalization","getDropData","dataTransfer","originalEvent","Error","setData","mxFormCtrl","valid","$postLink","form","mxHoverClass","w","components","LazyLoad","src","script","createElement","async","first","getElementsByTagName","parentNode","insertBefore","MxOnClickOutside","$window","el","mxOnClickOutside","nakedEl","fn","handler","extraPanel","extraSelectPanel","contains","hasClass","addEventListener","$on","removeEventListener","MxPreventMenuCloseController","$mdUtil","containers","mxMenuPreventCloseHandler","hasNotPreventedClickHandler","tagName","hasAttribute","setPreventAttributesForAllClickableChildren","each","$onInit","$evalAsync","mdMenuContent","getClosest","mdMenuContentParent","parent","_mxMenuPreventCloseHandler","_mxMenuPreventCloseContainers","$last","mxRepeaterComplete","item","MxResizableCtrl","$document","i18nService","htmlEL","HALF_DRAGSTRAP_WIDTH","minWidth","isRightToLeftTextMode","currentLanguage","isRightToLeft","containerEl","dragStrapEl","resizePlaceholder","windowWidth","enableResizeMode","oppositeSideOffset","currentWidth","direction","localStorageWidthKey","startResize","Utils","windowSize","width","handleResize","prependTo","isLogicalRightDirection","leftOffset","offset","left","css","logicalClientX","clientX","Math","max","stopResize","localStorage","setItem","setWidth","onChange","extend","mxResizable","parseInt","getItem","$onDestroy","mxRightClick","tElem","tAttrs","transclude","elem","ctrls","readOnly","disabled","mxZoom","$mdDialog","onClick","show","clickOutsideToClose","url","join","MxButtonCtrl","isProcessing","onButtonClick","click","label","icon","styles","focused","isDisabled","templateUrl","MxCheckboxCtrl","$attrs","model","FormControlControllerBase","set","setValue","tabindex","FormControlBase","MxChoiceCtrl","$filter","$templateCache","mxChoiceNormalizeViewModeValue","uniqueClassName","genElemId","viewMode","viewModeParam","panels","a","b","position","_panels","selectedPanelName","panel","parentControllerAs","getParent","dataModel","repeaterItem","$watchGroup","t","visible","hiddenPanels","_currentPanel","validateTemplateUrl","panelId","mxForm","mxUiAccessibility","directionHorizontalButtonsWidth","_toLowerCase","v","MxColorPickerCtrl","colorPickerOpened","defaultPickerColor","isColorPickerSupported","textInputtingColor","setColorModel","mousePickingColor","newValue","legacy","replace","_readonly","setHintHandlers","blurText","onBlur","focusColor","onColorPickerClick","color","test","isValidColor","trim","MxConfigReaderCtrl","path","mxParentContainerCtrl","mxContainerEl","innerVisibleChildren","isVisibleState","hiddenWrapperHtmlClass","hiddenContainerHtmlClass","hasNgIf","ngIf","_debouncedHandleVisibility","debounce","_handleVisibility","_init","registerChild","hideIfEmpty","visibleControlsAmount","_hasVisibleControls","_hideWrappers","setChildVisibility","_showWrappers","has","wrappingMxRow","ngIfElement","wrapper1","isWrapper1MxRow","is","siblingsInWrapper1","children","wrapper2","isWrapper2MxRowsContainer","siblingsInWrapper2","_isHideIfEmpty","_generateContainerId","idObject","__mxContainerRegistrationId","ngIfValue","next","isChildVisible","childElementId","i","wasEmpty","splice","isEmpty","MxCurrencyController","getModel","Value","CC","initializedCurrencyCode","checkValidation","validation","required","Boolean","IsValid","ErrorMessage","externalCustomValidation","equals","customValidation","deferred","$applyAsync","inputContainer","valueInput","codeSelect","focusOnInit","focus","config","showCurrencyCode","allowmulti","default","defaultCc","isEmptyObject","fieldWidth","cc","availableCurrencies","_","symbol","getSymbolByCode","currencyCode","setTimeout","map","DisplayString","resolve","reject","items","currencies","labelEl","round","onSelectBlur","relatedTarget","onExternalBlur","onSelectFocus","onInputBlur","stopImmediatePropagation","initCurrentElement","MxWorkspaceCommonSearchPanelCtrl","search","searchText","preprocessor","callChanged","parameters","MxDateTimeCtrl","DeviceService","$mdDateLocale","_value","setModel","minDate","maxDate","isoString","toISOString","time","_hours","getHours","isPM","hours","_getHoursConsideringAMPM","minutes","getMinutes","setTimeVars","_prepareValue","newVal","setHours","setMinutes","setSeconds","hours24","ampmMode","_formatWithZero","val","displayMode","dateFormats","DATETIME_FORMATS","shortTime","firstDayOfWeek","FIRSTDAYOFWEEK","setMilliseconds","placeholder","getDateFormatString","convertDateFrom6or8Digits","newDate","newHours","isNaN","oldHours","minutesWasSet","hoursToBeSet","_tempVal","newMinutes","oldMinutes","newIsPM","oldIsPM","onValueChanging","MxListCtrl","itemsLoaded","hideButton","handleClick","documentElement","expanded","menuContainer","_menuClickHandler","__preventSecondOpening","clickEvent","Event","pos","trigger","clientY","top","menuContent","classList","triggerHandler","onItemClick","openMenu","$mdOpenMenu","loadItems","when","_prepareItems","head","_oldMenuWidth","_handleRightShift","menu","menuWidth","menuHeight","height","innerWidth","innerHeight","_setMenuPosition","parentElement","iconSrc","files","filesSelected","removeFile","file","index","MxControlErrorsCtrl","initialize","formController","errorController","_vm$errorController","_vm$internalControlle","_vm$internalControlle2","$error","$watchCollection","render","trackInternal","internalController","internalName","$$scope","errorMessages","validationStatus","_vm$internalControlle3","mxInvalid","$invalid","keys","$$attr","customValidationAttribute","ngModel","split","pop","localizeErrorMessages","update","MxFormErrorsCtrl","_clientErrors","_originErrors","_errors","_formMessages","mxErrorMessages","addFormErrorMessage","_addFormErrorMessage","_showActiveError","getErrorMessage","isObject","Forms","message","active","actionButton","transient","formMessage","_onErrorMessageChange","updateErrors","_vm$mxFormCtrl","isLoading","allErrors","activeErrorIndex","hasErrors","isActive","nextExists","prevExists","Array","isArray","nextError","prevError","customErrors","keyErrors","_item$$$attr","prototype","errors","concat","noFormErrors","noCustomErrors","$setValidity","status","actionButtonClick","clickHandler","errorCode","getFormatted","tEl","msgElemId","_isActive","MxFormMessageCtrl","setActive","initFormErrors","actionButtonLabel","assignButtonTo","assignButtonFrom","mxContainerCtrl","ariaLabel","ignoreReadonly","showHints","setValidity","controlNgModel","text","$$parentForm","setCustomValidity","guid","_isValid","_isFocused","isInvalid","showingHints","formValidation","isValid","attributeName","_model","skipEvent","oldVal","hasOwnProperty","isFocus","isDefined","_toShowHints","_showHints","inputEl","MxFormCtrl","externalReadOnly","externalReadOnlyAll","templateReadOnly","onReadOnlyChanged","defineProperties","$valid","dirty","$dirty","setDirty","_updateReadOnly","setExternalReadOnly","addDirtyIgnoredControls","controls","forEach","controlName","$pristine","$setDirty","displayStrings","entity","entityName","MxGridColorPickerCtrl","uiGridEditConstants","uiGridConstants","colDef","col","row","field","evt","keymap","ESC","$emit","events","CANCEL_CELL_EDIT","BEGIN_CELL_EDIT","END_CELL_EDIT","MxGridCurrencyCtrl","save","ENTER","TAB","MxGridDateTimePickerCtrl","grid","api","edit","raise","afterCellEdit","format","dateParts","timeParts","formatToDisplayMode","Format","dateMode","MxGridEditFormFieldCtrl","isString","isBool","MxGridEditFormCtrl","$injector","$rootScope","formFields","appScope","localScope","$new","div","querySelector","closeInlineForm","MxGridIconPickerCtrl","MxGridNumericEditCtrl","AttributeValueType","scale","Scale","blur","MxGridSelectCtrl","_colDef$item","_colDef$item$Enumerat","setEntityValue","EnumerationAsObject","title","Enumeration","getEnumValues","getEntityValue","dataItems","hidden","MxGridCtrl","gritUtil","deviceService","$mdConstant","gridHelper","loadOptions","useExternalDataLoading","useExternalSorting","previousClickedRowIndex","templates","headerTemplate","columnFilter","quickFilterHeader","labels","parts","selectItemCheckboxHeader","notifySelectionChanged","onSelectionChanged","selectedItems","__isSelected","rows","selected","selectAllItems","allSelected","onSelectAllClick","allSelectedState","isAllItemsSelected","every","gridOptions","virtualizationThreshold","excessRows","columnVirtualizationThreshold","excessColumns","selectionRowHeaderWidth","headerRowHeight","minRowsToShow","screenMobile","enablePaginationControls","enableExpandable","enableExpandableRowHeader","enableColumnMenus","disableExport","flatEntityAccess","isStaticMode","mousewheel","imgHost","attachments","currencyConfig","loadData","highlightOnClick","enableHorizontalScrollbar","rowHeight","enableCellEdit","enableSorting","rowEquality","rowIdentity","equal","gridMenuCustomItems","hideHeader","useExternalFiltering","enableFiltering","hideExport","debouncedClickHandler","_vm$options$onItemCli","_vm$options","_vm$options$onRowDblC","_vm$options2","currentItem","onRowDblClick","getClickedRow","clickedRow","shiftKey","startIndex","min","endIndex","onCheckboxClick","onLeftClick","onDblClick","onRightClick","menuItems","dropdownEvent","isDropdownOpen","useExternalPagination","loading","onRegisterApi","gridApi","allResizeEvents","last","uiGridResizeHandler","core","sortChanged","sortColumns","onSortChanged","columns","columnVisibilityChanged","column","onColumnVisibilityChanged","colResizable","columnSizeChanged","columnWidthShift","absoluteWidth","drawnWidth","onColumnSizeChanged","colMovable","columnPositionChanged","oldPosition","newPosition","onColumnPositionChanged","refreshGridCanvas","redrawInPlace","refreshCanvas","callDataChangeCallbacks","dataChange","ROW","_data","resize","toString","registerStyleComputation","func","reduce","accumulator","columnStyles","id","getColClass","renderingComplete","preventStuckingMovingColumns","rowsRendered","staticCanvas","staticTemplate","highlighted","itemIndex","getColorStyle","uid","cellClass","ariaHidden","colDefItem","defaultCellTemplate","processObject","DisplayImage","getGraphicPath","graphicType","imageCell","ObjectPropertyType","Icon","Color","Labels","Parts","getCellContentTemplate","getStaticCellTemplate","getStaticRowTemplate","highlightCurrentRow","updateSelection","rowsRendering","gridViewport","scrollTop","columnDefs","oldValue","_finishRenderingTimeout","newValues","updateColumns","_columns","rowTextData","rowBgData","clm","DisplayType","enableRowSelection","Type","Alignment","Name","Width","IsDisplay","AriaHidden","alignClass","headerCellTemplate","mappedColumn","rowBackgroundData","Title","DisplayName","enableColumnMenu","formatFn","headerCellClass","Sorting","cellFilter","filterHeaderTemplate","groupingIsAvailable","GroupingIsAvailable","onGroupingClick","ASC","DESC","SortingPriority","notifyDataChange","COLUMN","setColumns","modifyRows","onbeforeprint","overflow","onafterprint","newList","newCurrentItem","oldCurrentItem","gridWidth","gridHeight","onColumnFilterMenuKeyDown","which","KEY_CODE","LEFT_ARROW","RIGHT_ARROW","newItem","IsEnum","Guid","Text","htmlEncode","Integer","Float","Long","Decimal","ReferenceTo","formatNumber","Currency","formatCurrency","formatUTCDate","formatUTCDateForAria","slice","rowEl","highlightedRow","getAttribute","add","handleScript","cacheFieldName","Function","ImageScript","ColorScript","calcColor","clr","ColorType","imageString","isText","colorType","columnWithRowColor","arr","alpha","includes","exec","colorToRgba","clickedEl","MxGrid","onReorder","getTemplate","attributes","loadUiGridTemplates","container","targetContainer","floor","minHeight","mH","Number","originaMenuBtnTemplate","originaUiGridTemplate","skipheaderactions","put","Grid","allIcons","filteredIcons","__limit","applyIcon","__parentVm","Icons","category","icons","categoryName","__input","clearWaitAppearence","isElVisible","_tryShowMoreDebounced","__parentEl","fullHeight","scrollHeight","currentHeigth","mdPanelRef","MxIconPickerCtrl","$mdPanel","dropdownConfig","activate","clear","inputContainerEl","iconId","cat","_readOnly","_disabled","attachTo","body","escapeToClose","propagateContainerEvents","onCloseSuccess","newPanelPosition","relativeTo","addPanelPosition","xPosition","ALIGN_START","yPosition","BELOW","dropdownWidth","open","iconNameMapping","MxIconCtrl","getIconAttrs","isMDicon","tooltip","size","_changes$iconSrc","_changes$icon","_changes$iconSrc2","iconName","useSrc","newIconName","iconNamesMapping","previousValue","MxIFrameCtrl","$sce","frameSource","iframe","trustAsResourceUrl","lightbox","routeHandler","defaultPrevented","openModal","load","image","Image","onload","complete","naturalWidth","onerror","_internationalization_","getImageUrl","getImageCaption","caption","calculateImageDimensionLimits","dimensions","maxWidth","maxHeight","windowHeight","calculateModalDimensions","imageDisplayWidth","imageDisplayHeight","ImageLoader","images","Lightbox","keyboardNavEnabled","modalPromise","newImages","newIndex","cleanUp","imageUrl","imageCaption","setImage","windowClass","closeModal","hide","success","firstImage","prevImage","nextImage","lastImage","setImages","method","imageWidth","imageHeight","h","minW","minH","maxW","maxH","displayW","displayH","imageDimensionLimits","imageDisplayDimensions","modalDimensions","mxLightboxSrc","naturalHeight","list","resultList","_useCheckboxes","useCheckboxes","_allowPaging","allowPaging","_highlightOnClick","_titleKey","titleKey","_descriptionKey","descriptionKey","_imageKey","imageKey","_showItemActions","tileRatio","tileHeight","spaceBetween","paging","page","pageNumber","count","totalItems","pageSize","isLocalData","handleSelection","handleItemClick","handleItemRightClick","searchFilter","searchProperties","callLocalChanges","def","lg","md","sm","xs","properties","s","searchInProperties","match","prop","propValue","pagingFilter","filteredData","start","end","mappedItem","__visible","__highlighted","__trackByKey","random","listItem","ctrlKey","rightClickHandler","onItemRightClick","actions","selectionChanged","_listFooterTpl","listTemplate","wholeItemClick","componentOpts","getItemActions","virtual","mxTemplateList","getTileTemplate","elementId","templateId","mxTiles","tileWidth","idKey","mxTemplateTiles","notSetLabel","notSetAriaLabel","yesLabel","noLabel","getOptimizer","designerMode","ngStyleTmpl","styleStr","optimizer","strStyle","st","informContainerOwnVisibility","singleLine","hideOnEmptyValue","reserveIconSpace","valueMinWidth","labelMinWidth","labelMaxWidth","labelPosition","labelStyle","labelColor","valueColor","iconColor","textType","compileHtml","getIconTemplate","ngLabelStyle","classes","isLinkType","getLabelTemplate","ngValueStyle","singleLineClass","linkFunc","idx","notLast","showComma","displayLinksCount","bindType","getTemplateByType","hasValue","formattedLabel","formattedHideOnEmptyValue","formattedReserveIconSpace","layout","formattedLabelPosition","isDateType","isCurrency","isHtml","isNumeric","isTimeSpan","isLinks","_scope$value","newText","isUndefined","indx","href","showText","ariaValue","rmValueWatcher","_scope","_scope$value2","_scope$value3","_scope$value4","_scope$value5","params","isRealNumber","isFinite","formattedValue","isolateLocalStyles","valueType","formatTimeDuration","getPurePhone","phone","MxNumericEditCtrl","mxNumericEditFormat","valueRangeValidator","validateParsers","$parsers","parser","$modelValue","isMax","validator","customValue","borderValue","getBorderValue","borderVal","$formatters","disableFormatting","mxMin","mxMax","inputDebounce","NumericEditFormat","RatingController","starsContainer","updateStars","stars","filled","star","toggle","MxRepeaterCtrl","__$vm","entities","orderBy","reverse","MxSearchInputController","debouncedSearch","externalValue","internalValue","lockRepeatingSearch","runByEnter","debounceTime","mxAriaLabel","MxStepperCtrl","_steps","setSteps","adjustStepsRecursively","steps","parentStep","activeStep","findIndex","step","Active","failedStep","Failed","stepNumber","stateClass","hasChildren","Steps","isLastChild","finishDate","stepIcon","previewText","descriptionText","detailsText","Description","stateWithDate","statusText","Status","ready","init","$doCheck","stepperContainer","offsetWidth","stepLength","getMaxMobileOffset","currentTarget","getStepDetails","stepContent","stepContentWrapper","isHidden","stepper","MxTabsCtrl","selectedTabName","setTabName","tabs","tab","selectedIndex","tabsFilter","_vm$tabs","MxTextAreaCtrl","_label","textArea","MxTextBoxCtrl","mxTemplate","useDebounce","maskTemplate","mxMask","mxMaskFormat","getMaskTemplateByType","pattern","MxTimelineLazyCtrl","$ocLazyLoad","lazyLoadCfg","anticache","productVersion","setModuleConfig","serie","selectedItem","idFieldName","titleFieldName","dateFieldName","contentFieldName","MxTimelineCtrl","VisDataSet","timelineItems","newItems","object","content","timelineData","dataLoaded","MxTreeview","MxTreeviewCtrl","parentField","idField","expandByButton","expandByDefault","autoSelectFirst","showAsList","showAdd","showEdit","showDelete","onAdd","onDelete","onEdit","initialized","watchers","_showAdd","_showDelete","_showEdit","_showAsList","_expandByDefault","_onAdd","_onDelete","_onEdit","getStatus","itemsStatus","expandButtonClick","x","initTopLevelItems","topLevelItems","aValue","localeCompare","node","showExpandButton","itemClick","updata","forIn","delete","getChildren","Treeview","DeleteItem","itemsForDelete","currentItems","externalServiceManager","sidePanelService","notificationService","reloadPage","action","dispatchEvent","Events","SearchPageDataChanged","closeView","currentView","execute","groupedObjectsByService","groupBy","allResults","deleteObjects","actionProxy","contextService","designerOpener","isDashboardEditModeOn","unsubscribeFromSidebarClosing","sidebarService","MxView","navigationManager","dashboardDataService","navigationService","dashboardId","navigationId","stopEditDashboard","closedBySideBarClosingEvent","disableDashboardEditMode","collapsedMode","getNavigationItem","navigationItem","contentWidgetId","isOpened","dashboardEditView","enableDashboardEditMode","SidebarClosed","beginEditDashboard","host","WorkflowId","ID","presetFields","parentView","objectType","query","variable","vars","pair","decodeURIComponent","getQueryVariable","controllerParams","outerContext","openNewDialog","newDialogOpenedPromise","catch","logCatch","_cxtObjTypes","availableTypes","availableType","ctxType","$httpParamSerializer","getQueryParameters","reportControlUrl","ReportControlUrl","ReportName","TypeName","ObjId","selectedObject","rootPath","MxMultiSchemaLinkCtrl","schemaService","getClasses","literalValue","getValue","getTypes","types","itemInfos","info","InternalName","valueClick","_name","openPreview","objDetails","MxObjectLiteralCtrl","mxEntityService","columnDefinition","EntityType","$item","getFragmentDescriptorsInBatch","entityClassName","idType","dataQuery","parentViewController","mxView","hideOnEmptyValueProcessed","hasViews","valueLabel","displayString","_displayName","DisplayValue","displayExpression","parentExpression","getObjectInfo","setDisplayStrings","isService","getGridDefinitionByName","columnDef","SchemaClassName","Service","rootElement","ParentDisplayString","useObjectId","includeRoot","dataQueryName","getWidgetIdForControl","optmzr","MxSchemaLiteralCtrl","skipLiteralValue","getClassInfoById","values","M42DashboardWidgetCustomCtrl","contentNoTitleClass","destroy","$destroy","empty","m42Params","isDynamicHeight","class","isTransparentBackground","tpl","_elem","getWidgetContent","m42WidgetId","widgetContent","oldSizeY","_handleResize","contentHeight","gridsterItem","sizeY","subscribeTo","LayoutChanged","elementWatcher","MxAudienceInfoCtrl","showAudience","showDetails","nobody","toggleAudience","hideAudience","Data","value2","value3","Unrestricted","value4","StrictAdminControl","locations","orgUnit","user","users","role","roles","dataByType","Parent","initData","toggleDetails","MxCallServiceButtonCtrl","dataModelService","showLoading","callServiceClick","loadingState","Loading","state","runOnInit","sourceStateIs","SourceLoadingStatus","LOADED","REJECTED","LOADING","reloadSourceByPath","source","Context","WidgetId","sourceState","MxCarouselCtrl","isRtl","currentPosiiton","disablePaging","changeSlide","offsetX","nextSlide","prevSlide","subjectFieldName","bodyFieldName","hidePaging","parentControl","MxAreaChartDirective","baseChartService","mxBaseChartDirective","MxAreaChartCtrl","$controller","getChartConfig","getBaseChartConfig","baseConfig","series","dataLabels","enabled","labelsFormat","MxBarChartDirective","showOnlyTopBars","MxBarChartCtrl","dataConfig","numOfSeriesToShow","responsive","rules","condition","callback","newNumOfSeriesToShow","chartHeight","MxColumnChartDirective","showOnlyTopColumns","MxColumnChartCtrl","chartWidth","MxLineChartDirective","MxLineChartCtrl","MxPieChartDirective","MxPieChartCtrl","chart","plotOptions","pie","showInLegend","legendVisible","MxStackedBarChartDirective","MxStackedBarChartCtrl","stacking","hoveredChart","onChartClick","reorderAllStackedSeriesAsFirstSeries","MxStackedColumnChartDirective","MxStackedColumnChartCtrl","formatter","y","toFixed","tooltipFormat","MxConcurrencyMerge","conflictMergeEntities","decideMessage","UseNewValue","UseOldValue","answerPromise","answer","mergeEntities","mergeAndSave","merge","MxConditionBooleanCtrl","MxConditionEnumReferenceCtrl","MxConditionExpressionCtrl","MxConditionNumberCtrl","MxConditionObjectReferenceCtrl","displayValue","MxConditionObjectReferencesCtrl","MxConditionStringCtrl","ClassFactory","helper","ConditionsBuilderEnums","ConditionValueTypes","ConditionTypes","ConditionBuilderMode","ConditionsBuilderCondition","operator","valueTypeValue","Attribute","attribute","AttributeId","selectedAttribute","conditionType","EnumerationReference","__enumeration","loadEnumeration","enumeration","toLocaleString","getDisplayValue","updateOutput","ConditionType","typeOperators","operators","Operators","setupOperators","newOperator","_this$operators$this$","_this$operators$opera","_this$operators$opera2","wasArray","_this$operators$this$2","_this$operators$this$3","unconfigurableStartCondition","startConditions","_this$operators$this$4","unconfigurableValue","_builderConfig","valueTypes","newValueType","definePropertiesForEnums","StartConditions","EnumLoader","self","logicOperatorValue","LogicOperator","ValueType","operatorValue","Operator","startConditionValue","ConditionStart","toggleLogicalOperator","logicOperator","logicOperators","mode","disableDifferentOperatorsInGroup","setLogicOperatorForChildren","conditionOutput","output","updateEnumerations","addNewValue","removeValue","onArrayValueChange","ConditionsBuilderGroup","ConditionsBuilder","filteredProperties","predefinedConditions","newFilteredProperties","newProperties","property","IsAttribute","Groups","g","addGroup","Conditions","c","addCondition","create","setFilterForProperties","builderOutput","onOutputChange","groupOptions","fieldName","conditions","groups","group","Level","getChildrenOperator","enableDifferentOperatorsInGroup","level","removeGroup","removeCondition","toggleExpanded","groupOutput","MxEnum","ComplianceRuleTriggerTypes","CreateObject","DeleteObject","Action","ChangeObject","External","ComplianceRuleConditionStart","After","Before","Expression","ObjectReference","Fragment","ObjectReferences","MultiFragment","ConditionLogicOperators","AND","OR","ConditionDateMods","DateExpression","ConditionsBuilderHelper","SchemaServiceEnums","DataTypes","RelationCardinality","fieldNewValue","getConditionTypeByDataType","dataType","BoolType","DateType","ExpressionGuidType","IntType","LongType","FloatType","getConditionTypeByRelation","relationType","OneZeroToOne","OneToOne","ManyToOne","OneToOneZero","ManyToZeroOne","ComplianceRuleEnums","MxComplianceRuleConditionsBuilderCtrl","complianceRuleConditionsService","currentTrigger","currentRelatedClasses","propertiesPromise","builderPromise","firstInit","currentIsBasedOnDD","initBuilder","relatedClasses","isBasedOnDD","propertiesInputAttributesChanged","getProperties","typeIds","getBuilder","builder","disabledAdd","DataModelArray","newTrigger","MxConditionGroupCtrl","conditionsBuilder","parentGroupContainer","parentExpanded","MxConditionCtrl","MxConditionsBuilderCtrl","warn","MxDefinitionConditionsBuilderCtrl","definitionConditionsService","currentRules","json","MxDefinitionConditionsService","i18nBuilder","and","or","expression","inputRules","rule","Left","Right","hidePropertiesFilter","enumLoader","inputMapping","groupConfig","getOperatorValue","OperandList","operand","MatchOperandId","getOperatorTitle","itemsToQuery","accumulateQuery","isBuilder","operandList","MxSearchPageCustomFormCtrl","searchService","formElement","literalElement","rootContainer","formTpl","firstChild","literalTpl","_elemForm","_elemLiteral","currentSearch","keyword","uiToken","formActive","filterType","filterId","customFormButton","prepend","_vm$customFormButton","Search","searchOptions","dontHideCustomForm","MxContentWidgetViewDialogPageCtrl","MxContentWidgetViewCtrl","widgetSync","templatePromise","ContentWidgetViewType","DialogPage","Template","List","Tile","ObjectDetails","NonVisual","Calendar","Board","str","re","RegExp","board","found","cls","preprocessors","nonVisualTemplate","MxCustomContentWidgetCtrl","$interpolate","controlDescriptorService","controlDescriptorId","freeDataSourceDefer","isFirstChange","getHtml","_vm$view","ControlDescriptorId","Views","serviceContextInfo","viewName","Key","DataModelExtensions","extensions","staticData","WidgetAttributes","initWidgetAttributes","loadDataModel","_freeDataSourceDefer","_watchers","widgetAttributes","DataModelPropertyDirection","IN","camelCasedName","interpolatedValue","initOneWayWidgetAttribute","BOTH","attributeValue","initTwoWayWidgetAttribute","value5","MxDashboardEditorCtrl","sortWidgets","widgetA","widgetB","added","widgets","getAvailableDashboardWidgets","isDashboardCustomized","isCustomLayoutSaved","addWidgetToDashboard","resetButtonClick","resetToDefault","renderDashboard","revertToCustomClick","revertToCustomLayout","isWidgetAvailable","removeWidgetFromDashboard","MxDataControlPanelCtrl","keyboardNavigationService","contextSelectionService","favouritesService","showPanel","pagingPreprocessor","registerKey","description","onRegister","searchHint","advSearchHint","closeSearch","onAdvancedSearchClick","selectEntireDataset","showSelectEntireDataset","dataQueryList","wholeDatasetSelected","ObjectSelectionChanged","objectsCollection","toggleQueryFiltersPanel","queryFilterOpened","showAdvancedSearchButton","addButtonItems","showSelectionButton","onSearch","onRefreshClick","onExportClick","autoRefreshConfig","showQueryFilterButton","showSettingsButton","settingsOpened","disableSearch","showExportButton","disableExportButton","MxDataControlSettingsPanelCtrl","searchQueryService","personalizationService","noFilters","getGridPersonalization","viewParameters","personalization","hasPersonalization","onColumnClick","currentContext","setColumnVisibility","clearColumnsPersonalization","saveGridPersonalization","SynchronizeWidget","getIconName","GridPersonalizationSaved","contextKey","viewInfos","showConfigureButton","onConfigureClick","onViewSelect","availableRowHeights","enableRowsColoring","mxEnsureUnique","statementStartIndex","substr","ngModelCtrl","unique","formObjectId","mxServiceContext","_mxServiceContext$mxS","_mxServiceContext$mxS2","_mxServiceContext$mxS3","_mxServiceContext$mxS4","_mxServiceContext$mxS5","_mxServiceContext$mxS6","pendingValidation","resultCache","$asyncValidators","modelValue","viewValue","ensureUniqueValue","isUnique","mxSchema","mxDataQuery","exptType","operationId","isCondition","placeholders","expressionPlaceholders","expressionJavascriptParams","isLogical","expressionLogical","allowUnknownType","isJs","expressionJavascript","expressionType","mxExpressionValidator","getClass","objClass","className","validate","opId","initialValue","$viewValue","_validateJsScript","validateExpr","_scope$$parent","_scope$$parent$item","validationAttributeName","exprValue","evaluateColumnExpression","assign","safeScript","getSafeScript","pseudoLogicalResult","setInvalid","selectButtonDisabled","select","getSelectedObjects","noLogCatchMessage","MxGridObjectPickerCtrl","MxGroupingBoard","_generateItemViews","forceRegen","__view","sharedScopeAs","sharedScope","groupedItem","itemColumnKey","itemTemplate","newItemTemplate","oldItemTemplate","onMove","$partFrom","$partTo","$indexFrom","$indexTo","columnVal","onItemChanged","newColumnValue","itemBefore","itemAfter","itemPriorityKey","enableDragging","MxImagePicker","onBrowseLookup","browseLookup","selectedImage","onClear","viewStyle","iconValue","_vm$parentViewControl","_vm$form","_objectView3","_objectView3$context","_vm$form2","_objectView4","_objectView4$context","objectView","_objectView","_objectView$context","_objectView2","selectImage","baseFolder","modeAttach","modeIcon","modeImage","serverBasePath","iconSize","MxImageView","hostHelper","onImageClick","allowPreview","updateValue","getFullImageUrl","imageStyles","defaultValue","MxJournalCtrl","itemsPerPage","processingItems","canLoadMore","_showRichEditor","loadMoreItems","toggleItem","toggleAll","toggleAllState","newComment","addComment","_attachingInProgress","_useFileAttachments","attachFiles","_handleRichTextBoxBlur","onFullscreenToggle","showCheckboxes","checkboxLabel","keyValues","_getValueByKey","oldata","upitem","olditem","entryId","visibleInPortal","onUpdate","getJournalEntries","displayItem","entry","onGetData","moreItemsExists","__my","userId","currentUserId","__created","created","checkboxNames","addCheckboxesToFormDirtyIgnoredList","finally","adding","isFullscreenModeEnabled","alert","attachFilesHandler","fileNames","realParentContainer","fullscreenContainer","addBtnClassName","addBtnFullscreenClassName","addBtnContainer","addBtn","currentUserPhoto","MxFavouritesItemsPanelCtrl","setFavoritesFilter","filterText","viewsFilter","filterNavigations","MxRecentItemsPanelCtrl","recentService","MxViewLinksPanel","views","filteredViews","newViews","searchViews","newFilter","_view$displayName","activeView","itemClickHandler","onViewTabChanged","MxWidgetsPanelController","widgetsPanelService","navigationController","MxWidgetNavigationCtrl","setActiveStatus","setCurrentClasses","route","activated","rootItemClickHandler","current","visibleIds","child","querySelectorAll","DOMItem","isItemVisible","CurrentNavigationItemChanged","needHideWidget","hideLeftSideNavigation","navigationWidget","hideWidget","showWidget","navItems","navDOMItems","getFlatArrayOfNavItems","navItem","navDOMItem","parentOfActivated","toggleClasses","flag1","flag2","prefId","MxCustomLocalizationInputCtrl","customEditor","editorType","modelAttrKey","k","MxLocalizationEditorCtrl","translationService","richTextModeOptions","hideClick","dialog","saveMode","saveLocalizationDirectly","saveButtonText","saveClick","localizedValue","prepareProperty","updateLocalizationString","supportedLanguages","richTextMode","activeMode","MxMultiObjectPickerCtrl","isMultipleSelection","ObjectPickerCtrl","ObjectPicker","getDirectiveDescriptor","addOnBlur","commonObjectPickerProperties","MxObjectsHierarchyPickerCtrl","selectHierarchyObject","filterExpression","setAdditionalOutputs","onChangeData","chain","selectedItemChain","lastChainItem","noBrowseLookup","loadTree","parentId","extraParams","ids","skipFilter","ObjectId","__parents","Parents","pNode","MxObjectRatingCtrl","onRateChange","showComment","updateSummary","parseFloat","summary","ratings","ariaSummary","submitRating","entityType","comments","rate","Count","Average","cancelRating","defaultRate","showSummary","MxPropertyBindingMapperCtrl","localChanged","propertyName","mappingTypes","showMappingName","showPropertyName","showMappingValueType","mappingValueTypes","getCurrentItem","mappingType","MappingType","mappingValueType","MappingValueType","mappingName","MappingName","PropertyName","processType","propertyNameUpdate","mappingNameUpdate","MxQuickStartPanelCtrl","appsService","routingService","hostUrlHelper","navigationItemsLoaderService","maxNumOfRows","maxChildrenPerColumn","columnsPerTile","maxNumberOfSubCategoriesInTile","gutter","openLink","appString","objectIdFieldName","getImage","imageFieldName","showAllCategories","showAll","bigItem","childrenGroups","tilePercentWidth","gutterBorder","gutterOffset","numOfTiles","leftPos","calcBigItemPosition","dataWatcher","navigateTo","baseNavigationId","getNavigationItemsOfWidget","setNavigationIdForStructure","updateLayout","debouncedRecalculatePages","newColumns","categories","carouselPages","__numOfTileInRow","calcCarouselPages","Children","ceil","childrenPerColumn","elementWidth","needPaging","twoLinesMode","MxReadonlyFormCtrl","MxRecalculateActionsCtrl","sidePanelActionsService","_changes$sourceState","conditionChanged","sourceStateChanged","NOT_SET","calculateViewActions","mxDialogContainerCtrl","MxSearchControlCtrl","navigationItems","SearchQueryGroup","MxSearchQueryGroupCustomCtrl","watcher","pValue","datasource","initQueryByContext","p","MxSearchQueryConditionBooleanCtrl","Equals","stateMode","IsNotSet","IsSet","__valid","MxSearchQueryConditionDateCtrl","parseFlexDate","datePart","setView","showFixedDate","FlexDateBetween","Between","fromEnabled","tillEnabled","valueToDisplayString","todayLable","nowLable","minsLable","daysLable","formatDate","setValueString","from","till","fromLabel","tillLable","valueString","isSetCondition","andLable","fromDays","fromSign","fromType","tillSign","tillType","tillDays","fromDatepart","tillDatepart","abs","MxSearchQueryConditionDecimalCtrl","withoutParamsMode","MxSearchQueryConditionEnumReferenceCtrl","enumerationValues","localEnumeration","showHiddenValues","filterItems","multiGroup","showHiddenValuesInSearch","dataSource","hiddenExists","checked","Hidden","MxSearchQueryConditionExpressionController","isCustomizationMode","showExpression","MxSearchQueryConditionFloatCtrl","MxSearchQueryConditionObjectReferenceCtrl","orignShowCurrentUser","_pickupValues","textMode","isTextMode","isStateMode","reference","__property","showCurrentUser","currentUser","_notSet","setConditionValues","setPickupValues","setConditionDisplayValue","operatorChanged","notSet","Contains","NotContains","StartsWith","EndsWith","tmpArr","lbl","itm","MxSearchQueryConditionStringCtrl","configService","maxWordsPerCondition","maxWordsValidationMessage","ContainsAllWords","ContainsAnyWord","DoesNotContainAnyWord","DoesNotContainAllWords","MxSearchQueryConditionOperatorCtrl","filterOperatorsFactory","openDropDown","showDropDown","conditionOperatorsDropdownList","getOperatorByValue","conditionOperators","op","MxSearchQueryConditionCtrl","onRemove","toggleParentLogicalOperator","logicalOperator","SearchQueryLogicalOperator","__expanded","conditionString","isExpression","getOperatorsByType","In","getOperators","itemScope","initCondition","updateCondition","findKey","getConditionString","operatorInfo","MxServiceContext","servicePromiseDefer","dataModelPromiseDefer","$servicePromise","$dataModelPromise","watch","getOperationInfo","SupportedOperations","ReadObject","MxSettingViewhelpEditorCtrl","$http","mxHttp","hashtags","hashtag","onlineHashtags","onlineHashtag","localKBArticleID","localKBArticleObjID","onlineKBArticle","onlineKBArticleFound","_helpSourceType","_localKBArticleValue","_onlineKBArticleValue","_onlineHelpRestHosts","_initHashtag","_loadHeadings","kbObjId","isOnline","restHosts","onlineHelp","response","_setHashtags","Hashtags","selectedHasgTag","None","KBArticle","M42OnlineHelp","ExternalURL","productName","helpSourceType","_obj1","Hashtag","_obj2","encodeURIComponent","ObjectID","Subject","MxSidePanelCtrl","sideLayoutService","ariaService","invalidInputsSelector","moveFocusToDialog","activeSidePanelTabSelector","invalidInputs","currentInput","currentInputIndex","eq","nameInTemplate","switchFullScreenMode","SidePanelViewAdded","createPoliteFocusSettingFn","dialogType","ContentWidgetDialogAction","Preview","readMessage","ViewDataLoaded","SidePanelCurrentViewChanged","ActionConfirmDialogCanceled","SidePanelVisibility","visibility","linkHelperShowTextEventHandler","HelpShowText","isMoreViewHelp","MxSupportedWidgetTypesCtrl","$i18n","processTypes","supportedTypes","flag","ContentWidgetType","widgetType","widgetName","pow","flTypes","MxTranslationEditorCtrl","translations","lcid","LocalizationPropertyTranslation","Lcid","updateTranslation","MxExtraWizardCtrl","mxWizardService","View","_thisExtraWizard","mainWizard","getWizardAndDataModel","typeName","wizardWidgetId","wizardContext","positionInBaseWizard","positionInMainWizard","nonVisuals","noop","addExtraWizard","removeExtraWizard","MxPostActionWizardCtrl","actionManagerService","actionExecutorService","WizardPostAction","getAllActions","MxValidateWizardCtrl","ToggleWizardEnabled","MxWizardManager","mixedActionHelper","paActive","paObjectId","managerId","registerWizardManager","postAction","run","finishButton","allWizardPages","buttons","finish","oldCallback","_result","successSubmitMessage","disableSuccessMessage","processFinishEvents","resetActionsCache","resetNavigationCache","resetEnumCache","resetWidgetCache","resetCacheForWidgets","resetSchemaLocalCache","reloadOnFinish","getPostActionSettings","openFullScreen","finishButtonText","updateFinishButtonTitles","pages","hideFinishButton","__hideDetails","hideDetails","onChangeSkippedPages","pagesToSkip","currentPage","disableNextButton","paType","paAction","actionContext","paActionContext","paEntityType","fullScreen","paFullScreen","finishButtonTitle","skipPagesByManager","MxWizardPageValidateCtrl","__widgetHtmlData","pageKey","sourcePath","wizardPage","allPages","getWizardPageByKey","button","newError","oldError","oldErrorIndexNew","oldErrorIndex","unshift","wizardHeaderText","isLazy","mergeDisabled","_vm$wizard$currentPag","warningMessage","showWarning","nonVisualView","wizardToBeValidated","ContextSelectionService","selectionView","reactOnContextSelection","enableReactionOnContextSelection","showSelection","getSelectionView","isSelectionTabPresent","addView","subscribeGlobal","calculateCommonActions","__actions","resetSelectionAction","resetSelectionActionCtrl","headerTitle","clearSelection","MxViewHelpController","viewHelpService","isWorkspaceManagement","loaded","popup","helpValue","helpData","getHelpData","articleId","hash","cancelViewHelp","calledFromSidePanel","showMore","prepareData","dirtyTree","n","Chidren","findNodeById","tree","highlightNodeInTree","selectedNode","parents","nodesChain","subLevel","li","_highlighted","_expanded","closeAllTree","getParameter","parameter","_getParameter","entityClass","requestFilter","toRequest","WhereExpression","selectedId","selectedNodeId","__treeLevel","prepareTree","loadHierarchy","newN","oldN","expandNode","onSearchReset","loadTreeBySearchText","resTree","closestParentClone","baseListenerDataExtention","__listeners","baseListenerExtention","__notifyListeners","fnName","args","changed","solutionBulderDataObjectExtention","DataModelObject","DataModelMultiFragmentArray","arrayFn","pureArray","toJSON","newArr","ManyToMany","OneToMany","OneZeroToMany","NoRelation","RelationsConfig","cardinality","referenceFrom","ReferenceFrom","attributeFrom","AttributeFrom","referenceTo","attributeTo","AttributeTo","freeze","Relation","relationsConfig","fragmentId","addedRelations","removedRelations","isGuid","AddedRelations","RemovedRelations","createRelation","otherSideIsMany","thisSideIsMany","otherSideIsSingle","previousId","initNewChanges","changedInternal","_itemsToString","mxOriginalIsArray","constants","windowAlias","calcValueSuffix","defaultExpression","valueProperty","oldValueProperty","originalProperty","newValueProperty","hasChangesProperty","targetProperty","triggeredBy","configProperty","forceValueChanged","preventValueChanged","maximumRecalculationsAllowed","currentThemeColors","filterExpressionDefaultDdValue","filterExpressionDefaultDqObjectIdValue","filterExpressionDefaultDqFragmentIdsValue","DataModelSystemProperty","SourceState","First","Return","Item","Inactive","CatchError","Shared","Filter","OrderBy","PageNumber","PageSize","TotalCount","OuterContext","Parameters","FragmentIds","MxDataModelDefaultValues","GuidType","ArrayType","ObjectType","StringType","DataModelCalculatedProperty","isParameter","descriptor","define","param","__type","callBacks","DataModelCalculatedPropertiesInfo","initilizationCode","prepareCode","calcProperty","_formatContext","f","varName","declarations","Localization","localPath","targetObj","initParameter","Path","_format","len","m","sd","$value","root","$calcProperties","additionalData","dataModelHelper","DataModelHelper","ParentPath","pathAfter","arrayPath","curr","parentArray","applyInArray","applyInObject","array","pathInArray","arrayInfo","getParentInfo","parentPath","IsArray","parentObject","parentObjectPath","localParentPath","calcValue","getDefaultValueByType","initValue","pathParts","paramProperty","watchable","recalculate","getCalcValue","firstGet","evaluatePropertyExpression","promiseToWaitBeforeProseed","newResult","initArrayValue","runCallBacks","_getValue","eval","arrayOn","handlers","profiler","arrayChanged","$arrayInitialized","getDefaultItem","initRelations","applyToArrayItems","forOwn","getMilliseconds","__callsResetDebounced","__calls","__callsInc","calculatePropertyValue","notifyListeners","incomeValue","valueBefore","valueChanged","updateMode","safeValueCopy","propertyChanged","propertyReturnPromise","asyncExecutor","forceChanged","resultFromPromise","safeValueCompare","changeForced","changePrevented","isEqual","defValue","callBack","appendCallback","keyCallBacks","triggerChange","paramParentInfo","$$applyTo","calcProperties","toRunCallbacks","$$merge","that","objOldValue","_instance","sysProperties","preparePath","extOptions","useQueryObject","skipEmptyParameters","queryObjectString","queryObject","pathPart","queryString","httpMethod","HttpMethod","Get","charAt","getQueryObject","toUpperCase","getValueSafe","getDefaultValue","applySourceResult","newData","modelSourceData","sourceReturnPath","dataDefinition","Entity","sysPropertiesNames","names","getPropertiesNames","extendData","headers","dataQueryId","applyPath","rewriteResponse","createModelDefaultObject","sourceExecuted","updateDirections","sources","propertyDescriptor","Direction","applyCalculatedProperties","_applyCalculatedProperties","DataModelProfiler","record","sortedProperties","sortByPath","rawData","goDeeper","isMergable","defaultData","INITIAL","_initValue","sourceItem","isMultiFragment","getDefaultArray","isNumber","isDate","getDefaultObjectByType","defaultItem","entityProp","defaultModelProp","entityPropObject","log","header","innerLogs","__mx$dataModelProfilingOn","__mx$dataModelProfilingOn_PROD","groupMethod","groupCollapsed","innerLogItem","groupEnd","meta","logs","headerColors","sourceName","sourceTriggered","inactive","sourceData","headerMsgColor","sourceExecuting","sourceRejected","msg","LocalizableResource","TemplatePropertyValueTypes","local","datatype","resKey","resourceKey","ResourceKey","global","Translations","localized","MxLocalizationPropertyShort","MxLocalizationPropertyTranslation","LocalizationPropertyShort","LocalizationProperty","SearchContext","userEntityName","statusEntityName","statusEntityStateGroup","SearchQueryTypeView","Full","Short","EntityService","_defineProperty","Map","enums","typePermissions","eventObj","_pendingPromise","_defaultKey","Schema","getPickup","getEnumerationValues","mapFragmentRequest","requestOptions","otherOptions","filterRequestParams","getPostFragments","entityServiceUrl","getFragments","getFragmentDescriptors","request","extraResult","EntityClass","Fragments","registerObjectParameterProcessor","processor","_objectParameterProcessors","processObjectContext","_this4","IsArchived","newEntityType","addPendingPromise","entityId","_promiseForKey$find","promiseForKey","foundDefer","DisplayExpression","Promise","newPromise","_this5","_classIds$ids","reqKey","_itemsRequest","requestData","_ref3","pendingPromise","foundItem","dataItem","_dataItem$ObjectId","classIds","attrValue","_this6","_this7","getEnumeration","Values","cache","filterFunction","fnEval","userExpression","ex","g1","g2","evalExpression","entries","_ref4","_this8","updateEntity","EntityName","ExpressionBaseClassName","getObjectTypeName","_this9","MxActionCtrl","newAction","newHtmlClass","_htmlClasses","_useTitle","_isBackground","htmlClass","_count","isBackground","_useIcon","useIcon","useTitle","hideForMobile","MxActionsDropdownCtrl","executeAction","dropdownHtmlClass","isPaletteOpen","isAutocompleteActive","appTitle","actionTitle","navTitle","settingsTitle","throttle","childrenCollection","executeItem","itemType","openSettingHandler","navigate","dialogCtrl","getPaletteItems","currentApp","apps","decorateItems","displayType","altKey","onSearchTextChange","onSelectedItemChange","targetEvent","openFrom","closeTo","onComplete","mainTitle","onRemoving","registerHotkeys","MxCommonActionsCtrl","_routingService$getCu","getCurrent","DisplayModeChanged","newMode","DisplayMode","Normal","ActionsContextChanged","actionTypes","ActionContextType","uiZone","ActionUiZone","SearchPage","getActions","filterActions","filteredActions","LandingPage","MxExtraPanelCtrl","mxExtraPanelManager","MxHorizontalActionListCtrl","_amountToCut","screenDesktop","moreListAriaLink","_majorActions","showMorePanel","keydown","focusedEl","DOWN_ARROW","UP_ARROW","prev","ESCAPE","allButtons","getActionButtons","_debouncedCheckMoreBtnVisibility","__inited","checkButtonsVisibility","getActionsContainer","firstBtnOffset","moreThan1Line","btn","offsetTop","showMoreButton","morePanelTopOffset","handleActionClick","actionListAriaLabel","MxMainContentZoneCtrl","mxDeviceService","sideLayout","MxRelinkEvent","previousContent","triggerRelink","mxRelinkEvent","MxShellAvatarCtrl","colorService","themeService","getCurrentTheme","currentTheme","isDark","getLightness","photo","photoCss","getPhotoUrl","alternativeAbbreviation","surname","MxShellInfoPanelCtrl","infoPanelService","MxShellLeftSidebarCtrl","$mdSidenav","_cssHtmlEl","navbarPlaceholder","mxShellNav","_enableNavResizeMode","navWidth","RAF","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","startNavResize","doc","handleNavResize","stopNavResize","setNavSizes","NavigationManager","showNavigation","onTabClick","collapsedState","__navAnimationInProgress","prevVal","styleValue","_debouncedLayoutChangeDispatcher","useAnimation","cssHtml","navWidthCss","transition","MxShellOperationMonitorController","backgroundProcesses","openBackgroundProcesses","isReloadingRequired","_sidebarCurrentView","_sidebarCurrentButtons","ForegroundProcessCreated","process","getCurrentApplicationSync","showOperationMonitor","longRunning","additionalButtons","backgroundProcessesView","reloadOnAdd","onClose","loadBackgroundProcesses","SearchHotkeysManager","listItemSelected","listItems","elements","getListItems","getSelectedListItem","handle","nextItem","nextAll","prevItem","prevAll","_handleSelection","handleEnter","clearInput","searchPanel","handleInput","performSearch","MxShellSidebarCtrl","additionalButtonClick","SidenavAdditionalButtonClick","hintKey","$at_id","$at_type","isFocused","isChecked","MxShellUserMenuCtrl","ToolbarManager","processItemClick","isMobile","__isOpened","MxSideLayoutCtrl","MxToolbarActionsCtrl","Single","Multiple","setActionsContext","Application","_handleObjectSelectionChanged","objectTypes","objects","actionsContext","ActionsContext","ViewController","$mdCompiler","compileView","compileData","initView","WizardRoadmapController","roadmap","allWizardSteps","isCurrent","WizardController","isWideMode","fullScreenMode","wizardInvalid","pageIsInvalid","validationState","Validating","Ok","__externalValidators","isReady","wizardForm","goToNextPage","back","goToPreviousPage","cancelWizard","wizardCustomHeader","roadmapTitle","contextDescription","toBeValidated","wizardState","wizardInvalidMessage","pageTitleText","currentStep","SideLayoutWideModeSwitched","WizardClose","$validate","showContextDetails","displayContextFn","externalValidatorsPass","validatingFn","attemptUrl","wnd","BigScreen","MxHttpMethod","Post","Put","Delete","routeName","showInGlobalSearch","WizardButton","pageView","sharedData","_that$template","sharedWizardData","loadSource","WizardRoadmapStep","WizardRoadmap","step1","step2","orderNum","Submiting","resultPage","wizardView","canceled","wizardSourceState","setCurrentStep","stepId","newStep","passed","wizardStepId","extraWizards","adjustButtonsTitles","optionsCurrentPage","collectPages","stepFilter","toBeSkipped","collectSteps","wizardContainsPages","isSameWizardPages","page1","page2","_validateWizardPage","processLastCallbackResult","errorData","getLastPage","callCallback","getNextPage","currentIndex","shiftBy","nextPage","nextIndex","extraIndex","getCurrentPageIndex","foundIndex","updateSteps","removeDuplicates","setExtraWizards","extraWizard","newWizards","wizard1","wizard2","wizards","lastBasePage","extraPagesIndex","extraStepsIndex","firstPageButtons","lastPageButtons","isLastWizard","containsPage","containsPageView","pageToBeCurrent","lastPage","lastPromise","nextTitle","currentOrderNum","nextAvailablePage","getNextTitle","backTitle","previousAvailablePages","previousAvailablePage","getBackTitle","wizardManagerController","managers","getManager","getAllPagesToSkip","manager","managerPagesToSkip","changeButtonsTitles","codepoints","translation","optional","d","recursive","A","S","MxMask","mask","invalid","getCaret","cSelStart","selectionStart","setCaret","range","setSelectionRange","createTextRange","collapse","moveEnd","moveStart","behaviour","keyup","selectOnFocus","destroyEvents","r","getMCharsBeforeCount","onCleanVal","maskL","jMask","caretPos","originalCaretPos","oldLength","newLength","maskDif","currValL","getMasked","newValL","changeCaret","callbacks","skipMaskChars","lastMaskChar","check","buf","maskLen","valLen","addMethod","resetPos","maskDigit","valDigit","fallback","lastMaskCharDigit","defaultArgs","criteria","caret","getCleanVal","getMaskedVal","onlyMask","MxBaseMask","locale","localeFormats","NUMBER_FORMATS","createFormatter","createParser","$isEmpty","parseAttributes","$setViewValue","createMask","repeat","times","MxColorMask","super","$render","iniialize","B","X","viewMask","MxIntervalMask","minutesSep","hoursSep","daysSep","actualValue","durationType","isReadonly","$$lastCommittedViewValue","$$updateEvents","applyFormat","availableSep","maxSymbols","clearRegex","formatDuration","duration","moment","seconds","asMinutes","valueForParsing","MxRegExpMask","MxNumericMask","decimalDigit","noFormat","isNegative","availableRegex","clearFloatingPart","DECIMAL_SEP","getNumber","availableSymbols","originalFormat","_repeat","GROUP_SEP","groupRegex","escapeRegex","decimalRegex","editedByUser","disableFormating","dotPosition","decimalIndex","modelCtrl","maskType","mxMaskNoFormat","OperationStatus","ProcessItem","progressUpdated","HandlerCollection","processStatusUpdated","processCanceling","processCanceled","processFailed","Started","operationName","OperationName","startTime","StartTime","initiatedBy","InitiatedBy","statusDetails","StatusDetails","cancelable","Cancelable","cancellationUrl","CancellationUrl","operationStatus","_operationStatus","isExternal","IsExternal","progress","Progress","_progress","finishTime","FinishTime","isCanceled","_canceled","Finished","RangeError","isExpired","expired","_failed","getTime","timeout","fail","onProgressUpdated","onProcessStatusUpdated","onProcessCanceling","onProcessCanceled","onProcessFailed","AttachmentPopupDialogController","AttachmentController","$sceDelegate","attachmentProcessService","i18nCommon","downloadLabel","download","deleteLabel","cancelLabel","commentLabel","comment","mxAttachments","processEventUnsubscribes","disableExternalAttachmentsPreview","_this$file","_this$file2","_this$file3","enableSelection","sizeKb","sizeMb","sizeGb","getForegroundProcessById","bindProcessCallbacks","unsubscribe","onProgressUpdatedUnsubscribe","onUploadingProgress","onProcessStatusUpdatedUnsubscribe","_ref2","onUploadStatusUpdate","onProcessCancelingUnsubscribe","onUploadingCanceling","onProcessFailedUnsubscribe","onUploadingFailed","uploaded","Canceled","cancelUpload","onUploadCanceling","loadFiles","onCancelClick","_this6$process","_this7$file","getUrl","showInDialog","onVideoClick","videoWarning","getFileExtension","_this$file4","_this$file5","at","isMsOfficeFile","onInlineFileClick","canPreviewOfficeFile","getOfficePreviewUrl","downloadFile","getInlineUrl","_this10","inline","fileUrl","_this11","_this11$file","_this11$file2","_this11$file3","isPublic","sendContentThroughServer","_this12","_this12$file","_this12$file2","_this12$file3","isUploaded","_this$file6","isNewBox","isPdf","isImage","isGeneralFileType","isVideo","showDownload","isEditMode","_this13","_this13$file","_this13$file2","_this13$file3","isVirtual","onGetFileUrl","newUrl","formatUrl","trustedUrl","valueOf","deleteFile","onUploadCanceled","editComment","onComment","_this14","_this14$file","_this14$file2","onDownloadFiles","MxAttachmentsCtrl","mxNotificationService","dz","maxCountExceedFiles","wrongTypeFiles","maxSizeExceedFiles","defaultViewMode","isInitMode","lazyMode","multiUpload","PDF","loadTypes","sortFields","sortBy","DropZone","showFailedUploadNotifications","processSelectedFiles","checkSelectionChanges","downloadSelectedLabel","downloadSelected","downloadAllLabel","downloadAll","onDownloadSelected","onDownloadAll","setViewMode","onSortingChanged","_files","setFiles","getAttachmentsSettings","unbindWatcher","settingsInitialized","fileLimitsMessage","recalculateFileLimitsInfoBoxExpandable","fileLimitMessageBox","saveAttachmentsViewMode","saveAttachmentsSorting","$files","enabledDownloadFiles","_onDownloadSelected","selectedFiles","downloadFiles","_onDownloadAll","_downloadFiles","extension","getType","thumbnail","skipInitialLoad","providerId","startsWith","imgHosts","createThumbnail","messages","storageInfo","fileExtensions","upload","expandable","scrollWidth","MxGridHelper","one","clonedStuckedColumn","MxHierarchyPickerCtrl","arrowSymbols","loadItemsDynamically","nodesData","inputDataType","unwrapListFromTree","treeList","__nodeLabel","__title","leaf","doesLabelMatchTheQuery","lastParent","newParents","labelLow","searchTextParts","ignorePrefix","searchTextPosArr","dropdownLabelsDecorator","matchRes","endPos","_prepareSearchText","loadDelay","idsChain","_debouncedOnChange","hierarchyBrowseLookup","onSelectFile","onDrop","makeUploadUrl","uploadFile","disableSort","ignoreFileLimitations","allowedFileTypes","bindToEventHandler","boundParameters","processingQueue","MAX_FILESIZE_BASE64_DATA_URL","addEventHandler","dropEvent","_processFile","_file","_uploadFileDropZone","uploadFileDropZone","isDropEvent","_maxSizeExceedFiles","_maxCountExceedFiles","_wrongTypeFiles","filesAdded","maxFilesPerObject","isFileTypeAllowed","maxFileSize","loadFile","fileList","isNew","URL","webkitURL","reader","FileReader","onloadend","btoa","Uint8Array","fromCharCode","readAsArrayBuffer","createObjectURL","makeAsDataUrl","processQueue","processFile","img","crossOrigin","canvas","ctx","getContext","originalWidth","originalHeight","canvasSize","thumbSize","ratioX","ratioY","ratio","offsetY","drawImage","toDataURL","dropEffect","fileExtension","fileType","MxWorkspaceCommonPagingPanelCtrl","onTotalLoading","pagingLabel","totalLabel","isNotNextPage","isNotPrevPage","isReloaded","_callChanged","unbindInitPreproc","isNoTotal","total","initPagerLabels","initPageLinks","eventName","sender","senderTitle","contextTypeId","contextTypeTitle","_fixPaging","isInteger","_onTotalLoading","getDataCount","to","cnt","totalFloat","startPages","disableNext","countonlymode","navigateItem","ngRequired","notFound","MxItemChooserCtrl","$mdBottomSheet","buttonsSelector","dialogActive","toggleDialog","focusItem","closeItemChooser","arrowsNavigate","_initItemColor","initItemColor","isEnabled","nextTick","_templateUrl","disableParentScroll","topOffset","btns","activeBtn","activeElement","BasePickerController","internalSet","_items","_tempValue","_notFoundClicked","autoCompleteSearchText","availableNotFoundButton","loadedItemsSearchText","loadedItemsCompletely","_valueReset","_loadOnTyping","_isTyping","_isAutoTyping","defaultPickerLabel","itemEl","searchInput","itemTitleField","itemIdField","notFoundMessage","itemsIsPlainArray","_setItemsValue","_setLoadOnTyping","loadOnTyping","_setLabels","_formatTitle","_setAutoCompleteValue","setNotFoundButtonAvailability","autoPlaceholder","onNavigateItem","_setItemsFromBrowseLookup","resetItemsCache","single","replaceOnBrowseLookup","selectedIds","getId","setSelectedItems","setModelInternal","selectedItemsToValue","_setFirstValue","defNotHiddenItem","it","setFirstSelected","modelIsSet","resetModel","isAddedEmpty","allowEmpty","emptyItem","_setSelectedItemsByValue","modelId","_modelToValues","valueArray","_valuesToItems","throwError","separatorChar","convertValueWithSeparatorChar","notFoundClick","buttonClick","loadMoreClick","loadMoreConfig","makeCall","isConfigured","getTitle","isDropdown","itemDropdownLabelField","isWildcardSearch","isAuto","filterItemsByTitle","filterSelectedItems","autoCompleteSearch","filteredItems","autoCompleteSelectedItemChange","itemValue","_onAutoCompleteItemSelected","controlLabel","MultiPickerController","__dropdownIdClass","marginTop","marginLeft","onSelectionChange","useDropdownLabelsDecorator","_defaultDropdownLabelsDecorator","basePickerProperties","hideIcon","commonPickerProperties","itemDetailsField","removable","PickerCtrl","mxClearPickerBtn","mdFloatingLabel","linkFn","searchTextModel","mdSearchText","mxSglclick","clicks","timer","clearTimeout","mxPickerComponent","originalLink","isCtrlPressed","isXPressed","isVPressed","isTabPressed","isDeletePressed","DELETE","isBackspacePressed","BACKSPACE","isMovementKeyPressed","HOME","END","SelectCtrl","_valuesShouldNotBeHiddenOnUI","_optionsValueTitleMatching","getTrackingValue","selectModel","_filterHidden","_isItemHidden","arrItem","queryFilterColors","part","themeColor","QuickFilterController","isStatic","staticMode","red","colorized","yellow","green","lastClick","initState","theme","bgColor","filterColor","getContrastDelta","titles","redTitle","yellowTitle","greenTitle","showPart","isActivated","ngClickAttribute","DefaultClassController","telemetrySource","uiActionGroup","correspondingUrl","hideActions","httpInterceptorsRegistry","restApi","responseError","navigateTo404","ExtraPanelManager","stateChanged","ExtraPanelOpened","ExtraPanelClosed","closedByUser","MxShellBreadcrumbsCtrl","setBreadCrumbs","extraItem","technicalName","routingItem","MxShellLeftSidebarService","allPanelsDisabled","addPanel","panelA","panelB","order","checkVisibility","showPanelByName","panelName","getPanelByName","debouncedShowPanel","getCurrentPanelName","_panels$service$curre","currentPanelIndex","enablePanel","disablePanel","isTabChangedByUserManually","LeftSidebarTabChanged","MxShellSearchCtrl","searchProviderService","searchContexts","searchPanelVisible","_openSearch","inputCloseClick","focusInput","selectTag","tag","selectedTags","unselectTag","RouteActivated","searchTitle","contexts","_context$navigationIt","_context$navigationIt2","onOpen","getCurrentGlobalSearchParameters","hotKeys","MxBackgroundProcessesController","cancelProcess","_cancelProcess","addWidget","removeWidget","feedbackProviderService","cfg","isAppsVisible","AppsEnabled","operationMonitorEnabled","isOperationMonitorVisible","setSearchEnabled","showSearch","unifiedSearchEnabled","setOperationMonitorVisibility","avatarEnabled","showAvatar","profile","setUserInfo","ProfileChanged","isPushNotificationsWanted","isPushNotificationsEnabled","isPushNotificationsVisible","isAvatarVisible","avatarDropdownItems","setFeedbackVisibility","isFeedbackVisible","FeedbackEnabled","setAppsVisibility","setAvatarVisibility","setSearchVisibility","isSearchWanted","isSearchVisible","isSearchEnabled","setShowMenuButtonVisibility","isShowMenuBtnVisible","setBreadcrumbsVisibility","isBreadcrumbsVisible","setNavigationVisibility","isNavigationVisible","setPushNotificationsVisibility","setPushNotificationsEnabled","avatar","lastName","firstName","addAvatarDropdownItem","itemObject","AvatarMenuItemAdded","MxShellToolbarCtrl","mxAuthService","toolbarManager","dataStorage","_addAvatarMenuItems","languages","getLanguages","profileDialogId","accountName","openEditDialog","helpUri","isEnhancedColorContrastMode","toggleContrastMode","lang1","lang2","lang","languageId","isDefaultUiLanguage","iconStyle","_getLangIconStyle","changeLanguage","forceReload","avatarMenuActions","AvatarMenu","flagsHost","flags","flagUrl","searchContext","FeedbackProviderService","applicationName","productID","twoLetterCode","handleAppSwitchingMessage","setAppInitialFocus","showFeedback","ajax","matrix42","nps","showModal","addAvatarMenuItems","newModeIsNormal","toolbar","propertyValue","goToDefaultRoot","goToDefault","handleBurgerBtn","toggleNav","NavToggled","MxSearchGroupedContextListComponentController","_changes$searchContex","_changes$searchContex2","searchContextGroups","groupContextsByTopLevelNavParents","groupsObj","groupName","baseGroup","_group$searchContexts","hasSelectedContexts","onSelect","MxShellUnifiedSearchComponentController","searchBtn","dropdownEl","cleanBtn","inputArea","defaultBackgroundTemplate","initSearchOptions","initFoldingEvents","GlobalSearchConfigChanged","background","backgroundImage","globalSearchParameters","showContextWhenNotFocused","isGlobal","selectedContexts","cleanSearch","subTitle","transparent","expandedMode","titleColor","GlobalSearchManagerController","getNavigationItems","navigationItemIds","showUnifiedSearch","hideUnifiedSearch","mxGlobalSearchManagerComponent","shellComponent","ShellComponentController","deepLinkingService","configureUnifiedSearch","currentRoute","currentRouteName","openedViaDirectLink","parseViewOptionsFromUrl","unifiedSearchHiddenByScroll","mainZoneEl","collapseUnifiedSearchByScroll","_isManualWindowResizeTriggering","_initApp","SidePanelVisible","initApp","getCurrentColors","currentThemeColorsObj","themeObj","getEnhancedColorContrastMode","_debouncedLayoutChangeDispatcherResize","debouncedLayoutChangeDispatcherExtraPanel","MxTryNewLookActionCtrl","ignoreConfirmationForServiceOperation","getTryNewLookActionData","alreadyTried","withAnimation","setTryNewLookActionData","MxObjectPropertyType","ActionExecutorService","helpService","downloadHelpService","dialogOpenerService","injectorService","actionProviderService","actionCoRuService","executeEditAction","getEditActions","editActions","editAction","executeCreateAction","getCreateActions","createActions","createAction","filterObjects","isTypeAvailable","typesFilter","ActionFilterType","Specified","ExceptSpecified","_execute","actionAvailabilityInfo","checkAvailability","isAvailable","typesInfo","contextId","contextTitle","typeInfo","trackTelemetry","serviceOperation","confirmed","dialogConfig","ServiceOperation","ConfirmationMessage","notForSave","isConfirmButton","buttonsInActionZone","showConfirmationDialog","ActionConfirmDialogConfirmed","operationResult","operationInfo","RelativePath","operationObjects","RequestContract","UsedTypes","newObject","addedObject","ObjectIds","getOperationObjects","refresh","objectIds","getObjectIds","getActionContextHeader","eventHandlers","loadstart","readyState","getAllResponseHeaders","responseType","Objects","executeOperation","contentDisposition","downloadContent","ObjectDataDeleted","affectedObjectIds","OpenDialogOnSuccess","ObjectDataChanged","processResponse","ActionExecuted","finishPromise","reloadPageOnSuccess","viewFn","_x7","_x8","_x9","_controllerExecute","controllerExecute","commit","cacheId","viewPromise","getView","useSameView","getCurrentView","headerIcon","isWizard","o","startedFromAction","openInFullScreen","ObjectProperty","ObjectPropertyEnumValue","getWizard","DefaultActionProvider","MxActionManagerService","applicationService","application","actionProvider","setActionProvider","filterExecutionContext","_selectedObjects$","scriptFilter","actionsFilterScript","viewForService","scriptPredicate","uiZones","aTitle","bTitle","purposes","requestActions","_filterActions","_sortActions","getActionById","getActionsByIds","resActions","extraActions","_filterActionsByUiZone","_isUiZoneExists","_getTypesAndStates","objectStates","_state","action1","action2","pos1","pos2","deviceVisibility","ActionDeviceVisibility","contextType","purpose","_filterActionsByObjectType","actionsArray","_isDuplicate","statesFilter","states","ActionPurpose","isExportAllAvailable","classInfo","getClassInfo","ClassType","UsedInTypes","filterContext","utils","ActionProviderService","dialogFactory","entityService","getActionsPromise","forceLoad","getActionsFromService","getAllViews","Types","States","TypeFilter","Any","IsService","StatesFilter","ScriptFilter","ObjectContextType","Position","Controller","ControllerParams","UIZones","Purpose","DeviceVisibility","DesktopOnly","MobileOnly","All","ReloadPageOnSuccess","ImplementationType","Url","executeOpenUrlAction","Widget","Wizard","wizardOptions","actionId","actionName","finishTitle","checkActionAvailability","isAdminMode","isAdmin","setViewUrl","Dialog","setEditDialog","getSortedEditViews","groupedViewsByType","createLandingPageAction","addViews","NotUseInCreateEditPurposes","view1","view2","EntityDisplayName","genericAddAction","IconAdd","AddActionPosition","Create","isPrimary","getExtraActions","typesAllowedForDelete","servicesForDelete","viewsForType","canDelete","CanDelete","arrayForAdd","intersection","configureDeleteActions","_checkAvailability","ConfigurationItemTypeName","IsAvailable","CacheId","serverActionsKey","actionView","_getActionViewForEditDialog","getActionViewForEditDialog","ShowAsWizard","alwaysFullScreen","suitableViews","personalizedViewId","getDefaultEditDialogId","presets","itemWizard","Edit","MergeDisabled","EntityIcon","headerColor","EntityColor","createEditDialog","isDialog","isCreateOnlyDialog","typeMatches","ApplicationProviderService","loadApplicationPromise","loadApplication","mapAppItem","_item$UnifiedSearchTi","NavigationItem","showFavourites","ShowFavorites","showRecent","ShowRecent","simpleNavigation","SimpleNavigation","ShowNotificationMonitor","HelpValue","HelpSourceType","UnifiedSearchEnabled","unifiedSearchTitle1","UnifiedSearchTitle1","unifiedSearchTitle2","UnifiedSearchTitle2","unifiedSearchBackground","UnifiedSearchBackground","unifiedSearchTitleColorOverride","UnifiedSearchTitleColorOverride","MxBackgroundProcessProvider","isJSON","MxTrackedProcessProvider","_storage","getStorage","SystemStorageType","_trackedProcessIds","getAsObject","trackedProcessId","toLocaleLowerCase","setAsObject","sync","trackedProcessIds","ProcessType","MxBackgroundProcessesService","backgroundProcessProvider","trackedProcessProvider","Background","Foreground","trackedProcessesCount","processStorage","foregroundProcesses","allProcesses","_isLoading","_reloadOnAdd","runningProcesses","addTrackedProcess","_obj$AsyncOperationCo","Completed","AsyncOperationContract","OperationId","addForegroundProcess","backgroundProcess","_this2$processStorage","MxContextService","MxContext","injector","_getData","_setData","cleanOnRouteChange","_reset","publish","read","MxSelectedObjectsContext","MxContextOptions","MxActionsContextContext","newContext","globalVal","registerContext","valAsync","verifyContext","formatValName","_val","MxContextTypes","SelectedObjects","extendActionsContext","DownloadHelpService","forceFileName","Blob","fileName","tempFileName","decodeURI","tryGetFileName","isChrome","chrome","navigator","vendor","webstore","isFf","userAgent","isEdge","StyleMedia","urlLocal","urlObj","appendChild","removeChild","revokeObjectURL","msSaveOrOpenBlob","fileUri","send","feedback","MxInjectorService","definition","exception","controllerUrl","__non_webpack_require__","invoke","MxKeyboardNavigationService","hotkeys","applyKey","registeredKeys","bindTo","combo","allowIn","option","validateOption","validateOptions","applyKeys","unregisterKey","del","listKeys","getKeyOptions","MxObjectMapper","mapItem","notAvailable","SearchProviderService","maxRecentSearches","builderView","customDataSetContext","globalSearchParametersPromise","_currentSearch","searchForm","searchExecuting","unifiedSearchExtraConfigFromComponent","globalSearchContext","currentStateParameters","initGlobalSearchContext","RouteLoading","_onNavigationItemChanged","onNavigationItemChanged","NavigationChildrenLoaded","setContextsFromNavigationItems","NavigationLoaded","_performSearch","getGlobalSearchContext","isGlobalSearchRoute","isUnifiedSearchVisible","_showUnifiedSearch","runSearch","getContexts","getCurrentSearchPageSearchOptions","filters","openAdvancedSearch","openSearchQueryBuilder","showInNavigation","closePanel","getQueryOperatorText","getBaseQueryId","targetParams","currentRouteParameters","getFilterId","currentRouteFilterId","resetSearch","resetSearchParameters","resetAdvancedSearch","setGroup","GroupType","resetKeywordSearch","resetGridSearch","resetCustomFormSearch","customFormConditions","setCustomDataSetContext","getContextsFromStateParams","_getContextsFromStateParams","allContexts","stateParams","checkSelection","stateContextString","navigationIdString","stateNavigationIds","stateNavigationId","stateContexts","stateContext","rootStructureContext","childrenDynamicLoader","contextLoader","getStateParamFromContexts","filterString","_getCurrentGlobalSearchParameters2","ignoreManager","_getCurrentGlobalSearchParameters3","_getCurrentGlobalSearchParameters","filteredContexts","extraContexts","getContextTitle","navItemIsDynamic","searchParameters","extraFilter","newSearchText","newSelectedContexts","curContext","globalSearch","_params$dataQueryList","_params$dataQueryList2","_params$dataQueryList3","_params$dataQueryList4","searchView","baseFilter","newOptions","filtersOperator","currentState","addSearchContext","_ref5","name1","name2","_navigationItem$param","_navigationItem$param2","_navigationItem$param3","availableInSearch","createSearchContext","contextExist","_ref6","childItem","__fromFilter","SideLayout","keepClosed","SidePanelActionsService","addUIAction","SidePanel","viewContext","_selectedObjects","EditDialog","ActionsReady","getUIActions","uiActions","uiAction","actionObj","pathname","printUrl","openConfigurePreview","customizeViewInDesigner","langs","localizationSwitchAction","_setLocalizationActionLabelForCurrentView","__localizationModeEnabled","SwitchLocalizationMode","SidePanelService","WizardView","openedViews","inProgressViews","storage","isViewUnsafeForClosing","New","refreshView","RefreshCurrentView","isViewOpened","showCloseTabConfirmationDialog","DialogActionExecuted","closeCurrentView","switchToView","setCurrentView","showView","hideView","isViewInProgress","getCurrentMainView","mainCurrentView","related","getOpenedViews","showPopupInTab","hidePopupInTab","handleItemSelectionOnMobile","getObjectDetailsFromView","_view$context","_view$context2","_view$context3","objectDetails","isSingleView","getSidePanelView","ObjectTypeChanged","removeFromHistory","ViewDirtyStatusChanged","keepAsOpened","updateInProgressViewList","moveViewToInProgress","oView","removeFromParents","parentParent","relatedView","previousView","branchChanged","stepForward","stepBack","closeRelatedViews","closeBranch","getInProgressViews","openedView","sameView","getWidgetIdFromView","openedViewHasMorePriority","openedViewIsRelated","opened","_handleWizardClosed","soft","SidePanelViewClosed","replaceElements","SidePanelInProgressViewsChanged","rView","tabView","userProfile","savedAnswer","dialogTemplate","viewConfig","needSave","popupView","customDialog","__showPopup","__popup","SidebarService","isPinnedOpen","buttonList","togglePinnedOpen","ShellAppInitializerService","workspaceLoaderService","initShellApp","applicationProvider","navigationProvider","setApplicationProvider","setNavigationProvider","loadWorkspaces","routingConfiguration","addItems","createRoutingItem","viewUrl","componentsModule","SignalRHub","m42Dashboards","toCamelCase","MxEnumLiteralCtrl","_filter","processEmptyData","EnumNames","EnumTypes","Enums","itemColor","isMultipleValue","setProperty","enhanceColorContrast","isContrast","isContrastTheme","FilterExpression","props","propertyNameCamelCase","idValue","initComponentFormat","initLayoutTransformationFormat","getServiceContext","mxServiceContextController","getPath","controlMxAtId","serviceContext","onChanged","filterDefinition","IsStrict","StrictExpression","Params","paramsAttr","initScopeValue","_this$filterDefinitio","_this$filterDefinitio2","newFormat","LegacyExpression","initDeprecatedFilterFormat","_this$filterDefinitio3","_this$filterDefinitio4","_this$filterDefinitio5","_this$filterDefinitio6","pathValue","isPathCorrect","rawAttrValue","initialAttrValue","isInterpolation","initInterpolatedValue","attrName","scopeValue","transformedScopeValue","endsWith","handleBooleanParams","_this$filterDefinitio7","_this$filterDefinitio8","hasFilter","_this$filterDefinitio9","initFilterExpression","filterDefinitionAttrName","EntityClassRequest","relationName","exclude","MxRelatedObjectsLinkCtrl","_getFragments","relation","allowedTypes","fragments","objectCount","fragment","openObjectsListPreview","setShowAllValue","mxAtId","_vm$parentViewControl2","_vm$parentViewControl3","MxObjectsLinkCtrl","updateTooltip","showingItemsCount","moreItemsTooltip","objectsAllCount","selectedItemIds","isDesignerMode","getLiteralTemplate","literalClasses","valueFlexOrderClass","literalsTemplate","MxAdvancedSearchQueryController","openFilterDialog","editText","canEdit","editIcon","queryId","_this$context","currentBaseFilter","RunSearchQuery","attach","__attached","MxAdvancedSearchQueryCustomCtrl","SearchQuery","MxAdvancedSearchController","advancedSearchGroup","SearchQueryAdded","resetForm","queries","getQueries","isAdvancedSearchGroupValid","validateGroup","searchClick","getFlatGroupConditions","_group$groups","childrenConditions","flatMap","_this$queryList","_this$queryList2","_this$queryList3","_this$queryList4","queryList","operatorTechnicalName","CalendarResourceCtrl","resource","calendar","resources","resourceId","hasEntity","hintContainer","eventsOfDay","dayNumber","numOfEvents","newHint","zeroHint","oneHint","getHint","viewNames","timeline","day","week","month","agenda","defaultCalendarView","unassignedId","CalendarController","holidaysService","isAbstractMode","isShowHolidays","isGroupingMode","resourcesRendered","unassignedTitle","_resourcePromise","firstLoad","calendarView","calendarWidth","schedulerLicenseKey","center","columnHeaderHtml","mom","eventSources","loadEvents","timezone","loadHolidays","resourceLabelText","handleWindowResize","eventLimit","eventRender","viewRender","eventDestroy","onEventDestroy","eventClick","onEventClick","unselectAuto","windowResize","reset","autoWidth","calendarContainerEl","snapDuration","eventAfterAllRender","onAfterAllRendered","eventTimeFormat","longDateFormat","initEventColor","inject","lazyLoaded","newLang","businessHours","allowEventsOverlapping","openedCalendars","htmlPrefilter","hackedPrefilter","abstractMode","showHolidays","eventOverlap","itemExtraDimensionKey","itemTitleKey","itemDescriptionKey","itemStartKey","itemEndKey","defaultView","getDefaultView","buttonText","today","getTodayButtonTitle","updateRangeButtons","enableAbstractMode","enableGroupingMode","isTimeline","enableTimeline","enableAdding","selectable","getLocalTimeISOString","itemWholeDayKey","hasTime","dimensionId","_doesEventOverlapAnyEvents","createEvent","enableChanging","editable","eventDrop","_handleItemPositionChange","eventResize","extraDimensions","showUnassigned","waitingDimensions","reloadResources","disableTimeline","setCalendarView","originalHtmlPrefilter","mapEvents","previousRangeStart","previousRangeEnd","getResources","isResourcesChanged","itemsWatcher","watcherDefer","internalRequestInProgress","itemsWatcherInProgress","refetchEvents","itemsLoader","addBufferTime","currentDate","getWholeDayTimezoneCorrection","_date","date","hour","stripTime","mapEvent","itemColorKey","allDay","endOfOneDayAllDay","isSameOrBefore","backgroundColor","borderColor","textColor","getBrightness","getResourceIdFromItem","getExtraDimensionIdFromItem","__originalItem","itemBackgroundKey","isBackgroundItem","rendering","itemReadonlyKey","comparer","rangeComparer","mapComplexEvents","_periodStart","_periodEnd","allDayPeriodStart","allDayPeriodEnd","periodStart","periodEnd","eventStart","eventEnd","diff","eventsGroupedById","eventA","eventB","groupedEvents","complexEventConfig","numOfParts","complexEvent","complexEventPart","startEditable","durationEditable","mapHolidays","holiday","resourceIds","dateFrom","holidayEvent","getUserHolidays","refetchResources","dimension","dimensionTitle","emptyLine","childrenResources","accum","isOdd","oldResources","newResources","bufferSize","enableRemoving","onItemRemoved","dropdownMenuOptions","rerenderCalendarHeader","renderHeader","setToolbarsTitle","updateToolbarButtons","dateProfile","toolbarsManager","proxyCall","updateTodayButtonTitle","optionsManager","overrides","viewSpec","singleUnit","saveCalendarView","columnMinWidth","numOfColumns","getMomentJsSupportedLocale","innerText","resourceRender","labelTds","bodyTds","buildClassName","innerHTML","setNumberOfEventsPerDay","timeGrid","dayIndices","getNumEventsOfDay","updateNumberOfEventsPerDay","newEvent","oldEvent","newDayNumber","getDayNumberByTime","oldDayNumber","newResource","oldResource","axisWidth","scrollToCurrentDay","inputView","supportedViews","getSupportedViews","getCurrentViewType","right","columnFormat","defaultDate","slotLabelFormat","selectAllow","selectInfo","groupByDateAndResource","nowIndicator","resourceGroupField","refetchResourcesOnNavigate","lazyFetching","dayRange","dayRanges","startMs","utcOffset","endMs","toDate","getResourceEvents","itemStart","itemEnd","onRangeSelect","wholeDay","dayStart","dayEnd","delta","revertFunc","onItemMove","updateChangedEvent","scrollIntoView","block","warningColor","contentBgColor","contentTextColor","colorContrastDelta","newContrastDelta","mixColors","eventColor","lighten","getAverageLightness","eventTextColor","getProperContrastTextColor","eventColorContrast","showDayView","showWeekView","showMonthView","m42DashboardWidgetCustom","mxCommonLandingPageContent","legendFieldName","valueFieldName","itemColorFieldName","seriesColorFieldName","stackFieldName","detailsEntityClassName","detailsColumnDefinition","detailsEntityType","detailsObjectId","titleXAxis","titleYAxis","legendLayout","legendAlign","legendVerticalAlign","noDataMessage","detailsType","detailsTitle","chartTitle","titleAlign","landingPage","chartContainer","locatedInLPWidget","widgetTitle","noChartImage","dashboardPublicFunctions","deleteWidgetById","requestChartRerender","highchartsLoaded","hasData","hasChartSize","dataChanged","findEl","Highcharts","renderChart","sizeChanged","setSize","_setSizes","smallHeight","ThemeChanged","_scope$vm$chart","MxBaseChartCtrl","chartsI18n","getColorSet","noRequiredData","detailsFilterExpression","multiSelection","showActionsPanel","showSelectAll","_series$","_series$$data","_series$i$data","aIndex","MAX_SAFE_INTEGER","bIndex","normalizeColor","colors","isDarkTheme","getBorderColor","getBorderWidth","_getBaseChartConfig","_vm$chartsI18n$a11y","_vm$m42DashboardWidge","_vm$chartsI18n$a11y2","_vm$chartsI18n$a11y3","_vm$chartsI18n$a11y4","_vm$chartsI18n$a11y5","_vm$chartsI18n$a11y5$","_vm$chartsI18n$a11y6","_vm$chartsI18n$a11y6$","_vm$chartsI18n$a11y7","_vm$chartsI18n$a11y7$","_vm$chartsI18n$a11y8","_vm$chartsI18n$a11y8$","_vm$chartsI18n$a11y9","_vm$chartsI18n$a11y9$","_vm$chartsI18n$a11y10","_vm$chartsI18n$a11y11","_vm$chartsI18n$a11y12","_vm$chartsI18n$a11y13","_vm$chartsI18n$a11y14","_vm$chartsI18n$a11y15","_vm$chartsI18n$a11y16","_vm$chartsI18n$a11y17","_vm$chartsI18n$a11y18","_vm$chartsI18n$a11y19","_vm$chartsI18n$a11y20","_vm$chartsI18n$a11y21","_vm$chartsI18n$a11y22","_vm$chartsI18n$a11y23","_vm$chartsI18n$a11y24","_vm$chartsI18n$a11y25","_vm$chartsI18n$a11y26","_vm$chartsI18n$a11y27","_vm$chartsI18n$a11y28","_vm$chartsI18n$a11y29","_vm$chartsI18n$a11y30","_vm$chartsI18n$a11y31","_vm$chartsI18n$a11y32","_vm$chartsI18n$a11y33","_vm$chartsI18n$a11y34","_vm$chartsI18n$a11y35","_vm$chartsI18n$a11y36","_vm$chartsI18n$a11y37","_vm$chartsI18n$a11y38","_vm$chartsI18n$a11y39","_vm$chartsI18n$a11y40","_vm$chartsI18n$a11y41","_vm$chartsI18n$a11y42","_vm$chartsI18n$a11y43","_vm$chartsI18n$a11y44","_vm$chartsI18n$a11y45","_vm$chartsI18n$a11y46","_vm$chartsI18n$a11y47","_vm$chartsI18n$a11y48","_vm$chartsI18n$a11y49","_vm$chartsI18n$a11y50","_vm$chartsI18n$a11y51","_vm$chartsI18n$a11y52","_vm$chartsI18n$a11y53","_vm$chartsI18n$a11y54","_vm$chartsI18n$a11y55","_vm$chartsI18n$a11y56","_vm$chartsI18n$a11y57","_vm$chartsI18n$a11y58","_vm$chartsI18n$a11y59","_vm$chartsI18n$a11y60","_vm$chartsI18n$a11y61","_vm$chartsI18n$a11y62","_vm$chartsI18n$a11y63","_vm$chartsI18n$a11y64","_vm$chartsI18n$a11y65","_vm$chartsI18n$a11y66","_vm$chartsI18n$a11y67","_vm$chartsI18n$a11y68","_vm$chartsI18n$a11y69","_vm$chartsI18n$a11y70","_vm$chartsI18n$a11y71","_vm$chartsI18n$a11y72","_vm$chartsI18n$a11y73","_vm$chartsI18n$a11y74","_vm$chartsI18n$a11y75","_vm$chartsI18n$a11y76","_vm$chartsI18n$a11y77","_vm$chartsI18n$a11y78","_vm$chartsI18n$a11y79","_vm$chartsI18n$a11y80","_vm$chartsI18n$a11y81","_vm$chartsI18n$a11y82","_vm$chartsI18n$a11y83","_vm$chartsI18n$a11y84","_vm$chartsI18n$a11y85","_vm$chartsI18n$a11y86","_vm$chartsI18n$a11y87","defaultLegendConfig","align","verticalAlign","itemWidth","itemStyle","textOverflow","fontWeight","fill","itemHoverStyle","itemHiddenStyle","navigation","activeColor","inactiveColor","seriesConfig","usedSeries","_vm$chartsI18n$defaul","borderWidth","defaultSeries","j","item2","responsiveLegend","legendItemWidth","sizeOfGridCell","legend","legendWidth","maxLegendWidth","legendConfig","whiteSpace","lastLegendConfig","getAllItems","_item$legendItem","_item$legendItem$css","legendItem","linesColor","getContentColorShade","yAxis","accessibility","defaultValues","lineColor","gridLineColor","minorGridLineColor","minorTickColor","tickColor","xAxis","defaultCategories","uniq","colorCount","subtitle","exporting","contextButton","credits","percentage","point","defaultChartTitle","a11y","chartContainerLabel","svgContainerLabel","screenReaderSection","endOfChartMarker","legendLabelNoTitle","legendLabel","chartTypes","emptyChart","combinationChart","defaultSingle","defaultMultiple","splineSingle","lineSingle","splineMultiple","lineMultiple","columnSingle","columnMultiple","barSingle","barMultiple","pieSingle","pieMultiple","axis","xAxisDescriptionSingular","xAxisDescriptionPlural","yAxisDescriptionSingular","yAxisDescriptionPlural","rangeFromTo","rangeCategories","defaultCombination","line","lineCombination","spline","splineCombination","columnCombination","bar","barCombination","pieCombination","xAxisDescription","yAxisDescription","nullPointValue","noData","MxConditionDateCtrl","conditionsBuilderEnums","modes","exactDate","dateExpression","_vm$condition","_vm$condition$_builde","availableDateMods","_vm$condition2","_vm$condition2$_build","modeIds","inputDate","MxComplianceRuleConditionsService","pickerPromise","operatorsPromise","RelatedClassCardinality","pickers","promises","enumClassName","pickersConfig","MxComplianceRuleEnumerationMap","maxLevel","operatorsByType","conditionTypeIds","itemA","itemB","supportedTriggers","SupportedTriggers","SupportedTypes","operatorsByTrigger","triggerId","conditionId","conditionA","conditionB","Order","classId","AttributePath","classObj","attributeId","getClassConditionInfo","classConditionInfo","getClassProperties","classObject","getClassPropertyById","ClauseCondition","ValueExpression","attributeClassPath","AttributeClassPath","getClassPropertyByName","getValueOfInputCondition","TypeId","isDateMode","conditionInputMapping","mappedConditions","mappedCondition","Group","keyA","keyB","hasDifferentLogicOperators","childA","childB","_ref8","relatedClass","classesProperties","startCondition","startConditionMap","sourceKey","sourceMap","enumValue","sourceMapValue","groupsConditions","selectedAttributeId","valueExpression","attributePath","lastIndexOf","EntityClassName","_options","ReferenceFilter","SelectedAttributeId","usedTypeCardinalities","Cardinalities","typeCardinality","typeId","Cardinality","_ref7","classEntity","Attributes","relations","Relations","mappedAttributes","IsPickup","Datatype","getConditionType","attrTitle","PickupClass","getDataTypeName","RelationType","mappedRelations","relationTitle","AttributeLeft","ClassRight","localEnumLoader","entityTypes","allStateGroups","mapper","enum","stateGroup","stateGroups","StateGroup","getStateGroups","enumItem","loadStatusPickup","oneOrMany","zeroOrMany","NUMOFCHARTS","MxComboChartDirective","MxComboChartCtrl","newDefinitions","baseLink","addChartDataWatcher","hasDataChart","debouncedAllDataWatcher","adjustContrast","createSerie","fields","base","fieldGetter","currentSelectedChart","fieldSetter","initFields","_vm$chartsI18n$a11y$a","gridLineWidth","opposite","getOptions","yAxisDescriptionPluralSimple","_$scope$vm$chart","_$scope$vm$chart2","_$scope$vm$chart2$yAx","_$scope$vm$chart3","_$scope$vm$chart3$ser","_vm$chart","userOptions","_vm$chart2","_vm$chart2$series$i","AzureAdConditionsBuilderCtrl","azureAdConditionsService","newQuery","currentProperties","validateConditions","handleWarningMessage","handleErrorMessage","currentQuery","isEqualQueries","isEqualProperties","conditionsAmount","aadConditionsLimit","checkConditionsState","hasOr","condState","AzureAdConditionsService","inputProperties","ConditionOperators","operatorIDs","operatorString","IsNullable","filterOperator","withoutParams","rootGroup","createInputMapper","groupInput","inputGroup","conditionInput","LogicalOperator","_types$condition$Name","_types$condition$Name2","rowIdentifierProperty","rowA","rowB","idProperty","uniqBy","MxDataQueryList","_allSelectedState","MxContentWidgetViewBoardCtrl","PagingPreprocessor","SearchPreprocessor","SortingPreprocessor","QuickFilterPreprocessor","ColumnDefinitionPreprocessor","GroupingPreprocessor","horizontalGroupingField","horizontalGroupingFieldExpression","horizontalGroupingValues","useCustomTile","initBoard","availableFields","columnDefinitionPreprocessor","allColumns","saveBoardHorizontalGroupingField","getAllColumnValues","columnValues","setHorizontalGroupingField","currentHorizontalGroupingField","getBoardVisibleColumns","personalizedColumns","_visible","updateVisibleColumns","saveBoardUseCustomTile","tileTemplate","createTemplate","visibleFields","visibleFieldsInTile","saveBoardVisibleFields","initCustomTileAndVisibleFieldsInTile","getBoardHorizontalGroupingField","getBoardVisibleFields","getBoardUseCustomTile","defaultHorizontalGroupingField","ListingType","preInitialize","initPreprocessors","outputPreprocessors","preprocessorsByName","itemTitlePropertyName","dataQueryExecutor","supportsGrouping","DataQueryList","fieldTemplate","visibleColumns","saveBoardVisibleColumns","MxContentWidgetViewCalendarCtrl","DateRangePreprocessor","StructurePreprocessor","personalizedParams","calendarReinit","langCode","startDate","endDate","_inited","readonlyKey","editMovedItem","rangeSelectionHandler","getCalendarSettings","isCreateEnabled","extraDimensionValuesVisibility","_showUnassigned","storedIfGroupByExtra","groupByExtraDimension","_doGrouping","calendarExtraDimensionRelation","saveCalendarSettings","groupByDimensionValue","extraDimensionKey","_groupByDimensionValue","_prepareExtraDimension","getVisibleExtraDimensions","getRecordTypeDisplayString","recordDisplayName","_groupByDimensionArr","Columns","tryInitGroupingSettings","newExtraDimensions","arraysEqual","dimensionEqualityFunction","allExtraDimensions","markItemsWithoutEditAction","dimension1","dimension2","lastLoadedStartDate","lastLoadedEndDate","dateRangePreprocessor","year","previousBussinessYear","previousBussinessWeek","resBusinessHours","dow","WorkingTimeStart","WorkingTimeEnd","isWorkingDay","IsWorkingDay","updateBusinessHours","calendarDisabled","_formPresetFields","actionExecutedPromise","extraDimensionArr","relationKey","relationValueKey","relationColumn","newExtraDimensionValue","calendarExtraDimensionImageColumn","second","firstTitle","secondTitle","sensitivity","_applyPresetFieldByColumn","columnName","getPropertyPath","presetStep","pathStep","_applyPresetFieldByPath","startDateKey","endDateKey","wholeDayKey","MxContentWidgetViewGridCtrl","dataQueryEnums","SortingGridPreprocessor","groupingPanelService","columnFiltersIsActive","ColumnSortingEnum","searchPageGridSelector","groupingClickHandler","addFilterChangeHandler","_searchInColumns","searchInColumns","columnDefinitionDescriptor","enableGridMenu","rowColoringEnabled","usePostBack","DataSetRowIdentity","itemRightClickHandler","itemDblClickHandler","quickFilters","quickFilterPreprocessor","NavigationItemClicked","gridMenu","_searchOptions$search","getGroup","_previousFilter","clearAllFilters","SearchPageReloaded","i18nPrefix","i18nMany","totalCount","currentPageNumber","pageAmount","gridInfo","paginationInfo","switchPagesInfo","getSortedColumns","sorting","Ascending","Descending","columnA","columnB","gridSearchGroup","createConditionByColumn","_groupingClickHandler","groupingPreprocessor","toggleColumnGrouping","groupedColumns","sortingPreprocessor","setSort","savePersonalizedSorting","MxContentWidgetViewListCtrl","sortingPanel","MxContentWidgetViewTilesCtrl","scrollZone","contentWidgetView","tileWrapper","_cachedContainerWidth","DEFAULT_TILE_SIZE","tiles","clickedItem","behavior","animate","scrollToItem","updateTilesSizes","newContainerWidth","minTileWidth","tilesZoneWidth","availSpace","isHalfSpace","cols","getPixelWidthByUnit","tilesConfig","getColumnsNumber","offsetHeight","offsetValue","containerElem","getElementsByClassName","fontSizePoints","getComputedStyle","fontSize","MxControlPropertyEditorCtrl","stylesService","tags","stFromArray","strEnumerationFromJson","strEnumerationToJson","reg","supportedKeys","editors","getByValue","supportedKey","_loadStyles","loadClasses","getNameByValue","getValueByName","loadStyles","useMultiSelect","editorTypes","enumerationUpdate","PropertyEditorType","schemaEditorMode","bindingTypeItems","EditorBindingType","Mode","bindable","Bindable","isMultiPicker","IsMultiPicker","RelatedTag","relatedTag","AllowedTypes","UseObjectId","UseMultiSelect","processEditor","dataDefinitionPropertyName","DataDefinitionPropertyName","processValue","sk","DataQueryExecutor","ODataQueryExecutor","ClientQueryExecutor","serviceInfo","ServiceInfo","SupportedOperationTypes","executorPreprocessors","Preprocessor","PreprocessorType","sortingGridPreprocessor","QuickFilter","Paging","searchPreprocessor","Structure","structurePreprocessor","ColumnDefinition","Grouping","DateRange","addChangedHandlers","lastDebouncedReloadTime","dataModelOptions","searchPageUiToken","eventParams","affectedEntity","highlightItem","_debouncedReload","lastReloadTime","debouncedReload","customPreprocessors","addChangedHandler","extendSourceResult","DataQuery","return","dontClearSelection","_destroyed","currentReloadTime","noFilteredData","_hasSearchFilters","_getParts","oldItem","_this$quickFilterPrep","hasBaseFilter","hasAdditionalFilters","preprocessorFilterFunc","filteredPreprocessors","build","currentPageSelectedItems","newSelectedItems","sItem","actionToRun","NavigationId","searchPageWidgetId","DataQueryListItemClicked","TrackViewTelemetry","_selectEntireDatasetProgressHandler","lengthComputable","selectedObjectsLoadingProgress","selectedObjectsLoading","newObjects","objectsFromParams","paramObject","selObject","MxDatasetViewManagerController","handlerName","triggerDataReloadChangeHandler","mxSearchPageContentCtrl","formConditions","cond","_enum","MxEnumPickerCtrl","_entityClassName","reloadItems","_reloadItems","loadPromise","lastLoadPromise","showValue","triggerDataReload","MxWorkspaceCommonOrderPanelCtrl","sortOptions","sortableColumns","sortedColumns","screenExtraSmall","changeDirection","commonPickerTemplate","mxHelpDirective","mxSidePanel","MxHelpController","compiled","containerTitle","after","showContent","slider","siblings","isSlider","showHelpPopup","FavouritesService","favouriteViews","favouriteNavigations","objectIsFavourite","removeViewFromFavourites","ObjectDisplayNameChanged","saveFavouriteViews","favourite","ObjectRemovedByWizard","NavigationReload","initNavigationItems","_initFavouriteViews","initFavouriteViews","toggleViewFavourite","favouriteObject","_addViewToFavourites","addViewToFavourites","openFavouriteView","internalOpenFavouriteView","isFavouriteEnabled","toggleNavigationFavourite","favouriteItem","setNavigationShowInFavourite","saveFavouriteNavigations","checkFavouritesPanelStatus","showInFavorite","favouritesObjectDetails","getFavouriteViews","fView","removedView","getFavouriteNavigations","favouriteNavigationIds","initItem","itemId","chItem","subItem","newView","favIndex","RecentService","recentWithoutInProgressViews","recentViews","isActivatedManually","MAX_RECENT_SIZE","updateRecentAndOpenedViewList","addToRecent","removeFromRecent","saveRecentViews","_initRecentViews","initRecentViews","openRecentView","_openRecentView","clearRecent","recentObjectDetails","getRecentViews","openingTime","_addToRecent","initialObjectDetails","newObjectDetails","recentView","removeView","_sidePanelService$cur","_sidePanelService$cur2","_sidePanelService$cur3","_sidePanelService$cur4","_sidePanelService$cur5","_sidePanelService$cur6","viewA","viewB","MxViewLink","setBorderColor","_setBorderColor","viewColor","propsModifier","selectedTab","onTabChanged","isClickable","BaseSideBarWidget","createNavigationWidget","MxShellWidgetsPanelService","_enabled","_initialized","sideBarWidgetsFactory","initService","addWidgetByType","MxLoadFileCtrl","fileNameOut","contentType","readAsText","readAsDataURL","MxLoadFileComponent","filesFilter","MxObjectJournalCtrl","journalService","attachmentService","journalTextboxContainer","showObjectDetails","details","ForceOpenObjectDetails","getJournalData","_getJournalData","addJournalComment","journalObject","Comments","Publish","EntryType","Creator","FileIds","VisibleInPortal","updateJournalVisibility","selectFiles","setVisibleInPortal","setSectionNewCommentInBottom","journalTextboxForMoving","appendTo","allowedInPortal","regex","getFilesForObject","processedData","_replaceUrls","matches","matchAll","replacements","fileUrlMatch","fileId","fileInfo","getFileUrl","itemText","formatFileUrl","replaceUrls","CreatorFragmentId","userName","CreatedDate","CreatorPhoto","subject","Header","mxObjectJournalTemplate","supplement","hideVisibleInPortal","MxLocalizationEditorFormCtrl","originalValueLcid","canSave","getAllLanguages","LanguageGroupFilter","UI","baseLcid","__current","flagSrc","isBaseLanguageInGroup","parentLcid","originalLang","baseLanguage","subLanguages","parentTitle","mapTranslation","langsForTemplate","old","populateOriginalValueIfEmpty","_isEmpty","translationsContainLcid","addSubLanguageToTranslations","baseLang","resTranslations","l","baseLcidTranslationIndex","baseLangTranslation","MxObjectImageCtrl","bindAttribute","waithandler","_initProviderSettings","initProviderSettings","_loadFiles","_vm$src","srcTmp","isBase64","uploadedOn","getVirtualFileFromSrc","_uploadFile","attachmentInfo","storageId","getFiles","_onGetFileUrl","deleteFiles","onAttachmentDelete","getStorageInfo","MxMultiObjectRelationPickerCtrl","_intModel","_updatedValues","updateRelationConfig","updated","_relation","replacementItems","array2","array1","loadAddedItemsDescriptor","_getFragmentDescriptorsInBatch","loadObjectItemsDescriptor","loadRelationsItems","objectItems","allItems","originalModel","newIds","removed","setInitModel","reverseRelationIsSet","MxObjectPickerCtrl","resetFilter","_resetFilterActive","_loadItemsCount","_pickerCtrl","onFilterChanged","resetFilterIsAllowed","resetFilterString","navigateSelectedItem","_openLookupDialog","selectObjects","allowResetFilter","getEntityClassName","updateDisplayExpression","_browseLookup","extraData","openLookupDialog","returnInitial","pickerCtrl","pickerModel","setNewSelectedItem","_item","updateItem","displayStringInfo","getItemDetails","notStrictAutocomplete","hintsActive","isComboPressed","browseBtn","handleKeyDown","_isModelWithEmptyValue","guidEmpty","initFilter","notFoundDescriptor","internalOnBlur","extraProps","commonObjectPickerTemplate","MxQueryFilterToolbarController","debouncedCheckMoreBtnVisibility","so","__active","toggleQueryFilter","runQuery","clearFilters","MxQuickLinkCtrl","linkType","_initCallServiceButton","_vm$mxServiceContext","hasRules","mainAction","_initNavigation","getFilters","_extraFilter","_initExternalAppNavigation","initExternalAppNavigation","loadNavigationItem","redirectToNavLink","_navigationItem$Child","NavigationItemImplementation","checkDialogRules","editObject","getEditDialogs","previewObject","getPreviewsOrDialogs","isPreview","isNewDialog","getViewsForPreview","getNewDialogs","initDialogWithClassNameAndId","_initAction","isSmallLink","isHoverActive","darkerHoveredBackground","isButton","isLink","alwaysVisible","hideUnavailable","fullWidth","detectSmallSize","_smallSizeHandler","externalLink","assignBefore","assignBeforeDestination","assignBeforeSource","newEntityCreatedPromise","fullscreen","viewHideActions","readonlyObject","finishDialogInteractionPromise","initNavigation","initAction","initCallServiceButton","ReloadLandingPage","assignDestination","assignSource","datasetView","setExtraItem","initDatasetViewButton","reactOnContainerClick","iconType","titleNeutral","cancelled","confirmationMessage","confirm","disableOnActionSubmit","reloadOnActionSubmit","reloadDatasetOnSubmit","instantRefresh","notificationOnSubmit","closeOnSubmit","MxRichTextBoxCtrl","mxTinymceUtils","editorInstance","fixedToolbarContainer","useAdvancedMode","isToolbarBottomMode","execCommand","isFullscreen","toggleFullscreen","isLoaded","showLoader","textContainer","defalutHeight","advancedMode","heightInt","_heightPx","addId","updateIsActivated","tinymceOptions","fixed_toolbar_container","menubar","statusbar","contextmenu","toolbar_persist","toolbar_mode","skin","plugins","allowCodeEditor","paste_data_images","automatic_uploads","browser_spellcheck","file_picker_types","file_picker_callback","cb","inputClass","setAttribute","onchange","classFilereader","base64","imgData","custom_colors","font_size_formats","relative_urls","remove_script_host","convert_urls","cache_suffix","auto_focus","_defineBoolValue","setFocus","setup","uiContainer","_handleDisabledMode","_handleReadonlyMode","defaultFont","fontStyles","family","lineHeight","rteStylesId","defaultStyles","getDoc","addAttributeFilter","nodes","hrefAttr","getElement","span","onFocus","getContent","ui","registry","addButton","shortcut","onAction","getBody","editorBody","bodyElement","editorBodyHeight","activeNode","selection","getNode","activeNodeTopShift","scrollBy","fixCaretVisibility","nodeName","jqEl","externalSetup","mxLoadingCssClass","image_list","loadingIndicatorContainer","imgExtensions","attachedImgsArr","originalSetupFn","incommingSetup","isFullscreenParam","_ignoreReadonly","boolValue","MxSearchQueryBuilderCtrl","saveAsDefaultFilter","isDefault","setDefaultFilterForNavItem","getDefaultFilterForNavItem","clearInvalidConditions","deleteAction","deleteFilter","succeded","closeFn","addChildAction","addChildFilter","_fillActions","dialogTypes","openParent","editFilter","andClose","queryBuilderValid","validateQueryBuilder","saveSearchQuery","onSearchQuerySaved","addSearchQuery","_vm$context","_vm$context$navigatio","_vm$context2","_vm$context2$navigati","MxSearchStateCtrl","$location","quickFilterCondition","onReset","resetFilters","keywordCondition","gridCondition","advancedCondition","shortValue","customFormCondition","andTitle","wasVisible","_params$searchForm$ge","removeHtmlTags","gridConditions","getStringConditions","queryBuilderGroup","advancedConditions","advancedConditionsString","getStringGroup","formConditionsString","cLevel","operatorTitle","logicalOperatorTitle","conditionTitle","groupLevel","itGroup","MxSidePanelUiActionsCtrl","_updateAlternativeViews","alternativeViews","getAlternativeViews","updateAlternativeViews","selectedUiAction","selectAlternativeView","selectedView","saveDefaultPreviewId","saveDefaultNewDialogId","ContentWidgetDialogPurpose","CreateAndEdit","saveDefaultEditDialogId","openAlternativeView","MxSchemaPickerCtrl","_selectedObjectsExpected","servicePromise","_loadCIs","getTypeItems","valueIsId","_loadDDs","getClassItems","classType","_loadSchemaData","loadCIs","loadDDs","itemsFilter","setSelectedSchemaItems","loadSchemaData","recursion","columnDefinitionService","MxSearchQueryGroupCtrl","addConditionClick","conditionProperties","toggleOperator","groupHeaderClick","SearchGroupToggleExpanded","toggleGroupExpanded","addExpressionCondition","createExpressionCondition","logicalOperators","createQueryGroup","deleteGroup","editInQueryBuilder","allowSave","_vm$context$navigatio2","createQuery","originFilterReference","getHintDenyingSave","currentNavItem","currentNavPath","allowedNavPath","allowedNavPathFound","CanEdit","_vm$showSaveBtn","_vm$showTestQueryBtn","checkConditions","showSaveBtn","showTestQueryBtn","testQuery","allowExpressions","getGridDefinitionById","IsAvailableInSearch","MxSidePanelTabHeaderCtrl","currentUIActions","reloadUIActions","onCloseClick","MxStylesEditorController","editorOptions","workerPath","advanced","enableSnippets","enableBasicAutocompletion","enableLiveAutocompletion","minLines","showLineNumbers","showPrintMargin","internalStyles","setItems","formatElements","bodyStyles","contentStyles","updateCss","formatElementsStr","stylesStr","_this$styles$find","selector","Selector","Css","mxStyles","bodyCss","contentCss","previewHtml","showOnlyPreview","sysPropertyDescriptions","EditFormCtrl","localizationModeHelper","_handleLocalizationDialogResult","localizedField","fieldKey","currentLang","__resultCI","applyTranslations","getValueWithFallback","enableMode","localizableModels","localizationData","applyStylesForControls","dialogSelector","dialogSavedCallback","sourceCI","controlElm","preventUsualControlHandler","modelInfo","getModelInfoFromElement","openLocalizationDialog","_handleLocalizationDialogAppearance","MxMultiFragmentTreeviewCtrl","addProxyFunc","addItem","createItem","newEntity","loadForm","isAddingNew","objectForCancel","dialogName","formView","templateFormId","saveLabel","ExtendDeep","editInForm","getNewFragment","MxUiManagerController","datasetViewData","datasetViewId","quickFilter","structureNodeId","getNodeId","selectedColumns","selectedViewType","GroupingPanelService","extraPanelManager","_currentGroupingPreprocessor","_groupingView","MxViewGroupByCtrl","disableGroupingForColumn","MxDependencyVisualizerCtrl","$mdIcon","currentObject","_getMaterialIcons","materialIcons","svgFont","loadSvgIconsFont","glyphs","glyph","convertSVGGlyphToPath","outerHTML","temp","tempNode","cloneNode","onNodeClick","createNode","clicked","words","lines","rectangleY","fontFamily","nameLinesEncode","nameLines","word","nameHeight","svg","State","committed","Agreed","actual","Actual","graphOptions","edges","arrows","smooth","interaction","hover","randomSeed","shapeProperties","interpolation","physics","maxVelocity","minVelocity","repulsion","centralGravity","nodeDistance","springConstant","solver","graphEvents","blurNode","cursor","nodeId","dependencyTree","hoverNode","defaultMaterialIcons","setIcons","Dependencies","MainIcon","getMaterialIcons","iconEl","XMLSerializer","serializeToString","shape","dependency","Info","Child","graphData","graphLoaded","MxDependencyVisualizerLazyCtrl","setViewTitle","selectionCount","MainClassName","objectsLinkLabel","_openViewFromSelection","mxContextService","mxSidePanelActions","maxItemsToShow","openViewFromSelection","selectionListChange","EditFormView","EditFormViewLocals","EditFormTabService","MxGlobalSearchCtrl","dataQueryService","objectMapper","contextPromise","userProfilePromise","pageSizePromise","getPageSize","personalizedPageSize","nav","_makeItemForQueryInfo","sortingConfig","getGridPersonalizationStorageKeyByProfile","makeItemForQueryInfo","mapContextToQuery","results","getGlobalSearchData","objectsForSearch","resultFilterId","Filters","resultStructureId","StructureNodeId","DataQueryId","initDataQuery","ContentWidgetList","Entities","widgetList","ListViewEnabled","TileViewEnabled","DefaultView","dataModelExtensions","Sources","Properties","IsGlobalSearch","templateLoaded","makeTemplateLoader","_loadServiceBasedDataSets","loadServiceBasedDataSets","_changeTabContext","changeTabContext","services","dataSet","_dataSet$viewParamete","_service$preprocessor","_service$preprocessor2","tabIndex","DataModel","DataModelSource","forRuntime","specialOptions","DataModelSourceDescriptor","AllowUnsafeFilter","Items","BaseUrl","ServiceId","Operation","DataDefinition","Reloadable","RefreshInterval","RewriteResponse","LoadOnInit","OnSaving","OnSaved","Download","ContractDescriptor","MultiCurrencies","typing","seletedImageSize","attachment","initialImage","iconsLibrary","loadDefers","inputText","catVisible","itemsFound","searchLibrary","iconModeLoaded","_getFolders","getFolders","rootFolder","folders","folder","mapFolder","mapData","findPath","selectedFolder","setFoldersPathView","imageModeLoaded","attachModeLoaded","modeAttachOnly","modeImageOnly","modeIconOnly","valueImage","valueAttach","byValue","only","selectedTabIndex","selectPickerView","selectFolder","goToParent","goToRoot","goToPath","preview","isBasePathAllowed","folderLoading","imagesEndpoint","imagesPath","queryParams","replaceAll","relativePath","filePath","Size","mapFiles","err","folderError","findFolder","newFolderPath","currPath","folderPath","pathToFind","fdr","SubFolders","sf","concurrencyTrackingService","subscriptions","wrapView","subscribe","change","username","showObjectChangedNotification","$$initialEntity","showObjectDeletedNotification","getDisplayName","exist","userNames","eventSidePanelViewClosed","unsubscribeFromEvents","objectDataDeleted","addSources","updateSource","contractType","getContractType","contract","addPropertiesFromType","OUT","Injector","getDescriptionLocalization","sourceStateDescription","orderByDescription","pageSizeDescription","pageNumberDescription","totalCountDescription","filterDescription","inactiveDescription","fragmentIdDescription","shared","applicationNameDescription","currentUserDescription","availableOnly","actionNameDescription","actionIdDescription","actionObjectDescription","actionObjectIdDescription","actionObjectTypeDescription","actionObjectDisplayNameDescription","MxDataModelItemBase","DataModelProperty","referenceKey","ReferenceName","referenceName","ParentItem","sourceParameterType","SourceParameterType","Unknown","NONE","ForRuntime","Documentation","EditMode","editMode","ParentIsArray","parentIsArray","Required","MaxLength","maxLength","Extended","extended","Added","createPathIfNotExist","paths","partPath","currentPart","addProperty","usedTypes","propertyOptions","defType","DataModelTypes","isODataQueryOptions","typeObj","preparePropertyType","existedProp","overridden","simpleTypes","MultipleObjectReference","arrayItemOptions","addSimpleProperty","bodyParameter","Source","FromBody","addBoolean","addInt","addGuid","addObjectReference","addString","typeDescriptor","Descriptor","addSourceState","addOrderBy","addPagingData","addFilter","addInactive","addOuterContext","addSharedContext","addNavigationId","addFilterId","addApplicationName","addCurrentUser","addActionName","availableMessage","addActionId","addActionContextObject","addActionContext","shortMode","DataModelDescriptor","modelError","DataModelPropertyDescriptor","valueItem","extraProperties","ExtraProperties","requiredProperties","notPassed","sourceError","StaticSource","presented","RouteTemplate","ServiceType","propertyError","SystemType","mxDataModelErrorOnInit","mxDataModelError","sourceDescriptors","removeSource","exports","DataModelSourceDirection","extendDeep","dst","searchQueryConditionFactory","conditionOptions","Property","toSqlView","IsExpression","searchQueryGroupFactory","SearchQueryCondition","previousGroup","lineBreak","tabSpace","LogicalOperatorTitle","cloneGroup","searchQueryFactory","TitleNeutral","ShowInNavigation","ConsiderParentFilters","DatasetView","System","QueryFilter","ParentsChain","parentsChain","ActionCoRuService","_commit","ApiTokenService","httpService","dataService","generateAccessToken","apiTokenName","httpHeaders","apiToken","_generateApiToken","Authorization","accessTokenRequest","_deleteApiToken","RawToken","ExpirationDays","ApiToken","_getApiTokenObjectId","_yield$_this3$dataSer","getList","Where","tokenObjectId","CacheService","resetServerCache","ResetNavigationCache","ResetActionCache","ResetEnumCache","ResetWidgetsCache","WidgetIds","ColumnDefinitionService","DataQueryDefinition","entityClassColumns","_getDefinition","getGridDefinitionByClassName","removeFromCache","loadColumnsForClass","cacheKey","dataQueryDef","IsDefault","ConcurrencyTrackingService","Hub","applyDataChanges","dataUri","itemName","viewInfo","oldData","fullCheck","mergeInfo","startEntityValue","finishEntityValue","mergeData","mergeEntity","IsConflict","hasConflicts","isDirty","notSaved","getConfirmationDialogConfig","mergeView","showManualMergeDialog","getDialogData","showMegeDialogs","isUpdateConflict","ExceptionName","isDeleted","trackingInfo","trackingPromise","connectionInfo","solutionBuilder","useSharedConnection","listeners","NotifyObjectChanged","NotifyObjectDeleted","NotifySubscriptionAdded","NotifySubscriptionRemoved","NotifySubscriptionsExist","methods","logging","__mx$concurrencyDebugOn","newState","signalR","connectionState","connecting","connected","reconnecting","disconnected","getConnectionInfo","errorHandler","hub","Subscribe","unSubscribe","Unsubscribe","disconnect","ContentWidgetService","ownershipService","syncWidgetId","getViewsByAppAndType","getViews","getNewDialogData","getAppHeaders","DisplayStrings","fragmentName","_getDialogData","updateDialogData","cleanFromEmptyOptionalDataDefinition","postTemplate","_getHtml","publishLayout","objectContext","getCorrespondingUrl","isArchived","getPrintUrl","extendCorrespondingUrl","revert","revertToSystem","removeItem","getWidgetInfoById","widgetPromise","widgetDictionary","widgetBase","widgetInfo","VisibilityCondition","getDefaultViewType","setDefaultViewType","configureUrl","getConfigForView","_customizeViewInDesigner","isCustomizable","_controller","_controller$parentVie","checkViewUnavailableReasons","objectTypeName","appCode","checkViewsByAppAndType","getWidgetType","openDialogIfNoPreview","previewsAmount","applicationId","EmailTemplate","getViewsByType","configViews","viewOfType","Enabled","warnCatchMessage","isLandingPage","isSearchPage","viewOptions","forAllApps","widgetInfos","getCurrentAppCode","archivedOnly","loadLocalization","isCreateDialogWidget","htmlUrl","injectOwnershipContainer","methodName","languageHeader","DataModelDescriptorService","Editor","BindingType","isArrayProperty","getTypeFromEditor","TextType","DashboardWidgetDataService","$m42DashboardManagerService","storageDashboardKey","widgetsContent","publicFunctions","widgetsAvailabilityState","getDashboardsDataFromStorage","localDashboards","getDashboardData","setDashboardData","dashboards","saveDashboardsDataToStorage","getDashboardWidgets","available","setDashboardWidgets","dashboard","updateDashboardLayout","widgetLayouts","getDashboardLayout","widgetLayout","frame","getDefaultLayoutForWidget","setDashboardLayout","deviceType","newLayout","isCustomized","getDefaultDashboardLayout","defaultLayout","setDefaultDashboardLayout","origin","defaultWidgetLayout","customLayout","removeSavedCustomLayout","loadDashboardWidgets","dfd","saveDashboardWidgets","dashboardWidgets","isWidgetInArray","isDashboardEditable","addAsAvailable","_getDashboardLayout$f","currentWidgetLayout","sizeX","removeAsUnavailable","_publicFunctions$dash","_publicFunctions$dash2","loadDashboardLayout","storeDashboardLayout","newLayouts","dashboardLayout","defaultDashboardLayout","initDashboard","customizedLayout","prevDefaultLayout","isDefaultLayoutChanged","isSetOfWidgetsChanged","customWidget","DataModelService","backgroundProcessesService","filterExpressionService","schemaServiceEnums","_sourceDescriptors","dataTypes","getHostUrls","getSources","getEntityModel","getDataQueryModel","getDataModel","inputParameters","dataModelDefer","isEmail","modelDescriptor","extendedProperties","multiCurrencies","contextSource","getInputParametersModel","createContextSource","propertyExt","ParentName","saveCalculatedField","isExtra","_dataModelOptions","propertiesObj","deleteCalculatedField","dataModelItem","dataModelPromise","deleteFieldByPath","extendDataModelSource","loadDialogDataModel","freeDataSourcePromise","entitySource","entityDefaultModel","optionalDD","loadSources","reloadSource","requestHeaders","sourcesDescriptor","targetSource","serializeObject","__optionalDD","propertyKey","getStaticModelArgument","getStaticModel","getCustomWidgetModel","sourceDescriptor","RequestDescriptor","ResponseDescriptor","getWorkflowInfo","isOperation","isWorkflow","makeSourceRemoved","ActionName","ServiceName","ResponseContract","getServiceOperationSource","getCiInfo","structure","isCi","adjustEntityProperties","getEntitySource","getDdInfo","dataDefinitionSource","isDd","keepLegacyId","adjustFilterExpressionParameters","adjustFilter","getDataDefinitionSource","getDqInfo","dataQuerySource","isDataQuery","getDataQuerySource","dataModelSource","filterPath","_adjustFilterExpressionParameters","submitProperty","handleProperty","_result$Parameters","ParameterType","parametersPath","getParametersForExpressionEntityClass","getParametersForExpressionDataQuery","loadInfo","staticSource","isCustomWidget","loadOnInit","reloadable","isDevMode","staticValue","callBackPromise","setCalcPropertyCallback","refreshInterval","__intervalsToBeCleared","intervalID","setInterval","clearInterval","sourceCallBack","sourceStateName","isExec","LOAD_REQUESTED","alias","$id","$parameters","getParametersList","FragmentIdsExpression","FilterDataExpression","paramPrefix","extraPath","extraQueryObject","$options","opt","optKeyIdx","optKey","idxExtraPath","urlCfg","extQueryNm","httpCall","isDownload","downloadSource","skipNotifications","$catchError","bodyObject","paramName","ArrayBuffer","File","httpCallFn","$errorMessage","executeSource","parametersSource","parametersTypeMap","paramType","mapping","prepareContractOptions","contractDirection","deleted","columnsInfo","requestContract","Operations","SupportedOperation","requestParams","dataDefinitionType","createStaticSource","entityClassItem","attributesSource","DataQueryService","getFilter","createFilter","updateFilter","removeFilter","publishFilter","unpublishFilter","getRelationItems","requestInfo","getRelationItemsRequest","getRelationItemsWithTotalCount","_getRelationItemsWithTotalCount","exportRelationItems","getRelationItemsCount","getMultiFragmentData","getMultiFragmentDataCount","queryInfo","expr","serviceOperationId","executeMultiFragmentExpressions","expressionRequest","_request$filter","DataQueryName","FragmentId","ClientTimeOffset","getTimezoneOffset","EntityTypeName","RelationName","listAsCsv","AdditionalFilter","additionalFilter","Page","Archived","LookupFor","lookupFor","ResetFilter","FilterExpressionService","validateFilterExpressionDataQuery","createValidateResult","validateFilterExpressionEntityClass","entityclass","getParametersForExpression","DataService","fragmentUrl","objectUrl","ddName","addRelation","relationFragmentId","getRelationList","deleteRelation","ciName","full","queryFull","DeepLinkingService","runAction","presetParams","_parseViewOptions","_parsePresetParams","parsePresetParamsFromUrl","processViewOptions","fromEntries","objectParams","ext","std","nda","_view$locals","_setTitleForExternalOpenedDialog","windowTitle","getWindowTitle","tryOpenDialog","stateName","stateParameters","editDialogState","editDialogOpenedPromise","previewWidgetId","designerWindow","closed","formUrl","LocalizationModeHelper","dialogLocalizationModeClassName","customEditorInstances","disableMode","removeStylesForControls","formCssSelector","formCSS","modelStr","isHtmlValueFilledIn","getTranslatedValueByLcid","allLocalizableControlsCssSelector","modelString","getCurrentLanguage","inputedVal","resParams","modelKey","prepareValueTranslations","getTitleForLocalization","resultCIObject","trVal","registerCustomEditorInstance","getTitleForLocalizationFn","destroyCustomEditorInstances","translatedObject","tr","incomingLangVals","lcidKey","currentIncomingLang","parentIncomingLang","modelPath","DialogOpenerService","MxDetailsView","multiSelectionTabService","ForceOpenObjectsGrid","showDetailsAfterCreation","newEntityCreatedDefer","newDialogOpenedDefer","errMessage","personalizedWidgetId","getDefaultNewDialogId","viewById","__getNewDialogView","commonNewName","viewId","createNewDialog","customHeader","preparePresetsForWizard","previewView","extraLocals","finishDialogInteractionDefer","editDialogOpenedDefer","__getEditDialogView","byId","editView","dialogParams","DialogController","excludedIDs","resetFilterExpression","onlyTypedSearch","correctEntityFilter","onlyTypedSelectSearch","relatedObjectId","relatedEntity","selectionMode","DetailsViewSelectionMode","_openSelectView","relationDisplayName","columnToDisplay","_openPreview","detailsView","objectIDs","uniqueViewId","selView","EmbeddedViewService","EmbeddedView","checkInterval","embedded","createdObjectId","ExternalServiceManager","getServiceInfoByEntityName","deleteOperation","serviceURl","Prefix","_path","getOperation","operation","serviceId","getServiceId","getServiceInfo","getOperationTypesInternal","getOperationTypes","subCollection","readOperation","getResponseTypeInfo","Identifier","listOperation","ObjectMapper","PathToData","getListExecuteOptions","SubCollection","executeOptions","isOData","serviceUrl","listUrl","httpProvider","getDataFromObject","getProcessedDataFromObject","processDataFuncs","returnCountType","ReturnCountType","countOptions","executeExternalService","dataRequestUrlCount","getFromObject","PathToCount","searchByKeywordFuncs","processKeyword","AttributeSearchValueType","IsKeyword","ProcessEnum","enumF","intToString","searchByKeyword","expressionField","SearchExpression","escapeSql","DataQueryMapper","parseServiceInfo","getEntity","getObjectOperation","updateOperation","getRequestBodyTypeInfo","resultId","fullName","enumName","supportedOperation","getOperationTypeInfo","oi","TypeInfo","$find","enumField","Enum","operationFlag","ops","preFunc","MakeExpression","ExpressionFunc","_getTypeDisplayName","tmpObj","Dynamic","GetTypeDisplayNamePromise","requestContractDescriptor","getTypeInfo","resultTypeObj","contractDescriptor","resultType","typeDisplayNameAttr","TypeDisplayName","typeDisplayName","ResultType","makeExpression","pathToObject","innerType","findMainCollection","funcPartArgs","funcPartParams","exp","enumInfo","_processEnum","enumData","Flags","enumArray","enumArrayLowerCase","flagValue","strings","matchingValues","NameSpace","serviceData","OperationTypes","getAllUsedTypes","HelpService","Workflow","skipError","getEntityInfo","cached","JournalService","objectLinkTemplate","timeOffset","baseUrl","HolidaysService","holidaysPromise","DateFrom","dateTo","DateTo","fullDay","FullDay","calendarEntryType","CalendarEntryType","calendarEntryTypeName","CalendarEntryTypeName","country","Country","countryName","CountryName","MixedActionHelper","TranslationService","MxLanguage","languageGroup","languagesPromise","Code","LCID","ParentLCID","ParentTitle","FlagImagePath","TwoLetterCode","IsRightToLeft","IsBaseLanguageInGroup","ViewHelpService","m42OnlineHelpUrl","srcType","parsedValue","ObjID","showViewHelp","helpView","helpContent","HTML","isContentHelp","isHelpAvailable","objKBArtileValue","_wnd","intervalId","BasePreprocessorFactory","BasePreprocessor","changedHandlers","executor","StructurePreprocessorFactory","structureBuild","ColumnDefinitionPreprocessorFactory","columnsBuild","personalColumns","dqColumns","dataQueryHasVisibleColumn","dqColumn","IsLoading","callVisibilityChanged","savePersonalizedColumnVisibility","callPositionChanged","savePersonalizedColumnPosition","callSizeChanged","savePersonalizedColumnSize","DateRangePreprocessorFactory","_addRangeGroupIntoSearch","dateRangeGroup","_getDateRangeSearchGroup","startInRangeGroup","_createCondition","endInRangeGroup","moreThanRangeGroup","QuickFilterPreprocessorFactory","quickFiltersBuild","_widgetId","redFilter","yellowFilter","greenFilter","quickFilterTitles","checkFilters","getColor","ServiceRequestParamsPreprocessorFactory","ServiceRequestParamsPreprocessor","ServiceRequestParams","_parameters","getServiceUrl","dataQueryModel","setUrlCfg","SortingPreprocessorFactory","newSortingPreprocessorFactory","enableSingleColumnMode","SortingGridPreprocessorFactory","sortingBuild","_initPersonalization","sortConfig","aName","bName","__personalizedPosition","initPersonalization","PagingPreprocessorFactory","_personalizedPageSize","localPageSize","pageSizes","_pageSize","_page","paginationBuild","savePageSize","SearchPreprocessorFactory","searchBuild","GroupingPreprocessorFactory","groupedColumnsSorting","_groupPath","_addGroupingIntoSearch","groupingGroup","_getGroupingGroup","groupingTree","newGroupingTree","_internalProcess","_reloadGroupingTree","_personalizationId","getGroupingColumns","groupedColumn","_getColumnByName","SortDirection","getGroupingFilter","_applyGroupedColumns","enableGroupingForColumn","GroupingIsActive","toggleGroupingSorting","groupingColumn","savePersonalizedGrouping","resetGrouping","setActiveGroup","activeGroup","_updateSubTreeRecursively","previousPath","_prepareGroupingSearchConditions","savePersonalizedGroupingFilter","updater","SubGroups","_getGroupByPath","groupPath","groupedColumnNames","_getGroupingTree","firstGroup","gr","_getFirstDeepestGroupPath","_removeGroupingFromSearch","getGroupingTree","Column","ClientQueryExecutorFactory","controlType","executionOrder","dataRequestUrl","searchState","filterFn","currentObj","activeFunctions","addFn","_keyword","dataItemProperty","queryGroupFilter","conditionFilter","currentOperator","ReadObjects","getIdentifier","DataQueryExecutorFactory","_run","setTotalCount","_getDataCount","createQuickFilterUrl","executeExportData","exportRequest","ExportAllRows","ExportFormatType","DatasetViewId","Keyword","ActiveFilter","structureId","defaultFilter","defaultQueryFilter","isFirst","_executeRequest","columnCondition","structureParam","setGroupsParent","subGroup","_executeRequest2","progressHandler","addUrlParam","commonFilters","paramString","_generateQueryString","totalcount","ODataQueryExecutorFactory","prepareUrl","_getExpression","SortingExpression","getODataSearchFilter","ReadObjectsByODataQuery","_urlCfg","exportIndex","getBaseUrl","exportMarker","getExportDataUrl","_searchBuild","_getODataSearchFilter","filterIds","filterGroups","widgetFilter","keywordExpression","initQueryByDataQuery","attachedOperator","processSearchGroup","searchGroup","linkOperator","not","__flags","__namespace","conditionExpression","originalValue","getContainsAnyWordFilter","getWords","getContainsAllWordFilter","NotEquals","LowerThan","LowerThanOrEquals","GreaterThan","GreaterThanOrEquals","NotIn","getConditionExpression","processSearchCondition","groupAsCondition","allExpressions","SchemaService","attrExpressions","classInfos","clearClasses","clearTypes","schemaServiceUrl","keyIsId","_findSchemaItem","getReferenceAttributeExpr","itemsGetter","_getSchemaItems","itemsAreTypes","itemsAreClasses","RelatedClasses","_class","_getSchemaObjects","schemaType","ClassTypes","SearchQueryService","cacheService","queriesCache","createQueryCondition","getDataQuery","reloadNavigation","removeSearchQuery","secondValue","_getLocalization","enumerationValuesString","_getContextByFilter","getContextByDataQueryId","hasConditions","hasGroups","widgetFilters","string","listWidgetId","getParentsChain","currentFilter","fromCache","qData","queryPromises","_openFilterDialog","_query","queryOptions","initGroup","dataQueryColumn","getEnumerationFromService","WidgetManager","viewTypes","_openDialogIfNoPreview","filterViews","dialogActionType","EditOnly","CreateOnly","dialogInsteadOfPreview","selectedWidget","personalizedWidget","personalizedWidgetID","getDefaultPreviewId","createPreview","getPreviews","isEditDialog","isAdHocDialog","getSortedViews","previews","hasNewDialogs","hasEditDialogs","hasPreviews","hasPreviewsOrDialogs","WizardService","WizardPage","pagesCommonController","_gettingWizardAndDataModelPendingPromises","wizardUiActionGroup","_freeWizardDataSources","resetWidgetsCache","_wizard$__freeDataSou","__freeDataSourceDefer","selectedObjectsFromView","originalOptions","__typeName","mainWizardRef","numOfExtraWizards","prepareNonVisualControls","NonVisualTemplate","wizardData","resultView","ResultWizardPage","wizardButtons","createWizardPage","nextView","mainCallback","submitCallback","ActionId","customError","createFinishButton","closeWizard","cancelButton","createCancelButton","initWizard","firstObject","requests","getWizardAndDataModelPromise","mainClassName","initWizardContextDescriptionHandlers","multi","getFirstNotEmpty","initWizardContextDescription","getDefaultContext","initStaticData","IsNew","__wizard","__selectedObjects","lastFinishCallback","afterLastFinishCallback","createSaveCallbackForCreateEditWizard","wizardName","ClassDisplayName","contextDescriptionTemplate","updateWizardAfterDataModelLoad","$$state","setObjectDeleted","initialEntity","reloadWizard","warningMessageButtonLabel","warningMessageButtonHandler","setWizardOutdated","_wizardView$startedFr","_wizardView$locals","_wizardView$locals$wi","StylesItem","systemStyles","StylesService","getStylesByTag","getCustomStyles","registerStyles","styleConfig","AgentTelemetryService","trackViewTelemetry","trackProps","getTelemetryInfoFromView","mx42_uux_view_source","dialogView","_dialogView$context","_dialogView$context2","targets","MxExtensionGalleryService","apiTokenService","goToExtensionGallery","accessToken","ExtensionGallery","goToUrl","extensionGalleryService","extensionGalleryRouteName","$transitions","onStart","extensionGalleryRoute","PushNotificationsService","authBehaviorProviderService","unreadNotifications","notifications","_isPushHubEnabled","_userTags","_notificationsUpdatedHandlers","_serviceWorkerScript","_serviceWorkerScope","isSupported","hasPermissions","isDenied","_window$Notification","Notification","permission","isRequestPermissionsNeeded","isEnabledInProfile","isEnabledByUser","_window$Notification2","requestPermission","_initPushNotifications","_profile","_sessionExpirationTime","getSessionExpirationTime","_pushHubConfig","_loadPushHubConfig","_getUserTags","_initUI","onBeforeSessionDestroy","_unsubscribe","onSessionExpired","_checkSubscription","sw","_initServiceWorker","_subscribeToWorkerMessages","_initPushHub","forceTagsReload","_subscribedUserId","_subscribe","_getNotifications","_sendMessage","addNotificationsUpdatedHandler","_addHandler","removeAllNotifications","removeNotification","setNotificationsRead","handlersArray","serviceWorker","_onNotificationsUpdated","subscribedUserId","subscribedUserTags","_onSubscriptionStatusUpdated","sessionExpirationTime","pushHubConfig","registerSW","installing","waiting","waitServiceWorkerActivated","postMessage","userTags","subscribed","_this15","waitForAnswer","messageChannel","MessageChannel","waitPromise","port1","onmessage","port2","_this16","_prepareNotifications","unread","notification","_this17","notificationTypes","_getNotificationTypes","received","_this18","_notificationsTypes","picker","aggregator","_this19","_this20","PushNotificationsPanelService","_view","togglePanel","_isPanelOpened","openPanel","PushNotificationsMonitorController","pushNotificationsService","pushNotificationsPanelService","PushNotificationsPanelController","initActions","browsersHelpInfo","getBrowsersHelpInfo","agent","notSupportedI18n","browsers","currentBrowser","resHtml","viewData","_prepareViewData","_groupNotificationsByTime","timeAgo","newGroup","PushNotificationsMonitorComponent","PushNotificationsPanelComponent","MxDialogViewComponent","MxSolutionBuilderAgentEditCtrl","defaultDoneLabel","_vm$view$context","isEditableDialog","enableConcurrencyTracking","setDoneButtonLabel","isSaveVisible","_isSaveVisible","saveAndClose","saveDisabled","hideSaveButton","_isSaveHidden","doneLabel","DialogFactory","previewUiActionGroup","dialogsActionGroup","_createDialog","hideHeaderTitle","HideHeaderTitle","isRefreshable","entityDisplayName","_getUiActionGroups","MxDialogContentComponent","extraContext","MxCommonDialogContentCtrl","defaultErrorMessage","statusDisabled","formReadOnly","reloadPageOnSave","updateFormStatus","setFormReadOnly","dialogContainerViews","onViewSubmit","closeDialog","reloadObject","objectDetailsMode","contextWidgetType","subscribeConcurrency","stopEditing","disableSaveActions","formIsLoading","enableSaveActions","setValidationStatus","isFormValid","_confirmationDialog","onChangeConfirmationDialogResultHandlers","onChangeConfirmationDialogResult","eventDialogActionExecuted","confirmationDialog","disabledWhenNoChanges","notSave","confirmationDialogResult","viewIsDirty","callFunctions","savingFunctionNames","savedFunctionNames","NewWidgetCreated","administrationSettingsDialogId","reloadApplications","entityData","newDialogType","oldEntityType","submitDialog","savedDefer","MxDialogContainerComponent","onValidationChanged","watchEntityData","hideMessagePanel","entityDataModel","useExternalTabManager","parentMxWizard","MxDialogContainerCtrl","entityWatcher","_openLocalozationDialog","_externalWizardLoadingValidatingFn","isNewObject","visitedTabs","availableViews","viewFilter","reInitWidget","firstView","findSuitableView","newContentWidgetId","reloadDialogData","_previewMode","initWidget","handleDialogError","incommingParams","__localizationDataLoaded","makeContextParams","_localizableModelsCollector","Rows","sourceEntity","entityToBeSaved","_prepareLocalizedResult","entityNameIsId","loadWidget","entityInfo","changeEntityName","onDialogEssentialsChanged","widgetData","extObj","onLoadEntity","_handleDialogError","_e$message","showNoDataMessage","errorTitle","getGenericEntity","isNotEmpty","presetContext","prepareContext","filledObject","_vm$view$tabs$","singleView","singleViewServiceContextInfo","showNoFormMessage","objectCI","MxDialogManager","mxCommonDialogContentCtrl","mxDialogViewCtrl","viewsToHide","confirmationDialogEnabled","confirmationDialogDisabledWhenNoChanges","confirmationDialogTitle","confirmationDialogMessage","confirmationDialogActions","reloadApplicationOnSave","MxDialogManagerController","dialogContentCtrl","dialogViewCtrl","confirmationDialogActionsChangeHandler","viewsToHideChangeHandler","reloadApplicationOnSaveChangeHandler","confirmationDialogEnabledChangeHandler","confirmationDialogDisabledWhenNoChangesChangeHandler","confirmationDialogTitleChangeHandler","confirmationDialogMessageChangeHandler","ColumnSearchPreprocessor","_conditions","notPersonalizedColumns","setColumnConditions","newConditions","con","setPage","setPageSize","_pageSizes","_firstItemNumber","_lastItemNumber","_firstPage","_lastPage","_totalItems","_countProperties","_executor","personalizationKey","newPage","firstPage","newPageSize","prevPage","_checkFirstLastPage","ColumnAlignmentsEnum","Center","Disabled","ColumnTitleTypeEnum","IndividualDisplayString","FromExpression","NoTitle","ColumnDisplayTypeEnum","Visible","InvisibleByDefault","DisplayImageEnum","ImageWithText","ColorTypeEnum","CellText","CellBackground","RowText","RowBackground","ColumnSearchTypeEnum","Yes","No","AutomaticallyDefined","DataQueryEnums","_sortedColumns","sortedColumnsConfig","_applySortToColumns","_defaultSorting","defaultSorting","singleColumnMode","sortingPersonalization","_isColumnSortable","_checkSortedConfig","sorted","sortedColumn","BaseRequesterClassFactory","DataQueryRow","BaseRequester","setDataQuery","supportedPreprocessors","columnSearch","advanceSearch","getEntityTypes","updateOptions","getTotalItems","createEntity","createRow","_getDisplayEntity","initProperties","rawEntity","displayEntity","entitiesEqualityFunction","entityA","entityB","addRows","ClientDataRequesterClassFactory","ClientDataRequester","_prepareData","firstItemNumber","lastItemNumber","_itemType","changedColumns","RawValuePropertyName","getEnumValueTitle","enumTitle","_getRows","_dataQuery","_getFilteredRows","hideItemFieldName","_keywordFilter","kColumn","_isItemMatchCondition","_queryGroupFilter","_normalizeValue","parsed","conditionValues","columnSearchPreprocessor","advanceSearchPreprocessor","_sortItems","_checkEnums","compare","sortField","valueA","valueB","valuePropertyName","DataDefinitionRequesterFactory","DataDefinitionRequestOptions","DataDefinitionRequester","returnNoItems","prepareRequest","applyPreprocessors","exportData","preprocessorsForExport","loadEntityById","isEntityCorrect","RelationsRequesterFactory","RelationsRequester","_this$options$relatio","_this$options$relatio2","_this$options$relatio3","_this$options$relatio4","_this$options$relatio5","DataDefinitionQueryOptionsFactory","optionValue","MultiFragmentRequesterClassFactory","MultiFragmentRequester","_loadExpressions","expressions","HasQuery","ExpressionDependencies","IsSingleColumn","simpleChangedColumns","_objectId","displayEntities","_preprocessors$search","_preprocessors$column","_preprocessors$sortin","ServiceRequesterClassFactory","ServiceRequester","_executeOptions","expressionFunctions","identifier","DataQueryColumnFactory","columnFiltersFactory","simpleExpression","regAsql","regSubqueryParams","DataQueryColumn","sortingPriority","titleType","isDisplay","attributeValueType","isEnum","isPickup","expressionResult","enumerationAsObject","isSingleColumn","containsValue","TitleType","checkExpression","hasQuery","expressionDependencies","ExpressionType","ExpressionClassName","expressionClassName","rawValuePropertyName","TargetAttributePaths","IsSystem","SearchDisplayType","ReadOnly","initColumnFilter","_enumItemsLoader","expType","toLocaleUpperCase","lastIndex","DataQueryDefinitionFactory","filterChangeHandlers","_debouncedNotifyFilterChanged","_notifyFilterChanged","initColumns","_setKeywordOption","addChangeHandler","_onFilterChange","urgent","_internalChange","columnWithFilters","clearFilter","colsDef","getColumnByName","isExportSupported","serviceInfoOperationsExists","operationsExists","AdvanceSearchPreprocessor","preprocessorConstructors","_allSelectedRows","_selectedRowsOnPage","allSelectedRows","selectedRowsOnPage","selectedEntitiesOnPage","allSelectedEntities","selectionHandlers","rowChangeHandlers","debouncedLoadItems","requester","_requester","allEntityTypes","sortColumnsByPosition","_onColumnFiltersChanged","_reinitRowsWithNewColumns","updateRequestOptions","preprocessorsConfig","preprocessorFactory","preprocessorPromises","preprocessorKey","unsubscribers","applyColumnPersonalization","onDestroy","u","columnPersonalization","resetPersonalization","changeColumnsPositions","positionConfig","changeColumnSize","changeColumnVisibility","rowsEqualityFunction","loadItemsPromise","_latestLoadItemsPromise","_setItems","resetItems","syncSelectedItems","$IsNewRow","addEntitiesAsNewRows","createdRows","totalLoading","newSelectedRowsOnPage","selectedRow","changePageSelection","changeSelection","_this$preprocessors$p","allEntitiesSelected","allEntitiesOnPageSelected","toggleRowSelection","selectRow","resetSelection","addSelectionHandler","setEntity","addRowChangeHandler","DataQueryRowClassFactory","displayEntityGetter","_entity","_notChangedEntity","_displayEntity","_changedColumns","_debouncedDisplayEntityGetter","_displayEntityDefer","_updateDisplayEntity","_loadDefaultDisplayValues","_initProperty","_displayEntityPromise","_normalizeRawValue","getEntityDisplayValue","_setEntityValue","_rawValueHasChangedCalcValue","orderColumnName","imageColumnName","BaseFilter","allOperators","operatorOnForm","setDefault","getNewValue","getOperatorLabel","inlineValue","updateTitle","applyFilter","isValueChanged","operatorLabel","changeHandler","BaseInlineFilter","debouncedApply","applyInlineFilter","inlineFilter","_inlineValue","setDefaultInline","getNewInlineValue","isInlineValueChanged","inlineMode","syncFormFromInline","StringFilter","panelTemplate","valueOnForm","correct","validationMessage","BooleanFilter","NumberFilter","inlineMask","valueTo","DateFilter","_column","SelectFilter","showHiddenItems","panelInit","hiddenItemsExist","getSelectedItems","selectedItemsTitle","PickupFilter","GuidFilter","MxGridColumnFiltersFactory","filterOptions","MxFilterOperatorsFactory","getAllOperators","createClassFactory","ClassName","classFactory","instantiate","_createEmptyGroup","_filters","newFilters","newKeyword","SelectionGridFactory","ObjectsGrid","invertRelation","onCreateButtonClick","createdRow","createNewItem","selectedRows","afterEntitiesCreated","getCorrectEntityFilter","getPresetFields","updateRequest","SelectionTabController","SelectionGrid","gridHelperService","selectedType","onGridClick","runGenericPreview","onGridDblClick","editRow","selectionHandler","newType","createButtonHidden","addButtonHidden","removeButtonHidden","enableAdvanceSearch","fullHeightOptions","layoutBottomOffset","dialogButtonsOffset","getAllowedEntityTypes","allowedEntityTypeItems","SelectionView","SelectionViewLocals","MultiSelectionTabService","MxSearchPageContentCtrl","mxConfigService","_refreshInterval","subscribers","autoRefreshEnabled","MIN_REFRESH_INTERVAL","AVAILABLE_ROW_HEIGHTS","DEFAULT_ROW_HEIGHT","_initQueries","showQueryFilters","enableGroupingSubscribers","export","_exportData","onKeyDown","switchButtons","_registerSwitchViewsKey","prevPageBtn","_handleAriaPageSwitching","nextPageBtn","currentRow","previousRow","nextRow","_cleanSubscrReloads","_cleanReloadTimeout","_reloadDataCalled","_reloadData","_cleanReloadProcess","cleaner","enableSearchPageDataChangeSubscriber","loadContent","_vm$viewParameters","initQueries","currentViewDropDownIcon","_views","groupingPanelSubscriber","subscriberIndex","_loadContent","customFormView","i18nSPViews","contentWidgetName","hasBoardView","BoardViewEnabled","CalendarViewEnabled","GridViewEnabled","_defaultViewType","CustomSearchForm","customFormServiceContextInfo","AutoRefreshInGridEnabled","IsMultiFragment","RedFilter","YellowFilter","GreenFilter","RedTitle","YellowTitle","GreenTitle","CalendarSubjectField","CalendarDescriptionField","CalendarStartDateField","CalendarDefaultView","CalendarEndDateField","CalendarEventIsWholeDayColumn","CalendarEventIsReadOnlyColumn","backgroundKey","CalendarEventIsBackgroundColumn","CalendarShowHolidays","GroupByExtraDimension","CalendarExtraDimensionRelation","CalendarExtraDimensionImageColumn","calendarItemColorColumn","CalendarItemColorColumn","ShowDayView","ShowWeekView","ShowMonthView","DefaultBoardGroupingAttribute","dragAndDropEnabled","BoardDragAndDropEnabled","LoadOnlyFilteredData","loadOnlyFilteredData","subscriber","sharedContext","getRefreshInterval","addAutoRefreshConfig","configure","newRowHeight","setRowHeight","getRowHeight","savedRowHeight","setRowsColoringAttribute","getRowsColoring","coloring","getQuickFilters","savedQuickFilters","setQuickFilters","localizationLoader","interval","_enable","_interval","newInterval","isError","updateAutoRefreshSettings","enable","refreshConfig","saveRefreshInterval","maxPageSize","maxRowSize","warning","jumpToResult","_handleAriaSearch","gridEl","searchPageComponentName","searchPageStateName","searchPageRoute","getSearchRouteParams","modernLookSearchPageRedirectRoute","structures","redirectTo","$transition$","firstStructure","_filterItem$parameter","_filterItem$parameter2","filterIDs","item1","filterItem","router","stateService","getCustomDataSetRouteOptions","SearchPageContentComponent","urlTemplate","customDataSetRouteOptions","searchContextResolver","MxLandingPageCtrl","contentWidgetIdFromNavigation","isBigScreen","switchMode","unbind","landingPageId","enablePersonalization","EnablePersonalization","commonActions","MxCommonLandingPageContentCtrl","mobileModeEnabled","mobileBreakPoint","maxSizeX","maxSizeY","margins","colWidth","widgetsHTML","widgetsOpacity","backgroundStyle","opacity","availableAttr","availableMatch","_a$frame","_a$frame$origin","_b$frame","_b$frame$origin","_a$frame2","_a$frame2$origin","_b$frame2","_b$frame2$origin","aY","bY","aX","bX","backupW","backupY","backupX","_resizeHandler","getLandingConfig","landingPageComponentName","landingPageRoute","LandingPageComponent","LandingPageContentComponent","GridActionsPanelController","_this$parentViewContr","updateActions","executorGrid","enableSelectionPicker","externalSelectedItems","enablePaging","enableSearch","enableColumnSearch","createButtonInSelectionHidden","disableEdit","deleteActionIds","editDisableFieldName","removeDisableFieldName","showAddButton","showRemoveButton","clickAction","dblClickAction","headerHidden","exportButtonHidden","enableDragAndDrop","addItemTitle","editItemTitle","wizardId","sidePanelTabBody","MxGenericGridController","RelationsGrid","ObjectsDeprecatedGrid","DynamicGrid","MultiFragmentGrid","getWidgetId","addCurrentRowChangeHandler","currentRowChangeHandler","destroyed","initGrid","onChanges","MxExecutorGridController","GridEnums","disableDelete","gridValidationMessage","initRowHeightSettings","initRowColoring","_this$grid","_this$grid$executor","_this$grid2","_this$grid2$executor","_this$grid3","_this$grid3$executor","_this$grid3$executor$","_this$grid4","_this$grid5","formValidationMessage","renderMinHeight","Inline","EditForm","onItemDblClick","reorderHandler","onCellChanged","MxGridHelperService","editFormTabService","dataSourceConfig","defaultGridPreprocessorsConfig","wizardObjectIdBydId","initExecutor","IsStatic","IsRelation","getDefaultDQ","isMultifragment","initDQByDefinition","DataDefinitionGridTypes","isRelation","initStaticDQ","ValuePropertyName","getEntityTypesForCreate","runGenericPreviewAction","runGenericCreateAction","runGenericEditAction","openEditForm","getWizardObjectId","openWizard","wizardObjectId","wizardHeader","gridEnums","GenericEdit","ObjectGridOnClickActions","isGridButtonsVisible","createItems","deleteButtonHidden","createButtons","showResetSelection","showSelectEntireDataSet","setAsDraft","MxGridRenderCtrl","isVisibleWatcher","editedBooleanCell","quickFilterCell","iconCell","numberEditCell","iconEditCell","colorCell","colorEditCell","currencyEditCell","dateEditCell","selectItemCheckboxCell","readOnlyBooleanCellOneTime","readOnlyBooleanCell","actionRow","editForm","contrastColorCache","allowSearch","expandableRowTemplate","setFullHeight","draggableRows","rowDropped","selectItems","setRowInvisible","clearRowInvisible","refreshRow","highlightRows","highlightedRows","inlineEditMode","beginCellEdit","useUiGridDraggableRowsHandle","rowTemplate","cellEditableCondition","isEntityEditable","refreshData","selectionPickerHeight","firstVisibilityWatch","onInternalItemClick","onInternalRightItemClick","onInternalDblItemClick","onAllRowsSelectionClick","allRowsIsSelected","onRowSelectionClick","isSelect","isSelected","isInsidePanel","dialogBottomErrorsPlaceholder","additionalGap","nearestVisibleEl","buildStyles","withoutScrolling","isHighlighted","renderContainers","prevScrolltopPercentage","scrollToIfNecessary","editableCellTemplate","cellTemplate","_getCellTempate","rowColor","prevGridData","isTextWatchable","MxGridSelectionPickerCtrl","elementHeight","onChipDblClick","onChipRemoveClick","getDisplayNameFromChip","onHeightChanged","BaseGridGridFactory","initDataQueryExecutor","initCreateButtonItems","removeButtonDisabled","deleteButtonDisabled","_currentRowHandlers","_this$mxForm","_this$mxUiAccessibili","_this$mxForm2","_this$mxUiAccessibili2","onAddButtonClick","findExistingEntities","_modifyRow","notChangedEntity","editEntity","changedEntity","runGenericEdit","beforeEntityCreated","afterEntityCreationCancelled","notifyCreatedItemIsIncorrect","onRemoveButtonClick","removeEntities","onDeleteButtonClick","deleteItems","_isNewEntity","_getEditTitle","_this$serviceContext","_this$mxForm3","isGridReady","DynamicGridGridFactory","BaseGrid","dq","_internalCreatingEntity","_removeEntitiesFromData","removeItemsFromArray","MultiFragmentGridGridFactory","fName","newObjectId","ObjectsGridGridFactory","browseWhereClause","deleteActions","_this$parentView","_this$parentView$cont","removedFragmentIds","idA","idB","indexA","indexB","_doClickAction","ObjectsDeprecatedGridGridFactory","externalAddButtonHidden","externalRemoveButtonHidden","objectIDsMode","RelationsGridGridFactory","_this$relation","fragmentIds","restored","cleared","MxGenericGridComponent","MxExecutorGridComponent","MxGridActionsPanelComponent","MxGridControlPanelComponent","MxGridRenderComponent","MxGridSelectionPickerComponent","OwnershipService","getOwnershipTemplate","getLinkTemplate","getPickerTemplate","getControl","ShowOwnership","anchor","MxAttachmentDefaultProvider","errorFactory","apiController","getAuthHeader","uniqueFileId","xhr","XMLHttpRequest","abort","setRequestHeader","onprogress","onreadystatechange","createApiError","DONE","onloadstart","onabort","getToken","MxAttachmentService","processService","defaultProviderInstance","providerStorage","registerProvider","getRegisteredProvider","createForegroundProcess","Updated","Canceling","attachmentInfos","_options$objectIds","paramBindAttribute","getBindAttributeParameter","paramExcludedFileIds","getExcludedFileIdsParameter","excludedFileIds","flat","getCount","_options$objectIds2","sum","itemCount","UpdatedOn","UniqueFileId","Comment","getThumbnail","uploadedBy","UpdatedBy","StorageId","ProviderId","Uploaded","SendContentThroughServer","MaxFileSizeMb","Extensions","FileCountPerObject","parameterExcludedFileIds","getBindAttribute","lastIndexOfDot","Thumbnail","MxObjectAttachments","uploadOnly","filesExists","MxObjectAttachmentsCtrl","unsubscribeNotification","inited","AttachmentsViewMode","Tiles","_getCount","numOfFiles","objectTitle","unsafe","_getFiles","prompt","_onDownloadFiles","originalExtensions","fileLimitMessages","sizeInMb","getFileLimitsMessage","MxAttachmentsPickerController","refToPickerCtrl","mapFileItem","_loadItems","MxAttachmentProcessService","backgroundProcessService","preventHandler","returnValue","processItem","preventReload","NavigationItemsLoaderService","_navCachePromises","_navReqPromise","navigationOrderingPersonalization","navigationItemId","baseId","setId","currentNavId","dataSetWidgetId","_getNavigationItemsOfDataSetWidget","mapItems","isConfigurable","StructureId","StructureImplementationType","NodeId","IsDynamicStructureOnly","structureConfig","_childrenLoaderPromise","_childrenDynamicLoader","DefaultFilter","CustomController","ControllerUrl","ExternalUrl","openInNewWindow","OpenInNewWindow","AvailableInSearch","HideLeftSideNavigation","quickFilterFlags","parentFilter","applyPersonalizedPosition","sortFiltersTree","_createFilterNavigationItem","_buildFiltersTree","_isConfigurableItem","mapNavigationItem","mergeNavItems","_mergeNavItems","originNav","loadedNav","reloadAlreadyLoadedForMerge","_mergeNavItemsDeleting","_mergeNavItemsAddingAndEditing","_reloadAlreadyLoadedForMerge","loadedNavItem","originNavItem","dynamicChildrenLoaded","loadDynamicChildren","_mergeNavItemsAddingAndEditing2","originParent","configurationModeOn","loadedItem","newChildren","_visitChildrenTree","_loadDynamicChildren","StructureNavigationItemImplementation","_dataDefinitionChildrenLoader","dataDefinitionChildrenLoader","_serviceChildrenLoader","serviceChildrenLoader","setStructureChildrenProperties","forcedValue","filtersOrdering","sortByPosition","positionA","positionB","filterNavigation","__fromContext","draggable","existedNavItems","getAllNavigationFiltersOrdering","loadedNavData","MxNavigationItemConfigurationActionsService","getAddingChildItemAction","_navigationItem$routi","getFilterActions","_getEditFilterActionController","_getDeleteFilterActionController","addAction","_getAddFilterChildActionController","_setUIToken","mxShellNavItemDirective","favouriteMode","MxShellNavItemCtrl","dragDrop","navigationItemConfigurationActionsService","navigationConfigurationModeOn","NavigationConfigurationModeChanged","beingConfigured","NavigationItemEnteredConfigurationMode","_switchConfigurationMode","_tryShowMoreItemsDebounced","showMoreBtn","isRootItemChildrenDynamicLoader","_handleItemClick","itemTitleClass","hasChildrenCommonFilter","favoriteFilter","contextMenuData","itemContextMenuExpanded","itemContextMenu","loadChildren","configurationActions","itemBtnEl","handleArrowClick","switchConfigurationMode","_onDrop","dragModeOn","_formatAsHtmlClass","_tryInitShowMore","receiverItem","movedItemName","changeNavigationOrdering","handleItemClickPromise","setCurrentNavigationItem","TrackTelemetry","_vm$item$children","__limitTo","mxShellNavigationPanelComponent","MxShellNavigationPanelCtrl","changeFilterText","oldFilterText","markFilterTextMatched","_settingsLabel","isSettingLabelVisible","isNavLoaded","allNavItems","_getClosestSibling","activeEl","downOtherwiseUp","currentNavItemIndex","initKeyboardControl","filterNavTree","matchesFilterCriteria","MxNavigationProviderService","_load","loadOnly","findCurrentNavItem","getRoutingUrl","p1","routingUrl","currentAsChild","MxNavigationService","navigationProviderService","selfContract","showAllChildren","checkJustVisible","filterTextMatchedItem","showAllChildrenForJustFoundItem","_titleLowerCase","_expandAllParents","setNavigationItemById","_x17","_setNavigationItemById","_getFlatArrayOfNavItems","_changeNavigationOrdering","navigationLoaderPromise","partiallyOpenedItem","_setNavigationItemFromRoute","_virtualCollectionChildrenLoaded","_movedItem$parameters","movedItem","_x10","_getNavigationItemByName","getNavigationItemByName","groupId","receiverIndex","movedItemIndex","filterNavigationItem","getNavigationItemOfFilter","saveNavigationFiltersOrdering","parentItem","findByRouteParams","parentRoot","loop","_parent","equalForParams","_loadChildren","findDynamicChild","_findDynamicChild","parenId","getItemById","children2","_getNavigationItem","getNavigationItemById","_getNavigationItemById","_loadNavigationItems","loadNavigationItems","handleItem","defaultRoute","_x13","_getDefaultRoute","getDefaultRoute","routes","getRoutesFromNavigationItems","newCurrentNavItem","getRoutesFromNavigationItemsRecursive","childrenRoutes","childRouteName","getClosestRoutedNavItem","_getDefaultNavigationItem","defaultNavigationItem","getDefaultFilterNavigationItem","_x12","_getDefaultFilterNavigationItem","defaultFilterId","_x16","_getDefaultFilterId","getDefaultFilterId","_child$parameters","_item$routingItem","_x11","getDefaultNavigationItem","getNavigateToItem","_x14","_getNavigateToItem","_goToRoute","navigateToItem","getDefaultFiltersForNavItem","newExtraItem","previousItem","_x18","_setCurrentNavigationItem","activatingPromise","_x19","_activateNavigationItem","activateNavigationItem","isAncestor","_x15","goToRoute","getAllChildren","navItems1","mxShellToolbarNavigationPopupItemComponent","MxShellToolbarNavigationPopupControllerItem","toolbarNavigationService","mxShellToolbarNavigationPopupComponent","MxShellToolbarNavigationPopupController","firstVisibleLevel","MAX_CHILDREN_LEVEL","existLevelsOfChildren","mxShellToolbarNavigationComponent","MxShellToolbarNavigationController","relinkEvent","ToolbarNavigationLoaded","MxToolbarNavigationService","MAX_CHILDREN_NUMBER","showMoreClick","findFirstClickableChild","hoveredRootItem","clickableChild","numOfLevels","existLevels","initChildren","initChildrenLevels","showRootMoreButton","rootMoreChildren","rootMoreItem","arrayOfChildren","mxNavigationModule","_configurationModeOn","AgentAppInitializerService","embeddedViewService","applicationProviderService","pushService","shellAppInitializerService","agentTelemetryService","initAgentApp","initActionCustomize","initToolbar","registerSettingsNavigation","runDataModelProfiler","runPerformanceProfiler","initAgentRouter","isCustomisable","defaultRouteNotSetState","shellState","initShellStates","settingsType","dmDebugIsOn","debugIsOn","concurrencyDebugIsOn","registerDebugMethods","profileOnTime","onMethodName","offMethodName","debugVariableName","setDebugKey","_oldWatcherCounter","___mx$digestCounter","$watchers","_countWatchers","wDelta","_performanceDebugOn","MxPublicService","authBehaviourProviderService","whereExpression","filterParams","req","prepareFilterExpression","others","eventCode","destroyHandler","dispatch","queryStringParams","skipNotification","_len","_key","getFormattedCurrency","currency","useSymbols","openListPreview","okLabel","confirmHtml","extraLines","ariaMessage","getUserProfile","publicModule","shellAgentModule","extensionGalleryModule","pushNotificationsModule","dialogPageModule","dataQueryModule","multiSelectionTabModule","editFormModule","searchPageModule","landingPageModule","executorGridModule","ownershipModule","attachmentModule","shellModule","agentModule","shellAppModule","$transitionsProvider","keepLocationAfterInitShellState","SignupComponent","SignupComponentCtrl","signupService","signup","signupUser","signupVerificationState","SignupVerificationComponent","SignupVerificationComponentCtrl","SignupService","signupState","signUpConfig","$uiRouterProvider","stateRegistry","RegistrationFormComponent","RegistrationFormComponentCtrl","userInfo","hideForm","_vm$view$context$SPSU","userNameForPasswordsManager","SPSUserClassBase","MailAddress","UserRegistrationModuleLazy","userRegistrationRootState"],"sourceRoot":""}