{"version":3,"file":"shell/shell.js?cacheBreaker=a4316cdeea33d9d56ff4","mappings":"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,IAAI,gG8DrNV,mrB9DsNT5qB,EAAe4qB,IAAI,0E+DtNV,u0C/DuNT5qB,EAAe4qB,IAAI,sEgEvNV,8jChEwNT5qB,EAAe4qB,IAAI,4FiExNV,63FjEyNT5qB,EAAe4qB,IAAI,oGkEzNV,yIlE0NT5qB,EAAe4qB,IAAI,iGmE1NV,4lBnE2NT5qB,EAAe4qB,IAAI,2GoE3NV,wOpE4NT5qB,EAAe4qB,IAAI,uGqE5NV,mMrE6NT5qB,EAAe4qB,IAAI,mGsE7NV,qItE8NT5qB,EAAe4qB,IAAI,6GuE9NV,8OvE+NT5qB,EAAe4qB,IAAI,8GwE/NV,8OxEgOT5qB,EAAe4qB,IAAI,mGyEhOV,6HzEiOT5qB,EAAe4qB,IAAI,0F0EjOV,8vF1EkOT5qB,EAAe4qB,IAAI,oF2ElOV,koJ3EmOT5qB,EAAe4qB,IAAI,6F4EnOV,yiG5EoOT5qB,EAAe4qB,IAAI,uH6EpOV,koB7EqOT5qB,EAAe4qB,IAAI,oH8ErOV,0V9EsOT5qB,EAAe4qB,IAAI,2G+EtOV,2kC/EuOT5qB,EAAe4qB,IAAI,8GgFvOV,4+DhFwOT5qB,EAAe4qB,IAAI,0GiFxOV,61CjFyOT5qB,EAAe4qB,IAAI,0GkFzOV,k6BlF0OT5qB,EAAe4qB,IAAI,2GmF1OV,wgCnF2OT5qB,EAAe4qB,IAAI,yGoF3OV,0sBpF4OT5qB,EAAe4qB,IAAI,oGqF5OV,+SrF6OT5qB,EAAe4qB,IAAI,0FsF7OV,m3CtF8OT5qB,EAAe4qB,IAAI,8FuF9OV,q8KvF+OT5qB,EAAe4qB,IAAI,gHwF/OV,8+UxFgPT5qB,EAAe4qB,IAAI,sGyFhPV,k/BzFiPT5qB,EAAe4qB,IAAI,6E0FjPV,mgC1FkPT5qB,EAAe4qB,IAAI,sF2FlPV,qxD3FmPT5qB,EAAe4qB,IAAI,kF4FnPV,y3E5FoPT5qB,EAAe4qB,IAAI,8E6FpPV,gV7FqPT5qB,EAAe4qB,IAAI,wE8FrPV,yuJ9FsPT5qB,EAAe4qB,IAAI,yH+FtPV,qsB/FuPT5qB,EAAe4qB,IAAI,iHgGvPV,wvDhGwPT5qB,EAAe4qB,IAAI,+FiGxPV,k2DjGyPT5qB,EAAe4qB,IAAI,6GkGzPV,iclG0PT5qB,EAAe4qB,IAAI,uGmG1PV,sPnG2PT5qB,EAAe4qB,IAAI,wHoG3PV,0kBpG4PT5qB,EAAe4qB,IAAI,mHqG5PV,miCrG6PT5qB,EAAe4qB,IAAI,qGsG7PV,k/HtG8PT5qB,EAAe4qB,IAAI,gGuG9PV,yqDvG+PT5qB,EAAe4qB,IAAI,kFwG/PV,4vCxGgQT5qB,EAAe4qB,IAAI,oFyGhQV,0/BzGiQT5qB,EAAe4qB,IAAI,wG0GjQV,qvB1GkQT5qB,EAAe4qB,IAAI,oG2GlQV,m3D3GmQT5qB,EAAe4qB,IAAI,4F4GnQV,wgD5GoQT5qB,EAAe4qB,IAAI,qG6GpQV,kiC7GqQT5qB,EAAe4qB,IAAI,sH8GrQV,wW9GsQT5qB,EAAe4qB,IAAI,mH+GtQV,upF/GuQT5qB,EAAe4qB,IAAI,sHgHvQV,o3BhHwQT5qB,EAAe4qB,IAAI,6HiHxQV,guBjHyQT5qB,EAAe4qB,IAAI,yHkHzQV,4oBlH0QT5qB,EAAe4qB,IAAI,oHmH1QV,k3BnH2QT5qB,EAAe4qB,IAAI,+HoH3QV,8iCpH4QT5qB,EAAe4qB,IAAI,qHqH5QV,mSrH6QT5qB,EAAe4qB,IAAI,2GsH7QV,2etH8QT5qB,EAAe4qB,IAAI,+GuH9QV,uiBvH+QT5qB,EAAe4qB,IAAI,sGwH/QV,qlExHgRT5qB,EAAe4qB,IAAI,wGyHhRV,gzJzHiRT5qB,EAAe4qB,IAAI,uF0HjRV,mnB1HkRT5qB,EAAe4qB,IAAI,yF2HlRV,80G3HmRT5qB,EAAe4qB,IAAI,8E4HnRV,mkC5HoRT5qB,EAAe4qB,IAAI,sG6HpRV,2P7HqRT5qB,EAAe4qB,IAAI,8F8HrRV,23B9HsRT5qB,EAAe4qB,IAAI,yF+HtRV,ktB/HuRT5qB,EAAe4qB,IAAI,0FgIvRV,s2ChIwRT5qB,EAAe4qB,IAAI,oFiIxRV,65CjIyRT5qB,EAAe4qB,IAAI,wEkIzRV,swBlI0RT5qB,EAAe4qB,IAAI,6FmI1RV,4jEnI2RT5qB,EAAe4qB,IAAI,2EoI3RV,q+CpI4RT5qB,EAAe4qB,IAAI,mFqI5RV,omBrI6RT5qB,EAAe4qB,IAAI,oFsI7RV,snCtI8RT5qB,EAAe4qB,IAAI,w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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/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/ResetPassword/resetPassword.service.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-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/core/utils/mx-tinymce/mx-tinymce-utils.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-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-toolbar/mx-shell-toolbar.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-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-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-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-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-routing-configuration-service.js","webpack://@dwp/solution-builder/./packages/Shell/Pandora/services/index.ts","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-feedback-provider-service.ts","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/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-calendar/mx-calendar-resource/mx-calendar-resource.controller.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-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/services/dataset-row-identity.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/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-enum-picker/mx-enum-picker.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-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-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.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-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-ui-manager/mx-ui-manager.component.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/components/mx-view-group-by/index.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-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/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/data-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/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-enums.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/search-query-service.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/index.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/api-token.service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/filter-expression-service.ts","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/deep-linking-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/embedded-view-service.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/schema-service.ts","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/services/widget-manager.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/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.module.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/ExtensionGallery/mx-extension-gallery.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/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/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-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/DialogPage/dialog-factory.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-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/modules/DataQueryModel/column-filters/mx-grid-column-filters-factory.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/GridEnums.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/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-helper.service.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/modules/Ownership/ownership.module.js","webpack://@dwp/solution-builder/./packages/Shell/PandoraSolutionBuilderAgent/modules/Ownership/ownership.service.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-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.module.ts","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.service.ts","webpack://@dwp/solution-builder/./packages/Shell/Navigation/navigation-items-loader-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-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/navigation-item-configuration-actions-service.js","webpack://@dwp/solution-builder/./packages/Shell/Navigation/mx-shell-nav-manager.ts","webpack://@dwp/solution-builder/./packages/Shell/Navigation/model/navigation-item.ts","webpack://@dwp/solution-builder/./packages/Shell/PublicModule/public.module.ts","webpack://@dwp/solution-builder/./packages/Shell/PublicModule/public.service.ts","webpack://@dwp/solution-builder/./packages/Shell/shell.js","webpack://@dwp/solution-builder/./packages/Shell/agent-app-initializer.service.ts","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.module.js","webpack://@dwp/solution-builder/./packages/SignUp/signup.service.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\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","'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","// 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\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\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\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\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\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\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\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\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\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\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\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\tconst needHideWidget =\r\n\t\t\t\t\tdata.navigationItem &&\r\n\t\t\t\t\t(data.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\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\tthis._itemsRequest = null;\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\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()\r\n\t\t\t\t\t\t\t\t\t\t.then(addActions)\r\n\t\t\t\t\t\t\t\t\t\t.then(addNavigationItems)\r\n\t\t\t\t\t\t\t\t\t\t.then(addSettings)\r\n\t\t\t\t\t\t\t\t\t\t.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","(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\t'$ocLazyLoad',\r\n\t\t'mx.components.LazyLoadCfg',\r\n\t\tfunction tinymceUtils(mxI18n, mxConfig, $ocLazyLoad, lazyLoadCfg) {\r\n\t\t\treturn {\r\n\t\t\t\tgetMceI18nOptions: getMceI18nOptions,\r\n\t\t\t\textendMissingI18n: extendMissingI18n,\r\n\t\t\t\tpostProcessImageSourcesOnPaste: postProcessImageSourcesOnPaste,\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\r\n\t\t\tasync function postProcessImageSourcesOnPaste(editor, pasteEvent) {\r\n\t\t\t\tconst editorEl = editor.bodyElement || editor.contentDocument;\r\n\t\t\t\tconst replaceImgSrc = (srcFrom, srcTo) => {\r\n\t\t\t\t\t$(editorEl).find(`img[src=\"${srcFrom}\"]`).attr('src', srcTo).attr('data-mce-src', srcTo);\r\n\t\t\t\t};\r\n\t\t\t\tconst clipboardData = pasteEvent.clipboardData || window.clipboardData;\r\n\t\t\t\tconst clipboardTypes = clipboardData.types;\r\n\r\n\t\t\t\t// Try to detect local images with src=\"file:///...\" in clipboard and replace them with base64\r\n\t\t\t\t// For MS Word / Outlook copy-paste (with RTF format)\r\n\t\t\t\tif (clipboardTypes.includes('text/html')) {\r\n\t\t\t\t\tlet htmlAsStr = clipboardData.getData('text/html');\r\n\t\t\t\t\tconst html = new DOMParser().parseFromString(htmlAsStr, 'text/html');\r\n\t\t\t\t\tconst localImages = $(html).find('img[src^=\"file:///\"]');\r\n\r\n\t\t\t\t\tif (localImages.length && clipboardTypes.includes('text/rtf')) {\r\n\t\t\t\t\t\tconst rtf = clipboardData.getData('text/rtf');\r\n\t\t\t\t\t\tconst imagesFromRTF = await extractImagesFromRTF(rtf);\r\n\t\t\t\t\t\tif (localImages.length === imagesFromRTF.length) {\r\n\t\t\t\t\t\t\tlocalImages.each((index, img) => {\r\n\t\t\t\t\t\t\t\tconst base64 = imagesFromRTF[index];\r\n\t\t\t\t\t\t\t\treplaceImgSrc(img.src, base64);\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\t// Try to detect local images with src=\"file:///...\" in clipboard and replace them with base64\r\n\t\t\t\t\t// For Excel (with VML format)\r\n\t\t\t\t\tif ($(editorEl).find('img[src^=\"file:///\"]').length) {\r\n\t\t\t\t\t\tconst imagesFromVML = await extractImagesFromVML(htmlAsStr);\r\n\t\t\t\t\t\timagesFromVML.forEach((img) => {\r\n\t\t\t\t\t\t\tif (img.vml.length === 1) {\r\n\t\t\t\t\t\t\t\treplaceImgSrc(img.src, img.vml[0].base64);\r\n\t\t\t\t\t\t\t} else if (img.vml.length > 1) {\r\n\t\t\t\t\t\t\t\tconst imgEl = $(editorEl).find(`img[src=\"${img.src}\"]`);\r\n\t\t\t\t\t\t\t\tif (imgEl.length) {\r\n\t\t\t\t\t\t\t\t\timg.vml.forEach((vmlImg) => {\r\n\t\t\t\t\t\t\t\t\t\timgEl.before(``);\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\timgEl.remove();\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\t// Try to detect remote images with src=\"http...\" and replace them with base64\r\n\t\t\t\t\tconst remoteImages = $(html).find('img[src^=\"http\"],img[src^=\"//\"]');\r\n\t\t\t\t\tif (remoteImages.length) {\r\n\t\t\t\t\t\tremoteImages.each(async (index, img) => {\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\tconst base64 = await imgUrlToBase64(img.src);\r\n\t\t\t\t\t\t\t\treplaceImgSrc(img.src, base64);\r\n\t\t\t\t\t\t\t} catch {\r\n\t\t\t\t\t\t\t\t// do nothing\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\tasync function extractImagesFromRTF(rtfContent) {\r\n\t\t\t\tlet rtf = rtfContent;\r\n\r\n\t\t\t\t// Parse RTF content extracting images (searching for `{\\pict ...}`)\r\n\t\t\t\tconst notPictExp = /{\\\\(?!pict)[^{^}]*}/g;\r\n\t\t\t\twhile (notPictExp.test(rtf)) {\r\n\t\t\t\t\trtf = rtf.replace(notPictExp, '\\r\\n');\r\n\t\t\t\t}\r\n\t\t\t\tconst pictExp = /{\\\\pict[^{^}]*(pngblip|jpegblip)[^{^}]*}/g;\r\n\t\t\t\tlet pictures = rtf.match(pictExp) || [];\r\n\t\t\t\tpictures = pictures.map(async (pic) => {\r\n\t\t\t\t\tconst match = pic.match(/{\\\\pict[^{^}]*\\\\(pngblip|jpegblip)[^{^}^\\s]*([^{^}]*)}/);\r\n\t\t\t\t\tconst mimeType = match[1] === 'pngblip' ? 'image/png' : match[1] === 'jpegblip' ? 'image/jpeg' : undefined;\r\n\t\t\t\t\tconst hexData = match[2].replace(/[\\r\\n\\s]/g, '');\r\n\t\t\t\t\treturn await hexToBase64(hexData, mimeType);\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn await Promise.all(pictures);\r\n\t\t\t}\r\n\r\n\t\t\tasync function extractImagesFromVML(htmlStr) {\r\n\t\t\t\t// Parse VML content extracting images (searching for ``)\r\n\t\t\t\tconst preparedHtml = htmlStr.replace(//gi, '');\r\n\t\t\t\tconst html = $(new DOMParser().parseFromString(preparedHtml, 'text/html'));\r\n\t\t\t\tconst localImgs = html.find('img[src^=\"file:///\"]');\r\n\t\t\t\tlet parsedImgArr = [];\r\n\t\t\t\tif (localImgs.length) {\r\n\t\t\t\t\tawait $ocLazyLoad.load(`${lazyLoadCfg.componentsDir}jszip/dist/jszip.min.js`);\r\n\t\t\t\t\tparsedImgArr = await Promise.all(\r\n\t\t\t\t\t\tlocalImgs.map(async (index, img) => {\r\n\t\t\t\t\t\t\tconst imgIDs = $(img).attr('v:shapes').split(' ');\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\tsrc: img.src,\r\n\t\t\t\t\t\t\t\tvml: await Promise.all(\r\n\t\t\t\t\t\t\t\t\timgIDs.map(async (imgID) => {\r\n\t\t\t\t\t\t\t\t\t\tconst zippedImgData = html.find(`#${imgID}`).attr('o:gfxdata');\r\n\t\t\t\t\t\t\t\t\t\tconst arrayBuffer = Uint8Array.from(atob(zippedImgData), (d) => d.charCodeAt(0));\r\n\t\t\t\t\t\t\t\t\t\tconst zip = await window.JSZip.loadAsync(arrayBuffer);\r\n\t\t\t\t\t\t\t\t\t\tconst unzippedImg = zip.file(/clipboard\\/media\\//)[0];\r\n\t\t\t\t\t\t\t\t\t\tconst imgName = unzippedImg.name.toLowerCase();\r\n\t\t\t\t\t\t\t\t\t\tconst mimeType =\r\n\t\t\t\t\t\t\t\t\t\t\timgName.endsWith('.jpg') || imgName.endsWith('.jpeg') || imgName.endsWith('.jpe')\r\n\t\t\t\t\t\t\t\t\t\t\t\t? 'image/jpeg'\r\n\t\t\t\t\t\t\t\t\t\t\t\t: imgName.endsWith('.gif')\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 'image/gif'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 'image/png';\r\n\t\t\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\t\t\tname: imgName,\r\n\t\t\t\t\t\t\t\t\t\t\tbase64: await binaryToBase64(await unzippedImg.async('uint8array'), mimeType),\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 parsedImgArr;\r\n\t\t\t}\r\n\r\n\t\t\tasync function imgUrlToBase64(url) {\r\n\t\t\t\tconst response = await fetch(url);\r\n\t\t\t\tif (!response.ok) {\r\n\t\t\t\t\tthrow new Error(`Status: ${response.status}, Type: ${response.type}`);\r\n\t\t\t\t}\r\n\t\t\t\tconst blob = await response.blob();\r\n\t\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\t\tif (!blob?.type?.startsWith('image/')) {\r\n\t\t\t\t\t\treject('Not Image type: ', blob?.type);\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst reader = new FileReader();\r\n\t\t\t\t\treader.onloadend = () => resolve(reader.result);\r\n\t\t\t\t\treader.onerror = reject;\r\n\t\t\t\t\treader.readAsDataURL(blob);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tasync function hexToBase64(hexString, mimeType) {\r\n\t\t\t\tconst binaryData = new Uint8Array(hexString.length / 2);\r\n\t\t\t\tfor (let i = 0; i < hexString.length; i += 2) {\r\n\t\t\t\t\tbinaryData[i / 2] = parseInt(hexString.substr(i, 2), 16);\r\n\t\t\t\t}\r\n\t\t\t\treturn binaryToBase64(binaryData, mimeType);\r\n\t\t\t}\r\n\r\n\t\t\tasync function binaryToBase64(binaryData, mimeType) {\r\n\t\t\t\tconst blob = new Blob([binaryData], { type: mimeType });\r\n\t\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\t\tconst reader = new FileReader();\r\n\t\t\t\t\treader.onload = () => resolve(reader.result);\r\n\t\t\t\t\treader.onerror = (err) => reject(err);\r\n\t\t\t\t\treader.readAsDataURL(blob);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\t]);\r\n})();\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\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\r\n\t\tif (this.loadOnTyping) {\r\n\t\t\tthis._items = [];\r\n\t\t}\r\n\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\tsetTimeout(() => {\r\n\t\t\t\tif (this.searchInput?.is(':visible')) {\r\n\t\t\t\t\tthis.searchInput.focus();\r\n\t\t\t\t}\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\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","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\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","'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","(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 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\tconst title = navigationItem?.title || context.title;\r\n\t\t\tgroupsObj[title] = groupsObj[title] || {\r\n\t\t\t\tgroupName: title,\r\n\t\t\t\tsearchContexts: [],\r\n\t\t\t\tindex: navigationItem?.index || 0,\r\n\t\t\t};\r\n\t\t\tgroupsObj[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\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\t? mx.shell.ActionContextType.Single\r\n\t\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\t? mx.shell.ActionDeviceVisibility.MobileOnly\r\n\t\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\t? new Function('action', 'return ' + g1)(action)\r\n\t\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\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\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 { 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","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","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","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(\r\n\t\tprivate readonly http: HttpService,\r\n\t\tprivate readonly userProfileService: UserProfileService,\r\n\t\tprivate readonly deviceService: DeviceService\r\n\t) {}\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 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(\r\n\t\tprivate readonly http: HttpService,\r\n\t\tprivate readonly config: ConfigService\r\n\t) {}\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","/**\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","'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 idAttrNameCamelCase = `${propertyNameCamelCase}Id`;\r\n\t\tconst idValue = $attrs[idAttrNameCamelCase];\r\n\r\n\t\tif (typeof idValue === 'string' && idValue.length > 0) {\r\n\t\t\tthis.initComponentFormat(idAttrNameCamelCase);\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(idAttrName: string): void {\r\n\t\tconst { $attrs, onChanged, propertyName } = this.props;\r\n\r\n\t\tthis.id = this.initInterpolatedValue(idAttrName, (newValue) => {\r\n\t\t\tthis.id = newValue;\r\n\t\t\tonChanged?.(this);\r\n\t\t});\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\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","'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","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","// 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\tthis.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\t})\r\n\t\t\t\t: // Internal handler\r\n\t\t\t\t\tthis.$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\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\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","'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","// 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\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, undefined, this.quickFilterPreprocessor?.filters);\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.getGroupingTree = function (columns) {\r\n\treturn this.dataQueryExecutor.getGroupingTree(columns, this.quickFilterPreprocessor?.filters);\r\n};\r\n\r\nMxDataQueryList.prototype.getDataCount = async function () {\r\n\tconst parts = await this._getParts();\r\n\treturn this.dataQueryExecutor.getDataCount(parts, this.quickFilterPreprocessor?.filters);\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), this.quickFilterPreprocessor?.filters);\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","'use strict';\r\n\r\nMxEnumPickerCtrl.$inject = ['$q', '$scope', 'mx.SolutionBuilderAgent.EntityService'];\r\n\r\nexport default function MxEnumPickerCtrl($q, $scope, mxEntityService) {\r\n\tvar vm = this;\r\n\tvar _filter, _entityClassName;\r\n\r\n\tvm.$onInit = function () {\r\n\t\tvm.items = null;\r\n\t\t_filter = vm.filter;\r\n\t\t_entityClassName = vm.entityClassName;\r\n\r\n\t\tObject.defineProperty(vm, 'filter', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn _filter;\r\n\t\t\t},\r\n\t\t\tset: function (value) {\r\n\t\t\t\t_filter = value;\r\n\t\t\t\treloadItems();\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(vm, 'entityClassName', {\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\tif (_entityClassName !== value) {\r\n\t\t\t\t\t_entityClassName = value;\r\n\t\t\t\t\treloadItems();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t});\r\n\t};\r\n\r\n\tasync function reloadItems() {\r\n\t\tconst items = await vm.loadItems();\r\n\t\t$scope.$evalAsync(() => {\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","// 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: ' 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\tif (view.context) {\r\n\t\t\t\t\t\tview.context._displayName = params.displayName;\r\n\t\t\t\t\t}\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.ObjectTypeChanged, async (e, params) => {\r\n\t\t\tconst changedViewIndex = favouriteViews.findIndex((view) => view.id === params.objectId && view.type === params.entityType);\r\n\r\n\t\t\tif (changedViewIndex >= 0) {\r\n\t\t\t\tconst changedView = favouriteViews[changedViewIndex];\r\n\t\t\t\tconst favouriteObject = sidePanelService.getObjectDetailsFromView(changedView);\r\n\t\t\t\tfavouriteObject.EntityType = params.newEntityType;\r\n\t\t\t\tfavouriteViews[changedViewIndex] = await widgetManager.getPreviewView(favouriteObject);\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()).filter(\r\n\t\t\t// distinct filter is necessary to fix already saved duplications in personalization\r\n\t\t\t(objectDetails, index, fullArray) => fullArray.findIndex(({ Id }) => Id === objectDetails.Id) === index\r\n\t\t);\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(\r\n\t\treadonly $element: IAugmentedJQuery,\r\n\t\treadonly $scope: IScope,\r\n\t\treadonly $timeout: ITimeoutService,\r\n\t\treadonly i18n: I18n\r\n\t) {}\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;","import { ContentWidgetDialogAction } from '../../../PandoraSolutionBuilderAgent/model/enumerations';\r\n\r\nangular.module('mx.SolutionBuilderAgent').component('mxObjectJournal', {\r\n\trequire: {\r\n\t\tmxServiceContext: '?^mxServiceContext',\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\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\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\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-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: true,\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\teditor.on('paste', async function (pasteEvent) {\r\n\t\t\t\t\tawait mxTinymceUtils.postProcessImageSourcesOnPaste(editor, pasteEvent);\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","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","// 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\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","'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","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 { 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","'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","// 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\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\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\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\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\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\tconst 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, allowedTypes) {\r\n\t\treturn _getDefinition(null, name, null, null, allowedTypes);\r\n\t}\r\n\r\n\tfunction getGridDefinitionByClassName(className, allowedTypes) {\r\n\t\treturn _getDefinition(null, null, className, null, allowedTypes);\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, allowedTypes) {\r\n\t\tconst params = {};\r\n\t\tlet 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}_id_${id}`;\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}`;\r\n\t\t\t} else if (name) {\r\n\t\t\t\tparams.name = name;\r\n\t\t\t\tcacheKey = `name_${name}`;\r\n\t\t\t} else if (entityClass) {\r\n\t\t\t\tparams.entityClass = entityClass;\r\n\t\t\t\tcacheKey = `class_${entityClass}`;\r\n\t\t\t}\r\n\r\n\t\t\tif (allowedTypes) {\r\n\t\t\t\tcacheKey += `_${allowedTypes}`;\r\n\t\t\t\tparams.allowedTypes = allowedTypes;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcacheKey = cacheKey?.toLowerCase();\r\n\r\n\t\tlet 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\tconst allowedTypesSuffix = allowedTypes ? `_${allowedTypes}` : '';\r\n\r\n\t\t\t\tif (dataQueryDef.IsDefault && dataQueryDef.SchemaClassName) {\r\n\t\t\t\t\tcache.columns[`class_${dataQueryDef.SchemaClassName}${allowedTypesSuffix}`.toLowerCase()] = dataQueryDef;\r\n\t\t\t\t}\r\n\t\t\t\tcache.columns[`name_${dataQueryDef.Name}${allowedTypesSuffix}`.toLowerCase()] = dataQueryDef;\r\n\t\t\t\tcache.columns[`id_${dataQueryDef.Id}${allowedTypesSuffix}`.toLowerCase()] = dataQueryDef;\r\n\r\n\t\t\t\tif (widgetId) {\r\n\t\t\t\t\tcache.columns[`widgetId_${widgetId}_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\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\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\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\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\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\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","'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","'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\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","'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\t? executeOptions.listUrl.replace('?', '/$count?')\r\n\t\t\t\t\t\t: executeOptions.listUrl[executeOptions.listUrl.length - 1] === '/'\r\n\t\t\t\t\t\t\t? executeOptions.listUrl + '$count'\r\n\t\t\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","import { EventCodes } from '../../../../App/model/event-codes';\r\n\r\nQuickFilterPreprocessorFactory.$inject = ['mx.SolutionBuilderAgent.BasePreprocessor', 'mx.shell.EventService'];\r\nexport function QuickFilterPreprocessorFactory(BasePreprocessor, eventService) {\r\n\tclass QuickFilterPreprocessor extends BasePreprocessor {\r\n\t\tconstructor() {\r\n\t\t\tsuper();\r\n\t\t\tthis.options = {};\r\n\t\t\tthis.type = mx.SolutionBuilderAgent.PreprocessorType.QuickFilter;\r\n\t\t\tthis.parts = 0;\r\n\t\t\tthis.titles = {};\r\n\t\t\tthis.filters = [];\r\n\t\t\treturn this;\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._initParams(parameters);\r\n\t\t}\r\n\r\n\t\t_initParams(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\tbuild() {\r\n\t\t\treturn this.executor.quickFiltersBuild(this.options);\r\n\t\t}\r\n\r\n\t\tload(_widgetId, dataQueryId, parameters) {\r\n\t\t\tthis._initParams(parameters);\r\n\t\t}\r\n\r\n\t\tcallChanged(color) {\r\n\t\t\tthis.filters = [];\r\n\t\t\tthis.color = color;\r\n\t\t\tconst red = (color & 1) === 1 && this.options.red;\r\n\t\t\tconst yellow = (color & 2) === 2 && this.options.yellow;\r\n\t\t\tconst 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() {\r\n\t\t\tthis.callChanged(0);\r\n\t\t}\r\n\r\n\t\tgetFilters() {\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(quickFilters) {\r\n\t\t\tconst 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(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.dataQueryList.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\tgetGroupingTree: getGroupingTree,\r\n\t\t};\r\n\r\n\t\tfunction getGroupingTree() {}\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\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\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) {\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, quickFilters) {\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, undefined, quickFilters);\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, quickFilters) {\r\n\t\t\tconst columnCondition = `byColumns=${columns.map((c) => c.Name).join(',')}`;\r\n\r\n\t\t\tconst structureParam = structureBuild(structureNodeId);\r\n\t\t\tconst baseUrl = `api/WidgetList/GroupData/${widgetId}/`;\r\n\t\t\tconst { data: groupingTree } = await _executeRequest(baseUrl, [columnCondition, structureParam, searchBuild()], undefined, quickFilters);\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, quickFilters = []) {\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, quickFilters) {\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, quickFilters);\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, quickFilters) {\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, quickFilters);\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\tgetGroupingTree: getGroupingTree,\r\n\t\t};\r\n\r\n\t\tfunction getGroupingTree() {}\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 { 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","/**\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\t? i18n.get('solutionBuilderAgent.common.save_btn')\r\n\t\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\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","'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\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","/**\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","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","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(\r\n\t\t\t\tfunction () {\r\n\t\t\t\t\tif (checkInterval) {\r\n\t\t\t\t\t\twindow.clearInterval(checkInterval);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t3 * 60 * 1000\r\n\t\t\t);\r\n\t\t};\r\n\t}\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","'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","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 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<\" + \"script type=\\\"text/ng-template\\\" id=\\\"1f1ed391-0aab-4616-b14e-d646d077b362\\\">\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t{{item.Name}}\\r\\n\\t\\t
\\r\\n\\t\\t\\r\\n\\t
\\r\\n<\" + \"/script>\";\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<\" + \"script type=\\\"text/ng-template\\\" id=\\\"135DFB2D-D36B-4DC3-857F-470E0609BEEA\\\">
<\" + \"/script>\\r\\n\\r\\n<\" + \"script type=\\\"text/ng-template\\\" id=\\\"1117709A-8A5F-4CCA-A4DB-AAE87A381B6F\\\" class=\\\"ng-scope\\\">\\r\\n\\t
\\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\\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
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n<\" + \"/script>\\r\\n\\r\\n<\" + \"script type=\\\"text/ng-template\\\" id=\\\"0A05A299-F5FA-4633-A627-8EAE573D993C\\\" class=\\\"ng-scope\\\">\\r\\n\\t
\\r\\n\\t\\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\\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
{{vm.onlineKBArticleFound}}
\\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<\" + \"/script>\\r\\n\\r\\n<\" + \"script type=\\\"text/ng-template\\\" id=\\\"440817BE-B63A-41E6-972B-1D9CDAE83ADA\\\" class=\\\"ng-scope\\\">\\r\\n\\t
\\r\\n\\t\\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\\t
\\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<\" + \"/script>\\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\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 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 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","'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\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","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\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\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\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\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\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\t? vm.view.context\r\n\t\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 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\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\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","'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","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\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\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\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\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","// 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\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\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\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\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","MultiFragmentGridGridFactory.$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\tinitProperties() {\r\n\t\t\tBaseGrid.prototype.initProperties.apply(this);\r\n\r\n\t\t\tlet objectId;\r\n\t\t\tlet data = [];\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, this.allowedTypes);\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","ObjectsGridGridFactory.$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, this.allowedTypes);\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\tconst 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\tconst removedFragmentIds = entities.map((entity) => entity.Id);\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\tconst 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\tconst indexA = ids.indexOf(idA);\r\n\t\t\t\tconst 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","RelationsGridGridFactory.$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\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, this.allowedTypes);\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\tconst 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\tconst fragmentIds = entities.map((entity) => entity.Id);\r\n\r\n\t\t\tconst restored = [];\r\n\t\t\tconst 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\tconst cleared = []; // added and then removed without saving\r\n\t\t\tconst removed = [];\r\n\r\n\t\t\tentities.forEach(function (entity) {\r\n\t\t\t\tconst 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","export 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\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, allowedTypes) {\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, allowedTypes).catch(() => {\r\n\t\t\t\t\t\treturn this.columnDefinitionService.getGridDefinitionByClassName(entityClassName, allowedTypes);\r\n\t\t\t\t\t})\r\n\t\t\t\t: this.columnDefinitionService.getGridDefinitionByClassName(entityClassName, allowedTypes)\r\n\t\t)\r\n\t\t\t.catch((error) => (entityClassName ? this.getDefaultDQ(entityClassName, isMultiFragment) : this.$q.reject(error)))\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 (const element of entityTypes) {\r\n\t\t\tif (await this.widgetManager.hasNewDialogs(element._type)) {\r\n\t\t\t\tresult.push(element);\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 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","'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","'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","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 { 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 * 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","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 { 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","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","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 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","/**\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","/**\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(\r\n\t\tprivate readonly userProfileService: UserProfileService,\r\n\t\tprivate readonly eventService: EventService\r\n\t) {\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","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(\r\n\t\tpublic title: string,\r\n\t\tpublic name: string,\r\n\t\tpublic technicalName: string,\r\n\t\tpublic routingItem?: RoutingItem\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","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","'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","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 type { AgentTelemetryService } from './PandoraSolutionBuilderAgent/services/agent-telemetry-service';\r\nimport { EventCodes } from '../App/model/event-codes';\r\nimport type { ToolbarManager } from './Pandora/components/mx-shell-toolbar/mx-shell-toolbar-manager';\r\nimport type { ApplicationProviderService } from './Pandora/services/mx-application-provider-service';\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: ToolbarManager,\r\n\t\tprivate readonly routingService: RoutingService,\r\n\t\tprivate readonly appsService: MxApplicationService,\r\n\t\tprivate readonly applicationProviderService: ApplicationProviderService,\r\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\t\tprivate readonly contentWidgetService: any,\r\n\t\tprivate readonly dialogFactory: DialogFactory,\r\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\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","'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\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\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 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","get","data","Message","ResetPasswordVerificationComponent","ResetPasswordVerificationComponentCtrl","latestClickTime","Date","now","resendClicked","updateScopeTimeout","isResendDisabled","resendEmail","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","static","constructor","http","_this","_email","post","_this2","confirmNewPassword","AccountId","NewPassword","_this3","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","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","Object","defineProperty","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","find","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","undefined","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","call","set","setValue","tabindex","FormControlBase","MxChoiceCtrl","$filter","$templateCache","mxChoiceNormalizeViewModeValue","uniqueClassName","genElemId","viewMode","viewModeParam","panels","a","b","position","_panels","selectedPanelName","panel","parentControllerAs","getParent","key","dataModel","repeaterItem","$watchGroup","t","visible","hiddenPanels","_currentPanel","validateTemplateUrl","panelId","mxForm","mxUiAccessibility","directionHorizontalButtonsWidth","input","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","obj","cc","code","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","mxI18n","$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","getLocale","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","$error","$watchCollection","render","trackInternal","internalController","internalName","$$scope","errorMessages","validationStatus","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","isLoading","allErrors","activeErrorIndex","hasErrors","isActive","nextExists","prevExists","Array","isArray","nextError","prevError","customErrors","keyErrors","prototype","errors","concat","noFormErrors","noCustomErrors","$setValidity","status","actionButtonClick","clickHandler","errorCode","getFormatted","tEl","msgElemId","_isActive","writable","MxFormMessageCtrl","setActive","initFormErrors","actionButtonLabel","assignButtonTo","assignButtonFrom","mxContainerCtrl","ariaLabel","hint","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","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","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","configurable","notifyDataChange","COLUMN","setColumns","modifyRows","onbeforeprint","overflow","onafterprint","newList","newCurrentItem","oldCurrentItem","gridWidth","gridHeight","onColumnFilterMenuKeyDown","which","KEY_CODE","LEFT_ARROW","RIGHT_ARROW","newItem","IsEnum","String","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","res","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","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","newText","isUndefined","indx","href","showText","ariaValue","rmValueWatcher","_scope","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","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","enumerable","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","wasArray","unconfigurableStartCondition","startConditions","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","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","ControlDescriptorId","Views","serviceContextInfo","viewName","Key","DataModelExtensions","extensions","staticData","WidgetAttributes","initWidgetAttributes","loadDataModel","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","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","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","objectView","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","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","conditionChanged","sourceStateChanged","NOT_SET","calculateViewActions","mxDialogContainerCtrl","navigationItems","SearchQueryGroup","MxSearchQueryGroupCustomCtrl","watcher","pValue","datasource","initQueryByContext","p","MxSearchQueryConditionBooleanCtrl","Equals","stateMode","IsNotSet","IsSet","__valid","MxSearchQueryConditionDateCtrl","parseFlexDate","datePart","substring","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","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","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","arg","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","NONE","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","entityServiceUrl","_defaultKey","_itemsRequest","_pendingPromise","Map","_objectParameterProcessors","cache","enums","typePermissions","ActionsContextChanged","eventObj","Schema","getPickup","getEnumerationValues","mapFragmentRequest","requestOptions","otherOptions","filterRequestParams","getPostFragments","getFragments","getFragmentDescriptors","request","extraResult","EntityClass","Fragments","registerObjectParameterProcessor","processor","processObjectContext","_this4","IsArchived","ObjectTypeChanged","newEntityType","addPendingPromise","entityId","promiseForKey","foundDefer","DisplayExpression","Promise","newPromise","_this5","reqKey","requestData","_ref3","pendingPromise","foundItem","dataItem","classIds","attrValue","_this6","_this7","getEnumeration","Values","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","getCurrent","DisplayModeChanged","newMode","DisplayMode","Normal","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","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","getMceI18nOptions","lang2Letters","language","localeID","langSufix","availableMceI18n","language_url","extendMissingI18n","editor","editorManager","addI18n","postProcessImageSourcesOnPaste","_postProcessImageSourcesOnPaste","pasteEvent","editorEl","bodyElement","contentDocument","replaceImgSrc","srcFrom","srcTo","clipboardData","clipboardTypes","htmlAsStr","DOMParser","parseFromString","localImages","rtf","imagesFromRTF","_extractImagesFromRTF","extractImagesFromRTF","img","base64","imagesFromVML","_extractImagesFromVML","extractImagesFromVML","vml","imgEl","vmlImg","before","remoteImages","_imgUrlToBase","imgUrlToBase64","_x10","_x11","rtfContent","notPictExp","pictures","_ref2","pic","mimeType","hexData","_x7","_hexToBase","hexToBase64","_x12","htmlStr","preparedHtml","localImgs","parsedImgArr","imgIDs","imgID","zippedImgData","arrayBuffer","Uint8Array","atob","d","charCodeAt","unzippedImg","JSZip","loadAsync","imgName","endsWith","binaryToBase64","_x15","_x13","_x14","fetch","ok","blob","startsWith","reader","FileReader","onloadend","readAsDataURL","hexString","binaryData","_x8","_x9","_binaryToBase","Blob","err","translation","optional","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","parseAttributes","locale","localeFormats","NUMBER_FORMATS","createFormatter","createParser","$isEmpty","$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","timeout","progressUpdated","HandlerCollection","processStatusUpdated","processCanceling","processCanceled","processFailed","_progress","_canceled","_failed","_operationStatus","Started","operationName","OperationName","startTime","StartTime","initiatedBy","InitiatedBy","statusDetails","StatusDetails","cancelable","Cancelable","cancellationUrl","CancellationUrl","operationStatus","isExternal","IsExternal","progress","Progress","finishTime","FinishTime","isCanceled","Finished","RangeError","isExpired","expired","getTime","fail","onProgressUpdated","onProcessStatusUpdated","onProcessCanceling","onProcessCanceled","onProcessFailed","AttachmentPopupDialogController","AttachmentController","enableSelection","$sceDelegate","attachmentProcessService","i18nCommon","downloadLabel","download","deleteLabel","cancelLabel","commentLabel","comment","mxAttachments","processEventUnsubscribes","disableExternalAttachmentsPreview","sizeKb","sizeMb","sizeGb","getForegroundProcessById","bindProcessCallbacks","unsubscribe","onProgressUpdatedUnsubscribe","onUploadingProgress","onProcessStatusUpdatedUnsubscribe","onUploadStatusUpdate","onProcessCancelingUnsubscribe","onUploadingCanceling","onProcessFailedUnsubscribe","onUploadingFailed","uploaded","Canceled","cancelUpload","onUploadCanceling","loadFiles","onCancelClick","getUrl","showInDialog","onVideoClick","videoWarning","getFileExtension","at","isMsOfficeFile","onInlineFileClick","canPreviewOfficeFile","getOfficePreviewUrl","downloadFile","getInlineUrl","_this10","inline","fileUrl","_this11","isPublic","sendContentThroughServer","_this12","isUploaded","isNewBox","isPdf","isImage","isGeneralFileType","isVideo","showDownload","isEditMode","_this13","isVirtual","onGetFileUrl","newUrl","formatUrl","trustedUrl","valueOf","deleteFile","onUploadCanceled","editComment","onComment","_this14","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","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","btoa","fromCharCode","readAsArrayBuffer","createObjectURL","makeAsDataUrl","processQueue","processFile","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","TrackTelemetry","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","titles","initState","colorized","isStatic","staticMode","ngClickAttribute","redTitle","yellowTitle","greenTitle","red","yellow","green","lastClick","theme","bgColor","filterColor","getContrastDelta","showPart","isActivated","DefaultClassController","hideActions","telemetrySource","uiActionGroup","correspondingUrl","httpInterceptorsRegistry","restApi","responseError","navigateTo404","MxShellBreadcrumbsCtrl","setBreadCrumbs","extraItem","technicalName","routingItem","MxShellLeftSidebarService","allPanelsDisabled","addPanel","panelA","panelB","order","checkVisibility","showPanelByName","panelName","getPanelByName","debouncedShowPanel","getCurrentPanelName","currentPanelIndex","enablePanel","disablePanel","isTabChangedByUserManually","LeftSidebarTabChanged","MxShellSearchCtrl","searchProviderService","searchContexts","searchPanelVisible","_openSearch","inputCloseClick","focusInput","selectTag","tag","selectedTags","unselectTag","RouteActivated","searchTitle","contexts","onOpen","getCurrentGlobalSearchParameters","hotKeys","MxShellToolbarCtrl","mxAuthService","toolbarManager","feedbackProviderService","dataStorage","_addAvatarMenuItems","profile","languages","getLanguages","profileDialogId","addAvatarDropdownItem","accountName","openEditDialog","helpUri","isEnhancedColorContrastMode","toggleContrastMode","avatarDropdownItems","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","stateChanged","ExtraPanelOpened","ExtraPanelClosed","closedByUser","MxBackgroundProcessesController","cancelProcess","_cancelProcess","addWidget","removeWidget","cfg","isAppsVisible","AppsEnabled","operationMonitorEnabled","isOperationMonitorVisible","setSearchEnabled","showSearch","unifiedSearchEnabled","setOperationMonitorVisibility","avatarEnabled","showAvatar","setUserInfo","ProfileChanged","isPushNotificationsWanted","isPushNotificationsEnabled","isPushNotificationsVisible","isAvatarVisible","setFeedbackVisibility","isFeedbackVisible","FeedbackEnabled","setAppsVisibility","setAvatarVisibility","setSearchVisibility","isSearchWanted","isSearchVisible","isSearchEnabled","setShowMenuButtonVisibility","isShowMenuBtnVisible","setBreadcrumbsVisibility","isBreadcrumbsVisible","setNavigationVisibility","isNavigationVisible","setPushNotificationsVisibility","setPushNotificationsEnabled","avatar","lastName","firstName","itemObject","AvatarMenuItemAdded","searchContextGroups","groupContextsByTopLevelNavParents","groupsObj","groupName","baseGroup","hasSelectedContexts","onSelect","searchBtn","dropdownEl","cleanBtn","inputArea","defaultBackgroundTemplate","initSearchOptions","initFoldingEvents","GlobalSearchConfigChanged","background","backgroundImage","globalSearchParameters","showContextWhenNotFocused","isGlobal","selectedContexts","cleanSearch","subTitle","transparent","expandedMode","titleColor","mxGlobalSearchManagerComponent","getNavigationItems","navigationItemIds","showUnifiedSearch","hideUnifiedSearch","shellComponent","ShellComponentController","deepLinkingService","configureUnifiedSearch","currentRoute","currentRouteName","openedViaDirectLink","parseViewOptionsFromUrl","unifiedSearchHiddenByScroll","mainZoneEl","collapseUnifiedSearchByScroll","_isManualWindowResizeTriggering","_initApp","SidePanelVisible","initApp","getCurrentColors","currentThemeColorsObj","themeObj","getEnhancedColorContrastMode","_debouncedLayoutChangeDispatcherResize","debouncedLayoutChangeDispatcherExtraPanel","withAnimation","ignoreConfirmationForServiceOperation","getTryNewLookActionData","alreadyTried","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","_controllerExecute","controllerExecute","commit","cacheId","viewPromise","getView","useSameView","getCurrentView","headerIcon","isWizard","o","startedFromAction","openInFullScreen","ObjectProperty","ObjectPropertyEnumValue","getWizard","DefaultActionProvider","ActionProviderService","dialogFactory","entityService","getActionsPromise","forceLoad","getActionsFromService","getAllViews","Types","states","States","TypeFilter","Any","IsService","statesFilter","StatesFilter","scriptFilter","ScriptFilter","contextType","ObjectContextType","Position","Controller","ControllerParams","uiZones","UIZones","purpose","Purpose","deviceVisibility","DeviceVisibility","ActionDeviceVisibility","DesktopOnly","MobileOnly","All","ReloadPageOnSuccess","ImplementationType","Url","executeOpenUrlAction","Widget","Wizard","wizardOptions","actionId","actionName","finishTitle","checkActionAvailability","isAdminMode","isAdmin","setViewUrl","Dialog","setEditDialog","getSortedEditViews","groupedViewsByType","extraActions","createLandingPageAction","addViews","NotUseInCreateEditPurposes","view1","view2","EntityDisplayName","genericAddAction","IconAdd","AddActionPosition","ActionPurpose","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","ProcessType","MxContextService","MxContext","injector","_getData","_setData","cleanOnRouteChange","_reset","publish","read","MxSelectedObjectsContext","MxContextOptions","MxActionsContextContext","newContext","globalVal","registerContext","valAsync","verifyContext","formatValName","_val","MxContextTypes","SelectedObjects","extendActionsContext","DownloadHelpService","forceFileName","fileName","tempFileName","decodeURI","tryGetFileName","isChrome","chrome","navigator","vendor","webstore","isFf","userAgent","isEdge","StyleMedia","urlLocal","urlObj","appendChild","removeChild","revokeObjectURL","msSaveOrOpenBlob","fileUri","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","_state","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","QueryBuilder","resetKeywordSearch","resetGridSearch","GridSearch","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","searchView","baseFilter","newOptions","filtersOperator","currentState","addSearchContext","_ref5","name1","name2","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","getStorage","SystemStorageType","LocalStorage","isViewUnsafeForClosing","New","refreshView","RefreshCurrentView","isViewOpened","showCloseTabConfirmationDialog","DialogActionExecuted","closeCurrentView","switchToView","setCurrentView","showView","hideView","isViewInProgress","getCurrentMainView","mainCurrentView","related","getOpenedViews","showPopupInTab","hidePopupInTab","handleItemSelectionOnMobile","getObjectDetailsFromView","objectDetails","isSingleView","getSidePanelView","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","routingConfiguration","addItems","createRoutingItem","viewUrl","actionProvider","applicationService","application","setActionProvider","filterExecutionContext","actionsFilterScript","viewForService","scriptPredicate","aTitle","bTitle","purposes","requestActions","_filterActions","_sortActions","getActionById","getActionsByIds","resActions","_filterActionsByUiZone","_isUiZoneExists","_getTypesAndStates","objectStates","action1","action2","pos1","pos2","_filterActionsByObjectType","actionsArray","_isDuplicate","isExportAllAvailable","classInfo","getClassInfo","ClassType","CommonClass","UsedInTypes","filterContext","utils","loadApplicationPromise","loadApplication","mapAppItem","NavigationItem","showFavourites","ShowFavorites","showRecent","ShowRecent","simpleNavigation","SimpleNavigation","ShowNotificationMonitor","HelpValue","HelpSourceType","UnifiedSearchEnabled","unifiedSearchTitle1","UnifiedSearchTitle1","unifiedSearchTitle2","UnifiedSearchTitle2","unifiedSearchBackground","UnifiedSearchBackground","unifiedSearchTitleColorOverride","UnifiedSearchTitleColorOverride","isJSON","_storage","_trackedProcessIds","getAsObject","trackedProcessId","toLocaleLowerCase","setAsObject","sync","trackedProcessIds","_isLoading","_reloadOnAdd","processStorage","Background","Foreground","backgroundProcessProvider","trackedProcessProvider","trackedProcessesCount","foregroundProcesses","allProcesses","runningProcesses","addTrackedProcess","Completed","AsyncOperationContract","OperationId","addForegroundProcess","backgroundProcess","send","feedback","isPinnedOpen","buttonList","togglePinnedOpen","workspaceLoaderService","initShellApp","applicationProvider","navigationProvider","setApplicationProvider","setNavigationProvider","loadWorkspaces","ShellAppInitialized","componentsModule","SignalRHub","m42Dashboards","toCamelCase","MxEnumLiteralCtrl","_filter","processEmptyData","EnumNames","EnumTypes","Enums","itemColor","isMultipleValue","setProperty","enhanceColorContrast","isContrast","isContrastTheme","FilterExpression","props","propertyNameCamelCase","idAttrNameCamelCase","idValue","initComponentFormat","initLayoutTransformationFormat","getServiceContext","mxServiceContextController","getPath","controlMxAtId","serviceContext","idAttrName","onChanged","initInterpolatedValue","filterDefinition","IsStrict","StrictExpression","Params","paramsAttr","initScopeValue","newFormat","LegacyExpression","initDeprecatedFilterFormat","pathValue","isPathCorrect","rawAttrValue","initialAttrValue","isInterpolation","attrName","scopeValue","transformedScopeValue","handleBooleanParams","hasFilter","initFilterExpression","filterDefinitionAttrName","EntityClassRequest","relationName","exclude","MxRelatedObjectsLinkCtrl","_getFragments","relation","allowedTypes","fragments","objectCount","fragment","openObjectsListPreview","setShowAllValue","mxAtId","MxObjectsLinkCtrl","updateTooltip","showingItemsCount","moreItemsTooltip","objectsAllCount","selectedItemIds","isDesignerMode","literalClasses","valueFlexOrderClass","literalsTemplate","editText","editIcon","openFilterDialog","canEdit","queryId","currentBaseFilter","RunSearchQuery","attach","__attached","MxAdvancedSearchQueryCustomCtrl","SearchQuery","CalendarResourceCtrl","resource","calendar","resources","resourceId","hasEntity","hintContainer","eventsOfDay","dayNumber","numOfEvents","newHint","zeroHint","oneHint","getHint","queryList","filterQueries","queries","conditionProperties","advancedSearchGroup","SearchQueryAdded","resetForm","getQueries","isAdvancedSearchGroupValid","validateGroup","searchClick","getFlatGroupConditions","childrenConditions","flatMap","operatorTechnicalName","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","MxBaseChartCtrl","chartsI18n","getColorSet","noRequiredData","detailsFilterExpression","multiSelection","showActionsPanel","showSelectAll","aIndex","MAX_SAFE_INTEGER","bIndex","normalizeColor","colors","isDarkTheme","getBorderColor","getBorderWidth","_getBaseChartConfig","defaultLegendConfig","align","verticalAlign","itemWidth","itemStyle","textOverflow","fontWeight","fill","itemHoverStyle","itemHiddenStyle","navigation","activeColor","inactiveColor","seriesConfig","usedSeries","borderWidth","defaultSeries","j","item2","responsiveLegend","legendItemWidth","sizeOfGridCell","legend","legendWidth","maxLegendWidth","legendConfig","whiteSpace","lastLegendConfig","getAllItems","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","availableDateMods","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","gridLineWidth","opposite","getOptions","yAxisDescriptionPluralSimple","userOptions","AzureAdConditionsBuilderCtrl","azureAdConditionsService","currentQuery","currentProperties","aadConditionsLimit","newQuery","validateConditions","handleWarningMessage","handleErrorMessage","isEqualQueries","isEqualProperties","conditionsAmount","checkConditionsState","hasOr","condState","rowIdentifierProperty","inputProperties","ConditionOperators","operatorIDs","operatorString","IsNullable","filterOperator","withoutParams","rootGroup","createInputMapper","groupInput","inputGroup","conditionInput","LogicalOperator","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","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","Localizable","Unit","ComplexData","LayoutGrid","Bindable","StylePicker","DescriptorStylesPicker","ExpressionFilter","schemaEditorMode","bindingTypeItems","EditorBindingType","OneWay","TwoWay","Mode","bindable","isMultiPicker","IsMultiPicker","RelatedTag","relatedTag","AllowedTypes","UseObjectId","UseMultiSelect","processEditor","dataDefinitionPropertyName","DataDefinitionPropertyName","processValue","sk","MxEnumPickerCtrl","_entityClassName","reloadItems","_reloadItems","loadPromise","lastLoadPromise","showValue","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","hasBaseFilter","hasAdditionalFilters","preprocessorFilterFunc","filteredPreprocessors","build","getGroupingTree","currentPageSelectedItems","newSelectedItems","sItem","actionToRun","NavigationId","searchPageWidgetId","DataQueryListItemClicked","TrackViewTelemetry","_selectEntireDatasetProgressHandler","lengthComputable","selectedObjectsLoadingProgress","selectedObjectsLoading","newObjects","objectsFromParams","paramObject","selObject","mxSearchPageContentCtrl","triggerDataReload","formConditions","handlerName","triggerDataReloadChangeHandler","cond","_enum","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","changedViewIndex","changedView","favouriteObject","favourite","ObjectRemovedByWizard","NavigationReload","initNavigationItems","_initFavouriteViews","initFavouriteViews","toggleViewFavourite","_addViewToFavourites","addViewToFavourites","openFavouriteView","internalOpenFavouriteView","isFavouriteEnabled","toggleNavigationFavourite","favouriteItem","setNavigationShowInFavourite","saveFavouriteNavigations","checkFavouritesPanelStatus","showInFavorite","favouritesObjectDetails","getFavouriteViews","fullArray","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","viewA","viewB","MxViewLink","setBorderColor","_setBorderColor","viewColor","propsModifier","selectedTab","onTabChanged","isClickable","BaseSideBarWidget","createNavigationWidget","_enabled","_initialized","sideBarWidgetsFactory","initService","addWidgetByType","MxLoadFileComponent","fileNameOut","filesFilter","contentType","readAsText","MxObjectJournalCtrl","journalService","attachmentService","journalTextboxContainer","showObjectDetails","details","ForceOpenObjectDetails","getJournalData","_getJournalData","addJournalComment","_addJournalComment","updateJournalVisibility","VisibleInPortal","selectFiles","setVisibleInPortal","setSectionNewCommentInBottom","journalTextboxForMoving","appendTo","allowedInPortal","regex","getFilesForObject","processedData","_replaceUrls","matches","matchAll","replacements","fileUrlMatch","fileId","fileInfo","getFileUrl","itemText","formatFileUrl","replaceUrls","CreatorFragmentId","userName","Creator","CreatedDate","CreatorPhoto","subject","Header","journalObject","Comments","Publish","EntryType","FileIds","IsFromEditDialog","SetNewInformationReceived","activityFragment","NewJournalEntryAdded","JournalId","mxObjectJournalTemplate","supplement","hideVisibleInPortal","MxLocalizationEditorFormCtrl","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","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","MxQuickLinkCtrl","linkType","_initCallServiceButton","hasRules","mainAction","_initNavigation","getFilters","_initExternalAppNavigation","initExternalAppNavigation","loadNavigationItem","redirectToNavLink","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","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","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","MxSearchStateCtrl","$location","quickFilterCondition","onReset","resetFilters","keywordCondition","gridCondition","advancedCondition","shortValue","customFormCondition","andTitle","wasVisible","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","debouncedCheckMoreBtnVisibility","so","__active","toggleQueryFilter","runQuery","clearFilters","MxSchemaPickerCtrl","_selectedObjectsExpected","servicePromise","_loadCIs","getTypeItems","valueIsId","_loadDDs","getClassItems","classType","_loadSchemaData","loadCIs","loadDDs","itemsFilter","setSelectedSchemaItems","loadSchemaData","recursion","columnDefinitionService","MxSearchQueryGroupCtrl","addConditionClick","toggleOperator","groupHeaderClick","SearchGroupToggleExpanded","toggleGroupExpanded","addExpressionCondition","createExpressionCondition","logicalOperators","createQueryGroup","deleteGroup","editInQueryBuilder","allowSave","createQuery","originFilterReference","getHintDenyingSave","currentNavItem","currentNavPath","allowedNavPath","allowedNavPathFound","CanEdit","checkConditions","showSaveBtn","showTestQueryBtn","testQuery","allowExpressions","getGridDefinitionById","IsAvailableInSearch","MxSidePanelTabHeaderCtrl","currentUIActions","reloadUIActions","onCloseClick","editorOptions","workerPath","advanced","enableSnippets","enableBasicAutocompletion","enableLiveAutocompletion","minLines","showLineNumbers","showPrintMargin","internalStyles","setItems","formatElements","bodyStyles","contentStyles","updateCss","formatElementsStr","stylesStr","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","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","datasetViewData","datasetViewId","quickFilter","structureNodeId","getNodeId","selectedColumns","selectedViewType","extraPanelManager","_currentGroupingPreprocessor","_groupingView","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","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","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","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","Basic","previousGroup","lineBreak","tabSpace","LogicalOperatorTitle","cloneGroup","searchQueryFactory","TitleNeutral","ShowInNavigation","ConsiderParentFilters","DatasetView","System","QueryFilter","ParentsChain","parentsChain","ActionCoRuService","_commit","CacheService","resetServerCache","ResetNavigationCache","ResetActionCache","ResetEnumCache","ResetWidgetsCache","WidgetIds","ColumnDefinitionService","DataQueryDefinition","entityClassColumns","_getDefinition","getGridDefinitionByClassName","removeFromCache","loadColumnsForClass","cacheKey","dataQueryDef","allowedTypesSuffix","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","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","currentWidgetLayout","sizeX","removeAsUnavailable","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","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","DataQueryName","FragmentId","ClientTimeOffset","getTimezoneOffset","EntityTypeName","RelationName","listAsCsv","AdditionalFilter","additionalFilter","Page","Archived","LookupFor","lookupFor","ResetFilter","DataService","fragmentUrl","objectUrl","ddName","addRelation","relationFragmentId","getList","getRelationList","deleteRelation","ciName","full","queryFull","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","editDialogOpenedPromise","dialogParams","DialogController","excludedIDs","resetFilterExpression","onlyTypedSearch","correctEntityFilter","onlyTypedSelectSearch","relatedObjectId","relatedEntity","selectionMode","DetailsViewSelectionMode","_openSelectView","relationDisplayName","columnToDisplay","_openPreview","detailsView","objectIDs","uniqueViewId","selView","ExternalServiceManager","getServiceInfoByEntityName","deleteOperation","serviceURl","Prefix","_path","getOperation","operation","serviceId","getServiceId","getServiceInfo","getOperationTypesInternal","getOperationTypes","subCollection","readOperation","getResponseTypeInfo","Identifier","listOperation","ReadObjectsByODataQuery","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","InsertObject","UpdateObject","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","runAction","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","_initParams","redFilter","yellowFilter","greenFilter","quickFilterTitles","checkFilters","getColor","quickFiltersBuild","_widgetId","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","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","_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","ClassTypes","SearchQueryService","cacheService","queriesCache","createQueryCondition","getDataQuery","reloadNavigation","removeSearchQuery","secondValue","_getLocalization","enumerationValuesString","_getContextByFilter","getContextByDataQueryId","hasConditions","hasGroups","widgetFilters","string","listWidgetId","getParentsChain","currentFilter","fromCache","qData","queryPromises","_openFilterDialog","queryOptions","initGroup","dataQueryColumn","getEnumerationFromService","WizardService","WizardPage","pagesCommonController","_gettingWizardAndDataModelPendingPromises","wizardUiActionGroup","_freeWizardDataSources","resetWidgetsCache","clearTypes","clearClasses","__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","StylesItem","systemStyles","httpService","dataService","generateAccessToken","apiTokenName","httpHeaders","apiToken","_generateApiToken","Authorization","accessTokenRequest","_deleteApiToken","RawToken","ExpirationDays","ApiToken","_getApiTokenObjectId","Where","tokenObjectId","validateFilterExpressionDataQuery","createValidateResult","validateFilterExpressionEntityClass","entityclass","getParametersForExpression","presetParams","_parseViewOptions","_parsePresetParams","parsePresetParamsFromUrl","processViewOptions","fromEntries","objectParams","ext","std","nda","_setTitleForExternalOpenedDialog","windowTitle","getWindowTitle","tryOpenDialog","stateName","stateParameters","editDialogState","previewWidgetId","EmbeddedView","checkInterval","embedded","createdObjectId","attrExpressions","classInfos","schemaServiceUrl","keyIsId","_findSchemaItem","getReferenceAttributeExpr","itemsGetter","_getSchemaItems","itemsAreTypes","itemsAreClasses","RelatedClasses","_class","_getSchemaObjects","schemaType","viewTypes","_openDialogIfNoPreview","filterViews","dialogActionType","EditOnly","CreateOnly","dialogInsteadOfPreview","selectedWidget","personalizedWidget","personalizedWidgetID","getDefaultPreviewId","createPreview","getPreviews","isEditDialog","isAdHocDialog","getSortedViews","previews","hasNewDialogs","hasEditDialogs","hasPreviews","hasPreviewsOrDialogs","getStylesByTag","getCustomStyles","registerStyles","styleConfig","trackViewTelemetry","trackProps","getTelemetryInfoFromView","mx42_uux_view_source","dialogView","targets","extensionGalleryService","extensionGalleryRouteName","$transitions","onStart","goToExtensionGallery","extensionGalleryRoute","apiTokenService","accessToken","ExtensionGallery","goToUrl","pushNotificationsService","pushNotificationsPanelService","isRequestPermissionsNeeded","isDenied","isSupported","_unsubscribe","addNotificationsUpdatedHandler","notifications","_onNotificationsUpdated","initActions","browsersHelpInfo","getBrowsersHelpInfo","removeAllNotifications","agent","notSupportedI18n","browsers","currentBrowser","resHtml","unreadNotifications","setNotificationsRead","viewData","_prepareViewData","_groupNotificationsByTime","notification","timeAgo","received","newGroup","authBehaviorProviderService","_isPushHubEnabled","_userTags","_notificationsUpdatedHandlers","_serviceWorkerScript","_serviceWorkerScope","hasPermissions","Notification","permission","isEnabledInProfile","isEnabledByUser","requestPermission","_initPushNotifications","_profile","_sessionExpirationTime","getSessionExpirationTime","_pushHubConfig","_loadPushHubConfig","_getUserTags","_initUI","onBeforeSessionDestroy","onSessionExpired","_checkSubscription","sw","_initServiceWorker","_subscribeToWorkerMessages","_initPushHub","forceTagsReload","_subscribedUserId","_subscribe","_getNotifications","_sendMessage","_addHandler","removeNotification","handlersArray","serviceWorker","subscribedUserId","subscribedUserTags","_onSubscriptionStatusUpdated","sessionExpirationTime","pushHubConfig","registerSW","installing","waiting","waitServiceWorkerActivated","postMessage","userTags","subscribed","_this15","waitForAnswer","messageChannel","MessageChannel","waitPromise","port1","onmessage","port2","_this16","_prepareNotifications","unread","_this17","notificationTypes","_getNotificationTypes","_this18","_notificationsTypes","picker","aggregator","_this19","_this20","_view","togglePanel","_isPanelOpened","openPanel","PushNotificationsMonitorComponent","PushNotificationsPanelComponent","MxDialogViewComponent","MxSolutionBuilderAgentEditCtrl","defaultDoneLabel","isEditableDialog","enableConcurrencyTracking","setDoneButtonLabel","isSaveVisible","_isSaveVisible","saveAndClose","saveDisabled","hideSaveButton","_isSaveHidden","doneLabel","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","isRefreshable","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","entityDisplayName","onDialogEssentialsChanged","widgetData","extObj","onLoadEntity","_handleDialogError","showNoDataMessage","errorTitle","getGenericEntity","isNotEmpty","presetContext","prepareContext","filledObject","singleView","singleViewServiceContextInfo","showNoFormMessage","objectCI","MxDialogManager","mxCommonDialogContentCtrl","mxDialogViewCtrl","viewsToHide","confirmationDialogEnabled","confirmationDialogDisabledWhenNoChanges","confirmationDialogTitle","confirmationDialogMessage","confirmationDialogActions","reloadApplicationOnSave","MxDialogManagerController","dialogContentCtrl","dialogViewCtrl","confirmationDialogActionsChangeHandler","viewsToHideChangeHandler","reloadApplicationOnSaveChangeHandler","confirmationDialogEnabledChangeHandler","confirmationDialogDisabledWhenNoChangesChangeHandler","confirmationDialogTitleChangeHandler","confirmationDialogMessageChangeHandler","previewUiActionGroup","dialogsActionGroup","_createDialog","hideHeaderTitle","HideHeaderTitle","_getUiActionGroups","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","DataDefinitionQueryOptionsFactory","optionValue","MultiFragmentRequesterClassFactory","MultiFragmentRequester","_loadExpressions","expressions","HasQuery","ExpressionDependencies","IsSingleColumn","simpleChangedColumns","_objectId","displayEntities","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","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","MxFilterOperatorsFactory","getAllOperators","createClassFactory","ClassName","classFactory","instantiate","_createEmptyGroup","_filters","newFilters","newKeyword","filterOptions","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","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","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","aY","bY","aX","bX","backupW","backupY","backupX","_resizeHandler","getLandingConfig","landingPageComponentName","landingPageRoute","LandingPageComponent","LandingPageContentComponent","executorGrid","updateActions","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","GridEnums","disableDelete","gridValidationMessage","initRowHeightSettings","initRowColoring","formValidationMessage","renderMinHeight","Inline","EditForm","onItemDblClick","reorderHandler","onCellChanged","gridEnums","GenericEdit","ObjectGridOnClickActions","DataDefinitionGridTypes","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","onHeightChanged","elementHeight","onChipDblClick","onChipRemoveClick","getDisplayNameFromChip","BaseGridGridFactory","initDataQueryExecutor","initCreateButtonItems","removeButtonDisabled","deleteButtonDisabled","_currentRowHandlers","initExecutor","onAddButtonClick","findExistingEntities","_modifyRow","notChangedEntity","editEntity","changedEntity","openEditForm","openWizard","runGenericEdit","beforeEntityCreated","afterEntityCreationCancelled","notifyCreatedItemIsIncorrect","onRemoveButtonClick","removeEntities","onDeleteButtonClick","deleteItems","runGenericPreviewAction","_isNewEntity","runGenericCreateAction","runGenericEditAction","_getEditTitle","wizardHeader","isGridReady","DynamicGridGridFactory","BaseGrid","dq","initStaticDQ","_internalCreatingEntity","_removeEntitiesFromData","removeItemsFromArray","MultiFragmentGridGridFactory","fName","newObjectId","initDQByDefinition","ObjectsGridGridFactory","browseWhereClause","deleteActions","getEntityTypesForCreate","removedFragmentIds","idA","idB","indexA","indexB","_doClickAction","ObjectsDeprecatedGridGridFactory","externalAddButtonHidden","externalRemoveButtonHidden","objectIDsMode","RelationsGridGridFactory","fragmentIds","restored","cleared","editFormTabService","dataSourceConfig","defaultGridPreprocessorsConfig","wizardObjectIdBydId","IsStatic","IsRelation","getDefaultDQ","isMultifragment","isRelation","ValuePropertyName","getWizardObjectId","wizardObjectId","MxGenericGridComponent","MxExecutorGridComponent","MxGridActionsPanelComponent","MxGridControlPanelComponent","MxGridRenderComponent","MxGridSelectionPickerComponent","getOwnershipTemplate","getLinkTemplate","getPickerTemplate","getControl","ShowOwnership","anchor","MxAttachmentDefaultProvider","apiController","errorFactory","getAuthHeader","uniqueFileId","xhr","XMLHttpRequest","abort","setRequestHeader","onprogress","onreadystatechange","createApiError","DONE","onloadstart","onabort","getToken","MxObjectAttachments","excludedFileIds","uploadOnly","filesExists","MxObjectAttachmentsCtrl","unsubscribeNotification","inited","AttachmentsViewMode","Tiles","_getCount","getCount","numOfFiles","objectTitle","unsafe","_getFiles","prompt","_onDownloadFiles","originalExtensions","fileLimitMessages","sizeInMb","getFileLimitsMessage","MxAttachmentsPickerController","refToPickerCtrl","mapFileItem","_loadItems","backgroundProcessService","preventHandler","returnValue","createForegroundProcess","uploadedBy","processItem","preventReload","providerStorage","processService","defaultProviderInstance","registerProvider","getRegisteredProvider","Updated","Canceling","attachmentInfos","paramBindAttribute","getBindAttributeParameter","paramExcludedFileIds","getExcludedFileIdsParameter","flat","sum","itemCount","UpdatedOn","UniqueFileId","Comment","getThumbnail","UpdatedBy","StorageId","ProviderId","Uploaded","SendContentThroughServer","MaxFileSizeMb","Extensions","FileCountPerObject","parameterExcludedFileIds","getBindAttribute","lastIndexOfDot","Thumbnail","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","mxShellNavItemDirective","favouriteMode","MxShellNavItemCtrl","dragDrop","navigationItemConfigurationActionsService","navigationConfigurationModeOn","NavigationConfigurationModeChanged","beingConfigured","NavigationItemEnteredConfigurationMode","_switchConfigurationMode","_tryShowMoreItemsDebounced","showMoreBtn","isRootItemChildrenDynamicLoader","_handleItemClick","itemTitleClass","hasChildrenCommonFilter","favoriteFilter","contextMenuData","itemContextMenuExpanded","itemContextMenu","loadChildren","configurationActions","getFilterActions","getAddingChildItemAction","itemBtnEl","handleArrowClick","switchConfigurationMode","_onDrop","dragModeOn","_formatAsHtmlClass","_tryInitShowMore","receiverItem","movedItemName","changeNavigationOrdering","handleItemClickPromise","setCurrentNavigationItem","__limitTo","mxShellNavigationPanelComponent","MxShellNavigationPanelCtrl","changeFilterText","oldFilterText","markFilterTextMatched","_settingsLabel","isSettingLabelVisible","isNavLoaded","allNavItems","_getClosestSibling","activeEl","downOtherwiseUp","currentNavItemIndex","initKeyboardControl","MxNavigationProviderService","_load","loadOnly","findCurrentNavItem","getRoutingUrl","p1","routingUrl","currentAsChild","MxNavigationService","navigationProviderService","selfContract","showAllChildren","checkJustVisible","filterTextMatchedItem","showAllChildrenForJustFoundItem","_titleLowerCase","matchesFilterCriteria","_expandAllParents","setNavigationItemById","_x17","_setNavigationItemById","_getFlatArrayOfNavItems","_changeNavigationOrdering","navigationLoaderPromise","partiallyOpenedItem","_setNavigationItemFromRoute","_virtualCollectionChildrenLoaded","movedItem","_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","_getDefaultRoute","getDefaultRoute","routes","getRoutesFromNavigationItems","newCurrentNavItem","getRoutesFromNavigationItemsRecursive","childrenRoutes","childRouteName","getClosestRoutedNavItem","_getDefaultNavigationItem","defaultNavigationItem","getDefaultFilterNavigationItem","_getDefaultFilterNavigationItem","defaultFilterId","_x16","_getDefaultFilterId","getDefaultFilterId","getDefaultNavigationItem","getNavigateToItem","_getNavigateToItem","_goToRoute","navigateToItem","getDefaultFiltersForNavItem","newExtraItem","previousItem","_x18","_setCurrentNavigationItem","activatingPromise","_x19","_activateNavigationItem","activateNavigationItem","isAncestor","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","_getEditFilterActionController","_getDeleteFilterActionController","addAction","_getAddFilterChildActionController","_setUIToken","filterNavTree","_configurationModeOn","publicModule","authBehaviourProviderService","getUserProfile","auth","prepareFilterExpression","filterParams","whereExpression","req","others","eventCode","destroyHandler","dispatch","queryStringParams","skipNotification","_len","_key","getFormattedCurrency","currency","useSymbols","sidePanel","openListPreview","okLabel","confirmHtml","extraLines","ariaMessage","infoPanel","shellAgentModule","extensionGalleryModule","pushNotificationsModule","dialogPageModule","dataQueryModule","multiSelectionTabModule","editFormModule","searchPageModule","landingPageModule","executorGridModule","ownershipModule","attachmentModule","shellModule","agentModule","shellAppModule","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","$transitionsProvider","keepLocationAfterInitShellState","SignupComponent","SignupComponentCtrl","signupService","signup","signupUser","signupVerificationState","SignupVerificationComponent","SignupVerificationComponentCtrl","signupState","signUpConfig","$uiRouterProvider","stateRegistry","RegistrationFormComponent","RegistrationFormComponentCtrl","userInfo","hideForm","userNameForPasswordsManager","SPSUserClassBase","MailAddress","UserRegistrationModuleLazy","userRegistrationRootState"],"sourceRoot":""}